diff --git a/packages/router/.editorconfig b/packages/router/.editorconfig index 219985c22..c35a00240 100644 --- a/packages/router/.editorconfig +++ b/packages/router/.editorconfig @@ -4,7 +4,6 @@ root = true - [*] end_of_line = lf charset = utf-8 diff --git a/packages/router/.eslintignore b/packages/router/.eslintignore index 72df37307..701947ed3 100644 --- a/packages/router/.eslintignore +++ b/packages/router/.eslintignore @@ -13,6 +13,8 @@ # misc /coverage/ !.* +.*/ +.eslintcache # ember-try /.node_modules.ember-try/ diff --git a/packages/router/.eslintrc.js b/packages/router/.eslintrc.js index f49cc02e1..56a5a401e 100644 --- a/packages/router/.eslintrc.js +++ b/packages/router/.eslintrc.js @@ -1,12 +1,21 @@ +'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'], + extends: [ + 'eslint:recommended', + 'plugin:ember/recommended', + 'plugin:prettier/recommended', + ], env: { browser: true, }, @@ -15,28 +24,36 @@ module.exports = { // node files { files: [ - '.eslintrc.js', - '.template-lintrc.js', - 'ember-cli-build.js', - 'index.js', - 'testem.js', - 'blueprints/*/index.js', - 'config/**/*.js', - 'tests/dummy/config/**/*.js', + './.eslintrc.js', + './.prettierrc.js', + './.template-lintrc.js', + './ember-cli-build.js', + './index.js', + './testem.js', + './blueprints/*/index.js', + './config/**/*.js', + './tests/dummy/config/**/*.js', + ], + excludedFiles: [ + 'addon/**', + 'addon-test-support/**', + 'app/**', + 'tests/dummy/app/**', ], - excludedFiles: ['addon/**', 'addon-test-support/**', 'app/**', 'tests/dummy/app/**'], parserOptions: { sourceType: 'script', - ecmaVersion: 2015, }, env: { browser: false, node: true, }, plugins: ['node'], - rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, { - // add your custom rules and overrides for node files here - }), + extends: ['plugin:node/recommended'], + }, + { + // Test files: + files: ['tests/**/*-test.{js,ts}'], + extends: ['plugin:qunit/recommended'], }, ], }; diff --git a/packages/router/.gitignore b/packages/router/.gitignore index c40a1b2ab..7e0f7ddce 100644 --- a/packages/router/.gitignore +++ b/packages/router/.gitignore @@ -12,6 +12,7 @@ /.env* /.pnp* /.sass-cache +/.eslintcache /connect.lock /coverage/ /libpeerconnection.log diff --git a/packages/router/.npmignore b/packages/router/.npmignore index fba915456..f30effe9b 100644 --- a/packages/router/.npmignore +++ b/packages/router/.npmignore @@ -10,9 +10,13 @@ /.editorconfig /.ember-cli /.env* +/.eslintcache /.eslintignore /.eslintrc.js +/.git/ /.gitignore +/.prettierignore +/.prettierrc.js /.template-lintrc.js /.travis.yml /.watchmanconfig @@ -22,6 +26,7 @@ /ember-cli-build.js /testem.js /tests/ +/yarn-error.log /yarn.lock .gitkeep diff --git a/packages/router/.prettierignore b/packages/router/.prettierignore new file mode 100644 index 000000000..922165552 --- /dev/null +++ b/packages/router/.prettierignore @@ -0,0 +1,21 @@ +# 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 +/package.json.ember-try diff --git a/packages/router/.prettierrc.js b/packages/router/.prettierrc.js new file mode 100644 index 000000000..534e6d35a --- /dev/null +++ b/packages/router/.prettierrc.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = { + singleQuote: true, +}; diff --git a/packages/router/.template-lintrc.js b/packages/router/.template-lintrc.js index b45e96ffd..f35f61c7b 100644 --- a/packages/router/.template-lintrc.js +++ b/packages/router/.template-lintrc.js @@ -1,5 +1,5 @@ 'use strict'; module.exports = { - extends: 'recommended' + extends: 'recommended', }; diff --git a/packages/router/.travis.yml b/packages/router/.travis.yml index 94540c75d..3761119d8 100644 --- a/packages/router/.travis.yml +++ b/packages/router/.travis.yml @@ -3,10 +3,9 @@ language: node_js node_js: # we recommend testing addons with the same minimum supported node version as Ember CLI # so that your addon works for all apps - - "8" + - '12' -sudo: false -dist: trusty +dist: xenial addons: chrome: stable @@ -26,42 +25,39 @@ branches: - /^v\d+\.\d+\.\d+/ jobs: - fail_fast: true + fast_finish: false allow_failures: - env: EMBER_TRY_SCENARIO=ember-canary include: # runs linting and tests with current locked deps - - - stage: "Tests" - name: "Tests" - install: - - yarn install --non-interactive + - stage: 'Tests' + name: 'Tests' script: - - yarn lint:hbs - - yarn lint:js - - yarn test + - yarn lint + - yarn test:ember - - name: "Floating Dependencies" + - stage: 'Additional Tests' + name: 'Floating Dependencies' + install: + - yarn install --no-lockfile --non-interactive script: - - yarn test + - yarn test:ember # we recommend new addons test the current and previous LTS # as well as latest stable release (bonus points to beta/canary) - - stage: "Additional Tests" - env: EMBER_TRY_SCENARIO=ember-lts-2.18 - - env: EMBER_TRY_SCENARIO=ember-lts-3.4 + - env: EMBER_TRY_SCENARIO=ember-lts-3.16 + - env: EMBER_TRY_SCENARIO=ember-lts-3.20 + - env: EMBER_TRY_SCENARIO=ember-lts-3.24 - env: EMBER_TRY_SCENARIO=ember-release - env: EMBER_TRY_SCENARIO=ember-beta - env: EMBER_TRY_SCENARIO=ember-canary - env: EMBER_TRY_SCENARIO=ember-default-with-jquery + - env: EMBER_TRY_SCENARIO=ember-classic before_install: - curl -o- -L https://yarnpkg.com/install.sh | bash - export PATH=$HOME/.yarn/bin:$PATH -install: - - yarn install --no-lockfile --non-interactive - script: - node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO diff --git a/packages/router/CONTRIBUTING.md b/packages/router/CONTRIBUTING.md index ad224d5c9..6a47ef7e5 100644 --- a/packages/router/CONTRIBUTING.md +++ b/packages/router/CONTRIBUTING.md @@ -2,25 +2,24 @@ ## Installation -* `git clone ` -* `cd @embroider/router` -* `yarn install` +- `git clone ` +- `cd @embroider/router` +- `yarn install` ## Linting -* `yarn lint:hbs` -* `yarn lint:js` -* `yarn lint:js --fix` +- `yarn lint` +- `yarn lint:fix` ## Running tests -* `ember test` – Runs the test suite on the current Ember version -* `ember test --server` – Runs the test suite in "watch mode" -* `ember try:each` – Runs the test suite against multiple Ember versions +- `ember test` – Runs the test suite on the current Ember version +- `ember test --server` – Runs the test suite in "watch mode" +- `ember try:each` – Runs the test suite against multiple Ember versions ## Running the dummy application -* `ember serve` -* Visit the dummy application at [http://localhost:4200](http://localhost:4200). +- `ember serve` +- Visit the dummy application at [http://localhost:4200](http://localhost:4200). -For more information on using ember-cli, visit [https://ember-cli.com/](https://ember-cli.com/). \ No newline at end of file +For more information on using ember-cli, visit [https://ember-cli.com/](https://ember-cli.com/). diff --git a/packages/router/README.md b/packages/router/README.md index 236f1a476..f77aed2ba 100644 --- a/packages/router/README.md +++ b/packages/router/README.md @@ -5,6 +5,10 @@ of lazy route bundles and loads them when needed. ## Compatibility +- Ember.js v3.16 or above +- Ember CLI v3.16 or above +- Node.js v12 or above + To get code-splitting, your app must build with Embroider. It's safe to use this router in apps that aren't building with Embroider, but it won't do anything. diff --git a/packages/router/addon/index.js b/packages/router/addon/index.js index c1af62449..68c83e3d0 100644 --- a/packages/router/addon/index.js +++ b/packages/router/addon/index.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-private-routing-service */ /* This code is adapted from ember-engines/addon/-private/router-ext.js. */ @@ -23,17 +24,21 @@ if (macroCondition(getGlobalConfig()['@embroider/core']?.active)) { // mappings from routeName to the engines "original name" (which we know at build time). let engine = engineInfoByRoute[routeName]; if (engine && window._embroiderEngineBundles_) { - return window._embroiderEngineBundles_.find(bundle => bundle.names.indexOf(engine.name) !== -1); + return window._embroiderEngineBundles_.find( + (bundle) => bundle.names.indexOf(engine.name) !== -1 + ); } if (window._embroiderRouteBundles_) { - return window._embroiderRouteBundles_.find(bundle => bundle.names.indexOf(routeName) !== -1); + return window._embroiderRouteBundles_.find( + (bundle) => bundle.names.indexOf(routeName) !== -1 + ); } return false; }; - Router = EmberRouter.extend({ + class EmbroiderRouter extends EmberRouter { // This is necessary in order to prevent the premature loading of lazy routes // when we are merely trying to render a link-to that points at them. // Unfortunately the stock query parameter behavior pulls on routes just to @@ -43,20 +48,20 @@ if (macroCondition(getGlobalConfig()['@embroider/core']?.active)) { if (bundle && !bundle.loaded) { return undefined; } - return this._super(...arguments); - }, + return super._getQPMeta(...arguments); + } // On older versions of Ember, this is a framework method that we're // overriding to provide our own handlerResolver. _getHandlerFunction() { newSetup = false; return this._handlerResolver(); - }, + } // On newer versions of Ember, this is the framework method that we're // overriding to provide our own handlerResolver. setupRouter() { - let isSetup = this._super(...arguments); + let isSetup = super.setupRouter(...arguments); if (newSetup) { // Different versions of routerMicrolib use the names `getRoute` vs // `getHandler`. @@ -71,10 +76,10 @@ if (macroCondition(getGlobalConfig()['@embroider/core']?.active)) { } } return isSetup; - }, + } _handlerResolver(original) { - return name => { + return (name) => { let bundle = lazyBundle(name, this._engineInfoByRoute); if (!bundle || bundle.loaded) { return original(name); @@ -88,14 +93,16 @@ if (macroCondition(getGlobalConfig()['@embroider/core']?.active)) { bundle.loaded = true; return original(name); }, - err => { + (err) => { waiter.endAsync(token); throw err; } ); }; - }, - }); + } + } + + Router = EmbroiderRouter; } else { Router = EmberRouter; } diff --git a/packages/router/config/ember-try.js b/packages/router/config/ember-try.js index 9b5d6a339..53e2a4721 100644 --- a/packages/router/config/ember-try.js +++ b/packages/router/config/ember-try.js @@ -2,44 +2,89 @@ const getChannelURL = require('ember-source-channel-url'); -module.exports = function () { - return Promise.all([getChannelURL('release'), getChannelURL('beta'), getChannelURL('canary')]).then(urls => { - return { - useYarn: true, - scenarios: [ - { - name: 'ember-lts-3.16', - npm: { - devDependencies: { - 'ember-source': '~3.16.0', - }, - }, - }, - { - name: 'ember-lts-3.20', - npm: { - devDependencies: { - 'ember-source': '~3.20.0', - }, - }, - }, - { - name: 'ember-lts-3.24', - npm: { - devDependencies: { - 'ember-source': '~3.24.0', - }, - }, - }, - { - name: 'ember-release', - npm: { - devDependencies: { - 'ember-source': urls[0], - }, - }, - }, - ], - }; - }); +module.exports = async function () { + return { + useYarn: true, + scenarios: [ + { + name: 'ember-lts-3.16', + npm: { + devDependencies: { + 'ember-source': '~3.16.0', + }, + }, + }, + { + name: 'ember-lts-3.20', + npm: { + devDependencies: { + 'ember-source': '~3.20.5', + }, + }, + }, + { + name: 'ember-lts-3.24', + npm: { + devDependencies: { + 'ember-source': '~3.24.3', + }, + }, + }, + { + name: 'ember-release', + npm: { + devDependencies: { + 'ember-source': await getChannelURL('release'), + }, + }, + }, + { + name: 'ember-beta', + npm: { + devDependencies: { + 'ember-source': await getChannelURL('beta'), + }, + }, + }, + { + name: 'ember-canary', + npm: { + devDependencies: { + 'ember-source': await getChannelURL('canary'), + }, + }, + }, + { + name: 'ember-default-with-jquery', + env: { + EMBER_OPTIONAL_FEATURES: JSON.stringify({ + 'jquery-integration': true, + }), + }, + npm: { + devDependencies: { + '@ember/jquery': '^1.1.0', + }, + }, + }, + { + name: 'ember-classic', + env: { + EMBER_OPTIONAL_FEATURES: JSON.stringify({ + 'application-template-wrapper': true, + 'default-async-observers': false, + 'template-only-glimmer-components': false, + }), + }, + npm: { + devDependencies: { + 'ember-source': '~3.28.0', + }, + ember: { + edition: 'classic', + }, + }, + }, + ], + }; }; diff --git a/packages/router/config/environment.js b/packages/router/config/environment.js index 0dfaed472..331ab30df 100644 --- a/packages/router/config/environment.js +++ b/packages/router/config/environment.js @@ -1,5 +1,5 @@ 'use strict'; -module.exports = function(/* environment, appConfig */) { - return { }; +module.exports = function (/* environment, appConfig */) { + return {}; }; diff --git a/packages/router/ember-cli-build.js b/packages/router/ember-cli-build.js index bd376eb1d..5dd01f7af 100644 --- a/packages/router/ember-cli-build.js +++ b/packages/router/ember-cli-build.js @@ -2,7 +2,7 @@ const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); -module.exports = function(defaults) { +module.exports = function (defaults) { let app = new EmberAddon(defaults, { // Add options here }); diff --git a/packages/router/index.js b/packages/router/index.js index 2e1d1d8d5..0ca063d42 100644 --- a/packages/router/index.js +++ b/packages/router/index.js @@ -1,5 +1,5 @@ 'use strict'; module.exports = { - name: require('./package').name + name: require('./package').name, }; diff --git a/packages/router/package.json b/packages/router/package.json index 116dca13f..0ae2fc896 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -17,53 +17,65 @@ "test": "tests" }, "scripts": { - "build": "ember build", - "lint": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*", + "build": "ember build --environment=production", + "lint": "npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"", + "lint:fix": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix", "lint:hbs": "ember-template-lint .", - "lint:js": "eslint .", + "lint:hbs:fix": "ember-template-lint . --fix", + "lint:js": "eslint . --cache", + "lint:js:fix": "eslint . --fix", "start": "ember serve", - "test": "npm-run-all lint:* test:*", - "test:all": "ember try:each", - "test:ember": "ember test --test-port=0", + "test": "npm-run-all lint test:*", + "test:ember": "ember test", + "test:ember-compatibility": "ember try:each", "test:classic": "cross-env CLASSIC=true ember test --test-port=0" }, "dependencies": { "@ember/test-waiters": "^3.0.0", "@embroider/macros": "0.47.2", - "ember-cli-babel": "^7.23.0" + "ember-cli-babel": "^7.26.6", + "ember-cli-htmlbars": "^5.7.1" }, "devDependencies": { - "@ember/optional-features": "^0.7.0", - "@ember/string": "^1.0.0", + "@ember/optional-features": "^2.0.0", + "@ember/string": "^3.0.0", "@ember/test-helpers": "^2.4.2", "@embroider/compat": "0.47.2", "@embroider/core": "0.47.2", "@embroider/test-support": "0.36.0", "@embroider/webpack": "0.47.2", + "@glimmer/component": "^1.0.4", + "@glimmer/tracking": "^1.0.4", "@types/ember__routing": "^3.16.9", "babel-eslint": "^10.1.0", "broccoli-asset-rev": "^3.0.0", "cross-env": "^7.0.3", - "ember-auto-import": "^1.11.2", - "ember-cli": "~3.28.0", - "ember-cli-dependency-checker": "^3.1.0", - "ember-cli-htmlbars": "^4.3.1", - "ember-cli-inject-live-reload": "^1.8.2", + "ember-auto-import": "^2.2.0", + "ember-cli": "~3.28.4", + "ember-cli-dependency-checker": "^3.2.0", + "ember-cli-inject-live-reload": "^2.1.0", "ember-cli-sri": "^2.1.1", - "ember-cli-uglify": "^2.1.0", + "ember-cli-terser": "^4.0.2", "ember-disable-prototype-extensions": "^1.1.3", - "ember-export-application-global": "^2.0.0", - "ember-load-initializers": "^2.0.0", + "ember-export-application-global": "^2.0.1", + "ember-load-initializers": "^2.1.2", "ember-maybe-import-regenerator": "^1.0.0", + "ember-page-title": "^6.2.2", "ember-qunit": "^5.1.4", - "ember-resolver": "^5.0.1", - "ember-source": "~3.26", - "ember-source-channel-url": "^1.1.0", + "ember-resolver": "^8.0.2", + "ember-source": "~3.28.0", + "ember-source-channel-url": "^3.0.0", "ember-template-lint": "^3.6.0", - "ember-try": "^1.0.0", - "eslint-plugin-ember": "^7.0.0", - "eslint-plugin-node": "^9.0.1", + "ember-try": "^1.4.0", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-ember": "^10.5.4", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^3.4.1", + "eslint-plugin-qunit": "^6.2.0", "loader.js": "^4.7.0", + "npm-run-all": "^4.1.5", + "prettier": "^2.3.2", "qunit": "^2.16.0", "qunit-dom": "^1.6.0", "webpack": "^5" @@ -83,6 +95,9 @@ "engines": { "node": "12.* || 14.* || >= 16" }, + "ember": { + "edition": "octane" + }, "ember-addon": { "configPath": "tests/dummy/config" }, diff --git a/packages/router/tests/acceptance/lazy-routes-test.js b/packages/router/tests/acceptance/lazy-routes-test.js index cac3fc224..c9fdb5706 100644 --- a/packages/router/tests/acceptance/lazy-routes-test.js +++ b/packages/router/tests/acceptance/lazy-routes-test.js @@ -6,65 +6,92 @@ import { getGlobalConfig } from '@embroider/macros'; /* global requirejs */ -module('Acceptance | lazy routes', function(hooks) { +module('Acceptance | lazy routes', function (hooks) { setupApplicationTest(hooks); function hasController(routeName) { - return Boolean(requirejs.entries[`${ENV.modulePrefix}/controllers/${routeName}`]); + return Boolean( + requirejs.entries[`${ENV.modulePrefix}/controllers/${routeName}`] + ); } function hasRoute(routeName) { - return Boolean(requirejs.entries[`${ENV.modulePrefix}/routes/${routeName}`]); + return Boolean( + requirejs.entries[`${ENV.modulePrefix}/routes/${routeName}`] + ); } function hasTemplate(routeName) { - return Boolean(requirejs.entries[`${ENV.modulePrefix}/templates/${routeName}`]); + return Boolean( + requirejs.entries[`${ENV.modulePrefix}/templates/${routeName}`] + ); } - function hasComponentTemplate(name) { - return Boolean(requirejs.entries[`${ENV.modulePrefix}/templates/components/${name}`]); + function hasComponent(name) { + return Boolean(requirejs.entries[`${ENV.modulePrefix}/components/${name}`]); } if (ENV.isClassic) { - test('lazy routes present', async function(assert) { + test('lazy routes present', async function (assert) { await visit('/'); assert.ok(hasController('split-me'), 'classic build has controller'); assert.ok(hasRoute('split-me'), 'classic build has route'); assert.ok(hasTemplate('split-me'), 'classic build has template'); - assert.ok(hasController('split-me/child'), 'classic build has child controller'); + assert.ok( + hasController('split-me/child'), + 'classic build has child controller' + ); assert.ok(hasRoute('split-me/child'), 'classic build has child route'); - assert.ok(hasTemplate('split-me/child'), 'classic build has child template'); - assert.ok(hasComponentTemplate('used-in-child'), 'classic build has all components'); + assert.ok( + hasTemplate('split-me/child'), + 'classic build has child template' + ); + assert.ok( + hasComponent('used-in-child'), + 'classic build has all components' + ); }); } else { - test('lazy routes not yet present', async function(assert) { + test('lazy routes not yet present', async function (assert) { await visit('/'); - assert.ok(!hasController('split-me'), 'controller is lazy'); - assert.ok(!hasRoute('split-me'), 'route is lazy'); - assert.ok(!hasTemplate('split-me'), 'template is lazy'); - assert.ok(!hasController('split-me/child'), 'child controller is lazy'); - assert.ok(!hasRoute('split-me/child'), 'child route is lazy'); - assert.ok(!hasTemplate('split-me/child'), 'child template is lazy'); - assert.ok(!hasComponentTemplate('used-in-child'), 'descendant components are lazy'); + assert.notOk(hasController('split-me'), 'controller is lazy'); + assert.notOk(hasRoute('split-me'), 'route is lazy'); + assert.notOk(hasTemplate('split-me'), 'template is lazy'); + assert.notOk(hasController('split-me/child'), 'child controller is lazy'); + assert.notOk(hasRoute('split-me/child'), 'child route is lazy'); + assert.notOk(hasTemplate('split-me/child'), 'child template is lazy'); + assert.notOk( + hasComponent('used-in-child'), + 'descendant components are lazy' + ); }); } - test('can see @embroider/core config', async function(assert) { - let config = getGlobalConfig()['@embroider/core']; - if (ENV.isClassic) { + if (ENV.isClassic) { + test('classic builds can not see @embroider/core config', async function (assert) { + let config = getGlobalConfig()['@embroider/core']; assert.equal(config, undefined, 'expected no embroider core config'); - } else { - assert.equal(config.active, true, 'expected to see active @embroider/core'); - } - }); + }); + } else { + test('can see @embroider/core config', async function (assert) { + let config = getGlobalConfig()['@embroider/core']; + assert.true(config.active, 'expected to see active @embroider/core'); + }); + } - test('can enter a lazy route', async function(assert) { + test('can enter a lazy route', async function (assert) { await visit('/split-me'); - assert.ok(document.querySelector('[data-test-split-me-index]'), 'split-me/index rendered'); + assert.ok( + document.querySelector('[data-test-split-me-index]'), + 'split-me/index rendered' + ); }); - test('can enter a child of a lazy route', async function(assert) { + test('can enter a child of a lazy route', async function (assert) { await visit('/split-me/child'); - assert.ok(document.querySelector('[data-test-used-in-child]'), 'split-me/child rendered'); + assert.ok( + document.querySelector('[data-test-used-in-child]'), + 'split-me/child rendered' + ); }); }); diff --git a/packages/router/tests/dummy/app/app.js b/packages/router/tests/dummy/app/app.js index b3b2bd677..523bad60c 100644 --- a/packages/router/tests/dummy/app/app.js +++ b/packages/router/tests/dummy/app/app.js @@ -1,14 +1,12 @@ import Application from '@ember/application'; -import Resolver from './resolver'; +import Resolver from 'ember-resolver'; import loadInitializers from 'ember-load-initializers'; -import config from './config/environment'; +import config from 'dummy/config/environment'; -const App = Application.extend({ - modulePrefix: config.modulePrefix, - podModulePrefix: config.podModulePrefix, - Resolver -}); +export default class App extends Application { + modulePrefix = config.modulePrefix; + podModulePrefix = config.podModulePrefix; + Resolver = Resolver; +} loadInitializers(App, config.modulePrefix); - -export default App; diff --git a/packages/router/tests/dummy/app/templates/components/used-in-child.hbs b/packages/router/tests/dummy/app/components/used-in-child.hbs similarity index 100% rename from packages/router/tests/dummy/app/templates/components/used-in-child.hbs rename to packages/router/tests/dummy/app/components/used-in-child.hbs diff --git a/packages/router/tests/dummy/app/components/used-in-child.js b/packages/router/tests/dummy/app/components/used-in-child.js deleted file mode 100644 index bb93d73f3..000000000 --- a/packages/router/tests/dummy/app/components/used-in-child.js +++ /dev/null @@ -1,4 +0,0 @@ -import Component from '@ember/component'; - -export default Component.extend({ -}); diff --git a/packages/router/tests/dummy/app/controllers/split-me.js b/packages/router/tests/dummy/app/controllers/split-me.js index d630f3134..2245f2dcf 100644 --- a/packages/router/tests/dummy/app/controllers/split-me.js +++ b/packages/router/tests/dummy/app/controllers/split-me.js @@ -1,4 +1,3 @@ import Controller from '@ember/controller'; -export default Controller.extend({ -}); +export default class SplitMeController extends Controller {} diff --git a/packages/router/tests/dummy/app/controllers/split-me/child.js b/packages/router/tests/dummy/app/controllers/split-me/child.js index d630f3134..e36f2237a 100644 --- a/packages/router/tests/dummy/app/controllers/split-me/child.js +++ b/packages/router/tests/dummy/app/controllers/split-me/child.js @@ -1,4 +1,3 @@ import Controller from '@ember/controller'; -export default Controller.extend({ -}); +export default class SplitMeChildController extends Controller {} diff --git a/packages/router/tests/dummy/app/resolver.js b/packages/router/tests/dummy/app/resolver.js deleted file mode 100644 index 2fb563d6c..000000000 --- a/packages/router/tests/dummy/app/resolver.js +++ /dev/null @@ -1,3 +0,0 @@ -import Resolver from 'ember-resolver'; - -export default Resolver; diff --git a/packages/router/tests/dummy/app/router.js b/packages/router/tests/dummy/app/router.js index fd02b0711..5fc71895c 100644 --- a/packages/router/tests/dummy/app/router.js +++ b/packages/router/tests/dummy/app/router.js @@ -1,15 +1,13 @@ import EmberRouter from '@embroider/router'; -import config from './config/environment'; +import config from 'dummy/config/environment'; -const Router = EmberRouter.extend({ - location: config.locationType, - rootURL: config.rootURL, -}); +export default class Router extends EmberRouter { + location = config.locationType; + rootURL = config.rootURL; +} -Router.map(function() { - this.route('split-me', function() { +Router.map(function () { + this.route('split-me', function () { this.route('child'); }); }); - -export default Router; diff --git a/packages/router/tests/dummy/app/routes/split-me.js b/packages/router/tests/dummy/app/routes/split-me.js index 6c74252aa..1787749b6 100644 --- a/packages/router/tests/dummy/app/routes/split-me.js +++ b/packages/router/tests/dummy/app/routes/split-me.js @@ -1,4 +1,3 @@ import Route from '@ember/routing/route'; -export default Route.extend({ -}); +export default class SplitMeRoute extends Route {} diff --git a/packages/router/tests/dummy/app/routes/split-me/child.js b/packages/router/tests/dummy/app/routes/split-me/child.js index 6c74252aa..cbf641ee7 100644 --- a/packages/router/tests/dummy/app/routes/split-me/child.js +++ b/packages/router/tests/dummy/app/routes/split-me/child.js @@ -1,4 +1,3 @@ import Route from '@ember/routing/route'; -export default Route.extend({ -}); +export default class SplitMeChildRoute extends Route {} diff --git a/packages/router/tests/dummy/app/routes/split-me/index.js b/packages/router/tests/dummy/app/routes/split-me/index.js index 6c74252aa..f41d42f79 100644 --- a/packages/router/tests/dummy/app/routes/split-me/index.js +++ b/packages/router/tests/dummy/app/routes/split-me/index.js @@ -1,4 +1,3 @@ import Route from '@ember/routing/route'; -export default Route.extend({ -}); +export default class SplitMeIndexRoute extends Route {} diff --git a/packages/router/tests/dummy/app/templates/application.hbs b/packages/router/tests/dummy/app/templates/application.hbs index ceeebe266..f2221adf5 100644 --- a/packages/router/tests/dummy/app/templates/application.hbs +++ b/packages/router/tests/dummy/app/templates/application.hbs @@ -1,7 +1,9 @@ -

Welcome to Ember

+{{page-title 'Dummy'}} -{{#link-to "index"}}Index{{/link-to}} -{{#link-to "split-me"}}Split Index{{/link-to}} -{{#link-to "split-me.child"}}Split Child{{/link-to}} +

Welcome to Ember

+ +Index +Split Index +Split Child {{outlet}} \ No newline at end of file diff --git a/packages/router/tests/dummy/app/templates/components/.gitkeep b/packages/router/tests/dummy/app/templates/components/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/router/tests/dummy/config/ember-cli-update.json b/packages/router/tests/dummy/config/ember-cli-update.json new file mode 100644 index 000000000..ef25a7f40 --- /dev/null +++ b/packages/router/tests/dummy/config/ember-cli-update.json @@ -0,0 +1,18 @@ +{ + "schemaVersion": "1.0.0", + "packages": [ + { + "name": "ember-cli", + "version": "3.28.4", + "blueprints": [ + { + "name": "addon", + "outputRepo": "https://github.com/ember-cli/ember-addon-output", + "codemodsSource": "ember-addon-codemods-manifest@1", + "isBaseBlueprint": true, + "options": ["--yarn", "--no-welcome"] + } + ] + } + ] +} diff --git a/packages/router/tests/dummy/config/environment.js b/packages/router/tests/dummy/config/environment.js index df89830e2..904a50a58 100644 --- a/packages/router/tests/dummy/config/environment.js +++ b/packages/router/tests/dummy/config/environment.js @@ -1,6 +1,6 @@ 'use strict'; -module.exports = function(environment) { +module.exports = function (environment) { let ENV = { modulePrefix: 'dummy', environment, @@ -9,7 +9,7 @@ module.exports = function(environment) { EmberENV: { FEATURES: { // Here you can enable experimental features on an ember canary build - // e.g. 'with-controller': true + // e.g. EMBER_NATIVE_DECORATOR_SUPPORT: true }, EXTEND_PROTOTYPES: { // Prevent Ember Data from overriding Date.parse. diff --git a/packages/router/tests/dummy/config/optional-features.json b/packages/router/tests/dummy/config/optional-features.json index b1902623a..b26286e2e 100644 --- a/packages/router/tests/dummy/config/optional-features.json +++ b/packages/router/tests/dummy/config/optional-features.json @@ -1,3 +1,6 @@ { - "jquery-integration": false + "application-template-wrapper": false, + "default-async-observers": true, + "jquery-integration": false, + "template-only-glimmer-components": true } diff --git a/packages/router/tests/dummy/config/targets.js b/packages/router/tests/dummy/config/targets.js index 8ffae3636..3cd797ab4 100644 --- a/packages/router/tests/dummy/config/targets.js +++ b/packages/router/tests/dummy/config/targets.js @@ -3,16 +3,24 @@ const browsers = [ 'last 1 Chrome versions', 'last 1 Firefox versions', - 'last 1 Safari versions' + 'last 1 Safari versions', ]; -const isCI = !!process.env.CI; -const isProduction = process.env.EMBER_ENV === 'production'; - -if (isCI || isProduction) { - browsers.push('ie 11'); -} +// Ember's browser support policy is changing, and IE11 support will end in +// v4.0 onwards. +// +// See https://deprecations.emberjs.com/v3.x#toc_3-0-browser-support-policy +// +// If you need IE11 support on a version of Ember that still offers support +// for it, uncomment the code block below. +// +// const isCI = Boolean(process.env.CI); +// const isProduction = process.env.EMBER_ENV === 'production'; +// +// if (isCI || isProduction) { +// browsers.push('ie 11'); +// } module.exports = { - browsers + browsers, }; diff --git a/packages/router/tests/index.html b/packages/router/tests/index.html index 3eb848dbd..091c90690 100644 --- a/packages/router/tests/index.html +++ b/packages/router/tests/index.html @@ -1,25 +1,22 @@ - - + + Dummy Tests - - + + - {{content-for "head"}} - {{content-for "test-head"}} + {{content-for "head"}} {{content-for "test-head"}} - - - + + + - {{content-for "head-footer"}} - {{content-for "test-head-footer"}} + {{content-for "head-footer"}} {{content-for "test-head-footer"}} - {{content-for "body"}} - {{content-for "test-body"}} + {{content-for "body"}} {{content-for "test-body"}}
@@ -28,13 +25,12 @@
- + - {{content-for "body-footer"}} - {{content-for "test-body-footer"}} + {{content-for "body-footer"}} {{content-for "test-body-footer"}} diff --git a/packages/router/tests/test-helper.js b/packages/router/tests/test-helper.js index d33c1ee7b..4efd6e58a 100644 --- a/packages/router/tests/test-helper.js +++ b/packages/router/tests/test-helper.js @@ -1,5 +1,5 @@ -import Application from '../app'; -import config from '../config/environment'; +import Application from 'dummy/app'; +import config from 'dummy/config/environment'; import * as QUnit from 'qunit'; import { setApplication } from '@ember/test-helpers'; import { setup } from 'qunit-dom'; diff --git a/yarn.lock b/yarn.lock index 702ba4c2a..273519243 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1859,6 +1859,21 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + "@glimmer/component@^1.0.0", "@glimmer/component@^1.0.3", "@glimmer/component@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@glimmer/component/-/component-1.0.4.tgz#1c85a5181615a6647f6acfaaed68e28ad7e9626e" @@ -2080,6 +2095,13 @@ dependencies: babel-plugin-debug-macros "^0.3.4" +"@glimmer/vm-babel-plugins@0.80.3": + version "0.80.3" + resolved "https://registry.yarnpkg.com/@glimmer/vm-babel-plugins/-/vm-babel-plugins-0.80.3.tgz#434b62172318cac43830d3ac29818cf2c5f111c1" + integrity sha512-9ej6xlm5MzHBJ5am2l0dbbn8Z0wJoYoMpM8FcrGMlUP6SPMLWxvxpMsApgQo8u6dvZRCjR3/bw3fdf7GOy0AFw== + dependencies: + babel-plugin-debug-macros "^0.3.4" + "@glimmer/vm@^0.42.2": version "0.42.2" resolved "https://registry.yarnpkg.com/@glimmer/vm/-/vm-0.42.2.tgz#492a4f05eac587c3a37371b3c62593f20bef553d" @@ -2106,6 +2128,20 @@ resolved "https://registry.yarnpkg.com/@handlebars/parser/-/parser-2.0.0.tgz#5e8b7298f31ff8f7b260e6b7363c7e9ceed7d9c5" integrity sha512-EP9uEDZv/L5Qh9IWuMUGJRfwhXJ4h1dqKTT4/3+tY0eu7sPis7xh23j61SYUnNF4vqCQvvUXpDo9Bh/+q1zASA== +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + "@iarna/toml@2.2.5": version "2.2.5" resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c" @@ -7890,6 +7926,14 @@ ember-cli-inject-live-reload@^2.0.2: clean-base-url "^1.0.0" ember-cli-version-checker "^3.1.3" +ember-cli-inject-live-reload@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ember-cli-inject-live-reload/-/ember-cli-inject-live-reload-2.1.0.tgz#ef63c733c133024d5726405a3c247fa12e88a385" + integrity sha512-YV5wYRD5PJHmxaxaJt18u6LE6Y+wo455BnmcpN+hGNlChy2piM9/GMvYgTAz/8Vin8RJ5KekqP/w/NEaRndc/A== + dependencies: + clean-base-url "^1.0.0" + ember-cli-version-checker "^3.1.3" + ember-cli-is-package-missing@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ember-cli-is-package-missing/-/ember-cli-is-package-missing-1.0.0.tgz#6e6184cafb92635dd93ca6c946b104292d4e3390" @@ -8043,7 +8087,7 @@ ember-cli-string-utils@^1.0.0, ember-cli-string-utils@^1.1.0: resolved "https://registry.yarnpkg.com/ember-cli-string-utils/-/ember-cli-string-utils-1.1.0.tgz#39b677fc2805f55173735376fcef278eaa4452a1" integrity sha1-ObZ3/CgF9VFzc1N2/O8njqpEUqE= -ember-cli-terser@^4.0.1: +ember-cli-terser@^4.0.1, ember-cli-terser@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/ember-cli-terser/-/ember-cli-terser-4.0.2.tgz#c436a9e4159f76a615b051cba0584844652b7dcd" integrity sha512-Ej77K+YhCZImotoi/CU2cfsoZaswoPlGaM5TB3LvjvPDlVPRhxUHO2RsaUVC5lsGeRLRiHCOxVtoJ6GyqexzFA== @@ -8274,6 +8318,103 @@ ember-cli@~3.28.0: workerpool "^6.1.4" yam "^1.0.0" +ember-cli@~3.28.4: + version "3.28.4" + resolved "https://registry.yarnpkg.com/ember-cli/-/ember-cli-3.28.4.tgz#784cfeaf5319e409edc3e03e5d99bcfcf18f9e53" + integrity sha512-bRQpZqx1YctDNR7gb5CXfXYkZtieMh4F6v6bZtu+Da8jWTKoGizG1LXsG/Bhs96USPjlZZsErkSBo6qiGjJlcA== + dependencies: + "@babel/core" "^7.13.8" + "@babel/plugin-transform-modules-amd" "^7.12.1" + amd-name-resolver "^1.3.1" + babel-plugin-module-resolver "^4.1.0" + bower-config "^1.4.3" + bower-endpoint-parser "0.2.2" + broccoli "^3.5.1" + broccoli-amd-funnel "^2.0.1" + broccoli-babel-transpiler "^7.8.0" + broccoli-builder "^0.18.14" + broccoli-concat "^4.2.5" + broccoli-config-loader "^1.0.1" + broccoli-config-replace "^1.1.2" + broccoli-debug "^0.6.5" + broccoli-funnel "^3.0.5" + broccoli-funnel-reducer "^1.0.0" + broccoli-merge-trees "^3.0.2" + broccoli-middleware "^2.1.1" + broccoli-slow-trees "^3.1.0" + broccoli-source "^3.0.0" + broccoli-stew "^3.0.0" + calculate-cache-key-for-tree "^2.0.0" + capture-exit "^2.0.0" + chalk "^4.1.0" + ci-info "^2.0.0" + clean-base-url "^1.0.0" + compression "^1.7.4" + configstore "^5.0.1" + console-ui "^3.1.2" + core-object "^3.1.5" + dag-map "^2.0.2" + diff "^5.0.0" + ember-cli-is-package-missing "^1.0.0" + ember-cli-lodash-subset "^2.0.1" + ember-cli-normalize-entity-name "^1.0.0" + ember-cli-preprocess-registry "^3.3.0" + ember-cli-string-utils "^1.1.0" + ember-source-channel-url "^3.0.0" + ensure-posix-path "^1.1.1" + execa "^5.0.0" + exit "^0.1.2" + express "^4.17.1" + filesize "^6.1.0" + find-up "^5.0.0" + find-yarn-workspace-root "^2.0.0" + fixturify-project "^2.1.1" + fs-extra "^9.1.0" + fs-tree-diff "^2.0.1" + get-caller-file "^2.0.5" + git-repo-info "^2.1.1" + glob "^7.1.6" + heimdalljs "^0.2.6" + heimdalljs-fs-monitor "^1.1.0" + heimdalljs-graph "^1.0.0" + heimdalljs-logger "^0.1.10" + http-proxy "^1.18.1" + inflection "^1.12.0" + is-git-url "^1.0.0" + is-language-code "^2.0.0" + isbinaryfile "^4.0.6" + js-yaml "^3.14.0" + json-stable-stringify "^1.0.1" + leek "0.0.24" + lodash.template "^4.5.0" + markdown-it "^12.0.4" + markdown-it-terminal "0.2.1" + minimatch "^3.0.4" + morgan "^1.10.0" + nopt "^3.0.6" + npm-package-arg "^8.1.1" + p-defer "^3.0.0" + portfinder "^1.0.28" + promise-map-series "^0.3.0" + promise.hash.helper "^1.0.7" + quick-temp "^0.1.8" + resolve "^1.20.0" + resolve-package-path "^3.1.0" + sane "^4.1.0" + semver "^7.3.4" + silent-error "^1.1.1" + sort-package-json "^1.49.0" + symlink-or-copy "^1.3.1" + temp "0.9.4" + testem "^3.2.0" + tiny-lr "^2.0.0" + tree-sync "^2.1.0" + uuid "^8.3.2" + walk-sync "^2.2.0" + watch-detector "^1.0.0" + workerpool "^6.1.4" + yam "^1.0.0" + ember-compatibility-helpers@^1.1.1, ember-compatibility-helpers@^1.1.2, ember-compatibility-helpers@^1.2.0, ember-compatibility-helpers@^1.2.1, ember-compatibility-helpers@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/ember-compatibility-helpers/-/ember-compatibility-helpers-1.2.4.tgz#70e0fef7048969141626eed6006f3880df612cd1" @@ -8594,7 +8735,7 @@ ember-on-helper@^0.1.0: dependencies: ember-cli-babel "^7.7.3" -ember-page-title@^6.2.1: +ember-page-title@^6.2.1, ember-page-title@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/ember-page-title/-/ember-page-title-6.2.2.tgz#980838c44e96cba1d00f42435d707936af627324" integrity sha512-YTXA+cylZrh9zO0zwjlaAGReT2MVOxAMnVO1OOygFrs1JBs4D6CKV3tImoilg3AvIXFBeJfFNNUbJOdRd9IGGg== @@ -8912,6 +9053,38 @@ ember-source@~3.26: semver "^7.3.4" silent-error "^1.1.1" +ember-source@~3.28.0: + version "3.28.6" + resolved "https://registry.yarnpkg.com/ember-source/-/ember-source-3.28.6.tgz#ed0f200fa6cb76dffabe3cce73417d7b290d6e98" + integrity sha512-CW92R8qa6x6fedJcIl71QvR8vj1c4f0I5LgAKB5eXoFhdDXD+peRtPPuc1i+C+1/ojvaWfDO3RpFcxkiXqvSQA== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-object-assign" "^7.8.3" + "@ember/edition-utils" "^1.2.0" + "@glimmer/vm-babel-plugins" "0.80.3" + babel-plugin-debug-macros "^0.3.4" + babel-plugin-filter-imports "^4.0.0" + broccoli-concat "^4.2.4" + broccoli-debug "^0.6.4" + broccoli-file-creator "^2.1.1" + broccoli-funnel "^2.0.2" + broccoli-merge-trees "^4.2.0" + chalk "^4.0.0" + ember-cli-babel "^7.23.0" + ember-cli-get-component-path-option "^1.0.0" + ember-cli-is-package-missing "^1.0.0" + ember-cli-normalize-entity-name "^1.0.0" + ember-cli-path-utils "^1.0.0" + ember-cli-string-utils "^1.1.0" + ember-cli-version-checker "^5.1.1" + ember-router-generator "^2.0.0" + inflection "^1.12.0" + jquery "^3.5.1" + resolve "^1.17.0" + semver "^7.3.4" + silent-error "^1.1.1" + ember-style-modifier@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/ember-style-modifier/-/ember-style-modifier-0.6.0.tgz#cc5e58db7f6d6662028a7b4e3cf63cf25ba59a8f" @@ -9311,6 +9484,20 @@ eslint-plugin-ember@^10.2.0, eslint-plugin-ember@^10.3.0: requireindex "^1.2.0" snake-case "^3.0.3" +eslint-plugin-ember@^10.5.4: + version "10.5.7" + resolved "https://registry.yarnpkg.com/eslint-plugin-ember/-/eslint-plugin-ember-10.5.7.tgz#132dcd139fc9e830b707910d1ee4a458b83ab9d4" + integrity sha512-PTnZxbexrvRgEUtiuTaRjcFIIezzNsaJLUkvOoKhmxXTZnWgSPV36PGv5ml0BOallWYAOocefjTgv9SWvlmEdw== + dependencies: + "@ember-data/rfc395-data" "^0.0.4" + css-tree "^1.0.0-alpha.39" + ember-rfc176-data "^0.3.15" + eslint-utils "^3.0.0" + estraverse "^5.2.0" + lodash.kebabcase "^4.1.1" + requireindex "^1.2.0" + snake-case "^3.0.3" + eslint-plugin-ember@^7.0.0: version "7.13.0" resolved "https://registry.yarnpkg.com/eslint-plugin-ember/-/eslint-plugin-ember-7.13.0.tgz#a1df7794f06cdc6e1b8acfe6c59db5cf861f53dc" @@ -9388,6 +9575,21 @@ eslint-plugin-prettier@^3.1.4, eslint-plugin-prettier@^3.3.1: dependencies: prettier-linter-helpers "^1.0.0" +eslint-plugin-prettier@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5" + integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-qunit@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-qunit/-/eslint-plugin-qunit-6.2.0.tgz#f4efda29da99523e560848d9592c39c0590c308d" + integrity sha512-KvPmkIC2MHpfRxs/r8WUeeGkG6y+3qwSi2AZIBtjcM/YG6Z3k0GxW5Hbu3l7X0TDhljVCeBb9Q5puUkHzl83Mw== + dependencies: + eslint-utils "^3.0.0" + requireindex "^1.2.0" + eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -9522,6 +9724,52 @@ eslint@^7.14.0, eslint@^7.20.0, eslint@^7.23.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +eslint@^7.32.0: + version "7.32.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + esm@^3.2.25, esm@^3.2.4: version "3.2.25" resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" @@ -14821,6 +15069,11 @@ prettier@^2.2.1, prettier@^2.3.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.1.tgz#76903c3f8c4449bc9ac597acefa24dc5ad4cbea6" integrity sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA== +prettier@^2.3.2: + version "2.4.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.4.1.tgz#671e11c89c14a4cfc876ce564106c4a6726c9f5c" + integrity sha512-9fbDAXSBcc6Bs1mZrDYb3XKzDLm4EXXL9sC1LqKP5rZkT6KRr/rf9amVUcODVXgguK/isJz0d0hP72WeaKWsvA== + pretty-format@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9"