diff --git a/.bowerrc b/.bowerrc deleted file mode 100644 index 959e169..0000000 --- a/.bowerrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "directory": "bower_components", - "analytics": false -} diff --git a/.ember-cli b/.ember-cli index ee64cfe..8c1812c 100644 --- a/.ember-cli +++ b/.ember-cli @@ -5,5 +5,11 @@ Setting `disableAnalytics` to true will prevent any data from being sent. */ - "disableAnalytics": false + "disableAnalytics": false, + + /** + Setting `isTypeScriptProject` to true will force the blueprint generators to generate TypeScript + rather than JavaScript by default, when a TypeScript version of a given blueprint is available. + */ + "isTypeScriptProject": false } diff --git a/.eslintignore b/.eslintignore index 701947e..d474a40 100644 --- a/.eslintignore +++ b/.eslintignore @@ -19,4 +19,7 @@ # 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/.eslintrc.js b/.eslintrc.js index ab627f4..ade61fb 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'], @@ -26,6 +29,7 @@ module.exports = { files: [ './.eslintrc.js', './.prettierrc.js', + './.stylelintrc.js', './.template-lintrc.js', './ember-cli-build.js', './index.js', @@ -41,11 +45,10 @@ module.exports = { browser: false, node: true, }, - plugins: ['node'], - extends: ['plugin:node/recommended'], + extends: ['plugin:n/recommended'], }, { - // Test files: + // test files files: ['tests/**/*-test.{js,ts}'], extends: ['plugin:qunit/recommended'], }, diff --git a/.gitignore b/.gitignore index da389ad..247490b 100644 --- a/.gitignore +++ b/.gitignore @@ -21,9 +21,12 @@ yarn-error.log testem.log # ember-try -.node_modules.ember-try/ -bower.json.ember-try -package.json.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 -*~ -package-lock.json +# broccoli-debug +/DEBUG/ diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index d421faa..0000000 --- a/.jshintrc +++ /dev/null @@ -1,32 +0,0 @@ -{ - "predef": [ - "document", - "window", - "-Promise" - ], - "browser": true, - "boss": true, - "curly": true, - "debug": false, - "devel": true, - "eqeqeq": true, - "evil": true, - "forin": false, - "immed": false, - "laxbreak": false, - "newcap": true, - "noarg": true, - "noempty": false, - "nonew": false, - "nomen": false, - "onevar": false, - "plusplus": false, - "regexp": false, - "undef": true, - "sub": true, - "strict": false, - "white": false, - "eqnull": true, - "esversion": 6, - "unused": true -} diff --git a/.npmignore b/.npmignore index f30effe..27849b1 100644 --- a/.npmignore +++ b/.npmignore @@ -14,14 +14,16 @@ /.eslintignore /.eslintrc.js /.git/ +/.github/ /.gitignore /.prettierignore /.prettierrc.js +/.stylelintignore +/.stylelintrc.js /.template-lintrc.js /.travis.yml /.watchmanconfig /bower.json -/config/ember-try.js /CONTRIBUTING.md /ember-cli-build.js /testem.js @@ -33,4 +35,7 @@ # 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/.prettierignore b/.prettierignore index 9221655..4178fd5 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 534e6d3..e5f7b6d 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -1,5 +1,12 @@ 'use strict'; module.exports = { - singleQuote: true, + overrides: [ + { + files: '*.{js,ts}', + options: { + singleQuote: true, + }, + }, + ], }; diff --git a/.stylelintignore b/.stylelintignore new file mode 100644 index 0000000..a0cf71c --- /dev/null +++ b/.stylelintignore @@ -0,0 +1,8 @@ +# unconventional files +/blueprints/*/files/ + +# compiled output +/dist/ + +# addons +/.node_modules.ember-try/ diff --git a/.stylelintrc.js b/.stylelintrc.js new file mode 100644 index 0000000..021c539 --- /dev/null +++ b/.stylelintrc.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = { + extends: ['stylelint-config-standard', 'stylelint-prettier/recommended'], +}; diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 9b3dfab..0000000 --- a/.travis.yml +++ /dev/null @@ -1,61 +0,0 @@ ---- -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 - - "12" - -dist: xenial - -addons: - chrome: stable - -cache: - directories: - - $HOME/.npm - -env: - global: - # See https://git.io/vdao3 for details. - - JOBS=1 - -branches: - only: - - master - # npm version tags - - /^v\d+\.\d+\.\d+/ - -jobs: - fast_finish: true - allow_failures: - - env: EMBER_TRY_SCENARIO=ember-canary - - include: - # runs linting and tests with current locked deps - - stage: "Tests" - name: "Tests" - script: - - npm run lint - - npm run test:ember - - - stage: "Additional Tests" - name: "Floating Dependencies" - install: - - npm install --no-package-lock - script: - - npm run test:ember - - # we recommend new addons test the current and previous LTS - # as well as latest stable release (bonus points to beta/canary) - - env: EMBER_TRY_SCENARIO=ember-lts-3.24 - - env: EMBER_TRY_SCENARIO=ember-lts-3.28 - - 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 - - env: EMBER_TRY_SCENARIO=embroider-safe - - env: EMBER_TRY_SCENARIO=embroider-optimized - -script: - - node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0b36c4b..f6eb565 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,4 +22,4 @@ * `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/). +For more information on using ember-cli, visit [https://cli.emberjs.com/release/](https://cli.emberjs.com/release/). diff --git a/MODULE_REPORT.md b/MODULE_REPORT.md deleted file mode 100644 index cf399c9..0000000 --- a/MODULE_REPORT.md +++ /dev/null @@ -1,56 +0,0 @@ -## Module Report -### Unknown Global - -**Global**: `Ember.Logger` - -**Location**: `tests/dummy/app/controllers/application.js` at line 44 - -```js - actions: { - test(row) { - Ember.Logger.info("Hi, you reached the test action for row: " + JSON.stringify(row)); - }, - menuTest() { -``` - -### Unknown Global - -**Global**: `Ember.Logger` - -**Location**: `tests/dummy/app/controllers/application.js` at line 47 - -```js - }, - menuTest() { - Ember.Logger.info("Hi, you reached the general menu test action"); - }, - selectionTest(selection, datatable) { -``` - -### Unknown Global - -**Global**: `Ember.Logger` - -**Location**: `tests/dummy/app/controllers/application.js` at line 51 - -```js - selectionTest(selection, datatable) { - datatable.clearSelection(); - Ember.Logger.info("Hi, you reached the selection test action for selection: " + JSON.stringify(selection)); - selection.forEach(function(item) { - item.set('age', item.get('age') + 1); -``` - -### Unknown Global - -**Global**: `Ember.Logger` - -**Location**: `tests/dummy/app/controllers/application.js` at line 57 - -```js - }, - clickRow(row) { - Ember.Logger.info("Custom row click action on item " + JSON.stringify(row)); - } - } -``` diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 9da9a02..0000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-dinky \ No newline at end of file diff --git a/addon/components/data-table-content-body.js b/addon/components/data-table-content-body.js index f143fac..1844215 100644 --- a/addon/components/data-table-content-body.js +++ b/addon/components/data-table-content-body.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-actions-hash, ember/no-classic-classes, ember/no-classic-components, ember/no-get, ember/require-tagless-components */ import { set } from '@ember/object'; import { computed } from '@ember/object'; import Component from '@ember/component'; diff --git a/addon/components/data-table-content-header.js b/addon/components/data-table-content-header.js index 7fd2dae..388ab04 100644 --- a/addon/components/data-table-content-header.js +++ b/addon/components/data-table-content-header.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-classic-classes, ember/no-classic-components, ember/require-tagless-components */ import { oneWay } from '@ember/object/computed'; import { alias } from '@ember/object/computed'; import Component from '@ember/component'; diff --git a/addon/components/data-table-content.js b/addon/components/data-table-content.js index 7236c2d..3d0cab4 100644 --- a/addon/components/data-table-content.js +++ b/addon/components/data-table-content.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-classic-classes, ember/no-classic-components, ember/require-tagless-components */ import Component from '@ember/component'; import { alias } from '@ember/object/computed'; import layout from '../templates/components/data-table-content'; diff --git a/addon/components/data-table-menu-general.js b/addon/components/data-table-menu-general.js index d843ece..f4fdd0f 100644 --- a/addon/components/data-table-menu-general.js +++ b/addon/components/data-table-menu-general.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-classic-classes, ember/no-classic-components, ember/require-tagless-components */ import Component from '@ember/component'; import layout from '../templates/components/data-table-menu-general'; diff --git a/addon/components/data-table-menu-selected.js b/addon/components/data-table-menu-selected.js index 69cae1f..16840ed 100644 --- a/addon/components/data-table-menu-selected.js +++ b/addon/components/data-table-menu-selected.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-actions-hash, ember/no-classic-classes, ember/no-classic-components, ember/no-get, ember/require-tagless-components */ import { reads } from '@ember/object/computed'; import Component from '@ember/component'; import layout from '../templates/components/data-table-menu-selected'; diff --git a/addon/components/data-table-menu.js b/addon/components/data-table-menu.js index 298f2ba..10473f1 100644 --- a/addon/components/data-table-menu.js +++ b/addon/components/data-table-menu.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-classic-classes, ember/no-classic-components, ember/require-tagless-components */ import Component from '@ember/component'; import layout from '../templates/components/data-table-menu'; diff --git a/addon/components/data-table.js b/addon/components/data-table.js index d3860b3..72aff93 100644 --- a/addon/components/data-table.js +++ b/addon/components/data-table.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-classic-classes, ember/no-classic-components, ember/no-observers, ember/require-tagless-components */ import { typeOf } from '@ember/utils'; import { computed, observer } from '@ember/object'; import { bool, equal, oneWay } from '@ember/object/computed'; diff --git a/addon/components/default-data-table-content-body.js b/addon/components/default-data-table-content-body.js index 30d0242..e709e60 100644 --- a/addon/components/default-data-table-content-body.js +++ b/addon/components/default-data-table-content-body.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-classic-classes, ember/no-classic-components, ember/no-get */ import { A } from '@ember/array'; import { computed } from '@ember/object'; import { oneWay } from '@ember/object/computed'; diff --git a/addon/components/number-pagination.js b/addon/components/number-pagination.js index e895dd8..7c63a7e 100644 --- a/addon/components/number-pagination.js +++ b/addon/components/number-pagination.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-actions-hash, ember/no-classic-classes, ember/no-classic-components, ember/no-get, ember/require-tagless-components */ import { computed } from '@ember/object'; import { gt } from '@ember/object/computed'; import Component from '@ember/component'; diff --git a/addon/components/text-search.js b/addon/components/text-search.js index c7c09bb..9642471 100644 --- a/addon/components/text-search.js +++ b/addon/components/text-search.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-classic-classes, ember/no-classic-components, ember/no-observers, ember/require-tagless-components */ import { isEqual } from '@ember/utils'; import { cancel, debounce } from '@ember/runloop'; import { observer } from '@ember/object'; diff --git a/addon/components/th-sortable.js b/addon/components/th-sortable.js index 41ede1f..b9d9635 100644 --- a/addon/components/th-sortable.js +++ b/addon/components/th-sortable.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-actions-hash, ember/no-classic-classes, ember/no-classic-components, ember/require-tagless-components */ import { computed } from '@ember/object'; import Component from '@ember/component'; import layout from '../templates/components/th-sortable'; diff --git a/addon/mixins/default-query-params.js b/addon/mixins/default-query-params.js index 42e7737..d152aa7 100644 --- a/addon/mixins/default-query-params.js +++ b/addon/mixins/default-query-params.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-new-mixins */ import Mixin from '@ember/object/mixin'; export default Mixin.create({ diff --git a/addon/mixins/serializer.js b/addon/mixins/serializer.js index f36939b..e6bc4e1 100644 --- a/addon/mixins/serializer.js +++ b/addon/mixins/serializer.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-new-mixins */ import Mixin from '@ember/object/mixin'; export default Mixin.create({ diff --git a/addon/templates/components/data-table-content-body.hbs b/addon/templates/components/data-table-content-body.hbs index 38c5bbb..a705369 100644 --- a/addon/templates/components/data-table-content-body.hbs +++ b/addon/templates/components/data-table-content-body.hbs @@ -1,3 +1,4 @@ +{{! template-lint-disable no-action no-curly-component-invocation require-input-label require-presentational-children }} {{#if this.data-table.isLoading}} Loading... {{else}} diff --git a/addon/templates/components/data-table-content-header.hbs b/addon/templates/components/data-table-content-header.hbs index 19ee719..6ba5bb0 100644 --- a/addon/templates/components/data-table-content-header.hbs +++ b/addon/templates/components/data-table-content-header.hbs @@ -1,3 +1,4 @@ +{{! template-lint-disable no-curly-component-invocation }} {{#if this.enableSelection}} {{!-- Checkbox --}} diff --git a/addon/templates/components/data-table-content.hbs b/addon/templates/components/data-table-content.hbs index 8693c1b..d63ab68 100644 --- a/addon/templates/components/data-table-content.hbs +++ b/addon/templates/components/data-table-content.hbs @@ -1,4 +1,4 @@ -{{! template-lint-disable table-groups }} +{{! template-lint-disable no-curly-component-invocation table-groups }} {{#if (has-block)}} {{yield (hash @@ -6,7 +6,7 @@ body=(component "data-table-content-body" content=this.content enableSelection=this.enableSelection enableLineNumbers=this.enableLineNumbers noDataMessage=this.noDataMessage onClickRow=(optional this.onClickRow) data-table=this.data-table) )}} {{else}} - {{component "data-table-content-header" enableSelection=this.enableSelection enableLineNumbers=this.enableLineNumbers data-table=this.data-table}} - {{component "data-table-content-body" content=this.content enableSelection=this.enableSelection enableLineNumbers=this.enableLineNumbers noDataMessage=this.noDataMessage onClickRow=(optional this.onClickRow) data-table=this.data-table}} + {{data-table-content-header enableSelection=this.enableSelection enableLineNumbers=this.enableLineNumbers data-table=this.data-table}} + {{data-table-content-body content=this.content enableSelection=this.enableSelection enableLineNumbers=this.enableLineNumbers noDataMessage=this.noDataMessage onClickRow=(optional this.onClickRow) data-table=this.data-table}} {{/if}}
diff --git a/addon/templates/components/data-table-menu-selected.hbs b/addon/templates/components/data-table-menu-selected.hbs index 2803b45..f5f2f3b 100644 --- a/addon/templates/components/data-table-menu-selected.hbs +++ b/addon/templates/components/data-table-menu-selected.hbs @@ -1,3 +1,4 @@ +{{! template-lint-disable no-action }} {{#unless this.data-table.selectionIsEmpty}} {{this.selectionCount}} item(s) selected diff --git a/addon/templates/components/data-table.hbs b/addon/templates/components/data-table.hbs index f69bbdf..5e8f370 100644 --- a/addon/templates/components/data-table.hbs +++ b/addon/templates/components/data-table.hbs @@ -1,3 +1,4 @@ +{{! template-lint-disable no-curly-component-invocation }} {{#if (has-block)}}
{{#if this.enableSearch}} @@ -20,7 +21,7 @@
{{/if}} - {{component "data-table-content" content=this.content noDataMessage=this.noDataMessage enableSelection=this.enableSelection enableLineNumbers=this.enableLineNumbers onClickRow=(optional this.onClickRow) data-table=this}} + {{data-table-content content=this.content noDataMessage=this.noDataMessage enableSelection=this.enableSelection enableLineNumbers=this.enableLineNumbers onClickRow=(optional this.onClickRow) data-table=this}} {{/if}} {{#if this.content}} diff --git a/addon/templates/components/number-pagination.hbs b/addon/templates/components/number-pagination.hbs index b1d0cb2..c8a860d 100644 --- a/addon/templates/components/number-pagination.hbs +++ b/addon/templates/components/number-pagination.hbs @@ -1,3 +1,4 @@ +{{! template-lint-disable no-action require-input-label }}
Displaying {{this.startItem}}-{{this.endItem}} diff --git a/addon/templates/components/text-search.hbs b/addon/templates/components/text-search.hbs index b6acb63..cb75040 100644 --- a/addon/templates/components/text-search.hbs +++ b/addon/templates/components/text-search.hbs @@ -1,3 +1,4 @@ +{{! template-lint-disable no-action require-input-label }} {{#if this.auto}} {{else}} diff --git a/addon/templates/components/th-sortable.hbs b/addon/templates/components/th-sortable.hbs index e33b3e6..8a7aaeb 100644 --- a/addon/templates/components/th-sortable.hbs +++ b/addon/templates/components/th-sortable.hbs @@ -1,3 +1,4 @@ +{{! template-lint-disable no-action }} {{#if this.order}}[{{this.order}}]{{/if}} {{this.label}} diff --git a/config/environment.js b/config/environment.js deleted file mode 100644 index 331ab30..0000000 --- a/config/environment.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -module.exports = function (/* environment, appConfig */) { - return {}; -}; diff --git a/ember-cli-build.js b/ember-cli-build.js index 39becfc..f408f1e 100644 --- a/ember-cli-build.js +++ b/ember-cli-build.js @@ -1,10 +1,8 @@ var EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); module.exports = function (defaults) { - let app = new EmberAddon(defaults, { - 'ember-cli-babel': { - includePolyfill: true, - }, + const app = new EmberAddon(defaults, { + // Add options here }); /* diff --git a/package.json b/package.json index 75e2e67..76ceeab 100644 --- a/package.json +++ b/package.json @@ -18,69 +18,79 @@ }, "scripts": { "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": "concurrently \"npm:lint:*(!fix)\" --names \"lint:\"", + "lint:css": "stylelint --allow-empty-input \"**/*.css\"", + "lint:css:fix": "concurrently \"npm:lint:css -- --fix\"", + "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": "npm-run-all lint test:*", + "test": "concurrently \"npm:lint\" \"npm:test:*\" --names \"lint,test:\"", "test:ember": "ember test", "test:ember-compatibility": "ember try:each" }, "dependencies": { - "ember-auto-import": "^1.12.0", - "ember-cli-babel": "^7.26.10", - "ember-cli-htmlbars": "^5.7.2", + "ember-auto-import": "^2.6.3", + "ember-cli-babel": "^7.26.11", + "ember-cli-htmlbars": "^6.2.0", "ember-composable-helpers": "^5.0.0", "ember-math-helpers": "^2.18.0", "ember-truth-helpers": "^3.0.0", "lodash": "^4.17.21" }, "devDependencies": { + "@babel/eslint-parser": "^7.21.3", + "@babel/plugin-proposal-decorators": "^7.21.0", "@ember/optional-features": "^2.0.0", - "@ember/test-helpers": "^2.6.0", - "@embroider/test-setup": "^0.48.1", - "@glimmer/component": "^1.0.4", - "@glimmer/tracking": "^1.0.4", - "babel-eslint": "^10.1.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", "broccoli-asset-rev": "^3.0.0", - "ember-cli": "~3.28.5", - "ember-cli-dependency-checker": "^3.2.0", + "concurrently": "^8.0.1", + "ember-cli": "~4.12.2", + "ember-cli-dependency-checker": "^3.3.1", "ember-cli-inject-live-reload": "^2.1.0", "ember-cli-release": "^1.0.0-beta.2", "ember-cli-sass": "^10.0.1", "ember-cli-sri": "^2.1.1", "ember-cli-terser": "^4.0.2", - "ember-cli-update": "^0.33.2", - "ember-disable-prototype-extensions": "^1.1.3", - "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.5", - "ember-resolver": "^8.0.3", - "ember-source": "~3.28.8", + "ember-page-title": "^7.0.0", + "ember-qunit": "^6.2.0", + "ember-resolver": "^10.0.0", + "ember-source": "~4.12.0", "ember-source-channel-url": "^3.0.0", - "ember-template-lint": "^3.15.0", - "ember-try": "^1.4.0", - "eslint": "^7.32.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-ember": "^10.5.8", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^3.4.1", - "eslint-plugin-qunit": "^6.2.0", + "ember-template-lint": "^5.7.2", + "ember-try": "^2.0.0", + "eslint": "^8.37.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-ember": "^11.5.0", + "eslint-plugin-n": "^15.7.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-qunit": "^7.3.4", + "lint-to-the-future": "^2.0.0", + "lint-to-the-future-ember-template": "^1.2.0", + "lint-to-the-future-eslint": "^2.0.1", "loader.js": "^4.7.0", - "npm-run-all": "^4.1.5", "phantomjs-prebuilt": "^2.1.16", - "prettier": "^2.5.1", - "qunit": "^2.17.2", - "qunit-dom": "^1.6.0", - "sass": "^1.48.0" + "prettier": "^2.8.7", + "qunit": "^2.19.4", + "qunit-dom": "^2.0.0", + "sass": "^1.48.0", + "stylelint": "^15.4.0", + "stylelint-config-standard": "^32.0.0", + "stylelint-prettier": "^3.0.0", + "webpack": "^5.78.0" + }, + "peerDependencies": { + "ember-source": "^4.0.0" }, "engines": { - "node": "12.* || 14.* || >= 16" + "node": "14.* || 16.* || >= 18" }, "ember": { "edition": "octane" diff --git a/tests/dummy/app/controllers/application.js b/tests/dummy/app/controllers/application.js index 075e96d..8f39061 100644 --- a/tests/dummy/app/controllers/application.js +++ b/tests/dummy/app/controllers/application.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-actions-hash, ember/no-classic-classes, ember/no-mixins */ import EmberObject from '@ember/object'; import ArrayProxy from '@ember/array/proxy'; import Controller from '@ember/controller'; diff --git a/tests/dummy/app/index.html b/tests/dummy/app/index.html index 61400b2..8c195bc 100644 --- a/tests/dummy/app/index.html +++ b/tests/dummy/app/index.html @@ -2,7 +2,6 @@ - Dummy diff --git a/tests/dummy/app/templates/application.hbs b/tests/dummy/app/templates/application.hbs index 70607ea..e512f18 100644 --- a/tests/dummy/app/templates/application.hbs +++ b/tests/dummy/app/templates/application.hbs @@ -1,3 +1,4 @@ +{{! template-lint-disable no-action no-curly-component-invocation }} {{page-title "Dummy"}}
diff --git a/tests/dummy/config/ember-cli-update.json b/tests/dummy/config/ember-cli-update.json index a911ac0..7c13e0b 100644 --- a/tests/dummy/config/ember-cli-update.json +++ b/tests/dummy/config/ember-cli-update.json @@ -3,14 +3,13 @@ "packages": [ { "name": "ember-cli", - "version": "3.28.5", + "version": "4.12.2", "blueprints": [ { "name": "addon", "outputRepo": "https://github.com/ember-cli/ember-addon-output", "codemodsSource": "ember-addon-codemods-manifest@1", - "isBaseBlueprint": true, - "options": [] + "isBaseBlueprint": true } ] } diff --git a/config/ember-try.js b/tests/dummy/config/ember-try.js similarity index 51% rename from config/ember-try.js rename to tests/dummy/config/ember-try.js index 2612023..27ec66a 100644 --- a/config/ember-try.js +++ b/tests/dummy/config/ember-try.js @@ -7,18 +7,18 @@ module.exports = async function () { return { scenarios: [ { - name: 'ember-lts-3.24', + name: 'ember-lts-4.4', npm: { devDependencies: { - 'ember-source': '~3.24.3', + 'ember-source': '~4.4.0', }, }, }, { - name: 'ember-lts-3.28', + name: 'ember-lts-4.8', npm: { devDependencies: { - 'ember-source': '~3.28.0', + 'ember-source': '~4.8.0', }, }, }, @@ -46,37 +46,6 @@ module.exports = async function () { }, }, }, - { - 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', - }, - }, - }, embroiderSafe(), embroiderOptimized(), ], diff --git a/tests/dummy/config/environment.js b/tests/dummy/config/environment.js index ba4e8cb..3b32e1f 100644 --- a/tests/dummy/config/environment.js +++ b/tests/dummy/config/environment.js @@ -1,20 +1,17 @@ 'use strict'; module.exports = function (environment) { - let ENV = { + const ENV = { modulePrefix: 'dummy', environment, rootURL: '/', - locationType: 'auto', + locationType: 'history', EmberENV: { + EXTEND_PROTOTYPES: false, FEATURES: { // Here you can enable experimental features on an ember canary build // e.g. EMBER_NATIVE_DECORATOR_SUPPORT: true }, - EXTEND_PROTOTYPES: { - // Prevent Ember Data from overriding Date.parse. - Date: false, - }, }, APP: { diff --git a/config/release.js b/tests/dummy/config/release.js similarity index 100% rename from config/release.js rename to tests/dummy/config/release.js diff --git a/tests/dummy/config/targets.js b/tests/dummy/config/targets.js index 3cd797a..1e48e05 100644 --- a/tests/dummy/config/targets.js +++ b/tests/dummy/config/targets.js @@ -6,21 +6,6 @@ const browsers = [ 'last 1 Safari versions', ]; -// 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, }; diff --git a/tests/helpers/.gitkeep b/tests/helpers/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/tests/helpers/index.js b/tests/helpers/index.js new file mode 100644 index 0000000..7f70de8 --- /dev/null +++ b/tests/helpers/index.js @@ -0,0 +1,42 @@ +import { + setupApplicationTest as upstreamSetupApplicationTest, + setupRenderingTest as upstreamSetupRenderingTest, + setupTest as upstreamSetupTest, +} from 'ember-qunit'; + +// This file exists to provide wrappers around ember-qunit's / ember-mocha's +// test setup functions. This way, you can easily extend the setup that is +// needed per test type. + +function setupApplicationTest(hooks, options) { + upstreamSetupApplicationTest(hooks, options); + + // Additional setup for application tests can be done here. + // + // For example, if you need an authenticated session for each + // application test, you could do: + // + // hooks.beforeEach(async function () { + // await authenticateSession(); // ember-simple-auth + // }); + // + // This is also a good place to call test setup functions coming + // from other addons: + // + // setupIntl(hooks); // ember-intl + // setupMirage(hooks); // ember-cli-mirage +} + +function setupRenderingTest(hooks, options) { + upstreamSetupRenderingTest(hooks, options); + + // Additional setup for rendering tests can be done here. +} + +function setupTest(hooks, options) { + upstreamSetupTest(hooks, options); + + // Additional setup for unit tests can be done here. +} + +export { setupApplicationTest, setupRenderingTest, setupTest }; diff --git a/tests/index.html b/tests/index.html index 6d13069..b74fc8b 100644 --- a/tests/index.html +++ b/tests/index.html @@ -2,7 +2,6 @@ - Dummy Tests diff --git a/tests/integration/components/data-table-content-body-test.js b/tests/integration/components/data-table-content-body-test.js index 925825d..ac6a47c 100644 --- a/tests/integration/components/data-table-content-body-test.js +++ b/tests/integration/components/data-table-content-body-test.js @@ -9,7 +9,7 @@ module('Integration | Component | data table content body', function (hooks) { test('it renders', async function (assert) { // Set any properties with this.set('myProperty', 'value'); // Handle any actions with this.on('myAction', function(val) { ... }); - await render(hbs`{{data-table-content-body}}`); + await render(hbs``); assert.dom('tbody').exists({ count: 1 }); }); @@ -23,14 +23,20 @@ module('Integration | Component | data table content body', function (hooks) { this.set('dataTable.selection', []); await render( - hbs`{{data-table-content-body content=this.content data-table=this.dataTable}}` + hbs`` ); assert.dom('tr').exists({ count: 2 }, 'displays 2 rows'); - assert.dom('tr:first-child td').exists({count: 3}, 'displays 3 columns') - assert.dom('tr:first-child td:first-child').hasText('John', 'displays firstName in first column'); - assert.dom('tr:first-child td:nth-child(2)').hasText('Doe', 'displays lastName in second column'); - assert.dom('tr:first-child td:nth-child(3)').hasText('20', 'displays age in third column'); + assert.dom('tr:first-child td').exists({ count: 3 }, 'displays 3 columns'); + assert + .dom('tr:first-child td:first-child') + .hasText('John', 'displays firstName in first column'); + assert + .dom('tr:first-child td:nth-child(2)') + .hasText('Doe', 'displays lastName in second column'); + assert + .dom('tr:first-child td:nth-child(3)') + .hasText('20', 'displays age in third column'); }); test('add checkboxes for selection if enabled', async function (assert) { @@ -43,7 +49,7 @@ module('Integration | Component | data table content body', function (hooks) { this.set('data-table.selection', [jane]); await render( - hbs`{{data-table-content-body content=this.content data-table=this.data-table enableSelection=true}}` + hbs`` ); assert.dom('tr:first-child td').exists({ count: 4 }, 'displays 4 columns'); @@ -70,7 +76,7 @@ module('Integration | Component | data table content body', function (hooks) { this.set('data-table.removeItemFromSelection', function () {}); // mock function await render( - hbs`{{data-table-content-body content=this.content data-table=this.data-table enableSelection=true}}` + hbs`` ); assert @@ -94,24 +100,38 @@ module('Integration | Component | data table content body', function (hooks) { this.set('data-table.selection', []); await render( - hbs`{{data-table-content-body content=this.content data-table=this.data-table enableLineNumbers=true}}` + hbs`` ); assert.dom('tr:first-child td').exists({ count: 4 }, 'displays 4 columns'); - assert.dom('tr:first-child td:first-child').hasText('1', 'displays offset 1 on the first row'); - assert.dom('tr:nth-child(2) td:first-child').hasText('2', 'displays offset 2 on the second row'); - assert.dom('tr:nth-child(3) td:first-child').hasText('3', 'displays offset 3 on the third row'); + assert + .dom('tr:first-child td:first-child') + .hasText('1', 'displays offset 1 on the first row'); + assert + .dom('tr:nth-child(2) td:first-child') + .hasText('2', 'displays offset 2 on the second row'); + assert + .dom('tr:nth-child(3) td:first-child') + .hasText('3', 'displays offset 3 on the third row'); this.set('data-table.page', 2); this.set('data-table.size', 5); await render( - hbs`{{data-table-content-body content=this.content data-table=this.data-table enableLineNumbers=true}}` + hbs`` ); - assert.dom('tr:first-child td').exists({ count: 4 }, 'displays 4 columns on page 3'); - assert.dom('tr:first-child td:first-child').hasText('11', 'displays offset 11 on the first row on page 3'); - assert.dom('tr:nth-child(2) td:first-child').hasText('12', 'displays offset 12 on the second row on page 3'); - assert.dom('tr:nth-child(3) td:first-child').hasText('13', 'displays offset 13 on the third row of page 3'); + assert + .dom('tr:first-child td') + .exists({ count: 4 }, 'displays 4 columns on page 3'); + assert + .dom('tr:first-child td:first-child') + .hasText('11', 'displays offset 11 on the first row on page 3'); + assert + .dom('tr:nth-child(2) td:first-child') + .hasText('12', 'displays offset 12 on the second row on page 3'); + assert + .dom('tr:nth-child(3) td:first-child') + .hasText('13', 'displays offset 13 on the third row of page 3'); }); test('displays no data message if there is no data', async function (assert) { @@ -123,7 +143,7 @@ module('Integration | Component | data table content body', function (hooks) { this.set('data-table.selection', []); await render( - hbs`{{data-table-content-body noDataMessage=this.noDataMessage data-table=this.data-table}}` + hbs`` ); assert .dom('td.no-data-message') @@ -134,7 +154,7 @@ module('Integration | Component | data table content body', function (hooks) { this.set('content', []); await render( - hbs`{{data-table-content-body content=this.content noDataMessage=this.noDataMessage data-table=this.data-table}}` + hbs`` ); assert .dom('td.no-data-message') @@ -145,7 +165,7 @@ module('Integration | Component | data table content body', function (hooks) { this.set('content', ['foo', 'bar']); await render( - hbs`{{data-table-content-body content=this.content noDataMessage=this.noDataMessage data-table=this.data-table}}` + hbs`` ); assert .dom('td.no-data-message') diff --git a/tests/integration/components/data-table-content-header-test.js b/tests/integration/components/data-table-content-header-test.js index c2f2b78..f8ed575 100644 --- a/tests/integration/components/data-table-content-header-test.js +++ b/tests/integration/components/data-table-content-header-test.js @@ -10,16 +10,16 @@ module('Integration | Component | data table content header', function (hooks) { // Set any properties with this.set('myProperty', 'value'); // Handle any actions with this.on('myAction', function(val) { ... }); - await render(hbs`{{data-table-content-header}}`); + await render(hbs``); assert.dom('thead').exists({ count: 1 }); assert.dom('*').hasText(''); // Template block usage: await render(hbs` - {{#data-table-content-header}} + template block text - {{/data-table-content-header}} + `); assert.dom('*').hasText('template block text'); @@ -29,22 +29,23 @@ module('Integration | Component | data table content header', function (hooks) { this.set('data-table', {}); this.set('data-table.parsedFields', ['firstName', 'lastName', 'age']); - await render(hbs`{{data-table-content-header data-table=this.data-table}}`); + await render( + hbs`` + ); assert.dom('tr').exists({ count: 1 }, 'displays 1 header row'); - assert.dom('tr:first-child th').exists({ count: 3}, 'displays 3 column headers'); - assert.dom('tr:first-child th:first-child').hasText( - 'firstName', - 'displays firstName as first header' - ); - assert.dom('tr:first-child th:nth-child(2)').hasText( - 'lastName', - 'displays lastName as second column header' - ); - assert.dom('tr:first-child th:nth-child(3)').hasText( - 'age', - 'displays age as third column header' - ); + assert + .dom('tr:first-child th') + .exists({ count: 3 }, 'displays 3 column headers'); + assert + .dom('tr:first-child th:first-child') + .hasText('firstName', 'displays firstName as first header'); + assert + .dom('tr:first-child th:nth-child(2)') + .hasText('lastName', 'displays lastName as second column header'); + assert + .dom('tr:first-child th:nth-child(3)') + .hasText('age', 'displays age as third column header'); }); test('add selection column header if enabled', async function (assert) { @@ -52,15 +53,16 @@ module('Integration | Component | data table content header', function (hooks) { this.set('data-table.parsedFields', ['firstName', 'lastName', 'age']); await render( - hbs`{{data-table-content-header data-table=this.data-table enableSelection=true}}` + hbs`` ); assert.dom('tr').exists({ count: 1 }, 'displays 1 header row'); - assert.dom('tr:first-child th').exists({ count: 4 }, 'displays 4 column headers'); - assert.dom('tr:first-child th:first-child').hasText( - '', - 'displays selection as first header' - ); + assert + .dom('tr:first-child th') + .exists({ count: 4 }, 'displays 4 column headers'); + assert + .dom('tr:first-child th:first-child') + .hasText('', 'displays selection as first header'); }); test('add line number column header if enabled', async function (assert) { @@ -68,14 +70,15 @@ module('Integration | Component | data table content header', function (hooks) { this.set('data-table.parsedFields', ['firstName', 'lastName', 'age']); await render( - hbs`{{data-table-content-header data-table=this.data-table enableLineNumbers=true}}` + hbs`` ); assert.dom('tr').exists({ count: 1 }, 'displays 1 header row'); - assert.dom('tr:first-child th').exists({ count: 4 }, 'displays 4 column headers'); - assert.dom('tr:first-child th:first-child').hasText( - '', - 'displays line number as first header' - ); + assert + .dom('tr:first-child th') + .exists({ count: 4 }, 'displays 4 column headers'); + assert + .dom('tr:first-child th:first-child') + .hasText('', 'displays line number as first header'); }); }); diff --git a/tests/integration/components/data-table-content-test.js b/tests/integration/components/data-table-content-test.js index a529f05..fbef870 100644 --- a/tests/integration/components/data-table-content-test.js +++ b/tests/integration/components/data-table-content-test.js @@ -10,7 +10,7 @@ module('Integration | Component | data table content', function (hooks) { // Set any properties with this.set('myProperty', 'value'); // Handle any actions with this.on('myAction', function(val) { ... }); - await render(hbs`{{data-table-content}}`); + await render(hbs``); assert .dom('table.data-table') .exists({ count: 1 }, 'displays 1 data table'); @@ -19,9 +19,9 @@ module('Integration | Component | data table content', function (hooks) { // Template block usage: await render(hbs` - {{#data-table-content}} + template block text - {{/data-table-content}} + `); assert.dom('*').hasText('template block text'); diff --git a/tests/integration/components/data-table-menu-general-test.js b/tests/integration/components/data-table-menu-general-test.js index 04e4fdd..b850298 100644 --- a/tests/integration/components/data-table-menu-general-test.js +++ b/tests/integration/components/data-table-menu-general-test.js @@ -10,7 +10,7 @@ module('Integration | Component | data table menu general', function (hooks) { // Set any properties with this.set('myProperty', 'value'); // Handle any actions with this.on('myAction', function(val) { ... }); - await render(hbs`{{data-table-menu-general}}`); + await render(hbs``); assert.dom('*').hasText(''); }); @@ -22,18 +22,18 @@ module('Integration | Component | data table menu general', function (hooks) { this.set('data-table', { selectionIsEmpty: true }); // Template block usage: await render(hbs` - {{#data-table-menu-general data-table=this.data-table}} + template block text - {{/data-table-menu-general}} + `); assert.dom('*').hasText('template block text'); this.set('data-table', { selectionIsEmpty: false }); // Template block usage: await render(hbs` - {{#data-table-menu-general data-table=this.data-table}} + template block text - {{/data-table-menu-general}} + `); assert.dom('*').hasText(''); diff --git a/tests/integration/components/data-table-menu-selected-test.js b/tests/integration/components/data-table-menu-selected-test.js index 3c404fa..7f0a252 100644 --- a/tests/integration/components/data-table-menu-selected-test.js +++ b/tests/integration/components/data-table-menu-selected-test.js @@ -10,9 +10,9 @@ module('Integration | Component | data table menu selected', function (hooks) { this.set('data-table', { selectionIsEmpty: true }); // Template block usage: await render(hbs` - {{#data-table-menu-selected data-table=this.data-table}} + template block text - {{/data-table-menu-selected}} + `); assert.dom('*').hasText(''); }); @@ -21,9 +21,9 @@ module('Integration | Component | data table menu selected', function (hooks) { this.set('data-table', { selectionIsEmpty: false, selection: ['foo'] }); // Template block usage: await render(hbs` - {{#data-table-menu-selected data-table=this.data-table}} + template block text - {{/data-table-menu-selected}} + `); assert.dom('span.item-count').hasText('1 item(s) selected', 'item count 1'); @@ -34,9 +34,9 @@ module('Integration | Component | data table menu selected', function (hooks) { }); // Template block usage: await render(hbs` - {{#data-table-menu-selected data-table=this.data-table}} + template block text - {{/data-table-menu-selected}} + `); assert.dom('span.item-count').hasText('2 item(s) selected', 'item count 2'); @@ -51,9 +51,9 @@ module('Integration | Component | data table menu selected', function (hooks) { }); // Template block usage: await render(hbs` - {{#data-table-menu-selected data-table=this.data-table}} + template block text - {{/data-table-menu-selected}} + `); assert.dom('button').hasText('Cancel', 'renders a cancel button'); diff --git a/tests/integration/components/data-table-menu-test.js b/tests/integration/components/data-table-menu-test.js index 2219941..ad20e16 100644 --- a/tests/integration/components/data-table-menu-test.js +++ b/tests/integration/components/data-table-menu-test.js @@ -10,15 +10,15 @@ module('Integration | Component | data table menu', function (hooks) { // Set any properties with this.set('myProperty', 'value'); // Handle any actions with this.on('myAction', function(val) { ... }); - await render(hbs`{{data-table-menu}}`); + await render(hbs``); assert.dom('*').hasText(''); // Template block usage: await render(hbs` - {{#data-table-menu}} + template block text - {{/data-table-menu}} + `); assert.dom('*').hasText('template block text'); diff --git a/tests/integration/components/data-table-test.js b/tests/integration/components/data-table-test.js index 9c12ef9..d86be2a 100644 --- a/tests/integration/components/data-table-test.js +++ b/tests/integration/components/data-table-test.js @@ -18,7 +18,9 @@ module('Integration | Component | data table', function (hooks) { }, }); - await render(hbs`{{data-table content=this.content enableSizes=false}}`); + await render( + hbs`` + ); assert.dom('.data-table-content').exists({ count: 1 }); }); diff --git a/tests/integration/components/default-data-table-content-body-test.js b/tests/integration/components/default-data-table-content-body-test.js index 37f22f8..c2195b9 100644 --- a/tests/integration/components/default-data-table-content-body-test.js +++ b/tests/integration/components/default-data-table-content-body-test.js @@ -17,7 +17,7 @@ module( }); await render( - hbs`{{default-data-table-content-body data-table=this.data-table}}` + hbs`` ); assert.dom().hasText(''); diff --git a/tests/integration/components/number-pagination-test.js b/tests/integration/components/number-pagination-test.js index d649cfa..ee38a32 100644 --- a/tests/integration/components/number-pagination-test.js +++ b/tests/integration/components/number-pagination-test.js @@ -15,7 +15,9 @@ module('Integration | Component | number pagination', function (hooks) { first: { number: 1 }, last: { number: 10 }, }); - await render(hbs`{{number-pagination page=this.page links=this.links}}`); + await render( + hbs`` + ); assert.dom('.data-table-pagination').exists({ count: 1 }); }); diff --git a/tests/integration/components/text-search-test.js b/tests/integration/components/text-search-test.js index 75130f6..ee827fd 100644 --- a/tests/integration/components/text-search-test.js +++ b/tests/integration/components/text-search-test.js @@ -10,7 +10,7 @@ module('Integration | Component | text search', function (hooks) { // Set any properties with this.set('myProperty', 'value'); // Handle any actions with this.on('myAction', function(val) { ... }); - await render(hbs`{{text-search}}`); + await render(hbs``); assert.dom('.data-table-search').exists({ count: 1 }); }); diff --git a/tests/integration/components/th-sortable-test.js b/tests/integration/components/th-sortable-test.js index 9ac87bb..39879cf 100644 --- a/tests/integration/components/th-sortable-test.js +++ b/tests/integration/components/th-sortable-test.js @@ -10,7 +10,7 @@ module('Integration | Component | th sortable', function (hooks) { // Set any properties with this.set('myProperty', 'value'); // Handle any actions with this.on('myAction', function(val) { ... }); - await render(hbs`{{th-sortable field='title'}}`); + await render(hbs``); assert.dom('.sortable').exists({ count: 1 }); }); diff --git a/tests/unit/mixins/default-query-params-test.js b/tests/unit/mixins/default-query-params-test.js index 958487e..d6a09d9 100644 --- a/tests/unit/mixins/default-query-params-test.js +++ b/tests/unit/mixins/default-query-params-test.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-mixins, ember/no-new-mixins */ import EmberObject from '@ember/object'; import DefaultQueryParamsMixin from 'ember-data-table/mixins/default-query-params'; import { module, test } from 'qunit'; diff --git a/tests/unit/mixins/route-test.js b/tests/unit/mixins/route-test.js index 1c7ec25..cb74ec7 100644 --- a/tests/unit/mixins/route-test.js +++ b/tests/unit/mixins/route-test.js @@ -1,4 +1,4 @@ -/* eslint-disable ember/no-new-mixins,ember/no-mixins */ +/* eslint-disable ember/no-classic-classes, ember/no-mixins, ember/no-new-mixins */ import EmberObject from '@ember/object'; import RouteMixin from 'ember-data-table/mixins/route'; diff --git a/tests/unit/mixins/serializer-test.js b/tests/unit/mixins/serializer-test.js index 55973c2..f67f6ac 100644 --- a/tests/unit/mixins/serializer-test.js +++ b/tests/unit/mixins/serializer-test.js @@ -1,3 +1,4 @@ +/* eslint-disable ember/no-mixins, ember/no-new-mixins */ import EmberObject from '@ember/object'; import SerializerMixin from 'ember-data-table/mixins/serializer'; import { module, test } from 'qunit'; diff --git a/vendor/.gitkeep b/vendor/.gitkeep deleted file mode 100644 index e69de29..0000000