diff --git a/.eslintrc.js b/.eslintrc.js index ae230a7d..e694bd55 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -2,12 +2,15 @@ module.exports = { root: true, - parser: 'babel-eslint', + parser: '@babel/eslint-parser', parserOptions: { - ecmaVersion: 2018, + ecmaVersion: 'latest', sourceType: 'module', - ecmaFeatures: { - legacyDecorators: true, + requireConfigFile: false, + babelOptions: { + plugins: [ + ['@babel/plugin-proposal-decorators', { decoratorsBeforeExport: true }], + ], }, }, plugins: ['ember'], @@ -19,22 +22,18 @@ module.exports = { env: { browser: true, }, - rules: { - 'no-console': 'off', - 'ember/no-new-mixins': 'off', - 'ember/no-mixins': 'off', - 'ember/require-tagless-components': 'off', - 'ember/no-classic-classes': 'off', - 'ember/no-get': 'off', - 'ember/no-classic-components': 'off', - 'ember/no-private-routing-service': 'off', - }, + rules: {}, overrides: [ + { + files: ['**/*.gjs'], + parser: 'ember-eslint-parser', + }, // node files { files: [ './.eslintrc.js', './.prettierrc.js', + './.stylelintrc.js', './.template-lintrc.js', './ember-cli-build.js', './testem.js', @@ -42,29 +41,18 @@ module.exports = { './config/**/*.js', './lib/*/index.js', './server/**/*.js', - './run-tests.js', - './bin/*', - './prember-urls.js', ], - excludedFiles: ['config/deprecation-workflow.js'], parserOptions: { sourceType: 'script', - ecmaVersion: 2017, }, env: { browser: false, node: true, }, - plugins: ['node'], - extends: ['plugin:node/recommended'], - rules: { - // this can be removed once the following is fixed - // https://github.com/mysticatea/eslint-plugin-node/issues/77 - 'node/no-unpublished-require': 'off', - }, + extends: ['plugin:n/recommended'], }, { - // Test files: + // test files files: ['tests/**/*-test.{js,ts}'], extends: ['plugin:qunit/recommended'], }, diff --git a/.prettierignore b/.prettierignore index 92216555..4178fd57 100644 --- a/.prettierignore +++ b/.prettierignore @@ -14,8 +14,12 @@ /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/.prettierrc.js b/.prettierrc.js index 534e6d35..c7dd12b3 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -1,5 +1,13 @@ 'use strict'; module.exports = { - singleQuote: true, + plugins: ['prettier-plugin-ember-template-tag'], + overrides: [ + { + files: '*.{js,ts,gjs,gts}', + options: { + singleQuote: true, + }, + }, + ], }; diff --git a/.template-lintrc.js b/.template-lintrc.js index 16baada6..5d5e2a24 100644 --- a/.template-lintrc.js +++ b/.template-lintrc.js @@ -3,4 +3,14 @@ module.exports = { extends: 'recommended', + overrides: [ + { + files: ['tests/**/*'], + rules: { + 'no-potential-path-strings': false, + 'no-curly-component-invocation': false, + 'no-action': false, + }, + }, + ], }; diff --git a/app/adapters/application.js b/app/adapters/application.js index 2a3f95b0..a30265df 100644 --- a/app/adapters/application.js +++ b/app/adapters/application.js @@ -1,3 +1,4 @@ +/* eslint-disable prettier/prettier */ import { inject as service } from '@ember/service'; import JSONAPIAdapter from '@ember-data/adapter/json-api'; import fetch from 'fetch'; diff --git a/app/components/api-index-filter.js b/app/components/api-index-filter.js index 0519cef3..59bfb342 100644 --- a/app/components/api-index-filter.js +++ b/app/components/api-index-filter.js @@ -1,4 +1,4 @@ -/* eslint-disable ember/no-computed-properties-in-native-classes */ +/* eslint-disable ember/no-classic-components, ember/no-computed-properties-in-native-classes, ember/require-tagless-components */ import { classNames } from '@ember-decorators/component'; import { computed } from '@ember/object'; import Component from '@ember/component'; diff --git a/app/components/class-field-description.js b/app/components/class-field-description.js index 3e9afe64..b64855ff 100644 --- a/app/components/class-field-description.js +++ b/app/components/class-field-description.js @@ -1,3 +1,4 @@ +/* eslint-disable prettier/prettier */ import { inject as service } from '@ember/service'; import Component from '@glimmer/component'; import { action } from '@ember/object'; diff --git a/app/components/ember-anchor.js b/app/components/ember-anchor.js index a7814999..35ee72ba 100644 --- a/app/components/ember-anchor.js +++ b/app/components/ember-anchor.js @@ -1,4 +1,4 @@ -/* eslint-disable ember/classic-decorator-no-classic-methods */ +/* eslint-disable ember/classic-decorator-no-classic-methods, prettier/prettier */ import AnchorComponent from 'ember-anchor/components/ember-anchor'; import config from 'ember-api-docs/config/environment'; import getOffset from 'ember-api-docs/utils/get-offset'; diff --git a/app/components/search-input.js b/app/components/search-input.js index b0ebaf68..35872c80 100644 --- a/app/components/search-input.js +++ b/app/components/search-input.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-get */ import { inject as service } from '@ember/service'; import Component from '@glimmer/component'; import { get } from '@ember/object'; diff --git a/app/components/search-input/dropdown-result.js b/app/components/search-input/dropdown-result.js index d4bbed90..a1153d50 100644 --- a/app/components/search-input/dropdown-result.js +++ b/app/components/search-input/dropdown-result.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-classic-classes, ember/no-classic-components, ember/no-get, ember/require-tagless-components, prettier/prettier */ import { gt } from '@ember/object/computed'; import { computed } from '@ember/object'; import Component from '@ember/component'; diff --git a/app/components/search-input/dropdown.js b/app/components/search-input/dropdown.js index 58ba8195..e8ae1068 100644 --- a/app/components/search-input/dropdown.js +++ b/app/components/search-input/dropdown.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-classic-components, ember/no-get, ember/require-tagless-components, prettier/prettier */ import { classNames, attributeBindings, diff --git a/app/controllers/events.js b/app/controllers/events.js index 1f953be9..6adf528b 100644 --- a/app/controllers/events.js +++ b/app/controllers/events.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-mixins, prettier/prettier */ import { inject as service } from '@ember/service'; import Controller from '@ember/controller'; import AnchorControllerSupport from 'ember-anchor/mixins/controller-support'; diff --git a/app/controllers/methods.js b/app/controllers/methods.js index 929a3b79..46364085 100644 --- a/app/controllers/methods.js +++ b/app/controllers/methods.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-mixins, prettier/prettier */ import { inject as service } from '@ember/service'; import Controller from '@ember/controller'; import AnchorControllerSupport from 'ember-anchor/mixins/controller-support'; diff --git a/app/controllers/project-version.js b/app/controllers/project-version.js index 48ecf66e..ed376fe4 100644 --- a/app/controllers/project-version.js +++ b/app/controllers/project-version.js @@ -1,4 +1,4 @@ -/* eslint-disable ember/no-computed-properties-in-native-classes */ +/* eslint-disable ember/no-computed-properties-in-native-classes, prettier/prettier */ import { action, computed, set } from '@ember/object'; import { inject as service } from '@ember/service'; import { readOnly, alias } from '@ember/object/computed'; diff --git a/app/controllers/project-version/classes/class.js b/app/controllers/project-version/classes/class.js index 5b08052b..dee97da8 100644 --- a/app/controllers/project-version/classes/class.js +++ b/app/controllers/project-version/classes/class.js @@ -1,4 +1,4 @@ -/* eslint-disable ember/no-computed-properties-in-native-classes, ember/classic-decorator-no-classic-methods */ +/* eslint-disable ember/classic-decorator-no-classic-methods, ember/no-computed-properties-in-native-classes, ember/no-get, prettier/prettier */ import { action, computed, set, get } from '@ember/object'; import { inject as service } from '@ember/service'; import Controller from '@ember/controller'; diff --git a/app/controllers/project-version/index.js b/app/controllers/project-version/index.js index 7a02924e..91bc26a9 100644 --- a/app/controllers/project-version/index.js +++ b/app/controllers/project-version/index.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-classic-classes, prettier/prettier */ import Controller from '@ember/controller'; import { htmlSafe } from '@ember/template'; diff --git a/app/controllers/project-version/modules/module.js b/app/controllers/project-version/modules/module.js index 071e7890..e68ebe54 100644 --- a/app/controllers/project-version/modules/module.js +++ b/app/controllers/project-version/modules/module.js @@ -1,4 +1,4 @@ -/* eslint-disable ember/no-computed-properties-in-native-classes, ember/classic-decorator-no-classic-methods */ +/* eslint-disable ember/classic-decorator-no-classic-methods, ember/no-computed-properties-in-native-classes, ember/no-get, prettier/prettier */ import { computed } from '@ember/object'; import { inject as service } from '@ember/service'; import { alias } from '@ember/object/computed'; diff --git a/app/controllers/properties.js b/app/controllers/properties.js index 0d4e5107..f6dcfd98 100644 --- a/app/controllers/properties.js +++ b/app/controllers/properties.js @@ -1,4 +1,4 @@ -/* eslint-disable ember/classic-decorator-no-classic-methods */ +/* eslint-disable ember/classic-decorator-no-classic-methods, ember/no-mixins, prettier/prettier */ import { action } from '@ember/object'; import { inject as service } from '@ember/service'; import Controller from '@ember/controller'; diff --git a/app/helpers/github-link.js b/app/helpers/github-link.js index afc0786b..560672a8 100644 --- a/app/helpers/github-link.js +++ b/app/helpers/github-link.js @@ -1,3 +1,4 @@ +/* eslint-disable prettier/prettier */ import { helper } from '@ember/component/helper'; import githubMap, { mainDir } from '../utils/github-map'; diff --git a/app/instance-initializers/ember-meta-store.js b/app/instance-initializers/ember-meta-store.js index 995888e7..b5b28904 100644 --- a/app/instance-initializers/ember-meta-store.js +++ b/app/instance-initializers/ember-meta-store.js @@ -1,3 +1,4 @@ +/* eslint-disable prettier/prettier */ import { isPresent } from '@ember/utils'; export function initialize(appInstance) { diff --git a/app/mixins/scroll-tracker.js b/app/mixins/scroll-tracker.js index 51a2e0d8..4b1bf360 100644 --- a/app/mixins/scroll-tracker.js +++ b/app/mixins/scroll-tracker.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-new-mixins, prettier/prettier */ import Mixin from '@ember/object/mixin'; import { inject as service } from '@ember/service'; import config from 'ember-api-docs/config/environment'; diff --git a/app/models/class.js b/app/models/class.js index 1024cc79..6945e2db 100644 --- a/app/models/class.js +++ b/app/models/class.js @@ -1,4 +1,4 @@ -/* eslint-disable ember/no-computed-properties-in-native-classes, ember/classic-decorator-no-classic-methods */ +/* eslint-disable ember/classic-decorator-no-classic-methods, ember/no-computed-properties-in-native-classes, ember/no-get, prettier/prettier */ import { computed } from '@ember/object'; import Model, { belongsTo, attr } from '@ember-data/model'; diff --git a/app/models/project-version.js b/app/models/project-version.js index 63ca19fb..9d77c5f4 100644 --- a/app/models/project-version.js +++ b/app/models/project-version.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-classic-classes */ import Model, { attr, hasMany, belongsTo } from '@ember-data/model'; import { computed } from '@ember/object'; import getCompactVersion from '../utils/get-compact-version'; diff --git a/app/router.js b/app/router.js index a3e7db36..e2af6e6a 100644 --- a/app/router.js +++ b/app/router.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-runloop, prettier/prettier */ import EmberRouter from '@ember/routing/router'; import { scheduleOnce } from '@ember/runloop'; import config from 'ember-api-docs/config/environment'; diff --git a/app/routes/application.js b/app/routes/application.js index db93918c..5dc41749 100644 --- a/app/routes/application.js +++ b/app/routes/application.js @@ -1,3 +1,4 @@ +/* eslint-disable prettier/prettier */ import { inject as service } from '@ember/service'; import Route from '@ember/routing/route'; import { set } from '@ember/object'; diff --git a/app/routes/class.js b/app/routes/class.js index 06016f67..bf41e033 100644 --- a/app/routes/class.js +++ b/app/routes/class.js @@ -1,3 +1,4 @@ +/* eslint-disable prettier/prettier */ import { inject as service } from '@ember/service'; import Route from '@ember/routing/route'; diff --git a/app/routes/data-class.js b/app/routes/data-class.js index cde791a2..1a368578 100644 --- a/app/routes/data-class.js +++ b/app/routes/data-class.js @@ -1,3 +1,4 @@ +/* eslint-disable prettier/prettier */ import { inject as service } from '@ember/service'; import Route from '@ember/routing/route'; diff --git a/app/routes/data-module.js b/app/routes/data-module.js index 4a434623..3ebbf68b 100644 --- a/app/routes/data-module.js +++ b/app/routes/data-module.js @@ -1,3 +1,4 @@ +/* eslint-disable prettier/prettier */ import { inject as service } from '@ember/service'; import Route from '@ember/routing/route'; diff --git a/app/routes/module.js b/app/routes/module.js index ceb725a8..0c6bff72 100644 --- a/app/routes/module.js +++ b/app/routes/module.js @@ -1,3 +1,4 @@ +/* eslint-disable prettier/prettier */ import { inject as service } from '@ember/service'; import Route from '@ember/routing/route'; diff --git a/app/routes/project-version.js b/app/routes/project-version.js index 2fab46c7..8cae40e0 100644 --- a/app/routes/project-version.js +++ b/app/routes/project-version.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-implicit-injections, prettier/prettier */ import { action } from '@ember/object'; import { inject as service } from '@ember/service'; import Route from '@ember/routing/route'; diff --git a/app/routes/project-version/classes/class.js b/app/routes/project-version/classes/class.js index c1e9f0c4..b4c465c6 100644 --- a/app/routes/project-version/classes/class.js +++ b/app/routes/project-version/classes/class.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-implicit-injections, ember/no-mixins, prettier/prettier */ import { inject as service } from '@ember/service'; import { resolve, all } from 'rsvp'; import Route from '@ember/routing/route'; diff --git a/app/routes/project-version/functions/function.js b/app/routes/project-version/functions/function.js index f0dd7cac..be32341e 100644 --- a/app/routes/project-version/functions/function.js +++ b/app/routes/project-version/functions/function.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-implicit-injections, prettier/prettier */ import { inject as service } from '@ember/service'; import Route from '@ember/routing/route'; import getFullVersion from 'ember-api-docs/utils/get-full-version'; diff --git a/app/routes/project-version/modules/module.js b/app/routes/project-version/modules/module.js index eb11468f..f00c179a 100644 --- a/app/routes/project-version/modules/module.js +++ b/app/routes/project-version/modules/module.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-mixins, prettier/prettier */ import ClassRoute from '../classes/class'; import ScrollTracker from 'ember-api-docs/mixins/scroll-tracker'; import getFullVersion from 'ember-api-docs/utils/get-full-version'; diff --git a/app/routes/project-version/namespaces/namespace.js b/app/routes/project-version/namespaces/namespace.js index dc8e31d0..7641bcaa 100644 --- a/app/routes/project-version/namespaces/namespace.js +++ b/app/routes/project-version/namespaces/namespace.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-mixins, prettier/prettier */ import ClassRoute from '../classes/class'; import ScrollTracker from 'ember-api-docs/mixins/scroll-tracker'; import getFullVersion from 'ember-api-docs/utils/get-full-version'; diff --git a/app/routes/project.js b/app/routes/project.js index bcc5f143..321e074f 100644 --- a/app/routes/project.js +++ b/app/routes/project.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-implicit-injections, ember/no-mixins, prettier/prettier */ import Route from '@ember/routing/route'; import ScrollTracker from 'ember-api-docs/mixins/scroll-tracker'; import { inject as service } from '@ember/service'; diff --git a/app/services/algolia.js b/app/services/algolia.js index 459caee4..3999da1e 100644 --- a/app/services/algolia.js +++ b/app/services/algolia.js @@ -1,3 +1,4 @@ +/* eslint-disable prettier/prettier */ import Service from '@ember/service'; import algoliasearch from 'algoliasearch'; import config from 'ember-api-docs/config/environment'; diff --git a/app/services/legacy-module-mappings.js b/app/services/legacy-module-mappings.js index f149da80..684c122b 100644 --- a/app/services/legacy-module-mappings.js +++ b/app/services/legacy-module-mappings.js @@ -1,3 +1,4 @@ +/* eslint-disable prettier/prettier */ import Service from '@ember/service'; import { tracked } from '@glimmer/tracking'; diff --git a/app/services/meta-store.js b/app/services/meta-store.js index 11cf2433..64604e5e 100644 --- a/app/services/meta-store.js +++ b/app/services/meta-store.js @@ -1,3 +1,4 @@ +/* eslint-disable prettier/prettier */ import Service from '@ember/service'; import { isPresent } from '@ember/utils'; import { set } from '@ember/object'; diff --git a/app/services/scroll-position-reset.js b/app/services/scroll-position-reset.js index de468b1b..9228188a 100644 --- a/app/services/scroll-position-reset.js +++ b/app/services/scroll-position-reset.js @@ -1,3 +1,4 @@ +/* eslint-disable prettier/prettier */ import Service from '@ember/service'; import config from '../config/environment'; import getOffset from '../utils/get-offset'; diff --git a/app/services/search.js b/app/services/search.js index 6c391d87..e5103a33 100644 --- a/app/services/search.js +++ b/app/services/search.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-classic-classes */ import Service, { inject as service } from '@ember/service'; import { task } from 'ember-concurrency'; import { set } from '@ember/object'; diff --git a/app/templates/project-version.hbs b/app/templates/project-version.hbs index b4ac9e8a..311c8d2f 100644 --- a/app/templates/project-version.hbs +++ b/app/templates/project-version.hbs @@ -1,4 +1,4 @@ -{{! template-lint-disable no-inline-styles }} +{{! template-lint-disable no-inline-styles no-route-action }}