diff --git a/.bowerrc b/.bowerrc
deleted file mode 100644
index 959e1696e..000000000
--- a/.bowerrc
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "directory": "bower_components",
- "analytics": false
-}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 749cd25a2..4c466002e 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -61,7 +61,6 @@ jobs:
- name: Test
run: pnpm test:ember --launch ${{ matrix.browser }}
-
try-scenarios:
name: Tests - ${{ matrix.ember-try-scenario }}
runs-on: ubuntu-latest
@@ -80,7 +79,7 @@ jobs:
- ember-5.0
- ember-release
- ember-default
- - typescript-3.9
+ - tsc
- embroider-safe
- embroider-optimized
allow-failure: [false]
@@ -95,11 +94,7 @@ jobs:
with:
pnpm-args: --frozen-lockfile
- - name: Strip ts-expect-error from tests (for TypeScript 3.7)
- run: find tests/types -type f -name '*.ts' | xargs sed -i 's/@ts-expect-error/@ts-ignore/g'
- if: matrix.ember-try-scenario == 'typescript-3.7'
-
- name: Test
env:
EMBER_TRY_SCENARIO: ${{ matrix.ember-try-scenario }}
- run: node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO
+ run: pnpm --filter test-app test:ember-try $EMBER_TRY_SCENARIO
diff --git a/.gitignore b/.gitignore
index 503f583f1..b1a498412 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,37 +1,35 @@
# See https://help.github.com/ignore-files/ for more about ignoring files.
# compiled output
-/dist/
-/tmp/
-/tests/dummy/public/api
+dist/
+tmp/
+/packages/test-app/public/api
# dependencies
-/bower_components/
-/node_modules/
+node_modules/
# misc
-/.env*
-/.pnp*
-/.sass-cache
-/.eslintcache
-/connect.lock
-/coverage/
-/libpeerconnection.log
-/npm-debug.log*
-/yarn-error.log
-/testem.log
-/.vscode
-/package-lock.json
+.env*
+.pnp*
+.sass-cache
+.eslintcache
+connect.lock
+coverage/
+libpeerconnection.log
+npm-debug.log*
+yarn-error.log
+testem.log
+.vscode
# ember-try
-/.node_modules.ember-try/
-/bower.json.ember-try
-/npm-shrinkwrap.json.ember-try
-/package.json.ember-try
-/package-lock.json.ember-try
-/yarn.lock.ember-try
+.node_modules.ember-try/
+bower.json.ember-try
+npm-shrinkwrap.json.ember-try
+package.json.ember-try
+package-lock.json.ember-try
+yarn.lock.ember-try
# broccoli-debug
-/DEBUG/
+DEBUG/
.DS_Store
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index bb6af89a8..3d6d472d1 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -36,13 +36,14 @@ npx release-it
TODO: use build pipeline.
* From addon root directory `pnpm docs:build`
-* View built docs in `tests/dummy/public/api`
+* View built docs in `packages/test-app/public/api`
### Publishing Guides and API Docs
(Requires commit access.)
```
+cd packages/test-app
./node_modules/.bin/ember github-pages:commit
git push origin gh-pages:gh-pages
```
diff --git a/README.md b/README.md
index 5f6fedc12..bfb76d5bf 100644
--- a/README.md
+++ b/README.md
@@ -18,7 +18,7 @@ found [here](http://ember-concurrency.com).
The [ember-concurrency documentation site](http://ember-concurrency.com) is an ember-cli app
with interactive examples powered by ember-concurrency. It runs from
-ember-concurrency's [dummy test app](https://github.com/machty/ember-concurrency/tree/master/tests/dummy/app).
+ember-concurrency's [test app](https://github.com/machty/ember-concurrency/tree/master/packages/test-app/app).
## Problems?
diff --git a/index.js b/index.js
deleted file mode 100644
index 98abeda1d..000000000
--- a/index.js
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict';
-
-const { addPlugin, hasPlugin } = require('ember-cli-babel-plugin-helpers');
-const Plugin = require.resolve(
- './lib/babel-plugin-transform-ember-concurrency-async-tasks'
-);
-
-module.exports = {
- name: require('./package').name,
-
- included(parent) {
- this._super.included.apply(this, arguments);
-
- if (!hasPlugin(parent, Plugin)) {
- addPlugin(parent, Plugin, {
- before: [
- '@babel/plugin-proposal-decorators',
- '@babel/plugin-transform-typescript',
-
- // Run before ember-cli-code-coverage
- 'babel-plugin-istanbul',
- ],
- });
- }
- },
-};
diff --git a/jsconfig.json b/jsconfig.json
deleted file mode 100644
index f408cac8c..000000000
--- a/jsconfig.json
+++ /dev/null
@@ -1 +0,0 @@
-{"compilerOptions":{"target":"es6","experimentalDecorators":true},"exclude":["node_modules","bower_components","tmp","vendor",".git","dist"]}
\ No newline at end of file
diff --git a/package.json b/package.json
index 1584c84f2..1d97ca1ba 100644
--- a/package.json
+++ b/package.json
@@ -1,133 +1,17 @@
{
- "name": "ember-concurrency",
- "version": "3.1.1",
- "description": "Improved concurrency/async primitives for Ember.js",
+ "private": true,
"scripts": {
- "build": "ember build --environment=production",
- "docs:build": "node_modules/.bin/jsdoc -c .jsdoc --verbose",
- "lint": "concurrently \"npm:lint:*(!fix)\" --names \"lint:\"",
- "lint:fix": "concurrently \"npm:lint:*:fix\" --names \"fix:\"",
- "lint:hbs": "ember-template-lint .",
- "lint:hbs:fix": "ember-template-lint . --fix",
- "lint:js": "eslint . --cache",
- "lint:js:fix": "eslint . --fix",
- "lint:ts": "tsc --noEmit",
- "start": "ember serve",
- "test": "concurrently \"npm:lint\" \"npm:test:*\" --names \"lint,test:\"",
- "test:ember": "ember test",
- "test:ember-compatibility": "ember try:each"
+ "start": "concurrently 'pnpm:start:*' --restart-after 5000 --prefix-colors cyan,white,yellow",
+ "start:addon": "pnpm --filter ember-concurrency run start",
+ "start:test-app": "pnpm --filter test-app run start",
+ "lint": "pnpm run --filter '*' lint",
+ "lint:fix": "pnpm run --filter '*' lint:fix",
+ "test": "pnpm --filter test-app run test",
+ "test:ember": "pnpm --filter test-app run test:ember",
+ "docs:build": "pnpm --filter test-app run docs:build"
},
- "peerDependencies": {
- "ember-source": "^3.28.0 || ^4.0.0 || >=5.0.0"
- },
- "engines": {
- "node": "16.* || >= 18"
- },
- "types": "./addon/index.d.ts",
"devDependencies": {
- "@babel/core": "^7.12.13",
- "@babel/helper-define-map": "^7.18.0",
- "@babel/helper-module-imports": "^7.18.2",
- "@babel/plugin-syntax-class-properties": "^7.12.13",
- "@babel/plugin-syntax-decorators": "^7.12.13",
- "@babel/preset-env": "^7.18.2",
- "@ember/optional-features": "^2.0.0",
- "@ember/string": "^3.0.1",
- "@ember/test-helpers": "^2.9.3",
- "@ember/test-waiters": "^3.0.0",
- "@embroider/macros": "^1.13.0",
- "@embroider/test-setup": "^2.1.1",
- "@glimmer/component": "^1.1.2",
- "@glimmer/tracking": "^1.0.4",
- "@types/express-serve-static-core": "^4.17.33",
- "@types/node": "^18.11.19",
- "@types/rsvp": "^4.0.4",
- "@typescript-eslint/eslint-plugin": "^4.33.0",
- "@typescript-eslint/parser": "^4.33.0",
- "babel-eslint": "^10.1.0",
- "broccoli-asset-rev": "^3.0.0",
- "broccoli-clean-css": "^1.1.0",
- "concurrently": "^7.6.0",
- "documentation": "^3.0.4",
- "ember-auto-import": "^2.6.1",
- "ember-cli": "~4.11.0",
- "ember-cli-app-version": "^5.0.0",
- "ember-cli-dependency-checker": "^3.3.1",
- "ember-cli-fastboot": "^4.1.2",
- "ember-cli-github-pages": "^0.2.2",
- "ember-cli-inject-live-reload": "^2.1.0",
- "ember-cli-sass": "^10.0.1",
- "ember-cli-terser": "^4.0.2",
- "ember-code-snippet": "^3.0.0",
- "ember-fn-helper-polyfill": "^1.0.2",
- "ember-load-initializers": "^2.1.2",
- "ember-modifier": "^3.2.7",
- "ember-page-title": "^7.0.0",
- "ember-prism": "^0.13.0",
- "ember-qunit": "^6.2.0",
- "ember-resolver": "^10.0.0",
- "ember-sinon-qunit": "^7.1.4",
- "ember-source": "~4.11.0",
- "ember-source-channel-url": "^3.0.0",
- "ember-template-lint": "^5.6.0",
- "ember-try": "^3.0.0",
- "eslint": "^7.32.0",
- "eslint-config-prettier": "^8.6.0",
- "eslint-plugin-ember": "^11.4.7",
- "eslint-plugin-n": "^15.6.1",
- "eslint-plugin-prettier": "^4.2.1",
- "eslint-plugin-qunit": "^7.3.4",
- "expect-type": "^0.15.0",
- "jsdoc": "^3.6.6",
- "jsdom": "^16.7.0",
- "loader.js": "^4.7.0",
- "prember": "~2.0.0",
- "prettier": "^2.8.4",
- "qunit": "^2.19.4",
- "qunit-dom": "^2.0.0",
- "sass": "^1.22.12",
- "sinon": "^15.0.2",
- "testem": "^3.4.2",
- "typescript": "~4.9.5",
- "webpack": "^5.75.0"
- },
- "keywords": [
- "ember-addon",
- "concurrency",
- "task",
- "tasks",
- "cancellation",
- "cancelation"
- ],
- "repository": "https://github.com/machty/ember-concurrency",
- "license": "MIT",
- "author": "Alex Matchneer ",
- "directories": {
- "doc": "doc",
- "test": "tests"
- },
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13",
- "@babel/types": "^7.12.13",
- "@glimmer/tracking": "^1.1.2",
- "ember-cli-babel": "^7.26.11",
- "ember-cli-babel-plugin-helpers": "^1.1.1",
- "ember-cli-htmlbars": "^6.2.0",
- "ember-compatibility-helpers": "^1.2.0"
- },
- "resolutions": {
- "klaw": "< 4",
- "socket.io": "4.2.0"
- },
- "ember": {
- "edition": "octane"
- },
- "ember-addon": {
- "configPath": "tests/dummy/config",
- "demoURL": "http://ember-concurrency.com/",
- "versionCompatibility": {
- "ember": ">=3.8.0"
- }
+ "concurrently": "^8.0.0"
},
"volta": {
"node": "16.19.0",
diff --git a/.eslintignore b/packages/ember-concurrency/.eslintignore
similarity index 86%
rename from .eslintignore
rename to packages/ember-concurrency/.eslintignore
index 08a732931..59f500381 100644
--- a/.eslintignore
+++ b/packages/ember-concurrency/.eslintignore
@@ -25,7 +25,7 @@
/yarn.lock.ember-try
# snippets
-/tests/dummy/snippets/
+/packages/test-app/snippets/
# jsdoc assets
-/tests/dummy/public/
+/packages/test-app/public/
diff --git a/.eslintrc.js b/packages/ember-concurrency/.eslintrc.js
similarity index 92%
rename from .eslintrc.js
rename to packages/ember-concurrency/.eslintrc.js
index 693f9ab5d..cb90816bd 100644
--- a/.eslintrc.js
+++ b/packages/ember-concurrency/.eslintrc.js
@@ -21,18 +21,19 @@ module.exports = {
},
rules: {
'require-yield': 0,
+ 'ember/no-computed-properties-in-native-classes': 0,
},
overrides: [
{
// Tutorial components (where specific formatting matters)
- files: ['tests/dummy/app/components/tutorial-*/**/*.js'],
+ files: ['packages/test-app/app/components/tutorial-*/**/*.js'],
rules: {
'prettier/prettier': 'off',
},
},
{
// Docs site
- files: ['tests/dummy/app/**/*.js'],
+ files: ['packages/test-app/app/**/*.js'],
rules: {
// Can't use Glimmer components or tracked due to 3.8 support
'ember/no-classic-classes': 'off',
@@ -56,7 +57,7 @@ module.exports = {
'./testem.js',
'./blueprints/*/index.js',
'./config/**/*.js',
- './tests/dummy/config/**/*.js',
+ './packages/test-app/config/**/*.js',
],
parserOptions: {
sourceType: 'script',
diff --git a/.prettierignore b/packages/ember-concurrency/.prettierignore
similarity index 100%
rename from .prettierignore
rename to packages/ember-concurrency/.prettierignore
diff --git a/.prettierrc.js b/packages/ember-concurrency/.prettierrc.js
similarity index 100%
rename from .prettierrc.js
rename to packages/ember-concurrency/.prettierrc.js
diff --git a/.template-lintrc.js b/packages/ember-concurrency/.template-lintrc.js
similarity index 100%
rename from .template-lintrc.js
rename to packages/ember-concurrency/.template-lintrc.js
diff --git a/packages/ember-concurrency/addon-main.cjs b/packages/ember-concurrency/addon-main.cjs
new file mode 100644
index 000000000..9375da065
--- /dev/null
+++ b/packages/ember-concurrency/addon-main.cjs
@@ -0,0 +1,2 @@
+const { addonV1Shim } = require('@embroider/addon-shim');
+module.exports = addonV1Shim(__dirname);
diff --git a/app/helpers/cancel-all.js b/packages/ember-concurrency/app/helpers/cancel-all.js
similarity index 100%
rename from app/helpers/cancel-all.js
rename to packages/ember-concurrency/app/helpers/cancel-all.js
diff --git a/app/helpers/perform.js b/packages/ember-concurrency/app/helpers/perform.js
similarity index 100%
rename from app/helpers/perform.js
rename to packages/ember-concurrency/app/helpers/perform.js
diff --git a/app/helpers/task.js b/packages/ember-concurrency/app/helpers/task.js
similarity index 100%
rename from app/helpers/task.js
rename to packages/ember-concurrency/app/helpers/task.js
diff --git a/lib/babel-plugin-transform-ember-concurrency-async-tasks.js b/packages/ember-concurrency/async-arrow-task-transform.js
similarity index 100%
rename from lib/babel-plugin-transform-ember-concurrency-async-tasks.js
rename to packages/ember-concurrency/async-arrow-task-transform.js
diff --git a/packages/ember-concurrency/babel.config.json b/packages/ember-concurrency/babel.config.json
new file mode 100644
index 000000000..db78ae9a7
--- /dev/null
+++ b/packages/ember-concurrency/babel.config.json
@@ -0,0 +1,20 @@
+// Babel config for building the ember-concurrency package itself. Because EC is a V2 addon,
+// this babel config should *not* apply presets or compile away ES modules.
+// It exists only to provide development niceties for you, like automatic
+// template colocation.
+{
+ "plugins": [
+ "@embroider/addon-dev/template-colocation-plugin",
+ [
+ "babel-plugin-ember-template-compilation",
+ {
+ "targetFormat": "hbs",
+ "transforms": []
+ }
+ ],
+ [
+ "module:decorator-transforms",
+ { "runtime": { "import": "decorator-transforms/runtime" } }
+ ]
+ ]
+}
diff --git a/packages/ember-concurrency/package.json b/packages/ember-concurrency/package.json
new file mode 100644
index 000000000..a8f70647e
--- /dev/null
+++ b/packages/ember-concurrency/package.json
@@ -0,0 +1,100 @@
+{
+ "name": "ember-concurrency",
+ "version": "3.1.1",
+ "description": "Improved concurrency/async primitives for Ember.js",
+ "scripts": {
+ "build": "rollup --config",
+ "lint": "concurrently 'npm:lint:*(!fix)' --names 'lint:'",
+ "lint:fix": "concurrently 'npm:lint:*:fix' --names 'fix:'",
+ "lint:hbs": "ember-template-lint .",
+ "lint:hbs:fix": "ember-template-lint . --fix",
+ "lint:js": "eslint . --cache",
+ "lint:js:fix": "eslint . --fix",
+ "start": "rollup --config --watch",
+ "test": "echo 'Addon does not have tests, run tests in test-app'",
+ "prepare": "pnpm build"
+ },
+ "peerDependencies": {
+ "ember-source": "^3.28.0 || ^4.0.0 || >=5.0.0",
+ "@glimmer/tracking": "^1.1.2",
+ "@glint/template": ">= 1.0.0"
+ },
+ "engines": {
+ "node": "16.* || >= 18"
+ },
+ "types": "./addon/index.d.ts",
+ "devDependencies": {
+ "@babel/core": "^7.23.9",
+ "@babel/plugin-proposal-class-properties": "^7.18.6",
+ "@babel/plugin-proposal-decorators": "^7.23.9",
+ "@embroider/addon-dev": "^4.2.0",
+ "@rollup/plugin-babel": "^6.0.4",
+ "@tsconfig/ember": "^3.0.3",
+ "@typescript-eslint/eslint-plugin": "^6.14.0",
+ "@typescript-eslint/parser": "^6.14.0",
+ "ember-template-lint": "^5.6.0",
+ "eslint": "^7.32.0",
+ "eslint-config-prettier": "^8.6.0",
+ "eslint-plugin-ember": "^11.4.7",
+ "eslint-plugin-n": "^15.6.1",
+ "eslint-plugin-prettier": "^4.2.1",
+ "eslint-plugin-qunit": "^7.3.4",
+ "prettier": "^2.8.4",
+ "rollup": "^4.9.6",
+ "typescript": "^5.3.3"
+ },
+ "files": [
+ "addon-main.cjs",
+ "dist",
+ "src/build"
+ ],
+ "exports": {
+ ".": "./dist/index.js",
+ "./*": "./dist/*",
+ "./addon-main.js": "./addon-main.cjs",
+ "./async-arrow-task-transform": "./async-arrow-task-transform.js"
+ },
+ "keywords": [
+ "ember-addon",
+ "concurrency",
+ "task",
+ "tasks",
+ "cancellation",
+ "cancelation"
+ ],
+ "repository": "https://github.com/machty/ember-concurrency",
+ "license": "MIT",
+ "author": "Alex Matchneer ",
+ "directories": {
+ "doc": "doc",
+ "test": "tests"
+ },
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.12.13",
+ "@babel/types": "^7.12.13",
+ "decorator-transforms": "^1.0.1",
+ "@embroider/addon-shim": "^1.8.7"
+ },
+ "ember": {
+ "version": 2,
+ "app-js": "./app"
+ },
+ "ember-addon": {
+ "demoURL": "http://ember-concurrency.com/",
+ "versionCompatibility": {
+ "ember": ">=3.8.0"
+ },
+ "version": 2,
+ "type": "addon",
+ "main": "addon-main.cjs",
+ "app-js": {
+ "./helpers/cancel-all.js": "./dist/_app_/helpers/cancel-all.js",
+ "./helpers/perform.js": "./dist/_app_/helpers/perform.js",
+ "./helpers/task.js": "./dist/_app_/helpers/task.js"
+ }
+ },
+ "volta": {
+ "node": "16.19.0",
+ "pnpm": "7.33.6"
+ }
+}
diff --git a/packages/ember-concurrency/rollup.config.mjs b/packages/ember-concurrency/rollup.config.mjs
new file mode 100644
index 000000000..96c3a6c10
--- /dev/null
+++ b/packages/ember-concurrency/rollup.config.mjs
@@ -0,0 +1,46 @@
+import babel from "@rollup/plugin-babel";
+import { Addon } from "@embroider/addon-dev/rollup";
+
+const addon = new Addon({
+ srcDir: "src",
+ destDir: "dist",
+});
+
+export default {
+ // This provides defaults that work well alongside `publicEntrypoints` below.
+ // You can augment this if you need to.
+ output: addon.output(),
+
+ plugins: [
+ // These are the modules that users should be able to import from your
+ // addon. Anything not listed here may get optimized away.
+ addon.publicEntrypoints(['index.js', '**/*.js']),
+
+ // These are the modules that should get reexported into the traditional
+ // "app" tree. Things in here should also be in publicEntrypoints above, but
+ // not everything in publicEntrypoints necessarily needs to go here.
+ addon.appReexports(["helpers/**/*.js"]),
+
+ // Follow the V2 Addon rules about dependencies. Your code can import from
+ // `dependencies` and `peerDependencies` as well as standard Ember-provided
+ // package names.
+ addon.dependencies(),
+
+ // This babel config should *not* apply presets or compile away ES modules.
+ // It exists only to provide development niceties for you, like automatic
+ // template colocation.
+ //
+ // By default, this will load the actual babel config from the file
+ // babel.config.json.
+ babel({
+ extensions: ['.js', '.gjs', '.ts', '.gts'],
+ babelHelpers: 'bundled',
+ }),
+
+ // Ensure that standalone .hbs files are properly integrated as Javascript.
+ addon.hbs(),
+
+ // Remove leftover build artifacts when starting a new build.
+ addon.clean(),
+ ],
+};
diff --git a/addon/-private/async-arrow-runtime.js b/packages/ember-concurrency/src/-private/async-arrow-runtime.js
similarity index 87%
rename from addon/-private/async-arrow-runtime.js
rename to packages/ember-concurrency/src/-private/async-arrow-runtime.js
index 78cb767cd..6b4b20bd7 100644
--- a/addon/-private/async-arrow-runtime.js
+++ b/packages/ember-concurrency/src/-private/async-arrow-runtime.js
@@ -2,7 +2,7 @@ import { TaskFactory } from './task-factory';
/**
* This builder function is called by the transpiled code from
- * `task(async () => {})`. See lib/babel-plugin-transform-ember-concurrency-async-tasks.js
+ * `task(async () => {})`. See async-arrow-task-transform.js
*
* @private
*/
diff --git a/addon/-private/cancelable-promise-helpers.js b/packages/ember-concurrency/src/-private/cancelable-promise-helpers.js
similarity index 100%
rename from addon/-private/cancelable-promise-helpers.js
rename to packages/ember-concurrency/src/-private/cancelable-promise-helpers.js
diff --git a/addon/-private/ember-environment.js b/packages/ember-concurrency/src/-private/ember-environment.js
similarity index 100%
rename from addon/-private/ember-environment.js
rename to packages/ember-concurrency/src/-private/ember-environment.js
diff --git a/addon/-private/external/environment.js b/packages/ember-concurrency/src/-private/external/environment.js
similarity index 100%
rename from addon/-private/external/environment.js
rename to packages/ember-concurrency/src/-private/external/environment.js
diff --git a/addon/-private/external/generator-state.js b/packages/ember-concurrency/src/-private/external/generator-state.js
similarity index 100%
rename from addon/-private/external/generator-state.js
rename to packages/ember-concurrency/src/-private/external/generator-state.js
diff --git a/addon/-private/external/scheduler/policies/bounded-policy.js b/packages/ember-concurrency/src/-private/external/scheduler/policies/bounded-policy.js
similarity index 100%
rename from addon/-private/external/scheduler/policies/bounded-policy.js
rename to packages/ember-concurrency/src/-private/external/scheduler/policies/bounded-policy.js
diff --git a/addon/-private/external/scheduler/policies/drop-policy.js b/packages/ember-concurrency/src/-private/external/scheduler/policies/drop-policy.js
similarity index 100%
rename from addon/-private/external/scheduler/policies/drop-policy.js
rename to packages/ember-concurrency/src/-private/external/scheduler/policies/drop-policy.js
diff --git a/addon/-private/external/scheduler/policies/enqueued-policy.js b/packages/ember-concurrency/src/-private/external/scheduler/policies/enqueued-policy.js
similarity index 100%
rename from addon/-private/external/scheduler/policies/enqueued-policy.js
rename to packages/ember-concurrency/src/-private/external/scheduler/policies/enqueued-policy.js
diff --git a/addon/-private/external/scheduler/policies/execution-states.js b/packages/ember-concurrency/src/-private/external/scheduler/policies/execution-states.js
similarity index 100%
rename from addon/-private/external/scheduler/policies/execution-states.js
rename to packages/ember-concurrency/src/-private/external/scheduler/policies/execution-states.js
diff --git a/addon/-private/external/scheduler/policies/keep-latest-policy.js b/packages/ember-concurrency/src/-private/external/scheduler/policies/keep-latest-policy.js
similarity index 100%
rename from addon/-private/external/scheduler/policies/keep-latest-policy.js
rename to packages/ember-concurrency/src/-private/external/scheduler/policies/keep-latest-policy.js
diff --git a/addon/-private/external/scheduler/policies/restartable-policy.js b/packages/ember-concurrency/src/-private/external/scheduler/policies/restartable-policy.js
similarity index 100%
rename from addon/-private/external/scheduler/policies/restartable-policy.js
rename to packages/ember-concurrency/src/-private/external/scheduler/policies/restartable-policy.js
diff --git a/addon/-private/external/scheduler/policies/unbounded-policy.js b/packages/ember-concurrency/src/-private/external/scheduler/policies/unbounded-policy.js
similarity index 100%
rename from addon/-private/external/scheduler/policies/unbounded-policy.js
rename to packages/ember-concurrency/src/-private/external/scheduler/policies/unbounded-policy.js
diff --git a/addon/-private/external/scheduler/refresh.js b/packages/ember-concurrency/src/-private/external/scheduler/refresh.js
similarity index 100%
rename from addon/-private/external/scheduler/refresh.js
rename to packages/ember-concurrency/src/-private/external/scheduler/refresh.js
diff --git a/addon/-private/external/scheduler/scheduler.js b/packages/ember-concurrency/src/-private/external/scheduler/scheduler.js
similarity index 100%
rename from addon/-private/external/scheduler/scheduler.js
rename to packages/ember-concurrency/src/-private/external/scheduler/scheduler.js
diff --git a/addon/-private/external/scheduler/state-tracker/null-state-tracker.js b/packages/ember-concurrency/src/-private/external/scheduler/state-tracker/null-state-tracker.js
similarity index 100%
rename from addon/-private/external/scheduler/state-tracker/null-state-tracker.js
rename to packages/ember-concurrency/src/-private/external/scheduler/state-tracker/null-state-tracker.js
diff --git a/addon/-private/external/scheduler/state-tracker/null-state.js b/packages/ember-concurrency/src/-private/external/scheduler/state-tracker/null-state.js
similarity index 100%
rename from addon/-private/external/scheduler/state-tracker/null-state.js
rename to packages/ember-concurrency/src/-private/external/scheduler/state-tracker/null-state.js
diff --git a/addon/-private/external/scheduler/state-tracker/state-tracker.js b/packages/ember-concurrency/src/-private/external/scheduler/state-tracker/state-tracker.js
similarity index 100%
rename from addon/-private/external/scheduler/state-tracker/state-tracker.js
rename to packages/ember-concurrency/src/-private/external/scheduler/state-tracker/state-tracker.js
diff --git a/addon/-private/external/scheduler/state-tracker/state.js b/packages/ember-concurrency/src/-private/external/scheduler/state-tracker/state.js
similarity index 100%
rename from addon/-private/external/scheduler/state-tracker/state.js
rename to packages/ember-concurrency/src/-private/external/scheduler/state-tracker/state.js
diff --git a/addon/-private/external/task-decorators.js b/packages/ember-concurrency/src/-private/external/task-decorators.js
similarity index 100%
rename from addon/-private/external/task-decorators.js
rename to packages/ember-concurrency/src/-private/external/task-decorators.js
diff --git a/addon/-private/external/task-factory.js b/packages/ember-concurrency/src/-private/external/task-factory.js
similarity index 100%
rename from addon/-private/external/task-factory.js
rename to packages/ember-concurrency/src/-private/external/task-factory.js
diff --git a/addon/-private/external/task-instance/base.js b/packages/ember-concurrency/src/-private/external/task-instance/base.js
similarity index 100%
rename from addon/-private/external/task-instance/base.js
rename to packages/ember-concurrency/src/-private/external/task-instance/base.js
diff --git a/addon/-private/external/task-instance/cancelation.js b/packages/ember-concurrency/src/-private/external/task-instance/cancelation.js
similarity index 100%
rename from addon/-private/external/task-instance/cancelation.js
rename to packages/ember-concurrency/src/-private/external/task-instance/cancelation.js
diff --git a/addon/-private/external/task-instance/completion-states.js b/packages/ember-concurrency/src/-private/external/task-instance/completion-states.js
similarity index 100%
rename from addon/-private/external/task-instance/completion-states.js
rename to packages/ember-concurrency/src/-private/external/task-instance/completion-states.js
diff --git a/addon/-private/external/task-instance/executor.js b/packages/ember-concurrency/src/-private/external/task-instance/executor.js
similarity index 100%
rename from addon/-private/external/task-instance/executor.js
rename to packages/ember-concurrency/src/-private/external/task-instance/executor.js
diff --git a/addon/-private/external/task-instance/initial-state.js b/packages/ember-concurrency/src/-private/external/task-instance/initial-state.js
similarity index 100%
rename from addon/-private/external/task-instance/initial-state.js
rename to packages/ember-concurrency/src/-private/external/task-instance/initial-state.js
diff --git a/addon/-private/external/task/default-state.js b/packages/ember-concurrency/src/-private/external/task/default-state.js
similarity index 100%
rename from addon/-private/external/task/default-state.js
rename to packages/ember-concurrency/src/-private/external/task/default-state.js
diff --git a/addon/-private/external/task/task-group.js b/packages/ember-concurrency/src/-private/external/task/task-group.js
similarity index 100%
rename from addon/-private/external/task/task-group.js
rename to packages/ember-concurrency/src/-private/external/task/task-group.js
diff --git a/addon/-private/external/task/task.js b/packages/ember-concurrency/src/-private/external/task/task.js
similarity index 100%
rename from addon/-private/external/task/task.js
rename to packages/ember-concurrency/src/-private/external/task/task.js
diff --git a/addon/-private/external/task/taskable.js b/packages/ember-concurrency/src/-private/external/task/taskable.js
similarity index 100%
rename from addon/-private/external/task/taskable.js
rename to packages/ember-concurrency/src/-private/external/task/taskable.js
diff --git a/addon/-private/external/yieldables.js b/packages/ember-concurrency/src/-private/external/yieldables.js
similarity index 100%
rename from addon/-private/external/yieldables.js
rename to packages/ember-concurrency/src/-private/external/yieldables.js
diff --git a/addon/-private/helpers.js b/packages/ember-concurrency/src/-private/helpers.js
similarity index 100%
rename from addon/-private/helpers.js
rename to packages/ember-concurrency/src/-private/helpers.js
diff --git a/addon/-private/scheduler/ember-scheduler.js b/packages/ember-concurrency/src/-private/scheduler/ember-scheduler.js
similarity index 100%
rename from addon/-private/scheduler/ember-scheduler.js
rename to packages/ember-concurrency/src/-private/scheduler/ember-scheduler.js
diff --git a/addon/-private/task-decorators.js b/packages/ember-concurrency/src/-private/task-decorators.js
similarity index 92%
rename from addon/-private/task-decorators.js
rename to packages/ember-concurrency/src/-private/task-decorators.js
index f435ce53f..ce07b5f6a 100644
--- a/addon/-private/task-decorators.js
+++ b/packages/ember-concurrency/src/-private/task-decorators.js
@@ -1,38 +1,11 @@
-import { computed, get } from '@ember/object';
import {
- decoratorWithParams,
createTaskDecorator,
createTaskGroupDecorator,
lastValue as nativeLastValue,
} from './external/task-decorators';
import { TaskFactory as EmberTaskFactory } from './task-factory';
-import { USE_TRACKED } from './utils';
-const computedLastValue = decoratorWithParams(
- (target, key, descriptor, [taskName] = []) => {
- const { initializer } = descriptor;
- delete descriptor.initializer;
-
- let cp = computed(`${taskName}.lastSuccessful`, function () {
- let lastInstance = get(this, `${taskName}.lastSuccessful`);
-
- if (lastInstance) {
- // eslint-disable-next-line ember/no-get
- return get(lastInstance, 'value');
- }
-
- if (initializer) {
- return initializer.call(this);
- }
-
- return undefined;
- });
-
- return cp(target, key, descriptor);
- }
-);
-
-export const lastValue = USE_TRACKED ? nativeLastValue : computedLastValue;
+export const lastValue = nativeLastValue;
/**
* A Task is a cancelable, restartable, asynchronous operation that
diff --git a/addon/-private/task-factory.js b/packages/ember-concurrency/src/-private/task-factory.js
similarity index 100%
rename from addon/-private/task-factory.js
rename to packages/ember-concurrency/src/-private/task-factory.js
diff --git a/addon/-private/task-group.js b/packages/ember-concurrency/src/-private/task-group.js
similarity index 100%
rename from addon/-private/task-group.js
rename to packages/ember-concurrency/src/-private/task-group.js
diff --git a/addon/-private/task-instance.js b/packages/ember-concurrency/src/-private/task-instance.js
similarity index 99%
rename from addon/-private/task-instance.js
rename to packages/ember-concurrency/src/-private/task-instance.js
index ea365a8c0..c3501c66b 100644
--- a/addon/-private/task-instance.js
+++ b/packages/ember-concurrency/src/-private/task-instance.js
@@ -1,6 +1,5 @@
import { BaseTaskInstance } from './external/task-instance/base';
import { TRACKED_INITIAL_INSTANCE_STATE } from './tracked-state';
-import { assignProperties } from './utils';
/**
A `TaskInstance` represent a single execution of a
@@ -24,7 +23,7 @@ import { assignProperties } from './utils';
export class TaskInstance extends BaseTaskInstance {
setState(props) {
let state = this._recomputeState(props);
- assignProperties(this, {
+ Object.assign(this, {
...props,
isRunning: !props.isFinished,
isDropped: state === 'dropped',
diff --git a/addon/-private/task-properties.js b/packages/ember-concurrency/src/-private/task-properties.js
similarity index 90%
rename from addon/-private/task-properties.js
rename to packages/ember-concurrency/src/-private/task-properties.js
index 1a8b3d9a8..eff97498c 100644
--- a/addon/-private/task-properties.js
+++ b/packages/ember-concurrency/src/-private/task-properties.js
@@ -1,7 +1,7 @@
import Ember from 'ember';
+
import { computed } from '@ember/object';
-import ComputedProperty from '@ember/object/computed';
-import { gte } from 'ember-compatibility-helpers';
+
import EnqueueSchedulerPolicy from './external/scheduler/policies/enqueued-policy';
import DropSchedulerPolicy from './external/scheduler/policies/drop-policy';
import KeepLatestSchedulerPolicy from './external/scheduler/policies/keep-latest-policy';
@@ -192,24 +192,8 @@ export const propertyModifiers = {
@class TaskProperty
*/
-export let TaskProperty;
-export let TaskGroupProperty;
-
-if (gte('3.10.0')) {
- TaskProperty = class {};
- TaskGroupProperty = class {};
-} else {
- // Prior to the 3.10.0 refactors, we had to extend the _ComputedProperty class
- // for a classic decorator/descriptor to run correctly.
- TaskProperty = class extends ComputedProperty {
- callSuperSetup() {
- if (super.setup) {
- super.setup(...arguments);
- }
- }
- };
- TaskGroupProperty = class extends ComputedProperty {};
-}
+export class TaskProperty {}
+export class TaskGroupProperty {}
Object.assign(TaskGroupProperty.prototype, propertyModifiers);
Object.assign(TaskProperty.prototype, propertyModifiers, {
@@ -293,19 +277,15 @@ Object.assign(TaskProperty.prototype, propertyModifiers, {
const setDecorator = Ember._setClassicDecorator || Ember._setComputedDecorator;
export function taskComputed(fn) {
- if (gte('3.10.0')) {
- let cp = function (proto, key) {
- if (cp.setup !== undefined) {
- cp.setup(proto, key);
- }
+ let cp = function (proto, key) {
+ if (cp.setup !== undefined) {
+ cp.setup(proto, key);
+ }
- return computed(fn)(...arguments);
- };
+ return computed(fn)(...arguments);
+ };
- setDecorator(cp);
+ setDecorator(cp);
- return cp;
- } else {
- return computed(fn);
- }
+ return cp;
}
diff --git a/addon/-private/task-public-api.js b/packages/ember-concurrency/src/-private/task-public-api.js
similarity index 100%
rename from addon/-private/task-public-api.js
rename to packages/ember-concurrency/src/-private/task-public-api.js
diff --git a/addon/-private/task.js b/packages/ember-concurrency/src/-private/task.js
similarity index 100%
rename from addon/-private/task.js
rename to packages/ember-concurrency/src/-private/task.js
diff --git a/addon/-private/taskable-mixin.js b/packages/ember-concurrency/src/-private/taskable-mixin.js
similarity index 86%
rename from addon/-private/taskable-mixin.js
rename to packages/ember-concurrency/src/-private/taskable-mixin.js
index 7560b202a..40bbc1bf3 100644
--- a/addon/-private/taskable-mixin.js
+++ b/packages/ember-concurrency/src/-private/taskable-mixin.js
@@ -1,5 +1,3 @@
-import { assignProperties } from './utils';
-
export const TASKABLE_MIXIN = {
_performCount: 0,
@@ -15,7 +13,7 @@ export const TASKABLE_MIXIN = {
isIdle: !isRunning && !isQueued,
state: isRunning ? 'running' : 'idle',
});
- assignProperties(this, derivedState);
+ Object.assign(this, derivedState);
},
onState(state, task) {
diff --git a/addon/-private/tracked-state.js b/packages/ember-concurrency/src/-private/tracked-state.js
similarity index 51%
rename from addon/-private/tracked-state.js
rename to packages/ember-concurrency/src/-private/tracked-state.js
index 53efd1844..4d03c1cba 100644
--- a/addon/-private/tracked-state.js
+++ b/packages/ember-concurrency/src/-private/tracked-state.js
@@ -1,7 +1,6 @@
import { tracked } from '@glimmer/tracking';
import { DEFAULT_STATE as INITIAL_TASK_STATE } from './external/task/default-state';
import { INITIAL_STATE as INITIAL_INSTANCE_STATE } from './external/task-instance/initial-state';
-import { USE_TRACKED } from './utils';
function trackMixin(proto, obj, key) {
const propDesc = Object.getOwnPropertyDescriptor(proto, key);
@@ -21,30 +20,28 @@ function applyTracked(proto, initial) {
export let TRACKED_INITIAL_TASK_STATE;
export let TRACKED_INITIAL_INSTANCE_STATE;
-if (USE_TRACKED) {
- TRACKED_INITIAL_TASK_STATE = applyTracked(INITIAL_TASK_STATE, {});
- TRACKED_INITIAL_TASK_STATE = applyTracked(
- {
- numRunning: 0,
- numQueued: 0,
- isRunning: false,
- isQueued: false,
- isIdle: true,
- state: 'idle',
- },
- TRACKED_INITIAL_TASK_STATE
- );
+TRACKED_INITIAL_TASK_STATE = applyTracked(INITIAL_TASK_STATE, {});
+TRACKED_INITIAL_TASK_STATE = applyTracked(
+ {
+ numRunning: 0,
+ numQueued: 0,
+ isRunning: false,
+ isQueued: false,
+ isIdle: true,
+ state: 'idle',
+ },
+ TRACKED_INITIAL_TASK_STATE
+);
- TRACKED_INITIAL_INSTANCE_STATE = applyTracked(INITIAL_INSTANCE_STATE, {});
- TRACKED_INITIAL_INSTANCE_STATE = applyTracked(
- {
- state: 'waiting',
- isDropped: false,
- isRunning: false,
- },
- TRACKED_INITIAL_INSTANCE_STATE
- );
+TRACKED_INITIAL_INSTANCE_STATE = applyTracked(INITIAL_INSTANCE_STATE, {});
+TRACKED_INITIAL_INSTANCE_STATE = applyTracked(
+ {
+ state: 'waiting',
+ isDropped: false,
+ isRunning: false,
+ },
+ TRACKED_INITIAL_INSTANCE_STATE
+);
- Object.freeze(TRACKED_INITIAL_TASK_STATE);
- Object.freeze(TRACKED_INITIAL_INSTANCE_STATE);
-}
+Object.freeze(TRACKED_INITIAL_TASK_STATE);
+Object.freeze(TRACKED_INITIAL_INSTANCE_STATE);
diff --git a/addon/-private/utils.js b/packages/ember-concurrency/src/-private/utils.js
similarity index 89%
rename from addon/-private/utils.js
rename to packages/ember-concurrency/src/-private/utils.js
index 89f82167c..987aa39d1 100644
--- a/addon/-private/utils.js
+++ b/packages/ember-concurrency/src/-private/utils.js
@@ -1,12 +1,7 @@
-import { setProperties } from '@ember/object';
import { later, cancel } from '@ember/runloop';
-import { gte } from 'ember-compatibility-helpers';
import { EMBER_ENVIRONMENT } from './ember-environment';
import { Yieldable } from './external/yieldables';
-export const USE_TRACKED = gte('3.16.0');
-export const assignProperties = USE_TRACKED ? Object.assign : setProperties;
-
export function isEventedObject(c) {
return (
c &&
diff --git a/addon/-private/wait-for.js b/packages/ember-concurrency/src/-private/wait-for.js
similarity index 100%
rename from addon/-private/wait-for.js
rename to packages/ember-concurrency/src/-private/wait-for.js
diff --git a/addon/-task-instance.js b/packages/ember-concurrency/src/-task-instance.js
similarity index 100%
rename from addon/-task-instance.js
rename to packages/ember-concurrency/src/-task-instance.js
diff --git a/addon/-task-property.js b/packages/ember-concurrency/src/-task-property.js
similarity index 100%
rename from addon/-task-property.js
rename to packages/ember-concurrency/src/-task-property.js
diff --git a/addon/helpers/cancel-all.js b/packages/ember-concurrency/src/helpers/cancel-all.js
similarity index 89%
rename from addon/helpers/cancel-all.js
rename to packages/ember-concurrency/src/helpers/cancel-all.js
index dce913821..31340da05 100644
--- a/addon/helpers/cancel-all.js
+++ b/packages/ember-concurrency/src/helpers/cancel-all.js
@@ -1,6 +1,6 @@
import { helper } from '@ember/component/helper';
import { assert } from '@ember/debug';
-import { taskHelperClosure } from 'ember-concurrency/-private/helpers';
+import { taskHelperClosure } from '../-private/helpers';
const CANCEL_REASON = "the 'cancel-all' template helper was invoked";
diff --git a/addon/helpers/perform.js b/packages/ember-concurrency/src/helpers/perform.js
similarity index 93%
rename from addon/helpers/perform.js
rename to packages/ember-concurrency/src/helpers/perform.js
index 86a140e72..04fafa983 100644
--- a/addon/helpers/perform.js
+++ b/packages/ember-concurrency/src/helpers/perform.js
@@ -1,6 +1,6 @@
import { helper } from '@ember/component/helper';
import { assert } from '@ember/debug';
-import { taskHelperClosure } from 'ember-concurrency/-private/helpers';
+import { taskHelperClosure } from '../-private/helpers';
function maybeReportError(onError) {
return function (e) {
diff --git a/addon/helpers/task.js b/packages/ember-concurrency/src/helpers/task.js
similarity index 100%
rename from addon/helpers/task.js
rename to packages/ember-concurrency/src/helpers/task.js
diff --git a/addon/index.d.ts b/packages/ember-concurrency/src/index.d.ts
similarity index 100%
rename from addon/index.d.ts
rename to packages/ember-concurrency/src/index.d.ts
diff --git a/addon/index.js b/packages/ember-concurrency/src/index.js
similarity index 100%
rename from addon/index.js
rename to packages/ember-concurrency/src/index.js
diff --git a/packages/ember-concurrency/tsconfig.json b/packages/ember-concurrency/tsconfig.json
new file mode 100644
index 000000000..85625b2ee
--- /dev/null
+++ b/packages/ember-concurrency/tsconfig.json
@@ -0,0 +1,42 @@
+{
+ "extends": "@tsconfig/ember/tsconfig.json",
+ "include": [
+ "src/**/*",
+ "unpublished-development-types/**/*"
+ ],
+ "glint": {
+ "environment": ["ember-loose", "ember-template-imports"]
+ },
+ "compilerOptions": {
+ "allowJs": true,
+ "declarationDir": "declarations",
+
+ /**
+ https://www.typescriptlang.org/tsconfig#rootDir
+ "Default: The longest common path of all non-declaration input files."
+
+ Because we want our declarations' structure to match our rollup output,
+ we need this "rootDir" to match the "srcDir" in the rollup.config.mjs.
+
+ This way, we can have simpler `package.json#exports` that matches
+ imports to files on disk
+ */
+ "rootDir": "./src",
+
+ /**
+ https://www.typescriptlang.org/tsconfig#verbatimModuleSyntax
+
+ We don't want to include types dependencies in our compiled output, so tell TypeScript
+ to enforce using `import type` instead of `import` for Types.
+ */
+ "verbatimModuleSyntax": true,
+
+ /**
+ https://www.typescriptlang.org/tsconfig#allowImportingTsExtensions
+
+ We want our tooling to know how to resolve our custom files so the appropriate plugins
+ can do the proper transformations on those files.
+ */
+ "allowImportingTsExtensions": true
+ }
+}
\ No newline at end of file
diff --git a/packages/test-app/.editorconfig b/packages/test-app/.editorconfig
new file mode 100644
index 000000000..c35a00240
--- /dev/null
+++ b/packages/test-app/.editorconfig
@@ -0,0 +1,19 @@
+# EditorConfig helps developers define and maintain consistent
+# coding styles between different editors and IDEs
+# editorconfig.org
+
+root = true
+
+[*]
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+indent_style = space
+indent_size = 2
+
+[*.hbs]
+insert_final_newline = false
+
+[*.{diff,md}]
+trim_trailing_whitespace = false
diff --git a/.ember-cli b/packages/test-app/.ember-cli
similarity index 100%
rename from .ember-cli
rename to packages/test-app/.ember-cli
diff --git a/packages/test-app/.eslintignore b/packages/test-app/.eslintignore
new file mode 100644
index 000000000..b49028093
--- /dev/null
+++ b/packages/test-app/.eslintignore
@@ -0,0 +1,29 @@
+# unconventional js
+/blueprints/*/files/
+/vendor/
+
+# compiled output
+/dist/
+/tmp/
+
+# dependencies
+/bower_components/
+/node_modules/
+
+# misc
+/coverage/
+!.*
+.*/
+.eslintcache
+
+# ember-try
+/.node_modules.ember-try/
+/bower.json.ember-try
+/npm-shrinkwrap.json.ember-try
+/package.json.ember-try
+/package-lock.json.ember-try
+/yarn.lock.ember-try
+
+snippets
+
+app
diff --git a/packages/test-app/.eslintrc.js b/packages/test-app/.eslintrc.js
new file mode 100644
index 000000000..4477d5d56
--- /dev/null
+++ b/packages/test-app/.eslintrc.js
@@ -0,0 +1,57 @@
+'use strict';
+
+module.exports = {
+ root: true,
+ parser: 'babel-eslint',
+ parserOptions: {
+ ecmaVersion: 2018,
+ sourceType: 'module',
+ ecmaFeatures: {
+ legacyDecorators: true,
+ },
+ },
+ plugins: ['ember'],
+ extends: [
+ 'eslint:recommended',
+ 'plugin:ember/recommended',
+ 'plugin:prettier/recommended',
+ ],
+ env: {
+ browser: true,
+ },
+ rules: {
+ 'require-yield': 0,
+ 'ember/no-classic-components': 0,
+ 'ember/no-classic-classes': 0,
+ 'ember/no-computed-properties-in-native-classes': 0,
+ },
+ overrides: [
+ // node files
+ {
+ files: [
+ './.eslintrc.js',
+ './.prettierrc.js',
+ './.template-lintrc.js',
+ './ember-cli-build.js',
+ './testem.js',
+ './blueprints/*/index.js',
+ './config/**/*.js',
+ './lib/*/index.js',
+ './server/**/*.js',
+ ],
+ parserOptions: {
+ sourceType: 'script',
+ },
+ env: {
+ browser: false,
+ node: true,
+ },
+ extends: ['plugin:n/recommended'],
+ },
+ {
+ // test files
+ files: ['tests/**/*-test.{js,ts}'],
+ extends: ['plugin:qunit/recommended'],
+ },
+ ],
+};
diff --git a/packages/test-app/.gitignore b/packages/test-app/.gitignore
new file mode 100644
index 000000000..f1e859b29
--- /dev/null
+++ b/packages/test-app/.gitignore
@@ -0,0 +1,32 @@
+# See https://help.github.com/ignore-files/ for more about ignoring files.
+
+# compiled output
+/dist/
+/tmp/
+
+# dependencies
+/bower_components/
+/node_modules/
+
+# misc
+/.env*
+/.pnp*
+/.sass-cache
+/.eslintcache
+/connect.lock
+/coverage/
+/libpeerconnection.log
+/npm-debug.log*
+/testem.log
+/yarn-error.log
+
+# ember-try
+/.node_modules.ember-try/
+/bower.json.ember-try
+/npm-shrinkwrap.json.ember-try
+/package.json.ember-try
+/package-lock.json.ember-try
+/yarn.lock.ember-try
+
+# broccoli-debug
+/DEBUG/
diff --git a/.jsdoc b/packages/test-app/.jsdoc
similarity index 64%
rename from .jsdoc
rename to packages/test-app/.jsdoc
index b0e9db4b7..378cc5d7e 100644
--- a/.jsdoc
+++ b/packages/test-app/.jsdoc
@@ -1,12 +1,12 @@
{
"opts": {
- "destination": "tests/dummy/public/api/",
+ "destination": "public/api/",
"readme": "API.md",
"recurse": true
},
"plugins": ["plugins/markdown"],
"source": {
- "include": ["addon"]
+ "include": ["../ember-concurrency/src"]
},
"sourceType": "module"
}
diff --git a/packages/test-app/.prettierignore b/packages/test-app/.prettierignore
new file mode 100644
index 000000000..4178fd571
--- /dev/null
+++ b/packages/test-app/.prettierignore
@@ -0,0 +1,25 @@
+# unconventional js
+/blueprints/*/files/
+/vendor/
+
+# compiled output
+/dist/
+/tmp/
+
+# dependencies
+/bower_components/
+/node_modules/
+
+# misc
+/coverage/
+!.*
+.eslintcache
+.lint-todo/
+
+# ember-try
+/.node_modules.ember-try/
+/bower.json.ember-try
+/npm-shrinkwrap.json.ember-try
+/package.json.ember-try
+/package-lock.json.ember-try
+/yarn.lock.ember-try
diff --git a/packages/test-app/.prettierrc.js b/packages/test-app/.prettierrc.js
new file mode 100644
index 000000000..e5f7b6d1e
--- /dev/null
+++ b/packages/test-app/.prettierrc.js
@@ -0,0 +1,12 @@
+'use strict';
+
+module.exports = {
+ overrides: [
+ {
+ files: '*.{js,ts}',
+ options: {
+ singleQuote: true,
+ },
+ },
+ ],
+};
diff --git a/packages/test-app/.template-lintrc.js b/packages/test-app/.template-lintrc.js
new file mode 100644
index 000000000..ab4aeecac
--- /dev/null
+++ b/packages/test-app/.template-lintrc.js
@@ -0,0 +1,9 @@
+'use strict';
+
+module.exports = {
+ extends: 'recommended',
+ rules: {
+ 'no-whitespace-for-layout': false,
+ 'require-input-label': false,
+ },
+};
diff --git a/packages/test-app/.watchmanconfig b/packages/test-app/.watchmanconfig
new file mode 100644
index 000000000..e7834e3e4
--- /dev/null
+++ b/packages/test-app/.watchmanconfig
@@ -0,0 +1,3 @@
+{
+ "ignore_dirs": ["tmp", "dist"]
+}
diff --git a/API.md b/packages/test-app/API.md
similarity index 100%
rename from API.md
rename to packages/test-app/API.md
diff --git a/packages/test-app/README.md b/packages/test-app/README.md
new file mode 100644
index 000000000..16ff55051
--- /dev/null
+++ b/packages/test-app/README.md
@@ -0,0 +1,56 @@
+# test-app
+
+This README outlines the details of collaborating on this Ember application.
+A short introduction of this app could easily go here.
+
+## Prerequisites
+
+You will need the following things properly installed on your computer.
+
+* [Git](https://git-scm.com/)
+* [Node.js](https://nodejs.org/) (with npm)
+* [Ember CLI](https://cli.emberjs.com/release/)
+* [Google Chrome](https://google.com/chrome/)
+
+## Installation
+
+* `git clone ` this repository
+* `cd test-app`
+* `npm install`
+
+## Running / Development
+
+* `ember serve`
+* Visit your app at [http://localhost:4200](http://localhost:4200).
+* Visit your tests at [http://localhost:4200/tests](http://localhost:4200/tests).
+
+### Code Generators
+
+Make use of the many generators for code, try `ember help generate` for more details
+
+### Running Tests
+
+* `ember test`
+* `ember test --server`
+
+### Linting
+
+* `npm run lint`
+* `npm run lint:fix`
+
+### Building
+
+* `ember build` (development)
+* `ember build --environment production` (production)
+
+### Deploying
+
+Specify what it takes to deploy your app.
+
+## Further Reading / Useful Links
+
+* [ember.js](https://emberjs.com/)
+* [ember-cli](https://cli.emberjs.com/release/)
+* Development Browser Extensions
+ * [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi)
+ * [ember inspector for firefox](https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/)
diff --git a/tests/dummy/app/app.js b/packages/test-app/app/app.js
similarity index 87%
rename from tests/dummy/app/app.js
rename to packages/test-app/app/app.js
index 523bad60c..1ba934244 100644
--- a/tests/dummy/app/app.js
+++ b/packages/test-app/app/app.js
@@ -1,7 +1,7 @@
import Application from '@ember/application';
import Resolver from 'ember-resolver';
import loadInitializers from 'ember-load-initializers';
-import config from 'dummy/config/environment';
+import config from 'test-app/config/environment';
export default class App extends Application {
modulePrefix = config.modulePrefix;
diff --git a/tests/dummy/app/application/controller.js b/packages/test-app/app/application/controller.js
similarity index 100%
rename from tests/dummy/app/application/controller.js
rename to packages/test-app/app/application/controller.js
diff --git a/tests/dummy/app/application/route.js b/packages/test-app/app/application/route.js
similarity index 90%
rename from tests/dummy/app/application/route.js
rename to packages/test-app/app/application/route.js
index d91ad7731..bce0a5612 100644
--- a/tests/dummy/app/application/route.js
+++ b/packages/test-app/app/application/route.js
@@ -1,7 +1,7 @@
import { getOwner } from '@ember/application';
import Route from '@ember/routing/route';
import { inject as service } from '@ember/service';
-import ENV from 'dummy/config/environment';
+import ENV from 'test-app/config/environment';
export default class ApplicationRoute extends Route {
@service router;
diff --git a/tests/dummy/app/application/template.hbs b/packages/test-app/app/application/template.hbs
similarity index 100%
rename from tests/dummy/app/application/template.hbs
rename to packages/test-app/app/application/template.hbs
diff --git a/tests/dummy/app/components/ajax-throttling-example/component.js b/packages/test-app/app/components/ajax-throttling-example/component.js
similarity index 100%
rename from tests/dummy/app/components/ajax-throttling-example/component.js
rename to packages/test-app/app/components/ajax-throttling-example/component.js
diff --git a/tests/dummy/app/components/ajax-throttling-example/template.hbs b/packages/test-app/app/components/ajax-throttling-example/template.hbs
similarity index 100%
rename from tests/dummy/app/components/ajax-throttling-example/template.hbs
rename to packages/test-app/app/components/ajax-throttling-example/template.hbs
diff --git a/tests/dummy/app/components/caps-marquee/component.js b/packages/test-app/app/components/caps-marquee/component.js
similarity index 100%
rename from tests/dummy/app/components/caps-marquee/component.js
rename to packages/test-app/app/components/caps-marquee/component.js
diff --git a/tests/dummy/app/components/caps-marquee/template.hbs b/packages/test-app/app/components/caps-marquee/template.hbs
similarity index 100%
rename from tests/dummy/app/components/caps-marquee/template.hbs
rename to packages/test-app/app/components/caps-marquee/template.hbs
diff --git a/tests/dummy/app/components/code-snippet/component.js b/packages/test-app/app/components/code-snippet/component.js
similarity index 100%
rename from tests/dummy/app/components/code-snippet/component.js
rename to packages/test-app/app/components/code-snippet/component.js
diff --git a/tests/dummy/app/components/code-snippet/template.hbs b/packages/test-app/app/components/code-snippet/template.hbs
similarity index 100%
rename from tests/dummy/app/components/code-snippet/template.hbs
rename to packages/test-app/app/components/code-snippet/template.hbs
diff --git a/tests/dummy/app/components/code-template-toggle/component.js b/packages/test-app/app/components/code-template-toggle/component.js
similarity index 100%
rename from tests/dummy/app/components/code-template-toggle/component.js
rename to packages/test-app/app/components/code-template-toggle/component.js
diff --git a/tests/dummy/app/components/code-template-toggle/template.hbs b/packages/test-app/app/components/code-template-toggle/template.hbs
similarity index 100%
rename from tests/dummy/app/components/code-template-toggle/template.hbs
rename to packages/test-app/app/components/code-template-toggle/template.hbs
diff --git a/tests/dummy/app/components/concurrency-graph/component.js b/packages/test-app/app/components/concurrency-graph/component.js
similarity index 100%
rename from tests/dummy/app/components/concurrency-graph/component.js
rename to packages/test-app/app/components/concurrency-graph/component.js
diff --git a/tests/dummy/app/components/concurrency-graph/template.hbs b/packages/test-app/app/components/concurrency-graph/template.hbs
similarity index 100%
rename from tests/dummy/app/components/concurrency-graph/template.hbs
rename to packages/test-app/app/components/concurrency-graph/template.hbs
diff --git a/tests/dummy/app/components/count-up/component.js b/packages/test-app/app/components/count-up/component.js
similarity index 100%
rename from tests/dummy/app/components/count-up/component.js
rename to packages/test-app/app/components/count-up/component.js
diff --git a/tests/dummy/app/components/count-up/template.hbs b/packages/test-app/app/components/count-up/template.hbs
similarity index 100%
rename from tests/dummy/app/components/count-up/template.hbs
rename to packages/test-app/app/components/count-up/template.hbs
diff --git a/tests/dummy/app/components/events-example/component.js b/packages/test-app/app/components/events-example/component.js
similarity index 100%
rename from tests/dummy/app/components/events-example/component.js
rename to packages/test-app/app/components/events-example/component.js
diff --git a/tests/dummy/app/components/events-example/template.hbs b/packages/test-app/app/components/events-example/template.hbs
similarity index 100%
rename from tests/dummy/app/components/events-example/template.hbs
rename to packages/test-app/app/components/events-example/template.hbs
diff --git a/tests/dummy/app/components/github-edit/component.js b/packages/test-app/app/components/github-edit/component.js
similarity index 91%
rename from tests/dummy/app/components/github-edit/component.js
rename to packages/test-app/app/components/github-edit/component.js
index 2cce6a190..5f5a0d5ca 100644
--- a/tests/dummy/app/components/github-edit/component.js
+++ b/packages/test-app/app/components/github-edit/component.js
@@ -14,6 +14,6 @@ export default class extends Component {
return '#';
}
path = path.replace(/\./g, '/');
- return `https://github.com/machty/ember-concurrency/edit/master/tests/dummy/app/${path}/template.hbs`;
+ return `https://github.com/machty/ember-concurrency/edit/master/packages/test-app/app/${path}/template.hbs`;
}
}
diff --git a/tests/dummy/app/components/github-edit/template.hbs b/packages/test-app/app/components/github-edit/template.hbs
similarity index 100%
rename from tests/dummy/app/components/github-edit/template.hbs
rename to packages/test-app/app/components/github-edit/template.hbs
diff --git a/tests/dummy/app/components/loading-spinner/component.js b/packages/test-app/app/components/loading-spinner/component.js
similarity index 100%
rename from tests/dummy/app/components/loading-spinner/component.js
rename to packages/test-app/app/components/loading-spinner/component.js
diff --git a/tests/dummy/app/components/loading-spinner/template.hbs b/packages/test-app/app/components/loading-spinner/template.hbs
similarity index 100%
rename from tests/dummy/app/components/loading-spinner/template.hbs
rename to packages/test-app/app/components/loading-spinner/template.hbs
diff --git a/tests/dummy/app/components/my-button.js b/packages/test-app/app/components/my-button.js
similarity index 100%
rename from tests/dummy/app/components/my-button.js
rename to packages/test-app/app/components/my-button.js
diff --git a/tests/dummy/app/components/nav-header/component.js b/packages/test-app/app/components/nav-header/component.js
similarity index 100%
rename from tests/dummy/app/components/nav-header/component.js
rename to packages/test-app/app/components/nav-header/component.js
diff --git a/tests/dummy/app/components/nav-header/template.hbs b/packages/test-app/app/components/nav-header/template.hbs
similarity index 100%
rename from tests/dummy/app/components/nav-header/template.hbs
rename to packages/test-app/app/components/nav-header/template.hbs
diff --git a/tests/dummy/app/components/press-and-hold-button/component.js b/packages/test-app/app/components/press-and-hold-button/component.js
similarity index 100%
rename from tests/dummy/app/components/press-and-hold-button/component.js
rename to packages/test-app/app/components/press-and-hold-button/component.js
diff --git a/tests/dummy/app/components/press-and-hold-button/template.hbs b/packages/test-app/app/components/press-and-hold-button/template.hbs
similarity index 100%
rename from tests/dummy/app/components/press-and-hold-button/template.hbs
rename to packages/test-app/app/components/press-and-hold-button/template.hbs
diff --git a/tests/dummy/app/components/scrambled-text/component.js b/packages/test-app/app/components/scrambled-text/component.js
similarity index 100%
rename from tests/dummy/app/components/scrambled-text/component.js
rename to packages/test-app/app/components/scrambled-text/component.js
diff --git a/tests/dummy/app/components/scrambled-text/template.hbs b/packages/test-app/app/components/scrambled-text/template.hbs
similarity index 100%
rename from tests/dummy/app/components/scrambled-text/template.hbs
rename to packages/test-app/app/components/scrambled-text/template.hbs
diff --git a/tests/dummy/app/components/shared-tutorial/component.js b/packages/test-app/app/components/shared-tutorial/component.js
similarity index 100%
rename from tests/dummy/app/components/shared-tutorial/component.js
rename to packages/test-app/app/components/shared-tutorial/component.js
diff --git a/tests/dummy/app/components/start-task-example/component.js b/packages/test-app/app/components/start-task-example/component.js
similarity index 100%
rename from tests/dummy/app/components/start-task-example/component.js
rename to packages/test-app/app/components/start-task-example/component.js
diff --git a/tests/dummy/app/components/start-task-example/template.hbs b/packages/test-app/app/components/start-task-example/template.hbs
similarity index 100%
rename from tests/dummy/app/components/start-task-example/template.hbs
rename to packages/test-app/app/components/start-task-example/template.hbs
diff --git a/tests/dummy/app/components/task-function-syntax-1/component.js b/packages/test-app/app/components/task-function-syntax-1/component.js
similarity index 100%
rename from tests/dummy/app/components/task-function-syntax-1/component.js
rename to packages/test-app/app/components/task-function-syntax-1/component.js
diff --git a/tests/dummy/app/components/task-function-syntax-1/template.hbs b/packages/test-app/app/components/task-function-syntax-1/template.hbs
similarity index 100%
rename from tests/dummy/app/components/task-function-syntax-1/template.hbs
rename to packages/test-app/app/components/task-function-syntax-1/template.hbs
diff --git a/tests/dummy/app/components/task-function-syntax-2/component.js b/packages/test-app/app/components/task-function-syntax-2/component.js
similarity index 100%
rename from tests/dummy/app/components/task-function-syntax-2/component.js
rename to packages/test-app/app/components/task-function-syntax-2/component.js
diff --git a/tests/dummy/app/components/task-function-syntax-2/template.hbs b/packages/test-app/app/components/task-function-syntax-2/template.hbs
similarity index 100%
rename from tests/dummy/app/components/task-function-syntax-2/template.hbs
rename to packages/test-app/app/components/task-function-syntax-2/template.hbs
diff --git a/tests/dummy/app/components/task-function-syntax-3/component.js b/packages/test-app/app/components/task-function-syntax-3/component.js
similarity index 100%
rename from tests/dummy/app/components/task-function-syntax-3/component.js
rename to packages/test-app/app/components/task-function-syntax-3/component.js
diff --git a/tests/dummy/app/components/task-function-syntax-3/template.hbs b/packages/test-app/app/components/task-function-syntax-3/template.hbs
similarity index 100%
rename from tests/dummy/app/components/task-function-syntax-3/template.hbs
rename to packages/test-app/app/components/task-function-syntax-3/template.hbs
diff --git a/tests/dummy/app/components/task-function-syntax-4/component.js b/packages/test-app/app/components/task-function-syntax-4/component.js
similarity index 100%
rename from tests/dummy/app/components/task-function-syntax-4/component.js
rename to packages/test-app/app/components/task-function-syntax-4/component.js
diff --git a/tests/dummy/app/components/task-function-syntax-4/template.hbs b/packages/test-app/app/components/task-function-syntax-4/template.hbs
similarity index 100%
rename from tests/dummy/app/components/task-function-syntax-4/template.hbs
rename to packages/test-app/app/components/task-function-syntax-4/template.hbs
diff --git a/tests/dummy/app/components/task-function-syntax-5/component.js b/packages/test-app/app/components/task-function-syntax-5/component.js
similarity index 100%
rename from tests/dummy/app/components/task-function-syntax-5/component.js
rename to packages/test-app/app/components/task-function-syntax-5/component.js
diff --git a/tests/dummy/app/components/task-lifecycle-events-example/component.js b/packages/test-app/app/components/task-lifecycle-events-example/component.js
similarity index 100%
rename from tests/dummy/app/components/task-lifecycle-events-example/component.js
rename to packages/test-app/app/components/task-lifecycle-events-example/component.js
diff --git a/tests/dummy/app/components/task-lifecycle-events-example/template.hbs b/packages/test-app/app/components/task-lifecycle-events-example/template.hbs
similarity index 100%
rename from tests/dummy/app/components/task-lifecycle-events-example/template.hbs
rename to packages/test-app/app/components/task-lifecycle-events-example/template.hbs
diff --git a/tests/dummy/app/components/tutorial-0/component.js b/packages/test-app/app/components/tutorial-0/component.js
similarity index 100%
rename from tests/dummy/app/components/tutorial-0/component.js
rename to packages/test-app/app/components/tutorial-0/component.js
diff --git a/tests/dummy/app/components/tutorial-0/template.hbs b/packages/test-app/app/components/tutorial-0/template.hbs
similarity index 100%
rename from tests/dummy/app/components/tutorial-0/template.hbs
rename to packages/test-app/app/components/tutorial-0/template.hbs
diff --git a/tests/dummy/app/components/tutorial-1/component.js b/packages/test-app/app/components/tutorial-1/component.js
similarity index 100%
rename from tests/dummy/app/components/tutorial-1/component.js
rename to packages/test-app/app/components/tutorial-1/component.js
diff --git a/tests/dummy/app/components/tutorial-1/template.hbs b/packages/test-app/app/components/tutorial-1/template.hbs
similarity index 100%
rename from tests/dummy/app/components/tutorial-1/template.hbs
rename to packages/test-app/app/components/tutorial-1/template.hbs
diff --git a/tests/dummy/app/components/tutorial-2/component.js b/packages/test-app/app/components/tutorial-2/component.js
similarity index 100%
rename from tests/dummy/app/components/tutorial-2/component.js
rename to packages/test-app/app/components/tutorial-2/component.js
diff --git a/tests/dummy/app/components/tutorial-2/template.hbs b/packages/test-app/app/components/tutorial-2/template.hbs
similarity index 100%
rename from tests/dummy/app/components/tutorial-2/template.hbs
rename to packages/test-app/app/components/tutorial-2/template.hbs
diff --git a/tests/dummy/app/components/tutorial-3/component.js b/packages/test-app/app/components/tutorial-3/component.js
similarity index 100%
rename from tests/dummy/app/components/tutorial-3/component.js
rename to packages/test-app/app/components/tutorial-3/component.js
diff --git a/tests/dummy/app/components/tutorial-3/template.hbs b/packages/test-app/app/components/tutorial-3/template.hbs
similarity index 100%
rename from tests/dummy/app/components/tutorial-3/template.hbs
rename to packages/test-app/app/components/tutorial-3/template.hbs
diff --git a/tests/dummy/app/components/tutorial-4/component.js b/packages/test-app/app/components/tutorial-4/component.js
similarity index 100%
rename from tests/dummy/app/components/tutorial-4/component.js
rename to packages/test-app/app/components/tutorial-4/component.js
diff --git a/tests/dummy/app/components/tutorial-4/template.hbs b/packages/test-app/app/components/tutorial-4/template.hbs
similarity index 100%
rename from tests/dummy/app/components/tutorial-4/template.hbs
rename to packages/test-app/app/components/tutorial-4/template.hbs
diff --git a/tests/dummy/app/components/tutorial-5/component.js b/packages/test-app/app/components/tutorial-5/component.js
similarity index 100%
rename from tests/dummy/app/components/tutorial-5/component.js
rename to packages/test-app/app/components/tutorial-5/component.js
diff --git a/tests/dummy/app/components/tutorial-5/template.hbs b/packages/test-app/app/components/tutorial-5/template.hbs
similarity index 100%
rename from tests/dummy/app/components/tutorial-5/template.hbs
rename to packages/test-app/app/components/tutorial-5/template.hbs
diff --git a/tests/dummy/app/components/tutorial-6/component.js b/packages/test-app/app/components/tutorial-6/component.js
similarity index 100%
rename from tests/dummy/app/components/tutorial-6/component.js
rename to packages/test-app/app/components/tutorial-6/component.js
diff --git a/tests/dummy/app/components/tutorial-6/template.hbs b/packages/test-app/app/components/tutorial-6/template.hbs
similarity index 100%
rename from tests/dummy/app/components/tutorial-6/template.hbs
rename to packages/test-app/app/components/tutorial-6/template.hbs
diff --git a/tests/dummy/app/components/tutorial-7/component.js b/packages/test-app/app/components/tutorial-7/component.js
similarity index 100%
rename from tests/dummy/app/components/tutorial-7/component.js
rename to packages/test-app/app/components/tutorial-7/component.js
diff --git a/tests/dummy/app/components/tutorial-7/template.hbs b/packages/test-app/app/components/tutorial-7/template.hbs
similarity index 100%
rename from tests/dummy/app/components/tutorial-7/template.hbs
rename to packages/test-app/app/components/tutorial-7/template.hbs
diff --git a/tests/dummy/app/components/tutorial-8/component.js b/packages/test-app/app/components/tutorial-8/component.js
similarity index 100%
rename from tests/dummy/app/components/tutorial-8/component.js
rename to packages/test-app/app/components/tutorial-8/component.js
diff --git a/tests/dummy/app/components/tutorial-8/template.hbs b/packages/test-app/app/components/tutorial-8/template.hbs
similarity index 100%
rename from tests/dummy/app/components/tutorial-8/template.hbs
rename to packages/test-app/app/components/tutorial-8/template.hbs
diff --git a/tests/dummy/app/components/tutorial-9/component.js b/packages/test-app/app/components/tutorial-9/component.js
similarity index 100%
rename from tests/dummy/app/components/tutorial-9/component.js
rename to packages/test-app/app/components/tutorial-9/component.js
diff --git a/tests/dummy/app/components/tutorial-9/template.hbs b/packages/test-app/app/components/tutorial-9/template.hbs
similarity index 100%
rename from tests/dummy/app/components/tutorial-9/template.hbs
rename to packages/test-app/app/components/tutorial-9/template.hbs
diff --git a/tests/dummy/app/docs/404/route.js b/packages/test-app/app/docs/404/route.js
similarity index 100%
rename from tests/dummy/app/docs/404/route.js
rename to packages/test-app/app/docs/404/route.js
diff --git a/tests/dummy/app/docs/advanced/encapsulated-task/controller.js b/packages/test-app/app/docs/advanced/encapsulated-task/controller.js
similarity index 95%
rename from tests/dummy/app/docs/advanced/encapsulated-task/controller.js
rename to packages/test-app/app/docs/advanced/encapsulated-task/controller.js
index 1740ca366..1bf2b6ba0 100644
--- a/tests/dummy/app/docs/advanced/encapsulated-task/controller.js
+++ b/packages/test-app/app/docs/advanced/encapsulated-task/controller.js
@@ -1,6 +1,6 @@
import Controller from '@ember/controller';
import { computed } from '@ember/object';
-import { randomWord } from 'dummy/utils';
+import { randomWord } from 'test-app/utils';
// BEGIN-SNIPPET encapsulated-task-controller
import { task, timeout } from 'ember-concurrency';
diff --git a/tests/dummy/app/docs/advanced/encapsulated-task/template.hbs b/packages/test-app/app/docs/advanced/encapsulated-task/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/advanced/encapsulated-task/template.hbs
rename to packages/test-app/app/docs/advanced/encapsulated-task/template.hbs
diff --git a/tests/dummy/app/docs/advanced/lifecycle-events/template.hbs b/packages/test-app/app/docs/advanced/lifecycle-events/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/advanced/lifecycle-events/template.hbs
rename to packages/test-app/app/docs/advanced/lifecycle-events/template.hbs
diff --git a/tests/dummy/app/docs/advanced/task-modifiers/controller.js b/packages/test-app/app/docs/advanced/task-modifiers/controller.js
similarity index 96%
rename from tests/dummy/app/docs/advanced/task-modifiers/controller.js
rename to packages/test-app/app/docs/advanced/task-modifiers/controller.js
index 248858ef1..bf9d5f990 100644
--- a/tests/dummy/app/docs/advanced/task-modifiers/controller.js
+++ b/packages/test-app/app/docs/advanced/task-modifiers/controller.js
@@ -9,7 +9,7 @@ import { task, timeout } from 'ember-concurrency';
// terseness in this illustration. You may want to separate defining the modifier
// and registering it with registerModifier, and be explicit about where you
// register (e.g. addon, library, or app initialization)
-import 'dummy/task-modifiers/benchmark';
+import 'test-app/task-modifiers/benchmark';
let performance =
typeof window !== 'undefined' && window.performance
diff --git a/tests/dummy/app/docs/advanced/task-modifiers/template.hbs b/packages/test-app/app/docs/advanced/task-modifiers/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/advanced/task-modifiers/template.hbs
rename to packages/test-app/app/docs/advanced/task-modifiers/template.hbs
diff --git a/tests/dummy/app/docs/advanced/yieldables/template.hbs b/packages/test-app/app/docs/advanced/yieldables/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/advanced/yieldables/template.hbs
rename to packages/test-app/app/docs/advanced/yieldables/template.hbs
diff --git a/tests/dummy/app/docs/cancelation/controller.js b/packages/test-app/app/docs/cancelation/controller.js
similarity index 100%
rename from tests/dummy/app/docs/cancelation/controller.js
rename to packages/test-app/app/docs/cancelation/controller.js
diff --git a/tests/dummy/app/docs/cancelation/template.hbs b/packages/test-app/app/docs/cancelation/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/cancelation/template.hbs
rename to packages/test-app/app/docs/cancelation/template.hbs
diff --git a/tests/dummy/app/docs/child-tasks/controller.js b/packages/test-app/app/docs/child-tasks/controller.js
similarity index 100%
rename from tests/dummy/app/docs/child-tasks/controller.js
rename to packages/test-app/app/docs/child-tasks/controller.js
diff --git a/tests/dummy/app/docs/child-tasks/template.hbs b/packages/test-app/app/docs/child-tasks/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/child-tasks/template.hbs
rename to packages/test-app/app/docs/child-tasks/template.hbs
diff --git a/tests/dummy/app/docs/controller.js b/packages/test-app/app/docs/controller.js
similarity index 100%
rename from tests/dummy/app/docs/controller.js
rename to packages/test-app/app/docs/controller.js
diff --git a/tests/dummy/app/docs/derived-state/controller.js b/packages/test-app/app/docs/derived-state/controller.js
similarity index 96%
rename from tests/dummy/app/docs/derived-state/controller.js
rename to packages/test-app/app/docs/derived-state/controller.js
index d1e249a0b..813244432 100644
--- a/tests/dummy/app/docs/derived-state/controller.js
+++ b/packages/test-app/app/docs/derived-state/controller.js
@@ -1,7 +1,7 @@
import { action, computed } from '@ember/object';
import Controller from '@ember/controller';
import { task, timeout } from 'ember-concurrency';
-import { randomWord } from 'dummy/utils';
+import { randomWord } from 'test-app/utils';
let i = 0;
function* sharedFn(shouldError) {
diff --git a/tests/dummy/app/docs/derived-state/template.hbs b/packages/test-app/app/docs/derived-state/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/derived-state/template.hbs
rename to packages/test-app/app/docs/derived-state/template.hbs
diff --git a/tests/dummy/app/docs/encapsulated-task/route.js b/packages/test-app/app/docs/encapsulated-task/route.js
similarity index 100%
rename from tests/dummy/app/docs/encapsulated-task/route.js
rename to packages/test-app/app/docs/encapsulated-task/route.js
diff --git a/tests/dummy/app/docs/error-vs-cancelation/controller.js b/packages/test-app/app/docs/error-vs-cancelation/controller.js
similarity index 100%
rename from tests/dummy/app/docs/error-vs-cancelation/controller.js
rename to packages/test-app/app/docs/error-vs-cancelation/controller.js
diff --git a/tests/dummy/app/docs/error-vs-cancelation/template.hbs b/packages/test-app/app/docs/error-vs-cancelation/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/error-vs-cancelation/template.hbs
rename to packages/test-app/app/docs/error-vs-cancelation/template.hbs
diff --git a/tests/dummy/app/docs/events/template.hbs b/packages/test-app/app/docs/events/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/events/template.hbs
rename to packages/test-app/app/docs/events/template.hbs
diff --git a/tests/dummy/app/docs/examples/ajax-throttling/template.hbs b/packages/test-app/app/docs/examples/ajax-throttling/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/examples/ajax-throttling/template.hbs
rename to packages/test-app/app/docs/examples/ajax-throttling/template.hbs
diff --git a/tests/dummy/app/docs/examples/autocomplete/controller.js b/packages/test-app/app/docs/examples/autocomplete/controller.js
similarity index 100%
rename from tests/dummy/app/docs/examples/autocomplete/controller.js
rename to packages/test-app/app/docs/examples/autocomplete/controller.js
diff --git a/tests/dummy/app/docs/examples/autocomplete/template.hbs b/packages/test-app/app/docs/examples/autocomplete/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/examples/autocomplete/template.hbs
rename to packages/test-app/app/docs/examples/autocomplete/template.hbs
diff --git a/tests/dummy/app/docs/examples/increment-buttons/controller.js b/packages/test-app/app/docs/examples/increment-buttons/controller.js
similarity index 100%
rename from tests/dummy/app/docs/examples/increment-buttons/controller.js
rename to packages/test-app/app/docs/examples/increment-buttons/controller.js
diff --git a/tests/dummy/app/docs/examples/increment-buttons/template.hbs b/packages/test-app/app/docs/examples/increment-buttons/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/examples/increment-buttons/template.hbs
rename to packages/test-app/app/docs/examples/increment-buttons/template.hbs
diff --git a/tests/dummy/app/docs/examples/index/template.hbs b/packages/test-app/app/docs/examples/index/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/examples/index/template.hbs
rename to packages/test-app/app/docs/examples/index/template.hbs
diff --git a/tests/dummy/app/docs/examples/joining-tasks/controller.js b/packages/test-app/app/docs/examples/joining-tasks/controller.js
similarity index 96%
rename from tests/dummy/app/docs/examples/joining-tasks/controller.js
rename to packages/test-app/app/docs/examples/joining-tasks/controller.js
index 3fde802b8..e2f66826b 100644
--- a/tests/dummy/app/docs/examples/joining-tasks/controller.js
+++ b/packages/test-app/app/docs/examples/joining-tasks/controller.js
@@ -1,6 +1,6 @@
import { makeArray } from '@ember/array';
import Controller from '@ember/controller';
-import { randomWord } from 'dummy/utils';
+import { randomWord } from 'test-app/utils';
// BEGIN-SNIPPET joining-tasks
import { task, timeout, all, race } from 'ember-concurrency';
diff --git a/tests/dummy/app/docs/examples/joining-tasks/template.hbs b/packages/test-app/app/docs/examples/joining-tasks/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/examples/joining-tasks/template.hbs
rename to packages/test-app/app/docs/examples/joining-tasks/template.hbs
diff --git a/tests/dummy/app/docs/examples/loading-ui/controller.js b/packages/test-app/app/docs/examples/loading-ui/controller.js
similarity index 100%
rename from tests/dummy/app/docs/examples/loading-ui/controller.js
rename to packages/test-app/app/docs/examples/loading-ui/controller.js
diff --git a/tests/dummy/app/docs/examples/loading-ui/template.hbs b/packages/test-app/app/docs/examples/loading-ui/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/examples/loading-ui/template.hbs
rename to packages/test-app/app/docs/examples/loading-ui/template.hbs
diff --git a/tests/dummy/app/docs/examples/route-tasks/controller.js b/packages/test-app/app/docs/examples/route-tasks/controller.js
similarity index 100%
rename from tests/dummy/app/docs/examples/route-tasks/controller.js
rename to packages/test-app/app/docs/examples/route-tasks/controller.js
diff --git a/tests/dummy/app/docs/examples/route-tasks/detail/route.js b/packages/test-app/app/docs/examples/route-tasks/detail/route.js
similarity index 100%
rename from tests/dummy/app/docs/examples/route-tasks/detail/route.js
rename to packages/test-app/app/docs/examples/route-tasks/detail/route.js
diff --git a/tests/dummy/app/docs/examples/route-tasks/route.js b/packages/test-app/app/docs/examples/route-tasks/route.js
similarity index 100%
rename from tests/dummy/app/docs/examples/route-tasks/route.js
rename to packages/test-app/app/docs/examples/route-tasks/route.js
diff --git a/tests/dummy/app/docs/examples/route-tasks/template.hbs b/packages/test-app/app/docs/examples/route-tasks/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/examples/route-tasks/template.hbs
rename to packages/test-app/app/docs/examples/route-tasks/template.hbs
diff --git a/tests/dummy/app/docs/examples/task-concurrency/route.js b/packages/test-app/app/docs/examples/task-concurrency/route.js
similarity index 100%
rename from tests/dummy/app/docs/examples/task-concurrency/route.js
rename to packages/test-app/app/docs/examples/task-concurrency/route.js
diff --git a/tests/dummy/app/docs/faq/template.hbs b/packages/test-app/app/docs/faq/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/faq/template.hbs
rename to packages/test-app/app/docs/faq/template.hbs
diff --git a/tests/dummy/app/docs/index/route.js b/packages/test-app/app/docs/index/route.js
similarity index 100%
rename from tests/dummy/app/docs/index/route.js
rename to packages/test-app/app/docs/index/route.js
diff --git a/tests/dummy/app/docs/installation/template.hbs b/packages/test-app/app/docs/installation/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/installation/template.hbs
rename to packages/test-app/app/docs/installation/template.hbs
diff --git a/tests/dummy/app/docs/introduction/template.hbs b/packages/test-app/app/docs/introduction/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/introduction/template.hbs
rename to packages/test-app/app/docs/introduction/template.hbs
diff --git a/tests/dummy/app/docs/task-cancelation-help/template.hbs b/packages/test-app/app/docs/task-cancelation-help/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/task-cancelation-help/template.hbs
rename to packages/test-app/app/docs/task-cancelation-help/template.hbs
diff --git a/tests/dummy/app/docs/task-concurrency-advanced/controller.js b/packages/test-app/app/docs/task-concurrency-advanced/controller.js
similarity index 100%
rename from tests/dummy/app/docs/task-concurrency-advanced/controller.js
rename to packages/test-app/app/docs/task-concurrency-advanced/controller.js
diff --git a/tests/dummy/app/docs/task-concurrency-advanced/template.hbs b/packages/test-app/app/docs/task-concurrency-advanced/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/task-concurrency-advanced/template.hbs
rename to packages/test-app/app/docs/task-concurrency-advanced/template.hbs
diff --git a/tests/dummy/app/docs/task-concurrency/controller.js b/packages/test-app/app/docs/task-concurrency/controller.js
similarity index 100%
rename from tests/dummy/app/docs/task-concurrency/controller.js
rename to packages/test-app/app/docs/task-concurrency/controller.js
diff --git a/tests/dummy/app/docs/task-concurrency/template.hbs b/packages/test-app/app/docs/task-concurrency/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/task-concurrency/template.hbs
rename to packages/test-app/app/docs/task-concurrency/template.hbs
diff --git a/tests/dummy/app/docs/task-decorators/template.hbs b/packages/test-app/app/docs/task-decorators/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/task-decorators/template.hbs
rename to packages/test-app/app/docs/task-decorators/template.hbs
diff --git a/tests/dummy/app/docs/task-function-syntax/template.hbs b/packages/test-app/app/docs/task-function-syntax/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/task-function-syntax/template.hbs
rename to packages/test-app/app/docs/task-function-syntax/template.hbs
diff --git a/tests/dummy/app/docs/task-groups/controller.js b/packages/test-app/app/docs/task-groups/controller.js
similarity index 100%
rename from tests/dummy/app/docs/task-groups/controller.js
rename to packages/test-app/app/docs/task-groups/controller.js
diff --git a/tests/dummy/app/docs/task-groups/template.hbs b/packages/test-app/app/docs/task-groups/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/task-groups/template.hbs
rename to packages/test-app/app/docs/task-groups/template.hbs
diff --git a/tests/dummy/app/docs/task-lifecycle-events/route.js b/packages/test-app/app/docs/task-lifecycle-events/route.js
similarity index 100%
rename from tests/dummy/app/docs/task-lifecycle-events/route.js
rename to packages/test-app/app/docs/task-lifecycle-events/route.js
diff --git a/tests/dummy/app/docs/template.hbs b/packages/test-app/app/docs/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/template.hbs
rename to packages/test-app/app/docs/template.hbs
diff --git a/tests/dummy/app/docs/testing-debugging/template.hbs b/packages/test-app/app/docs/testing-debugging/template.hbs
similarity index 98%
rename from tests/dummy/app/docs/testing-debugging/template.hbs
rename to packages/test-app/app/docs/testing-debugging/template.hbs
index 7e3e0de72..a40e3ea15 100644
--- a/tests/dummy/app/docs/testing-debugging/template.hbs
+++ b/packages/test-app/app/docs/testing-debugging/template.hbs
@@ -104,7 +104,7 @@
Also, if you're finding success with a testing approach that wasn't mentioned here,
please open a GitHub issue with your ideas or open a Pull Request to add
- additional docs to this page.
+ additional docs to this page.
diff --git a/tests/dummy/app/docs/tutorial/discussion/template.hbs b/packages/test-app/app/docs/tutorial/discussion/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/tutorial/discussion/template.hbs
rename to packages/test-app/app/docs/tutorial/discussion/template.hbs
diff --git a/tests/dummy/app/docs/tutorial/index/template.hbs b/packages/test-app/app/docs/tutorial/index/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/tutorial/index/template.hbs
rename to packages/test-app/app/docs/tutorial/index/template.hbs
diff --git a/tests/dummy/app/docs/tutorial/refactor/template.hbs b/packages/test-app/app/docs/tutorial/refactor/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/tutorial/refactor/template.hbs
rename to packages/test-app/app/docs/tutorial/refactor/template.hbs
diff --git a/tests/dummy/app/docs/typescript/template.hbs b/packages/test-app/app/docs/typescript/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/typescript/template.hbs
rename to packages/test-app/app/docs/typescript/template.hbs
diff --git a/tests/dummy/app/docs/writing-tasks/template.hbs b/packages/test-app/app/docs/writing-tasks/template.hbs
similarity index 100%
rename from tests/dummy/app/docs/writing-tasks/template.hbs
rename to packages/test-app/app/docs/writing-tasks/template.hbs
diff --git a/tests/dummy/app/docs/yieldables/route.js b/packages/test-app/app/docs/yieldables/route.js
similarity index 100%
rename from tests/dummy/app/docs/yieldables/route.js
rename to packages/test-app/app/docs/yieldables/route.js
diff --git a/tests/dummy/app/helpers-test/controller.js b/packages/test-app/app/helpers-test/controller.js
similarity index 100%
rename from tests/dummy/app/helpers-test/controller.js
rename to packages/test-app/app/helpers-test/controller.js
diff --git a/tests/dummy/app/helpers-test/template.hbs b/packages/test-app/app/helpers-test/template.hbs
similarity index 100%
rename from tests/dummy/app/helpers-test/template.hbs
rename to packages/test-app/app/helpers-test/template.hbs
diff --git a/tests/dummy/app/helpers/caps-bool.js b/packages/test-app/app/helpers/caps-bool.js
similarity index 100%
rename from tests/dummy/app/helpers/caps-bool.js
rename to packages/test-app/app/helpers/caps-bool.js
diff --git a/tests/dummy/app/helpers/color.js b/packages/test-app/app/helpers/color.js
similarity index 100%
rename from tests/dummy/app/helpers/color.js
rename to packages/test-app/app/helpers/color.js
diff --git a/tests/dummy/app/helpers/pick-from.js b/packages/test-app/app/helpers/pick-from.js
similarity index 100%
rename from tests/dummy/app/helpers/pick-from.js
rename to packages/test-app/app/helpers/pick-from.js
diff --git a/tests/dummy/app/helpers/progress-style.js b/packages/test-app/app/helpers/progress-style.js
similarity index 100%
rename from tests/dummy/app/helpers/progress-style.js
rename to packages/test-app/app/helpers/progress-style.js
diff --git a/tests/dummy/app/helpers/scale.js b/packages/test-app/app/helpers/scale.js
similarity index 100%
rename from tests/dummy/app/helpers/scale.js
rename to packages/test-app/app/helpers/scale.js
diff --git a/tests/dummy/app/helpers/subtract.js b/packages/test-app/app/helpers/subtract.js
similarity index 100%
rename from tests/dummy/app/helpers/subtract.js
rename to packages/test-app/app/helpers/subtract.js
diff --git a/tests/dummy/app/helpers/sum.js b/packages/test-app/app/helpers/sum.js
similarity index 100%
rename from tests/dummy/app/helpers/sum.js
rename to packages/test-app/app/helpers/sum.js
diff --git a/tests/dummy/app/helpers/swallow-error.js b/packages/test-app/app/helpers/swallow-error.js
similarity index 100%
rename from tests/dummy/app/helpers/swallow-error.js
rename to packages/test-app/app/helpers/swallow-error.js
diff --git a/tests/dummy/app/helpers/width.js b/packages/test-app/app/helpers/width.js
similarity index 100%
rename from tests/dummy/app/helpers/width.js
rename to packages/test-app/app/helpers/width.js
diff --git a/tests/dummy/app/index.html b/packages/test-app/app/index.html
similarity index 90%
rename from tests/dummy/app/index.html
rename to packages/test-app/app/index.html
index 37a504989..b7ad7b0a0 100644
--- a/tests/dummy/app/index.html
+++ b/packages/test-app/app/index.html
@@ -9,7 +9,7 @@
{{content-for "head"}}
-
+
{{content-for "head-footer"}}
@@ -18,7 +18,7 @@
{{content-for "body"}}
-
+
{{content-for "body-footer"}}
diff --git a/tests/dummy/app/index/route.js b/packages/test-app/app/index/route.js
similarity index 100%
rename from tests/dummy/app/index/route.js
rename to packages/test-app/app/index/route.js
diff --git a/tests/dummy/app/modifiers/autofocus.js b/packages/test-app/app/modifiers/autofocus.js
similarity index 100%
rename from tests/dummy/app/modifiers/autofocus.js
rename to packages/test-app/app/modifiers/autofocus.js
diff --git a/tests/dummy/app/router.js b/packages/test-app/app/router.js
similarity index 97%
rename from tests/dummy/app/router.js
rename to packages/test-app/app/router.js
index ec7eac0c8..4bf60c031 100644
--- a/tests/dummy/app/router.js
+++ b/packages/test-app/app/router.js
@@ -1,5 +1,5 @@
import EmberRouter from '@ember/routing/router';
-import config from 'dummy/config/environment';
+import config from 'test-app/config/environment';
export default class Router extends EmberRouter {
location = config.locationType;
diff --git a/tests/dummy/app/services/fun.js b/packages/test-app/app/services/fun.js
similarity index 100%
rename from tests/dummy/app/services/fun.js
rename to packages/test-app/app/services/fun.js
diff --git a/tests/dummy/app/services/notifications.js b/packages/test-app/app/services/notifications.js
similarity index 100%
rename from tests/dummy/app/services/notifications.js
rename to packages/test-app/app/services/notifications.js
diff --git a/tests/dummy/app/styles/app.scss b/packages/test-app/app/styles/app.scss
similarity index 100%
rename from tests/dummy/app/styles/app.scss
rename to packages/test-app/app/styles/app.scss
diff --git a/tests/dummy/app/styles/fontello.css b/packages/test-app/app/styles/fontello.css
similarity index 100%
rename from tests/dummy/app/styles/fontello.css
rename to packages/test-app/app/styles/fontello.css
diff --git a/tests/dummy/app/styles/normalize.scss b/packages/test-app/app/styles/normalize.scss
similarity index 100%
rename from tests/dummy/app/styles/normalize.scss
rename to packages/test-app/app/styles/normalize.scss
diff --git a/tests/dummy/app/styles/skeleton.scss b/packages/test-app/app/styles/skeleton.scss
similarity index 100%
rename from tests/dummy/app/styles/skeleton.scss
rename to packages/test-app/app/styles/skeleton.scss
diff --git a/tests/dummy/app/task-injection-test/controller.js b/packages/test-app/app/task-injection-test/controller.js
similarity index 100%
rename from tests/dummy/app/task-injection-test/controller.js
rename to packages/test-app/app/task-injection-test/controller.js
diff --git a/tests/dummy/app/task-injection-test/template.hbs b/packages/test-app/app/task-injection-test/template.hbs
similarity index 100%
rename from tests/dummy/app/task-injection-test/template.hbs
rename to packages/test-app/app/task-injection-test/template.hbs
diff --git a/tests/dummy/app/task-modifiers/benchmark.js b/packages/test-app/app/task-modifiers/benchmark.js
similarity index 100%
rename from tests/dummy/app/task-modifiers/benchmark.js
rename to packages/test-app/app/task-modifiers/benchmark.js
diff --git a/tests/dummy/app/templates/components/my-button.hbs b/packages/test-app/app/templates/components/my-button.hbs
similarity index 100%
rename from tests/dummy/app/templates/components/my-button.hbs
rename to packages/test-app/app/templates/components/my-button.hbs
diff --git a/tests/dummy/app/testing-ergo/foo-settimeout/controller.js b/packages/test-app/app/testing-ergo/foo-settimeout/controller.js
similarity index 100%
rename from tests/dummy/app/testing-ergo/foo-settimeout/controller.js
rename to packages/test-app/app/testing-ergo/foo-settimeout/controller.js
diff --git a/tests/dummy/app/testing-ergo/foo-settimeout/route.js b/packages/test-app/app/testing-ergo/foo-settimeout/route.js
similarity index 100%
rename from tests/dummy/app/testing-ergo/foo-settimeout/route.js
rename to packages/test-app/app/testing-ergo/foo-settimeout/route.js
diff --git a/tests/dummy/app/testing-ergo/foo-settimeout/template.hbs b/packages/test-app/app/testing-ergo/foo-settimeout/template.hbs
similarity index 100%
rename from tests/dummy/app/testing-ergo/foo-settimeout/template.hbs
rename to packages/test-app/app/testing-ergo/foo-settimeout/template.hbs
diff --git a/tests/dummy/app/testing-ergo/foo/controller.js b/packages/test-app/app/testing-ergo/foo/controller.js
similarity index 100%
rename from tests/dummy/app/testing-ergo/foo/controller.js
rename to packages/test-app/app/testing-ergo/foo/controller.js
diff --git a/tests/dummy/app/testing-ergo/foo/route.js b/packages/test-app/app/testing-ergo/foo/route.js
similarity index 100%
rename from tests/dummy/app/testing-ergo/foo/route.js
rename to packages/test-app/app/testing-ergo/foo/route.js
diff --git a/tests/dummy/app/testing-ergo/foo/template.hbs b/packages/test-app/app/testing-ergo/foo/template.hbs
similarity index 100%
rename from tests/dummy/app/testing-ergo/foo/template.hbs
rename to packages/test-app/app/testing-ergo/foo/template.hbs
diff --git a/tests/dummy/app/testing-ergo/loading/template.hbs b/packages/test-app/app/testing-ergo/loading/template.hbs
similarity index 100%
rename from tests/dummy/app/testing-ergo/loading/template.hbs
rename to packages/test-app/app/testing-ergo/loading/template.hbs
diff --git a/tests/dummy/app/testing-ergo/slow/route.js b/packages/test-app/app/testing-ergo/slow/route.js
similarity index 100%
rename from tests/dummy/app/testing-ergo/slow/route.js
rename to packages/test-app/app/testing-ergo/slow/route.js
diff --git a/tests/dummy/app/testing-ergo/slow/template.hbs b/packages/test-app/app/testing-ergo/slow/template.hbs
similarity index 100%
rename from tests/dummy/app/testing-ergo/slow/template.hbs
rename to packages/test-app/app/testing-ergo/slow/template.hbs
diff --git a/tests/dummy/app/testing-ergo/timer-loop/controller.js b/packages/test-app/app/testing-ergo/timer-loop/controller.js
similarity index 100%
rename from tests/dummy/app/testing-ergo/timer-loop/controller.js
rename to packages/test-app/app/testing-ergo/timer-loop/controller.js
diff --git a/tests/dummy/app/testing-ergo/timer-loop/route.js b/packages/test-app/app/testing-ergo/timer-loop/route.js
similarity index 100%
rename from tests/dummy/app/testing-ergo/timer-loop/route.js
rename to packages/test-app/app/testing-ergo/timer-loop/route.js
diff --git a/tests/dummy/app/testing-ergo/timer-loop/template.hbs b/packages/test-app/app/testing-ergo/timer-loop/template.hbs
similarity index 100%
rename from tests/dummy/app/testing-ergo/timer-loop/template.hbs
rename to packages/test-app/app/testing-ergo/timer-loop/template.hbs
diff --git a/tests/dummy/app/utils.js b/packages/test-app/app/utils.js
similarity index 100%
rename from tests/dummy/app/utils.js
rename to packages/test-app/app/utils.js
diff --git a/tests/dummy/config/ember-cli-update.json b/packages/test-app/config/ember-cli-update.json
similarity index 100%
rename from tests/dummy/config/ember-cli-update.json
rename to packages/test-app/config/ember-cli-update.json
diff --git a/tests/dummy/config/ember-try.js b/packages/test-app/config/ember-try.js
similarity index 82%
rename from tests/dummy/config/ember-try.js
rename to packages/test-app/config/ember-try.js
index c02cfe59b..d0a5024c6 100644
--- a/tests/dummy/config/ember-try.js
+++ b/packages/test-app/config/ember-try.js
@@ -1,5 +1,6 @@
'use strict';
+// eslint-disable-next-line n/no-missing-require
const getChannelURL = require('ember-source-channel-url');
const { embroiderSafe, embroiderOptimized } = require('@embroider/test-setup');
@@ -78,22 +79,7 @@ module.exports = async function () {
},
},
{
- name: 'typescript-3.7',
- npm: {
- devDependencies: {
- '@types/node': '~16.11.7', // @types/node 17.x breaks TS 3.7
- typescript: '~3.7.0',
- },
- },
- command: 'tsc',
- },
- {
- name: 'typescript-3.9',
- npm: {
- devDependencies: {
- typescript: '~3.9.0',
- },
- },
+ name: 'tsc',
command: 'tsc',
},
embroiderSafe(),
diff --git a/tests/dummy/config/environment.js b/packages/test-app/config/environment.js
similarity index 97%
rename from tests/dummy/config/environment.js
rename to packages/test-app/config/environment.js
index a90c48c8d..8e8351c83 100644
--- a/tests/dummy/config/environment.js
+++ b/packages/test-app/config/environment.js
@@ -2,7 +2,7 @@
module.exports = function (environment) {
const ENV = {
- modulePrefix: 'dummy',
+ modulePrefix: 'test-app',
environment,
rootURL: '/',
locationType: 'history',
diff --git a/tests/dummy/config/optional-features.json b/packages/test-app/config/optional-features.json
similarity index 100%
rename from tests/dummy/config/optional-features.json
rename to packages/test-app/config/optional-features.json
diff --git a/tests/dummy/config/targets.js b/packages/test-app/config/targets.js
similarity index 100%
rename from tests/dummy/config/targets.js
rename to packages/test-app/config/targets.js
diff --git a/ember-cli-build.js b/packages/test-app/ember-cli-build.js
similarity index 78%
rename from ember-cli-build.js
rename to packages/test-app/ember-cli-build.js
index 412dd6964..162c4f89d 100644
--- a/ember-cli-build.js
+++ b/packages/test-app/ember-cli-build.js
@@ -1,17 +1,17 @@
'use strict';
-const EmberAddon = require('ember-cli/lib/broccoli/ember-addon');
+const EmberApp = require('ember-cli/lib/broccoli/ember-app');
const { maybeEmbroider } = require('@embroider/test-setup');
const urls = require('./lib/prember-urls');
module.exports = function (defaults) {
- const app = new EmberAddon(defaults, {
+ const app = new EmberApp(defaults, {
minifyJS: {
enabled: false,
},
- snippetPaths: ['tests/dummy/snippets'],
- snippetSearchPaths: ['app', 'tests/dummy/app', 'addon'],
+ snippetPaths: ['snippets'],
+ snippetSearchPaths: ['app'],
'ember-prism': {
components: ['javascript', 'typescript', 'bash', 'markup'],
@@ -34,11 +34,16 @@ module.exports = function (defaults) {
// GitHub Pages uses this filename to serve 404s
emptyFile: '404.html',
},
+
+ babel: {
+ plugins: [
+ require.resolve('ember-concurrency/async-arrow-task-transform'),
+ ],
+ },
});
/*
- This build file specifies the options for the dummy test app of this
- addon, located in `/tests/dummy`
+ This build file specifies the options for the test app of this addon.
This build file does *not* influence how the addon or the app using it
behave. You most likely want to be modifying `./index.js` or app's build file
*/
@@ -46,7 +51,7 @@ module.exports = function (defaults) {
return maybeEmbroider(app, {
packageRules: [
{
- package: 'dummy',
+ package: 'test-app',
components: {
'{{e-c-test}}': {
safeToIgnore: true,
diff --git a/lib/prember-urls.js b/packages/test-app/lib/prember-urls.js
similarity index 100%
rename from lib/prember-urls.js
rename to packages/test-app/lib/prember-urls.js
diff --git a/packages/test-app/package.json b/packages/test-app/package.json
new file mode 100644
index 000000000..67b31b236
--- /dev/null
+++ b/packages/test-app/package.json
@@ -0,0 +1,91 @@
+{
+ "name": "test-app",
+ "version": "0.0.0",
+ "private": true,
+ "description": "Small description for test-app goes here",
+ "repository": "",
+ "license": "MIT",
+ "author": "",
+ "directories": {
+ "doc": "doc",
+ "test": "tests"
+ },
+ "scripts": {
+ "build": "ember build --environment=production",
+ "lint": "concurrently \"npm:lint:*(!fix)\" --names \"lint:\"",
+ "lint:fix": "concurrently \"npm:lint:*:fix\" --names \"fix:\"",
+ "lint:hbs": "ember-template-lint .",
+ "lint:hbs:fix": "ember-template-lint . --fix",
+ "lint:js": "eslint . --cache",
+ "lint:js:fix": "eslint . --fix",
+ "start": "ember serve",
+ "test": "concurrently \"npm:lint\" \"npm:test:*\" --names \"lint,test:\"",
+ "test:ember": "ember test",
+ "test:ember-try": "ember try:one",
+ "docs:build": "node_modules/.bin/jsdoc -c .jsdoc --verbose"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.23.7",
+ "@ember/optional-features": "^2.0.0",
+ "@ember/string": "^3.0.1",
+ "@ember/test-helpers": "^2.9.3",
+ "@embroider/test-setup": "^2.1.1",
+ "@glimmer/component": "^1.1.2",
+ "@glimmer/tracking": "^1.1.2",
+ "@tsconfig/ember": "^3.0.3",
+ "@types/rsvp": "^4.0.9",
+ "@typescript-eslint/eslint-plugin": "^6.14.0",
+ "@typescript-eslint/parser": "^6.14.0",
+ "babel-eslint": "^10.1.0",
+ "broccoli-asset-rev": "^3.0.0",
+ "concurrently": "^8.0.0",
+ "ember-auto-import": "^2.6.1",
+ "ember-cli": "~4.11.0",
+ "ember-cli-app-version": "^6.0.0",
+ "ember-cli-babel": "^7.26.11",
+ "ember-cli-dependency-checker": "^3.3.1",
+ "ember-cli-htmlbars": "^6.2.0",
+ "ember-cli-inject-live-reload": "^2.1.0",
+ "ember-cli-sass": "^10.0.1",
+ "ember-cli-sri": "^2.1.1",
+ "ember-cli-terser": "^4.0.2",
+ "ember-code-snippet": "^3.0.0",
+ "ember-concurrency": "workspace:*",
+ "ember-data": "~4.11.3",
+ "ember-fetch": "^8.1.2",
+ "ember-load-initializers": "^2.1.2",
+ "ember-modifier": "^4.1.0",
+ "ember-page-title": "^7.0.0",
+ "ember-prism": "^0.13.0",
+ "ember-qunit": "^6.2.0",
+ "ember-resolver": "^10.0.0",
+ "ember-sinon-qunit": "^7.4.0",
+ "ember-source": "~4.11.0",
+ "ember-source-channel-url": "^3.0.0",
+ "ember-template-lint": "^5.6.0",
+ "ember-try": "^3.0.0",
+ "eslint": "^7.32.0",
+ "eslint-config-prettier": "^8.6.0",
+ "eslint-plugin-ember": "^11.4.7",
+ "eslint-plugin-n": "^15.6.1",
+ "eslint-plugin-prettier": "^4.2.1",
+ "eslint-plugin-qunit": "^7.3.4",
+ "expect-type": "^0.15.0",
+ "jsdoc": "^3.6.6",
+ "loader.js": "^4.7.0",
+ "prettier": "^2.8.4",
+ "qunit": "^2.19.4",
+ "qunit-dom": "^2.0.0",
+ "sass": "^1.22.12",
+ "sinon": "^15.0.2",
+ "tracked-built-ins": "^3.1.1",
+ "typescript": "^5.3.3",
+ "webpack": "^5.75.0"
+ },
+ "engines": {
+ "node": "14.* || 16.* || >= 18"
+ },
+ "ember": {
+ "edition": "octane"
+ }
+}
diff --git a/tests/dummy/public/CNAME b/packages/test-app/public/CNAME
similarity index 100%
rename from tests/dummy/public/CNAME
rename to packages/test-app/public/CNAME
diff --git a/tests/dummy/public/crossdomain.xml b/packages/test-app/public/crossdomain.xml
similarity index 100%
rename from tests/dummy/public/crossdomain.xml
rename to packages/test-app/public/crossdomain.xml
diff --git a/tests/dummy/public/robots.txt b/packages/test-app/public/robots.txt
similarity index 100%
rename from tests/dummy/public/robots.txt
rename to packages/test-app/public/robots.txt
diff --git a/tests/dummy/snippets/ember-install.sh b/packages/test-app/snippets/ember-install.sh
similarity index 100%
rename from tests/dummy/snippets/ember-install.sh
rename to packages/test-app/snippets/ember-install.sh
diff --git a/tests/dummy/snippets/encapsulated-task.js b/packages/test-app/snippets/encapsulated-task.js
similarity index 100%
rename from tests/dummy/snippets/encapsulated-task.js
rename to packages/test-app/snippets/encapsulated-task.js
diff --git a/tests/dummy/snippets/last-value-decorator.js b/packages/test-app/snippets/last-value-decorator.js
similarity index 100%
rename from tests/dummy/snippets/last-value-decorator.js
rename to packages/test-app/snippets/last-value-decorator.js
diff --git a/tests/dummy/snippets/poll-loop-break-1.js b/packages/test-app/snippets/poll-loop-break-1.js
similarity index 62%
rename from tests/dummy/snippets/poll-loop-break-1.js
rename to packages/test-app/snippets/poll-loop-break-1.js
index 603c30ece..de73f5604 100644
--- a/tests/dummy/snippets/poll-loop-break-1.js
+++ b/packages/test-app/snippets/poll-loop-break-1.js
@@ -1,7 +1,7 @@
pollForChanges = task(async () => {
while(true) {
- yield pollServerForChanges();
+ await pollServerForChanges();
if (Ember.testing) { return; }
- yield timeout(5000);
+ await timeout(5000);
}
})
diff --git a/tests/dummy/snippets/poll-loop-classic.js b/packages/test-app/snippets/poll-loop-classic.js
similarity index 100%
rename from tests/dummy/snippets/poll-loop-classic.js
rename to packages/test-app/snippets/poll-loop-classic.js
diff --git a/tests/dummy/snippets/poll-loop.js b/packages/test-app/snippets/poll-loop.js
similarity index 100%
rename from tests/dummy/snippets/poll-loop.js
rename to packages/test-app/snippets/poll-loop.js
diff --git a/tests/dummy/snippets/task-cancelation-example-1.js b/packages/test-app/snippets/task-cancelation-example-1.js
similarity index 100%
rename from tests/dummy/snippets/task-cancelation-example-1.js
rename to packages/test-app/snippets/task-cancelation-example-1.js
diff --git a/tests/dummy/snippets/task-cancelation-example-2.js b/packages/test-app/snippets/task-cancelation-example-2.js
similarity index 100%
rename from tests/dummy/snippets/task-cancelation-example-2.js
rename to packages/test-app/snippets/task-cancelation-example-2.js
diff --git a/tests/dummy/snippets/task-cancelation-example-3.js b/packages/test-app/snippets/task-cancelation-example-3.js
similarity index 100%
rename from tests/dummy/snippets/task-cancelation-example-3.js
rename to packages/test-app/snippets/task-cancelation-example-3.js
diff --git a/tests/dummy/snippets/task-decorators-1.js b/packages/test-app/snippets/task-decorators-1.js
similarity index 100%
rename from tests/dummy/snippets/task-decorators-1.js
rename to packages/test-app/snippets/task-decorators-1.js
diff --git a/tests/dummy/snippets/task-decorators-2.js b/packages/test-app/snippets/task-decorators-2.js
similarity index 100%
rename from tests/dummy/snippets/task-decorators-2.js
rename to packages/test-app/snippets/task-decorators-2.js
diff --git a/tests/dummy/snippets/task-decorators-3.js b/packages/test-app/snippets/task-decorators-3.js
similarity index 100%
rename from tests/dummy/snippets/task-decorators-3.js
rename to packages/test-app/snippets/task-decorators-3.js
diff --git a/tests/dummy/snippets/task-decorators-4.js b/packages/test-app/snippets/task-decorators-4.js
similarity index 100%
rename from tests/dummy/snippets/task-decorators-4.js
rename to packages/test-app/snippets/task-decorators-4.js
diff --git a/tests/dummy/snippets/task-decorators-5.js b/packages/test-app/snippets/task-decorators-5.js
similarity index 100%
rename from tests/dummy/snippets/task-decorators-5.js
rename to packages/test-app/snippets/task-decorators-5.js
diff --git a/tests/dummy/snippets/task-group-decorators-1.js b/packages/test-app/snippets/task-group-decorators-1.js
similarity index 100%
rename from tests/dummy/snippets/task-group-decorators-1.js
rename to packages/test-app/snippets/task-group-decorators-1.js
diff --git a/tests/dummy/snippets/task-group-decorators-2.js b/packages/test-app/snippets/task-group-decorators-2.js
similarity index 100%
rename from tests/dummy/snippets/task-group-decorators-2.js
rename to packages/test-app/snippets/task-group-decorators-2.js
diff --git a/tests/dummy/snippets/task-group-decorators-3.js b/packages/test-app/snippets/task-group-decorators-3.js
similarity index 100%
rename from tests/dummy/snippets/task-group-decorators-3.js
rename to packages/test-app/snippets/task-group-decorators-3.js
diff --git a/tests/dummy/snippets/ts/basic-example.ts b/packages/test-app/snippets/ts/basic-example.ts
similarity index 100%
rename from tests/dummy/snippets/ts/basic-example.ts
rename to packages/test-app/snippets/ts/basic-example.ts
diff --git a/tests/dummy/snippets/ts/typing-task.ts b/packages/test-app/snippets/ts/typing-task.ts
similarity index 100%
rename from tests/dummy/snippets/ts/typing-task.ts
rename to packages/test-app/snippets/ts/typing-task.ts
diff --git a/tests/dummy/snippets/writing-tasks.js b/packages/test-app/snippets/writing-tasks.js
similarity index 100%
rename from tests/dummy/snippets/writing-tasks.js
rename to packages/test-app/snippets/writing-tasks.js
diff --git a/tests/dummy/snippets/yieldable-req-idle-cb-task.js b/packages/test-app/snippets/yieldable-req-idle-cb-task.js
similarity index 100%
rename from tests/dummy/snippets/yieldable-req-idle-cb-task.js
rename to packages/test-app/snippets/yieldable-req-idle-cb-task.js
diff --git a/tests/dummy/snippets/yieldable-req-idle-cb.js b/packages/test-app/snippets/yieldable-req-idle-cb.js
similarity index 100%
rename from tests/dummy/snippets/yieldable-req-idle-cb.js
rename to packages/test-app/snippets/yieldable-req-idle-cb.js
diff --git a/testem.js b/packages/test-app/testem.js
similarity index 100%
rename from testem.js
rename to packages/test-app/testem.js
diff --git a/packages/test-app/tests/acceptance/helpers-test.js b/packages/test-app/tests/acceptance/helpers-test.js
new file mode 100644
index 000000000..4beda8512
--- /dev/null
+++ b/packages/test-app/tests/acceptance/helpers-test.js
@@ -0,0 +1,31 @@
+import { click, visit, currentURL } from '@ember/test-helpers';
+import { setupApplicationTest } from 'ember-qunit';
+import { module, test } from 'qunit';
+import { setDebugFunction, getDebugFunction } from '@ember/debug';
+
+const originalAssert = getDebugFunction('assert');
+
+module('Acceptance | helpers', function (hooks) {
+ setupApplicationTest(hooks);
+
+ hooks.afterEach(function () {
+ setDebugFunction('assert', originalAssert);
+ });
+
+ test('perform and cancel-all', async function (assert) {
+ assert.expect(3);
+ await visit('/helpers-test');
+ assert.strictEqual(currentURL(), '/helpers-test');
+
+ await click('.perform-task');
+ assert.dom('.task-status').hasText('1-2-3-4');
+ await click('.cancel-task');
+ assert.dom('.task-status').hasText('canceled');
+ });
+
+ test('setting value="..." should behave like closure actions and rewrite event arg', async function (assert) {
+ assert.expect(0);
+ await visit('/helpers-test');
+ await click('.set-value-option-task');
+ });
+});
diff --git a/tests/acceptance/root-test.js b/packages/test-app/tests/acceptance/root-test.js
similarity index 91%
rename from tests/acceptance/root-test.js
rename to packages/test-app/tests/acceptance/root-test.js
index ff0e6f013..086e8af8d 100644
--- a/tests/acceptance/root-test.js
+++ b/packages/test-app/tests/acceptance/root-test.js
@@ -2,7 +2,7 @@ import { module, test, skip } from 'qunit';
import { setupApplicationTest } from 'ember-qunit';
import { visit } from '@ember/test-helpers';
import { run, _cancelTimers } from '@ember/runloop';
-import { FLATTENED_TABLE_OF_CONTENTS } from 'dummy/docs/controller';
+import { FLATTENED_TABLE_OF_CONTENTS } from 'test-app/docs/controller';
const cancelTimers = _cancelTimers || run.cancelTimers;
diff --git a/tests/acceptance/task-injection-test.js b/packages/test-app/tests/acceptance/task-injection-test.js
similarity index 100%
rename from tests/acceptance/task-injection-test.js
rename to packages/test-app/tests/acceptance/task-injection-test.js
diff --git a/packages/test-app/tests/helpers/helpers.js b/packages/test-app/tests/helpers/helpers.js
new file mode 100644
index 000000000..39b698258
--- /dev/null
+++ b/packages/test-app/tests/helpers/helpers.js
@@ -0,0 +1,6 @@
+import Ember from 'ember';
+
+export function makeAsyncError(hooks) {
+ hooks.afterEach(() => (Ember.onerror = null));
+ return () => new window.Promise((r) => (Ember.onerror = r));
+}
diff --git a/tests/helpers/index.js b/packages/test-app/tests/helpers/index.js
similarity index 100%
rename from tests/helpers/index.js
rename to packages/test-app/tests/helpers/index.js
diff --git a/tests/index.html b/packages/test-app/tests/index.html
similarity index 87%
rename from tests/index.html
rename to packages/test-app/tests/index.html
index b74fc8be6..29759967e 100644
--- a/tests/index.html
+++ b/packages/test-app/tests/index.html
@@ -2,7 +2,7 @@
-
Dummy Tests
+
Tests
@@ -10,7 +10,7 @@
{{content-for "test-head"}}
-
+
{{content-for "head-footer"}}
@@ -30,7 +30,7 @@
-
+
{{content-for "body-footer"}}
diff --git a/tests/integration/async-arrow-task-test.js b/packages/test-app/tests/integration/async-arrow-task-test.js
similarity index 99%
rename from tests/integration/async-arrow-task-test.js
rename to packages/test-app/tests/integration/async-arrow-task-test.js
index 6f2e1a1fa..6d9320379 100644
--- a/tests/integration/async-arrow-task-test.js
+++ b/packages/test-app/tests/integration/async-arrow-task-test.js
@@ -19,7 +19,7 @@ import {
enqueueTask,
} from 'ember-concurrency';
import Component from '@glimmer/component';
-import { getDebugFunction, setDebugFunction } from '../helpers/helpers';
+import { setDebugFunction, getDebugFunction } from '@ember/debug';
function defer() {
let resolve, reject;
diff --git a/tests/integration/helpers/perform-test.js b/packages/test-app/tests/integration/helpers/perform-test.js
similarity index 100%
rename from tests/integration/helpers/perform-test.js
rename to packages/test-app/tests/integration/helpers/perform-test.js
diff --git a/tests/integration/helpers/task-action-test.js b/packages/test-app/tests/integration/helpers/task-action-test.js
similarity index 100%
rename from tests/integration/helpers/task-action-test.js
rename to packages/test-app/tests/integration/helpers/task-action-test.js
diff --git a/packages/test-app/tests/integration/no-render-breaking-test.js b/packages/test-app/tests/integration/no-render-breaking-test.js
new file mode 100644
index 000000000..91a48b26c
--- /dev/null
+++ b/packages/test-app/tests/integration/no-render-breaking-test.js
@@ -0,0 +1,61 @@
+import Component from '@ember/component';
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { render } from '@ember/test-helpers';
+import hbs from 'htmlbars-inline-precompile';
+import { task, timeout } from 'ember-concurrency';
+
+module('Integration | no render breaking', function (hooks) {
+ setupRenderingTest(hooks);
+
+ test('Issue #337 | internal task state updates do not trigger re-render assertions w/ auto-tracking', async function (assert) {
+ assert.expect(1);
+
+ this.owner.register(
+ 'component:e-c-test',
+ Component.extend({
+ layout: hbs``,
+
+ focusIn() {
+ this.exampleTask.perform();
+ },
+
+ exampleTask: task(function* () {
+ yield timeout(100);
+ }),
+ })
+ );
+
+ await render(hbs`
+
+ `);
+ assert.ok(true, 'Renders');
+ });
+
+ test('Issue #340 | internal task state updates in cancellation do not trigger re-render assertions w/ auto-tracking', async function (assert) {
+ assert.expect(1);
+
+ this.owner.register(
+ 'component:e-c-test',
+ Component.extend({
+ layout: hbs`
{{this.value}}
`,
+
+ get value() {
+ this._super(...arguments);
+
+ this.exampleTask.perform();
+ this.exampleTask.perform();
+
+ return 'value';
+ },
+
+ exampleTask: task(function* () {
+ yield timeout(100);
+ }).restartable(),
+ })
+ );
+
+ await render(hbs``);
+ assert.ok(true, 'Renders');
+ });
+});
diff --git a/packages/test-app/tests/integration/tracked-use-test.js b/packages/test-app/tests/integration/tracked-use-test.js
new file mode 100644
index 000000000..65bff0c96
--- /dev/null
+++ b/packages/test-app/tests/integration/tracked-use-test.js
@@ -0,0 +1,98 @@
+import Component from '@ember/component';
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { later } from '@ember/runloop';
+import { render } from '@ember/test-helpers';
+import hbs from 'htmlbars-inline-precompile';
+import { restartableTask, timeout, task, taskGroup } from 'ember-concurrency';
+
+module('Integration | tracked use', function (hooks) {
+ setupRenderingTest(hooks);
+
+ test('Issue #343 | Task: tracked use with getter', async function (assert) {
+ assert.expect(2);
+ const done = assert.async();
+
+ this.owner.register(
+ 'component:e-c-test',
+ class ECTest extends Component {
+ layout = hbs`