Upgrade eslint (#3175)
* chore: 🤖 Upgrade eslint config for admin ui * chore: 🤖 Fix eslint issues for admin * chore: 🤖 Upgrade eslint config for desktop * chore: 🤖 Fix linting errors in desktop * chore: 🤖 Upgrade eslint for api addon * chore: 🤖 Fix eslint issues in api addon * chore: 🤖 Upgrade eslint for auth addon * chore: 🤖 Fix eslint issues in auth addon * chore: 🤖 Upgrade core eslint config * chore: 🤖 Fix eslint issue for core addon * chore: 🤖 Upgrade eslint config for rose addon * chore: 🤖 Fix eslint issue for rose addon * chore: 🤖 Upgrade e2e eslint config * chore: 🤖 Fix eslint issues in e2e * chore: 🤖 Fix CI linting issues * chore: 🤖 Add back linting server files for the future * chore: 🤖 Update qunit rules to use extends
This commit is contained in:
1 parent
d6e8e58ca1
commit
999c21c66a
73 files changed
+1081
-922
No files matched your search
@@ -1,14 +0,0 @@
|
||||
# unconventional js
|
||||
/blueprints/*/files/
|
||||
|
||||
# compiled output
|
||||
/declarations/
|
||||
/dist/
|
||||
|
||||
# misc
|
||||
/coverage/
|
||||
!.*
|
||||
.*/
|
||||
|
||||
# ember-try
|
||||
/.node_modules.ember-try/
|
||||
@@ -1,69 +0,0 @@
|
||||
/**
|
||||
* Copyright IBM Corp. 2021, 2026
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
root: true,
|
||||
parser: '@babel/eslint-parser',
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
// This is specific babel-config. If grows consider creating a babel config file
|
||||
requireConfigFile: false,
|
||||
babelOptions: {
|
||||
plugins: [
|
||||
['@babel/plugin-proposal-decorators', { decoratorsBeforeExport: true }],
|
||||
],
|
||||
},
|
||||
// end of babel-config
|
||||
},
|
||||
plugins: ['ember'],
|
||||
extends: ['eslint:recommended', 'plugin:ember/recommended', 'prettier'],
|
||||
env: {
|
||||
browser: true,
|
||||
},
|
||||
rules: {
|
||||
curly: ['error', 'multi-line', 'consistent'],
|
||||
'ember/no-get': 'off',
|
||||
'ember/no-get-with-default': 'off',
|
||||
'ember/no-computed-properties-in-native-classes': 'off',
|
||||
'ember/no-assignment-of-untracked-properties-used-in-tracking-contexts':
|
||||
'off',
|
||||
},
|
||||
overrides: [
|
||||
// node files
|
||||
{
|
||||
files: [
|
||||
'./.eslintrc.js',
|
||||
'./.prettierrc.js',
|
||||
'./.template-lintrc.js',
|
||||
'./ember-cli-build.js',
|
||||
'./index.js',
|
||||
'./testem.js',
|
||||
'./blueprints/*/index.js',
|
||||
'./config/**/*.js',
|
||||
'./tests/dummy/config/**/*.js',
|
||||
'./broccoli-plugins/**/*.js',
|
||||
],
|
||||
parserOptions: {
|
||||
sourceType: 'script',
|
||||
},
|
||||
env: {
|
||||
browser: false,
|
||||
node: true,
|
||||
},
|
||||
extends: ['plugin:n/recommended'],
|
||||
},
|
||||
{
|
||||
// test files
|
||||
files: ['tests/**/*-test.{js,ts}'],
|
||||
extends: ['plugin:qunit/recommended'],
|
||||
rules: {
|
||||
'qunit/require-expect': [2, 'except-simple'],
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
@@ -23,7 +23,7 @@ export default class HostCatalogAdapter extends ApplicationAdapter {
|
||||
try {
|
||||
const pluginName = snapshot.attr('plugin')?.name;
|
||||
if (pluginName) url = `${url}?plugin_name=${pluginName}`;
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// Ignore any adapter errors here
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ export default class SessionRecordingAdapter extends ApplicationAdapter {
|
||||
let method;
|
||||
try {
|
||||
method = snapshot?.adapterOptions?.method;
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// Ignore any adapter errors here
|
||||
}
|
||||
if (method === 'download') {
|
||||
|
||||
@@ -22,7 +22,7 @@ export default class StorageBucketAdapter extends ApplicationAdapter {
|
||||
let pluginName;
|
||||
try {
|
||||
pluginName = snapshot?.attr('plugin')?.name;
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// Ignore any adapter errors here
|
||||
}
|
||||
if (requestType === 'createRecord' && pluginName) {
|
||||
|
||||
@@ -4,8 +4,6 @@
|
||||
*/
|
||||
|
||||
// Importing 'Store' from 'ember-data/store' to get default configuration automatically.
|
||||
// TODO: Remove eslint-disable after upgrading to eslint-plugin-ember >= v12.2.1
|
||||
// eslint-disable-next-line ember/use-ember-data-rfc-395-imports
|
||||
import Store from 'ember-data/store';
|
||||
import { CacheHandler } from '@ember-data/store';
|
||||
import RequestManager from '@ember-data/request';
|
||||
|
||||
@@ -25,7 +25,6 @@ export default factory.extend({
|
||||
'remove-principals',
|
||||
'set-grant-scopes',
|
||||
],
|
||||
// eslint-disable-next-line ember/avoid-leaking-state-in-ember-objects
|
||||
grant_strings: () => [
|
||||
'ids=*;action=*',
|
||||
'ids=*;type=host-catalog;actions=create,read',
|
||||
|
||||
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
* Copyright IBM Corp. 2021, 2026
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
/* eslint-disable n/no-unpublished-require */
|
||||
const { defineConfig, globalIgnores } = require('eslint/config');
|
||||
const babelParser = require('@babel/eslint-parser');
|
||||
const js = require('@eslint/js');
|
||||
const eslintPluginEmberRecommended = require('eslint-plugin-ember/configs/recommended');
|
||||
const nPlugin = require('eslint-plugin-n');
|
||||
const qunitPlugin = require('eslint-plugin-qunit');
|
||||
const eslintConfigPrettier = require('eslint-config-prettier/flat');
|
||||
const globals = require('globals');
|
||||
|
||||
module.exports = defineConfig([
|
||||
js.configs.recommended,
|
||||
...eslintPluginEmberRecommended,
|
||||
{
|
||||
languageOptions: {
|
||||
parser: babelParser,
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
requireConfigFile: false,
|
||||
// This is specific babel-config. If it grows consider creating a babel config file
|
||||
babelOptions: {
|
||||
plugins: [
|
||||
[
|
||||
'@babel/plugin-proposal-decorators',
|
||||
{ decoratorsBeforeExport: true },
|
||||
],
|
||||
],
|
||||
},
|
||||
// end of babel-config
|
||||
},
|
||||
globals: {
|
||||
...globals.browser,
|
||||
},
|
||||
},
|
||||
rules: {
|
||||
curly: ['error', 'multi-line', 'consistent'],
|
||||
'ember/no-get': 'off',
|
||||
'ember/no-get-with-default': 'off',
|
||||
'ember/no-computed-properties-in-native-classes': 'off',
|
||||
'ember/no-assignment-of-untracked-properties-used-in-tracking-contexts':
|
||||
'off',
|
||||
},
|
||||
},
|
||||
|
||||
// Node files configuration
|
||||
{
|
||||
files: [
|
||||
'eslint.config.js',
|
||||
'.prettierrc.js',
|
||||
'.template-lintrc.js',
|
||||
'ember-cli-build.js',
|
||||
'index.js',
|
||||
'testem.js',
|
||||
'blueprints/*/index.js',
|
||||
'config/**/*.js',
|
||||
'tests/dummy/config/**/*.js',
|
||||
'broccoli-plugins/**/*.js',
|
||||
],
|
||||
plugins: { n: nPlugin },
|
||||
extends: [nPlugin.configs['flat/recommended-script']],
|
||||
},
|
||||
|
||||
// Test files configuration
|
||||
{
|
||||
files: ['tests/**/*-test.{js,ts}'],
|
||||
extends: [
|
||||
{ ...qunitPlugin.configs.recommended, plugins: { qunit: qunitPlugin } },
|
||||
],
|
||||
rules: {
|
||||
'qunit/require-expect': [2, 'except-simple'],
|
||||
},
|
||||
},
|
||||
// Prettier should be last
|
||||
eslintConfigPrettier,
|
||||
globalIgnores([
|
||||
'blueprints/*/files/',
|
||||
'declarations/',
|
||||
'dist/',
|
||||
'coverage/',
|
||||
'**/.*/',
|
||||
'.node_modules.ember-try/',
|
||||
]),
|
||||
]);
|
||||
@@ -72,11 +72,13 @@
|
||||
"ember-source-channel-url": "^3.0.0",
|
||||
"ember-template-lint": "^6.0.0",
|
||||
"ember-try": "^3.0.0",
|
||||
"eslint": "^8.57.1",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-ember": "^12.2.1",
|
||||
"eslint-plugin-n": "^16.6.2",
|
||||
"eslint-plugin-qunit": "^8.1.2",
|
||||
"eslint": "^9.18.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-ember": "^12.7.5",
|
||||
"eslint-plugin-n": "^17.24.0",
|
||||
"eslint-plugin-qunit": "^8.2.6",
|
||||
"@eslint/js": "^9.18.0",
|
||||
"globals": "^15.14.0",
|
||||
"loader.js": "^4.7.0",
|
||||
"prettier": "^3.3.3",
|
||||
"qunit": "^2.22.0",
|
||||
|
||||
@@ -13,7 +13,7 @@ module('Unit | Mixin | build-url', function (hooks) {
|
||||
setupTest(hooks);
|
||||
|
||||
test('it does not interfere with basic URLs', function (assert) {
|
||||
/* eslint-disable-next-line ember/no-new-mixins, ember/no-classic-classes */
|
||||
/* eslint-disable-next-line ember/no-new-mixins */
|
||||
const Adapter = RESTAdapter.extend(AdapterBuildURLMixin);
|
||||
this.owner.register('adapter:adapter', Adapter);
|
||||
const adapter = this.owner.lookup('adapter:adapter');
|
||||
|
||||
@@ -47,7 +47,6 @@ module('Unit | Model | group', function (hooks) {
|
||||
attributes: {},
|
||||
},
|
||||
});
|
||||
// eslint-disable-next-line no-self-assign
|
||||
group.member_ids = [...group.member_ids];
|
||||
assert.strictEqual(
|
||||
group.member_ids.length,
|
||||
|
||||
@@ -268,7 +268,6 @@ module('Unit | Model | target', function (hooks) {
|
||||
attributes: {},
|
||||
},
|
||||
});
|
||||
/* eslint-enable no-self-assign */
|
||||
assert.strictEqual(
|
||||
target.brokered_credential_source_ids.length,
|
||||
2,
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
# unconventional js
|
||||
/blueprints/*/files/
|
||||
|
||||
# compiled output
|
||||
/declarations/
|
||||
/dist/
|
||||
|
||||
# misc
|
||||
/coverage/
|
||||
!.*
|
||||
.*/
|
||||
|
||||
# ember-try
|
||||
/.node_modules.ember-try/
|
||||
@@ -1,69 +0,0 @@
|
||||
/**
|
||||
* Copyright IBM Corp. 2021, 2026
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
root: true,
|
||||
parser: '@babel/eslint-parser',
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
// This is specific babel-config. If grows consider creating a babel config file
|
||||
requireConfigFile: false,
|
||||
babelOptions: {
|
||||
plugins: [
|
||||
['@babel/plugin-proposal-decorators', { decoratorsBeforeExport: true }],
|
||||
],
|
||||
},
|
||||
// end of babel-config
|
||||
},
|
||||
plugins: ['ember'],
|
||||
extends: ['eslint:recommended', 'plugin:ember/recommended', 'prettier'],
|
||||
env: {
|
||||
browser: true,
|
||||
},
|
||||
rules: {
|
||||
curly: ['error', 'multi-line', 'consistent'],
|
||||
'ember/no-get': 'off',
|
||||
'ember/no-get-with-default': 'off',
|
||||
'ember/no-computed-properties-in-native-classes': 'off',
|
||||
'ember/no-assignment-of-untracked-properties-used-in-tracking-contexts':
|
||||
'off',
|
||||
},
|
||||
overrides: [
|
||||
// node files
|
||||
{
|
||||
files: [
|
||||
'./.eslintrc.js',
|
||||
'./.prettierrc.js',
|
||||
'./.stylelintrc.js',
|
||||
'./.template-lintrc.js',
|
||||
'./ember-cli-build.js',
|
||||
'./index.js',
|
||||
'./testem.js',
|
||||
'./blueprints/*/index.js',
|
||||
'./config/**/*.js',
|
||||
'./tests/dummy/config/**/*.js',
|
||||
],
|
||||
parserOptions: {
|
||||
sourceType: 'script',
|
||||
},
|
||||
env: {
|
||||
browser: false,
|
||||
node: true,
|
||||
},
|
||||
extends: ['plugin:n/recommended'],
|
||||
},
|
||||
{
|
||||
// test files
|
||||
files: ['tests/**/*-test.{js,ts}'],
|
||||
extends: ['plugin:qunit/recommended'],
|
||||
rules: {
|
||||
'qunit/require-expect': [2, 'except-simple'],
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
* Copyright IBM Corp. 2021, 2026
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
/* eslint-disable n/no-unpublished-require */
|
||||
const { defineConfig, globalIgnores } = require('eslint/config');
|
||||
const babelParser = require('@babel/eslint-parser');
|
||||
const js = require('@eslint/js');
|
||||
const eslintPluginEmberRecommended = require('eslint-plugin-ember/configs/recommended');
|
||||
const nPlugin = require('eslint-plugin-n');
|
||||
const qunitPlugin = require('eslint-plugin-qunit');
|
||||
const eslintConfigPrettier = require('eslint-config-prettier/flat');
|
||||
const globals = require('globals');
|
||||
|
||||
module.exports = defineConfig([
|
||||
js.configs.recommended,
|
||||
...eslintPluginEmberRecommended,
|
||||
{
|
||||
languageOptions: {
|
||||
parser: babelParser,
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
requireConfigFile: false,
|
||||
// This is specific babel-config. If it grows consider creating a babel config file
|
||||
babelOptions: {
|
||||
plugins: [
|
||||
[
|
||||
'@babel/plugin-proposal-decorators',
|
||||
{ decoratorsBeforeExport: true },
|
||||
],
|
||||
],
|
||||
},
|
||||
// end of babel-config
|
||||
},
|
||||
globals: {
|
||||
...globals.browser,
|
||||
},
|
||||
},
|
||||
rules: {
|
||||
curly: ['error', 'multi-line', 'consistent'],
|
||||
'ember/no-get': 'off',
|
||||
'ember/no-get-with-default': 'off',
|
||||
'ember/no-computed-properties-in-native-classes': 'off',
|
||||
'ember/no-assignment-of-untracked-properties-used-in-tracking-contexts':
|
||||
'off',
|
||||
},
|
||||
},
|
||||
|
||||
// Node files configuration
|
||||
{
|
||||
files: [
|
||||
'eslint.config.js',
|
||||
'.prettierrc.js',
|
||||
'.stylelintrc.js',
|
||||
'.template-lintrc.js',
|
||||
'ember-cli-build.js',
|
||||
'index.js',
|
||||
'testem.js',
|
||||
'blueprints/*/index.js',
|
||||
'config/**/*.js',
|
||||
'tests/dummy/config/**/*.js',
|
||||
],
|
||||
plugins: { n: nPlugin },
|
||||
extends: [nPlugin.configs['flat/recommended-script']],
|
||||
},
|
||||
|
||||
// Test files configuration
|
||||
{
|
||||
files: ['tests/**/*-test.{js,ts}'],
|
||||
extends: [
|
||||
{ ...qunitPlugin.configs.recommended, plugins: { qunit: qunitPlugin } },
|
||||
],
|
||||
rules: {
|
||||
'qunit/require-expect': [2, 'except-simple'],
|
||||
},
|
||||
},
|
||||
// Prettier should be last
|
||||
eslintConfigPrettier,
|
||||
globalIgnores([
|
||||
'blueprints/*/files/',
|
||||
'declarations/',
|
||||
'dist/',
|
||||
'coverage/',
|
||||
'**/.*/',
|
||||
'.node_modules.ember-try/',
|
||||
]),
|
||||
]);
|
||||
@@ -58,11 +58,13 @@
|
||||
"ember-source-channel-url": "^3.0.0",
|
||||
"ember-template-lint": "^6.0.0",
|
||||
"ember-try": "^3.0.0",
|
||||
"eslint": "^8.57.1",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-ember": "^12.2.1",
|
||||
"eslint-plugin-n": "^16.6.2",
|
||||
"eslint-plugin-qunit": "^8.1.2",
|
||||
"eslint": "^9.18.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-ember": "^12.7.5",
|
||||
"eslint-plugin-n": "^17.24.0",
|
||||
"eslint-plugin-qunit": "^8.2.6",
|
||||
"@eslint/js": "^9.18.0",
|
||||
"globals": "^15.14.0",
|
||||
"loader.js": "^4.7.0",
|
||||
"pretender": "^3.4.3",
|
||||
"prettier": "^3.3.3",
|
||||
|
||||
@@ -68,7 +68,7 @@ module('Unit | Authenticator | base', function (hooks) {
|
||||
});
|
||||
try {
|
||||
await authenticator.restore(mockData);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.ok(true, 'restoration failed');
|
||||
}
|
||||
});
|
||||
@@ -84,7 +84,7 @@ module('Unit | Authenticator | base', function (hooks) {
|
||||
});
|
||||
try {
|
||||
await authenticator.restore(mockData);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.ok(true, 'restoration failed');
|
||||
}
|
||||
});
|
||||
|
||||
@@ -39,7 +39,7 @@ module('Unit | Authenticator | OIDC', function (hooks) {
|
||||
// Because assert.throws doesn't work with async errors/promise rejections
|
||||
try {
|
||||
await authenticator.startAuthentication();
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.ok(true);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
# unconventional js
|
||||
/blueprints/*/files/
|
||||
|
||||
# compiled output
|
||||
/declarations/
|
||||
/dist/
|
||||
|
||||
# misc
|
||||
/coverage/
|
||||
!.*
|
||||
.*/
|
||||
|
||||
# ember-try
|
||||
/.node_modules.ember-try/
|
||||
@@ -1,68 +0,0 @@
|
||||
/**
|
||||
* Copyright IBM Corp. 2021, 2026
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
root: true,
|
||||
parser: '@babel/eslint-parser',
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
// This is specific babel-config. If grows consider creating a babel config file
|
||||
requireConfigFile: false,
|
||||
babelOptions: {
|
||||
plugins: [
|
||||
['@babel/plugin-proposal-decorators', { decoratorsBeforeExport: true }],
|
||||
],
|
||||
},
|
||||
// end of babel-config
|
||||
},
|
||||
plugins: ['ember'],
|
||||
extends: ['eslint:recommended', 'plugin:ember/recommended', 'prettier'],
|
||||
env: {
|
||||
browser: true,
|
||||
},
|
||||
rules: {
|
||||
curly: ['error', 'multi-line', 'consistent'],
|
||||
'ember/no-get': 'off',
|
||||
'ember/no-get-with-default': 'off',
|
||||
'ember/no-computed-properties-in-native-classes': 'off',
|
||||
'ember/no-assignment-of-untracked-properties-used-in-tracking-contexts':
|
||||
'off',
|
||||
},
|
||||
overrides: [
|
||||
// node files
|
||||
{
|
||||
files: [
|
||||
'./.eslintrc.js',
|
||||
'./.prettierrc.js',
|
||||
'./.template-lintrc.js',
|
||||
'./ember-cli-build.js',
|
||||
'./index.js',
|
||||
'./testem.js',
|
||||
'./blueprints/*/index.js',
|
||||
'./config/**/*.js',
|
||||
'./tests/dummy/config/**/*.js',
|
||||
],
|
||||
parserOptions: {
|
||||
sourceType: 'script',
|
||||
},
|
||||
env: {
|
||||
browser: false,
|
||||
node: true,
|
||||
},
|
||||
extends: ['plugin:n/recommended'],
|
||||
},
|
||||
{
|
||||
// Test files:
|
||||
files: ['tests/**/*-test.{js,ts}'],
|
||||
extends: ['plugin:qunit/recommended'],
|
||||
rules: {
|
||||
'qunit/require-expect': [2, 'except-simple'],
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
@@ -28,7 +28,6 @@ export default class ClockTickService extends Service {
|
||||
* Updates the value of `now` every `frequency` milliseconds.
|
||||
*/
|
||||
_tick = task(async () => {
|
||||
// eslint-disable-next-line no-constant-condition
|
||||
while (true) {
|
||||
await timeout(this.frequency);
|
||||
this.now = Date.now();
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
/**
|
||||
* Copyright IBM Corp. 2021, 2026
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
/* eslint-disable n/no-unpublished-require */
|
||||
const { defineConfig, globalIgnores } = require('eslint/config');
|
||||
const babelParser = require('@babel/eslint-parser');
|
||||
const js = require('@eslint/js');
|
||||
const eslintPluginEmberRecommended = require('eslint-plugin-ember/configs/recommended');
|
||||
const nPlugin = require('eslint-plugin-n');
|
||||
const qunitPlugin = require('eslint-plugin-qunit');
|
||||
const eslintConfigPrettier = require('eslint-config-prettier/flat');
|
||||
const globals = require('globals');
|
||||
|
||||
module.exports = defineConfig([
|
||||
js.configs.recommended,
|
||||
...eslintPluginEmberRecommended,
|
||||
{
|
||||
languageOptions: {
|
||||
parser: babelParser,
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
requireConfigFile: false,
|
||||
// This is specific babel-config. If it grows consider creating a babel config file
|
||||
babelOptions: {
|
||||
plugins: [
|
||||
[
|
||||
'@babel/plugin-proposal-decorators',
|
||||
{ decoratorsBeforeExport: true },
|
||||
],
|
||||
],
|
||||
},
|
||||
// end of babel-config
|
||||
},
|
||||
globals: {
|
||||
...globals.browser,
|
||||
},
|
||||
},
|
||||
rules: {
|
||||
curly: ['error', 'multi-line', 'consistent'],
|
||||
'ember/no-get': 'off',
|
||||
'ember/no-get-with-default': 'off',
|
||||
'ember/no-computed-properties-in-native-classes': 'off',
|
||||
'ember/no-assignment-of-untracked-properties-used-in-tracking-contexts':
|
||||
'off',
|
||||
},
|
||||
},
|
||||
|
||||
// Node files configuration
|
||||
{
|
||||
files: [
|
||||
'eslint.config.js',
|
||||
'.prettierrc.js',
|
||||
'.template-lintrc.js',
|
||||
'ember-cli-build.js',
|
||||
'index.js',
|
||||
'testem.js',
|
||||
'blueprints/*/index.js',
|
||||
'config/**/*.js',
|
||||
'tests/dummy/config/**/*.js',
|
||||
],
|
||||
plugins: { n: nPlugin },
|
||||
extends: [nPlugin.configs['flat/recommended-script']],
|
||||
},
|
||||
|
||||
// Test files configuration
|
||||
{
|
||||
files: ['tests/**/*-test.{js,ts}'],
|
||||
extends: [
|
||||
{ ...qunitPlugin.configs.recommended, plugins: { qunit: qunitPlugin } },
|
||||
],
|
||||
rules: {
|
||||
'qunit/require-expect': [2, 'except-simple'],
|
||||
},
|
||||
},
|
||||
// Prettier should be last
|
||||
eslintConfigPrettier,
|
||||
globalIgnores([
|
||||
'blueprints/*/files/',
|
||||
'declarations/',
|
||||
'dist/',
|
||||
'coverage/',
|
||||
'**/.*/',
|
||||
'.node_modules.ember-try/',
|
||||
]),
|
||||
]);
|
||||
@@ -77,11 +77,13 @@
|
||||
"ember-template-lint": "^6.0.0",
|
||||
"ember-template-lint-plugin-prettier": "^5.0.0",
|
||||
"ember-try": "^3.0.0",
|
||||
"eslint": "^8.57.1",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-ember": "^12.2.1",
|
||||
"eslint-plugin-n": "^16.6.2",
|
||||
"eslint-plugin-qunit": "^8.1.2",
|
||||
"eslint": "^9.18.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-ember": "^12.7.5",
|
||||
"eslint-plugin-n": "^17.24.0",
|
||||
"eslint-plugin-qunit": "^8.2.6",
|
||||
"@eslint/js": "^9.18.0",
|
||||
"globals": "^15.14.0",
|
||||
"js-bexpr": "hashicorp/js-bexpr#9b4a4b54d85eba67fdfc0990133d1518d890b1e1",
|
||||
"loader.js": "^4.7.0",
|
||||
"miragejs": "^0.1.48",
|
||||
@@ -109,4 +111,4 @@
|
||||
"*.hbs": "ember-template-lint --fix",
|
||||
"*.{scss,yaml}": "prettier --write"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
# unconventional js
|
||||
/blueprints/*/files/
|
||||
|
||||
# compiled output
|
||||
/declarations/
|
||||
/dist/
|
||||
|
||||
# misc
|
||||
/coverage/
|
||||
!.*
|
||||
.*/
|
||||
|
||||
# ember-try
|
||||
/.node_modules.ember-try/
|
||||
@@ -1,71 +0,0 @@
|
||||
/**
|
||||
* Copyright IBM Corp. 2021, 2026
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
root: true,
|
||||
parser: '@babel/eslint-parser',
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
// This is specific babel-config. If grows consider creating a babel config file
|
||||
requireConfigFile: false,
|
||||
babelOptions: {
|
||||
plugins: [
|
||||
['@babel/plugin-proposal-decorators', { decoratorsBeforeExport: true }],
|
||||
],
|
||||
},
|
||||
// end of babel-config
|
||||
},
|
||||
plugins: ['ember'],
|
||||
extends: ['eslint:recommended', 'plugin:ember/recommended', 'prettier'],
|
||||
env: {
|
||||
browser: true,
|
||||
},
|
||||
rules: {
|
||||
curly: ['error', 'multi-line', 'consistent'],
|
||||
'ember/no-jquery': 'error',
|
||||
'ember/no-new-mixins': 0,
|
||||
'ember/no-get': 'off',
|
||||
'ember/no-get-with-default': 'off',
|
||||
'ember/no-computed-properties-in-native-classes': 'off',
|
||||
'ember/no-assignment-of-untracked-properties-used-in-tracking-contexts':
|
||||
'off',
|
||||
},
|
||||
overrides: [
|
||||
// node files
|
||||
{
|
||||
files: [
|
||||
'./.eslintrc.js',
|
||||
'./.prettierrc.js',
|
||||
'./.stylelintrc.js',
|
||||
'./.template-lintrc.js',
|
||||
'./ember-cli-build.js',
|
||||
'./index.js',
|
||||
'./testem.js',
|
||||
'./blueprints/*/index.js',
|
||||
'./config/**/*.js',
|
||||
'./tests/dummy/config/**/*.js',
|
||||
],
|
||||
parserOptions: {
|
||||
sourceType: 'script',
|
||||
},
|
||||
env: {
|
||||
browser: false,
|
||||
node: true,
|
||||
},
|
||||
extends: ['plugin:n/recommended'],
|
||||
},
|
||||
{
|
||||
// test files
|
||||
files: ['tests/**/*-test.{js,ts}'],
|
||||
extends: ['plugin:qunit/recommended'],
|
||||
rules: {
|
||||
'qunit/require-expect': [2, 'except-simple'],
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
@@ -0,0 +1,93 @@
|
||||
/**
|
||||
* Copyright IBM Corp. 2021, 2026
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
/* eslint-disable n/no-unpublished-require */
|
||||
const { defineConfig, globalIgnores } = require('eslint/config');
|
||||
const babelParser = require('@babel/eslint-parser');
|
||||
const js = require('@eslint/js');
|
||||
const eslintPluginEmberRecommended = require('eslint-plugin-ember/configs/recommended');
|
||||
const nPlugin = require('eslint-plugin-n');
|
||||
const qunitPlugin = require('eslint-plugin-qunit');
|
||||
const eslintConfigPrettier = require('eslint-config-prettier/flat');
|
||||
const globals = require('globals');
|
||||
|
||||
module.exports = defineConfig([
|
||||
js.configs.recommended,
|
||||
...eslintPluginEmberRecommended,
|
||||
{
|
||||
languageOptions: {
|
||||
parser: babelParser,
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
requireConfigFile: false,
|
||||
// This is specific babel-config. If it grows consider creating a babel config file
|
||||
babelOptions: {
|
||||
plugins: [
|
||||
[
|
||||
'@babel/plugin-proposal-decorators',
|
||||
{ decoratorsBeforeExport: true },
|
||||
],
|
||||
],
|
||||
},
|
||||
// end of babel-config
|
||||
},
|
||||
globals: {
|
||||
...globals.browser,
|
||||
},
|
||||
},
|
||||
rules: {
|
||||
curly: ['error', 'multi-line', 'consistent'],
|
||||
'ember/no-jquery': 'error',
|
||||
'ember/no-new-mixins': 0,
|
||||
'ember/no-get': 'off',
|
||||
'ember/no-get-with-default': 'off',
|
||||
'ember/no-computed-properties-in-native-classes': 'off',
|
||||
'ember/no-assignment-of-untracked-properties-used-in-tracking-contexts':
|
||||
'off',
|
||||
},
|
||||
},
|
||||
|
||||
// Node files configuration
|
||||
{
|
||||
files: [
|
||||
'eslint.config.js',
|
||||
'.prettierrc.js',
|
||||
'.stylelintrc.js',
|
||||
'.template-lintrc.js',
|
||||
'ember-cli-build.js',
|
||||
'index.js',
|
||||
'testem.js',
|
||||
'blueprints/*/index.js',
|
||||
'config/**/*.js',
|
||||
'tests/dummy/config/**/*.js',
|
||||
],
|
||||
plugins: { n: nPlugin },
|
||||
extends: [nPlugin.configs['flat/recommended-script']],
|
||||
},
|
||||
|
||||
// Test files configuration
|
||||
{
|
||||
files: ['tests/**/*-test.{js,ts}'],
|
||||
extends: [
|
||||
{ ...qunitPlugin.configs.recommended, plugins: { qunit: qunitPlugin } },
|
||||
],
|
||||
rules: {
|
||||
'qunit/require-expect': [2, 'except-simple'],
|
||||
},
|
||||
},
|
||||
// Prettier should be last
|
||||
eslintConfigPrettier,
|
||||
globalIgnores([
|
||||
'blueprints/*/files/',
|
||||
'declarations/',
|
||||
'dist/',
|
||||
'coverage/',
|
||||
'**/.*/',
|
||||
'.node_modules.ember-try/',
|
||||
]),
|
||||
]);
|
||||
@@ -76,11 +76,13 @@
|
||||
"ember-template-lint": "^6.0.0",
|
||||
"ember-template-lint-plugin-prettier": "^5.0.0",
|
||||
"ember-try": "^3.0.0",
|
||||
"eslint": "^8.57.1",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-ember": "^12.2.1",
|
||||
"eslint-plugin-n": "^16.6.2",
|
||||
"eslint-plugin-qunit": "^8.1.2",
|
||||
"eslint": "^9.18.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-ember": "^12.7.5",
|
||||
"eslint-plugin-n": "^17.24.0",
|
||||
"eslint-plugin-qunit": "^8.2.6",
|
||||
"@eslint/js": "^9.18.0",
|
||||
"globals": "^15.14.0",
|
||||
"loader.js": "^4.7.0",
|
||||
"postcss": "^8.4.31",
|
||||
"prettier": "^3.3.3",
|
||||
|
||||
@@ -10,8 +10,5 @@ export default class PlaygroundController extends Controller {
|
||||
color = 'green';
|
||||
|
||||
@action
|
||||
actionHandler(/*value*/) {
|
||||
// eslint-disable-next-line no-console
|
||||
//console.log('action handled');
|
||||
}
|
||||
actionHandler(/*value*/) {}
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
# e2e test output
|
||||
admin/artifacts
|
||||
desktop/artifacts
|
||||
playwright-report
|
||||
@@ -1,32 +0,0 @@
|
||||
/**
|
||||
* Copyright IBM Corp. 2021, 2026
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
module.exports = {
|
||||
root: true,
|
||||
parser: '@babel/eslint-parser',
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
// This is specific babel-config. If grows consider creating a babel config file
|
||||
requireConfigFile: false,
|
||||
// end of babel-config
|
||||
},
|
||||
extends: ['eslint:recommended', 'prettier'],
|
||||
env: {
|
||||
browser: true,
|
||||
node: true,
|
||||
es2021: true,
|
||||
},
|
||||
rules: {
|
||||
curly: ['error', 'multi-line', 'consistent'],
|
||||
'no-empty-pattern': ['error', { allowObjectPatternsAsParameters: true }],
|
||||
},
|
||||
overrides: [
|
||||
{
|
||||
"files": ["admin/tests/**", "desktop/tests/**"],
|
||||
"extends": "plugin:playwright/recommended"
|
||||
}
|
||||
]
|
||||
};
|
||||
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
* Copyright IBM Corp. 2021, 2026
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
import { defineConfig, globalIgnores } from 'eslint/config';
|
||||
import babelParser from '@babel/eslint-parser';
|
||||
import js from '@eslint/js';
|
||||
import playwright from 'eslint-plugin-playwright';
|
||||
import eslintConfigPrettier from 'eslint-config-prettier/flat';
|
||||
import globals from 'globals';
|
||||
|
||||
export default defineConfig([
|
||||
js.configs.recommended,
|
||||
{
|
||||
languageOptions: {
|
||||
parser: babelParser,
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
// This is specific babel-config. If grows consider creating a babel config file
|
||||
requireConfigFile: false,
|
||||
// end of babel-config
|
||||
},
|
||||
globals: {
|
||||
...globals.browser,
|
||||
...globals.node,
|
||||
...globals.es2021,
|
||||
},
|
||||
},
|
||||
rules: {
|
||||
curly: ['error', 'multi-line', 'consistent'],
|
||||
'no-empty-pattern': ['error', { allowObjectPatternsAsParameters: true }],
|
||||
},
|
||||
},
|
||||
|
||||
// Playwright test files
|
||||
{
|
||||
files: ['admin/tests/**', 'desktop/tests/**'],
|
||||
extends: [playwright.configs['flat/recommended']],
|
||||
},
|
||||
|
||||
// Prettier should be last
|
||||
eslintConfigPrettier,
|
||||
globalIgnores(['admin/artifacts', 'desktop/artifacts', 'playwright-report']),
|
||||
]);
|
||||
@@ -31,7 +31,7 @@ export * from './boundary-cli/workers.js';
|
||||
export async function checkBoundaryCli() {
|
||||
try {
|
||||
execSync('which boundary');
|
||||
} catch (e) {
|
||||
} catch {
|
||||
throw new Error('boundary does not exist on the path');
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,7 @@ import { execSync } from 'node:child_process';
|
||||
export async function checkVaultCli() {
|
||||
try {
|
||||
execSync('which vault');
|
||||
} catch (e) {
|
||||
} catch {
|
||||
throw new Error('vault does not exist on the path');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,14 +30,15 @@
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.26.10",
|
||||
"@babel/eslint-parser": "^7.21.3",
|
||||
"@eslint/js": "^9.18.0",
|
||||
"@openapitools/openapi-generator-cli": "^2.25.2",
|
||||
"@playwright/test": "^1.56.1",
|
||||
"concurrently": "^9.1.0",
|
||||
"dotenv": "^16.4.5",
|
||||
"eslint": "^8.54.0",
|
||||
"eslint-config-prettier": "^9.0.0",
|
||||
"eslint-plugin-n": "^16.3.1",
|
||||
"eslint": "^9.18.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-playwright": "^2.2.0",
|
||||
"globals": "^15.14.0",
|
||||
"nanoid": "^5.0.9",
|
||||
"prettier": "^3.0.0",
|
||||
"tesseract.js": "^5.1.1"
|
||||
|
||||
Generated
+376
-279
File diff suppressed because it is too large.
Load diff
@@ -1,14 +0,0 @@
|
||||
# unconventional js
|
||||
/blueprints/*/files/
|
||||
|
||||
# compiled output
|
||||
/declarations/
|
||||
/dist/
|
||||
|
||||
# misc
|
||||
/coverage/
|
||||
!.*
|
||||
.*/
|
||||
|
||||
# ember-try
|
||||
/.node_modules.ember-try/
|
||||
@@ -1,69 +0,0 @@
|
||||
/**
|
||||
* Copyright IBM Corp. 2021, 2026
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
root: true,
|
||||
parser: '@babel/eslint-parser',
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
// This is specific babel-config. If grows consider creating a babel config file
|
||||
requireConfigFile: false,
|
||||
babelOptions: {
|
||||
plugins: [
|
||||
['@babel/plugin-proposal-decorators', { decoratorsBeforeExport: true }],
|
||||
],
|
||||
},
|
||||
// end of babel-config
|
||||
},
|
||||
plugins: ['ember'],
|
||||
extends: ['eslint:recommended', 'plugin:ember/recommended', 'prettier'],
|
||||
env: {
|
||||
browser: true,
|
||||
},
|
||||
rules: {
|
||||
curly: ['error', 'multi-line', 'consistent'],
|
||||
'ember/no-get': 'off',
|
||||
'ember/no-get-with-default': 'off',
|
||||
'ember/no-computed-properties-in-native-classes': 'off',
|
||||
'ember/no-assignment-of-untracked-properties-used-in-tracking-contexts':
|
||||
'off',
|
||||
},
|
||||
overrides: [
|
||||
// node files
|
||||
{
|
||||
files: [
|
||||
'./.eslintrc.js',
|
||||
'./.prettierrc.js',
|
||||
'./.stylelintrc.js',
|
||||
'./.template-lintrc.js',
|
||||
'./ember-cli-build.js',
|
||||
'./testem.js',
|
||||
'./blueprints/*/index.js',
|
||||
'./config/**/*.js',
|
||||
'./lib/*/index.js',
|
||||
'./server/**/*.js',
|
||||
],
|
||||
parserOptions: {
|
||||
sourceType: 'script',
|
||||
},
|
||||
env: {
|
||||
browser: false,
|
||||
node: true,
|
||||
},
|
||||
extends: ['plugin:n/recommended'],
|
||||
},
|
||||
{
|
||||
// test files
|
||||
files: ['tests/**/*-test.{js,ts}'],
|
||||
extends: ['plugin:qunit/recommended'],
|
||||
rules: {
|
||||
'qunit/require-expect': [2, 'except-simple'],
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
@@ -81,7 +81,7 @@ export default class FormTargetAddHostSetsComponent extends Component {
|
||||
confirm: 'resources.target.actions.remove-address',
|
||||
},
|
||||
);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// if the user denies, do nothing and return
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ export default class AccountChangePasswordController extends Controller {
|
||||
// TransitionAborted error, which we do not want to show to the user.
|
||||
try {
|
||||
await this.router.replaceWith('index');
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// no-op
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +43,6 @@ class DevelopmentCanHelper extends CanHelper {
|
||||
|
||||
removeAllFlags() {
|
||||
this.features.flags.forEach((flag) =>
|
||||
/* eslint-disable-next-line ember/no-observers */
|
||||
this.features.removeObserver(flag, this, 'recompute'),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ async function autoInitializeFeatureEdition(owner) {
|
||||
|
||||
edition = json?.license?.edition;
|
||||
features = json?.license?.features;
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// if the request fails, the service will initialize the default edition
|
||||
// as specified in the config
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ export default class ApplicationRoute extends Route {
|
||||
});
|
||||
maybeModel?.rollbackAttributes();
|
||||
transition.retry();
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// if user denies, do nothing
|
||||
}
|
||||
}
|
||||
|
||||
@@ -195,7 +195,7 @@ export default class ScopesScopeSessionRecordingsIndexRoute extends Route {
|
||||
recursive: true,
|
||||
});
|
||||
return Boolean(storageBuckets.length);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// no op
|
||||
return false;
|
||||
}
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ export default class ScopesScopeSessionRecordingsSessionRecordingChannelsByConne
|
||||
storage_bucket_id,
|
||||
);
|
||||
}
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// no op
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ export default class ScopesScopeWorkersWorkerCreateTagsRoute extends Route {
|
||||
});
|
||||
controller.set('apiTags', new TrackedArray([]));
|
||||
transition.retry();
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// if user denies, do nothing
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
/**
|
||||
* Copyright IBM Corp. 2021, 2026
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
const { defineConfig, globalIgnores } = require('eslint/config');
|
||||
const babelParser = require('@babel/eslint-parser');
|
||||
const js = require('@eslint/js');
|
||||
const eslintPluginEmberRecommended = require('eslint-plugin-ember/configs/recommended');
|
||||
const nPlugin = require('eslint-plugin-n');
|
||||
const qunitPlugin = require('eslint-plugin-qunit');
|
||||
const eslintConfigPrettier = require('eslint-config-prettier/flat');
|
||||
const globals = require('globals');
|
||||
|
||||
module.exports = defineConfig([
|
||||
js.configs.recommended,
|
||||
...eslintPluginEmberRecommended,
|
||||
{
|
||||
languageOptions: {
|
||||
parser: babelParser,
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
requireConfigFile: false,
|
||||
// This is specific babel-config. If it grows consider creating a babel config file
|
||||
babelOptions: {
|
||||
plugins: [
|
||||
[
|
||||
'@babel/plugin-proposal-decorators',
|
||||
{ decoratorsBeforeExport: true },
|
||||
],
|
||||
],
|
||||
},
|
||||
// end of babel-config
|
||||
},
|
||||
globals: {
|
||||
...globals.browser,
|
||||
},
|
||||
},
|
||||
rules: {
|
||||
curly: ['error', 'multi-line', 'consistent'],
|
||||
'ember/no-get': 'off',
|
||||
'ember/no-get-with-default': 'off',
|
||||
'ember/no-computed-properties-in-native-classes': 'off',
|
||||
'ember/no-assignment-of-untracked-properties-used-in-tracking-contexts':
|
||||
'off',
|
||||
},
|
||||
},
|
||||
|
||||
// Node files configuration
|
||||
{
|
||||
files: [
|
||||
'eslint.config.js',
|
||||
'.prettierrc.js',
|
||||
'.stylelintrc.js',
|
||||
'.template-lintrc.js',
|
||||
'ember-cli-build.js',
|
||||
'testem.js',
|
||||
'config/**/*.js',
|
||||
'server/**/*.js',
|
||||
],
|
||||
plugins: { n: nPlugin },
|
||||
extends: [nPlugin.configs['flat/recommended-script']],
|
||||
},
|
||||
|
||||
// Test files configuration
|
||||
{
|
||||
files: ['tests/**/*-test.{js,ts}'],
|
||||
extends: [
|
||||
{ ...qunitPlugin.configs.recommended, plugins: { qunit: qunitPlugin } },
|
||||
],
|
||||
rules: {
|
||||
'qunit/require-expect': [2, 'except-simple'],
|
||||
},
|
||||
},
|
||||
// Prettier should be last
|
||||
eslintConfigPrettier,
|
||||
globalIgnores([
|
||||
'blueprints/*/files/',
|
||||
'declarations/',
|
||||
'dist/',
|
||||
'coverage/',
|
||||
'**/.*/',
|
||||
'.node_modules.ember-try/',
|
||||
]),
|
||||
]);
|
||||
@@ -88,11 +88,13 @@
|
||||
"ember-source": "~5.12.0",
|
||||
"ember-template-lint": "^6.0.0",
|
||||
"ember-template-lint-plugin-prettier": "^5.0.0",
|
||||
"eslint": "^8.57.1",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-ember": "^12.2.1",
|
||||
"eslint-plugin-n": "^16.6.2",
|
||||
"eslint-plugin-qunit": "^8.1.2",
|
||||
"eslint": "^9.18.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-ember": "^12.7.5",
|
||||
"eslint-plugin-n": "^17.24.0",
|
||||
"eslint-plugin-qunit": "^8.2.6",
|
||||
"@eslint/js": "^9.18.0",
|
||||
"globals": "^17.3.0",
|
||||
"js-bexpr": "hashicorp/js-bexpr#9b4a4b54d85eba67fdfc0990133d1518d890b1e1",
|
||||
"loader.js": "^4.7.0",
|
||||
"miragejs": "^0.1.48",
|
||||
|
||||
@@ -251,7 +251,7 @@ module('Acceptance | credential-libraries | update', function (hooks) {
|
||||
|
||||
try {
|
||||
await visit(urls.credentialLibraries);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
|
||||
|
||||
await click(commonSelectors.MODAL_WARNING_CONFIRM_BTN);
|
||||
|
||||
@@ -552,7 +552,7 @@ module(
|
||||
assert.strictEqual(currentURL(), urls.usernamePasswordCredential);
|
||||
try {
|
||||
await visit(urls.credentials);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
|
||||
|
||||
await click(commonSelectors.MODAL_WARNING_CONFIRM_BTN, 'Click Discard');
|
||||
@@ -595,7 +595,7 @@ module(
|
||||
|
||||
try {
|
||||
await visit(urls.credentials);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
|
||||
|
||||
await click(commonSelectors.MODAL_WARNING_CONFIRM_BTN, 'Click Discard');
|
||||
@@ -637,7 +637,7 @@ module(
|
||||
|
||||
try {
|
||||
await visit(urls.credentials);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
|
||||
|
||||
await click(commonSelectors.MODAL_WARNING_CONFIRM_BTN, 'Click Discard');
|
||||
@@ -677,7 +677,7 @@ module(
|
||||
assert.strictEqual(currentURL(), urls.passwordCredential);
|
||||
try {
|
||||
await visit(urls.credentials);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
|
||||
|
||||
await click(commonSelectors.MODAL_WARNING_CONFIRM_BTN, 'Click Discard');
|
||||
@@ -722,7 +722,7 @@ module(
|
||||
|
||||
try {
|
||||
await visit(urls.credentials);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
|
||||
|
||||
await click(commonSelectors.MODAL_WARNING_CANCEL_BTN, 'Click Cancel');
|
||||
@@ -769,7 +769,7 @@ module(
|
||||
|
||||
try {
|
||||
await visit(urls.credentials);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
|
||||
|
||||
await click(commonSelectors.MODAL_WARNING_CANCEL_BTN, 'Click Cancel');
|
||||
@@ -827,7 +827,7 @@ module(
|
||||
assert.strictEqual(currentURL(), urls.jsonCredential);
|
||||
try {
|
||||
await visit(urls.credentials);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
|
||||
await click(commonSelectors.MODAL_WARNING_CANCEL_BTN, 'Click Cancel');
|
||||
assert.strictEqual(currentURL(), urls.jsonCredential);
|
||||
@@ -871,7 +871,7 @@ module(
|
||||
|
||||
try {
|
||||
await visit(urls.credentials);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
|
||||
|
||||
await click(commonSelectors.MODAL_WARNING_CANCEL_BTN, 'Click Cancel');
|
||||
|
||||
@@ -259,7 +259,7 @@ module('Acceptance | credential-stores | update', function (hooks) {
|
||||
|
||||
try {
|
||||
await visit(urls.credentialStores);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
|
||||
|
||||
await click(commonSelectors.MODAL_WARNING_CONFIRM_BTN, 'Click Discard');
|
||||
@@ -297,7 +297,7 @@ module('Acceptance | credential-stores | update', function (hooks) {
|
||||
|
||||
try {
|
||||
await visit(urls.credentialStores);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
|
||||
|
||||
await click(commonSelectors.MODAL_WARNING_CONFIRM_BTN, 'Click Discard');
|
||||
@@ -327,7 +327,7 @@ module('Acceptance | credential-stores | update', function (hooks) {
|
||||
|
||||
try {
|
||||
await visit(urls.credentialStores);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
|
||||
|
||||
await click(commonSelectors.MODAL_WARNING_CANCEL_BTN);
|
||||
@@ -366,7 +366,7 @@ module('Acceptance | credential-stores | update', function (hooks) {
|
||||
|
||||
try {
|
||||
await visit(urls.credentialStores);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
|
||||
|
||||
await click(commonSelectors.MODAL_WARNING_CANCEL_BTN);
|
||||
|
||||
@@ -346,7 +346,7 @@ module('Acceptance | host-catalogs | host sets | update', function (hooks) {
|
||||
assert.strictEqual(currentURL(), urls.hostSet);
|
||||
try {
|
||||
await visit(urls.hostSets);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.ok(find(commonSelectors.MODAL_WARNING));
|
||||
await click(commonSelectors.MODAL_WARNING_CONFIRM_BTN);
|
||||
assert.strictEqual(currentURL(), urls.hostSets);
|
||||
|
||||
@@ -197,7 +197,7 @@ module('Acceptance | host-catalogs | hosts | update', function (hooks) {
|
||||
// Wrap on a try/catch because transitioning while editing returns error
|
||||
try {
|
||||
await visit(urls.hosts);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.dom(commonSelectors.MODAL_WARNING).exists();
|
||||
await click(commonSelectors.MODAL_WARNING_CONFIRM_BTN);
|
||||
assert.strictEqual(currentURL(), urls.hosts);
|
||||
@@ -235,7 +235,7 @@ module('Acceptance | host-catalogs | hosts | update', function (hooks) {
|
||||
// Wrap on a try/catch because transitioning while editing returns error
|
||||
try {
|
||||
await visit(urls.hosts);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
assert.dom(commonSelectors.MODAL_WARNING).exists();
|
||||
await click(commonSelectors.MODAL_WARNING_CANCEL_BTN);
|
||||
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
# unconventional js
|
||||
/blueprints/*/files/
|
||||
|
||||
# compiled output
|
||||
/declarations/
|
||||
/dist/
|
||||
|
||||
# misc
|
||||
/coverage/
|
||||
!.*
|
||||
.*/
|
||||
|
||||
# ember-electron
|
||||
/electron-app/
|
||||
|
||||
# ember-try
|
||||
/.node_modules.ember-try/
|
||||
@@ -1,71 +0,0 @@
|
||||
/**
|
||||
* Copyright IBM Corp. 2021, 2026
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
root: true,
|
||||
parser: '@babel/eslint-parser',
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
// This is specific babel-config. If grows consider creating a babel config file
|
||||
requireConfigFile: false,
|
||||
babelOptions: {
|
||||
plugins: [
|
||||
['@babel/plugin-proposal-decorators', { decoratorsBeforeExport: true }],
|
||||
],
|
||||
},
|
||||
// end of babel-config
|
||||
},
|
||||
plugins: ['ember'],
|
||||
extends: ['eslint:recommended', 'plugin:ember/recommended', 'prettier'],
|
||||
env: {
|
||||
browser: true,
|
||||
},
|
||||
rules: {
|
||||
curly: ['error', 'multi-line', 'consistent'],
|
||||
'ember/no-get': 'off',
|
||||
'ember/no-get-with-default': 'off',
|
||||
'ember/no-computed-properties-in-native-classes': 'off',
|
||||
'ember/no-assignment-of-untracked-properties-used-in-tracking-contexts':
|
||||
'off',
|
||||
},
|
||||
overrides: [
|
||||
// node files
|
||||
{
|
||||
files: [
|
||||
'./.eslintrc.js',
|
||||
'./.prettierrc.js',
|
||||
'./.stylelintrc.js',
|
||||
'./.template-lintrc.js',
|
||||
'./ember-cli-build.js',
|
||||
'./testem.js',
|
||||
'./testem-electron.js',
|
||||
'./playwright.config.js',
|
||||
'./blueprints/*/index.js',
|
||||
'./config/**/*.js',
|
||||
'./lib/*/index.js',
|
||||
'./server/**/*.js',
|
||||
],
|
||||
parserOptions: {
|
||||
sourceType: 'script',
|
||||
},
|
||||
env: {
|
||||
browser: false,
|
||||
node: true,
|
||||
},
|
||||
extends: ['plugin:n/recommended'],
|
||||
},
|
||||
{
|
||||
// test files
|
||||
files: ['tests/**/*-test.{js,ts}'],
|
||||
extends: ['plugin:qunit/recommended'],
|
||||
rules: {
|
||||
'qunit/require-expect': [2, 'except-simple'],
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
@@ -211,7 +211,7 @@ export default class ScopesScopeProjectsTargetsIndexController extends Controlle
|
||||
session = await this.store.findRecord('session', session_id, {
|
||||
reload: true,
|
||||
});
|
||||
} catch (error) {
|
||||
} catch {
|
||||
/**
|
||||
* if the user cannot read or fetch the session we add the important
|
||||
* information returned from the connect command to allow the user
|
||||
|
||||
@@ -29,7 +29,7 @@ export default class ScopesRoute extends Route {
|
||||
if (scopesCheck.response_type) {
|
||||
this.isPaginationSupported = true;
|
||||
}
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// no op
|
||||
}
|
||||
}
|
||||
@@ -80,7 +80,7 @@ export default class ScopesRoute extends Route {
|
||||
}
|
||||
|
||||
if (!downloadLink) throw new Error('No build found');
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// this is a catch for any errors that may occur and shows the user
|
||||
// an error alert directing them to the releases page
|
||||
downloadError = true;
|
||||
|
||||
@@ -83,7 +83,6 @@ export default class ScopesScopeProjectsRoute extends Route {
|
||||
let sessions;
|
||||
|
||||
// We use a while loop to poll for new sessions from the client agent.
|
||||
// eslint-disable-next-line no-constant-condition
|
||||
while (true) {
|
||||
try {
|
||||
sessions =
|
||||
@@ -152,7 +151,7 @@ export default class ScopesScopeProjectsRoute extends Route {
|
||||
alias.destination_id,
|
||||
);
|
||||
orgScope = target.scope.parent_scope_id;
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// Do nothing and default scope to global if an error occurs
|
||||
}
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ export default class ScopesScopeProjectsSessionsSessionRoute extends Route {
|
||||
try {
|
||||
const host = await this.store.findRecord('host', session.host_id);
|
||||
session.addHost(host);
|
||||
} catch (error) {
|
||||
} catch {
|
||||
// no operation
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ export default class ScopesScopeProjectsTargetsTargetRoute extends Route {
|
||||
hosts = Array.from(
|
||||
new Map(allFilteredHosts.map((host) => [host.id, host])).values(),
|
||||
);
|
||||
} catch (error) {
|
||||
} catch {
|
||||
// no operation
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,6 @@
|
||||
*/
|
||||
|
||||
// Importing 'Store' from 'ember-data/store' to get default configuration automatically.
|
||||
// TODO: Remove eslint-disable after upgrading to eslint-plugin-ember >= v12.2.1
|
||||
// eslint-disable-next-line ember/use-ember-data-rfc-395-imports
|
||||
import Store from 'ember-data/store';
|
||||
import { CacheHandler } from '@ember-data/store';
|
||||
import RequestManager from '@ember-data/request';
|
||||
|
||||
@@ -99,6 +99,7 @@ module.exports = {
|
||||
await extract(artifactPath, artifactDestination);
|
||||
} catch (e) {
|
||||
console.error('ERROR: Failed setting up CLI.', e);
|
||||
// eslint-disable-next-line n/no-process-exit
|
||||
process.exit(1);
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -173,7 +173,7 @@ module.exports = {
|
||||
*/
|
||||
if (!boundaryCli.isBuiltInCli) return;
|
||||
|
||||
const latestVersion = await findLatestVersion(releasesUrl);
|
||||
let latestVersion = await findLatestVersion(releasesUrl);
|
||||
|
||||
// Ensure version is in proper format
|
||||
if (!semver.valid(latestVersion)) {
|
||||
|
||||
@@ -18,7 +18,7 @@ const netRequest = (url) =>
|
||||
// request ends because: request.abort() has no effect after a request
|
||||
// ends and the promise will already have been completed, so a rejection
|
||||
// has no effect either.
|
||||
const requestTimeout = setTimeout(() => {
|
||||
setTimeout(() => {
|
||||
request.abort();
|
||||
reject(new Error('Request timeout'));
|
||||
}, requestTimeoutSeconds * 1000);
|
||||
|
||||
@@ -3,13 +3,8 @@
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
/* eslint-disable no-console */
|
||||
const path = require('path');
|
||||
const { net } = require('electron');
|
||||
const {
|
||||
default: installExtension,
|
||||
EMBER_INSPECTOR,
|
||||
} = require('electron-devtools-installer');
|
||||
const {
|
||||
session,
|
||||
app,
|
||||
|
||||
@@ -178,7 +178,7 @@ handle('searchCacheDaemon', async (request) =>
|
||||
handle('isCacheDaemonRunning', async () => {
|
||||
try {
|
||||
await cacheDaemonManager.status();
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// There was likely an error connecting to the cache daemon.
|
||||
return false;
|
||||
}
|
||||
@@ -208,7 +208,7 @@ handle('isClientAgentRunning', async () => {
|
||||
}
|
||||
|
||||
return status.status === 'running';
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// There was likely an error connecting to client agent.
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ class RuntimeSettings {
|
||||
if (result.statusCode >= 400) {
|
||||
throw new Error();
|
||||
}
|
||||
} catch (e) {
|
||||
} catch {
|
||||
throw new Error(`Cluster URL ${clusterUrl} could not be validated.`);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,6 +120,7 @@ class CacheDaemonManager {
|
||||
async search(requestData) {
|
||||
const start = Date.now();
|
||||
// Log request data, but clean up token from log
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
const { auth_token_id, token, ...logRequestData } = requestData;
|
||||
|
||||
if (isWindows()) {
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
* SPDX-License-Identifier: MPL-2.0
|
||||
*/
|
||||
const jsonify = require('./jsonify');
|
||||
const log = require('electron-log/main');
|
||||
|
||||
// Convert to json
|
||||
const generateErrorPromise = async (stderr) => {
|
||||
|
||||
@@ -3,14 +3,12 @@
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
const log = require('electron-log/main');
|
||||
|
||||
// Convert to json
|
||||
const jsonify = (data) => {
|
||||
if (typeof data !== 'string') data = JSON.stringify(data);
|
||||
try {
|
||||
return JSON.parse(data);
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// Ignore parse errors
|
||||
}
|
||||
};
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
const { URL } = require('url');
|
||||
|
||||
module.exports = {
|
||||
/**
|
||||
* Super paranoid shell quote/escape and validation. Input must be base62.
|
||||
@@ -27,7 +25,7 @@ module.exports = {
|
||||
try {
|
||||
const url = new URL(str);
|
||||
return `${url.protocol}//${url.host}`;
|
||||
} catch (e) {
|
||||
} catch {
|
||||
// Parse error
|
||||
throw new Error(`URL ${str} could not be validated.`);
|
||||
}
|
||||
|
||||
@@ -3,16 +3,20 @@
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
// TODO: Is this file still needed?
|
||||
|
||||
const {
|
||||
default: installExtension,
|
||||
EMBER_INSPECTOR,
|
||||
} = require('electron-devtools-installer');
|
||||
const path = require('path');
|
||||
const { app } = require('electron');
|
||||
// eslint-disable-next-line n/no-missing-require
|
||||
const handleFileUrls = require('../src/handle-file-urls');
|
||||
const {
|
||||
setupTestem,
|
||||
openTestWindow,
|
||||
// eslint-disable-next-line n/no-extraneous-require
|
||||
} = require('ember-electron/lib/test-support');
|
||||
|
||||
const emberAppDir = path.resolve(__dirname, '..', 'ember-test');
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
/**
|
||||
* Copyright IBM Corp. 2021, 2026
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
const { defineConfig, globalIgnores } = require('eslint/config');
|
||||
const babelParser = require('@babel/eslint-parser');
|
||||
const js = require('@eslint/js');
|
||||
const eslintPluginEmberRecommended = require('eslint-plugin-ember/configs/recommended');
|
||||
const nPlugin = require('eslint-plugin-n');
|
||||
const qunitPlugin = require('eslint-plugin-qunit');
|
||||
const eslintConfigPrettier = require('eslint-config-prettier/flat');
|
||||
const globals = require('globals');
|
||||
|
||||
module.exports = defineConfig([
|
||||
js.configs.recommended,
|
||||
...eslintPluginEmberRecommended,
|
||||
{
|
||||
languageOptions: {
|
||||
parser: babelParser,
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
requireConfigFile: false,
|
||||
// This is specific babel-config. If it grows consider creating a babel config file
|
||||
babelOptions: {
|
||||
plugins: [
|
||||
[
|
||||
'@babel/plugin-proposal-decorators',
|
||||
{ decoratorsBeforeExport: true },
|
||||
],
|
||||
],
|
||||
},
|
||||
// end of babel-config
|
||||
},
|
||||
globals: {
|
||||
...globals.browser,
|
||||
},
|
||||
},
|
||||
rules: {
|
||||
curly: ['error', 'multi-line', 'consistent'],
|
||||
'ember/no-get': 'off',
|
||||
'ember/no-get-with-default': 'off',
|
||||
'ember/no-computed-properties-in-native-classes': 'off',
|
||||
'ember/no-assignment-of-untracked-properties-used-in-tracking-contexts':
|
||||
'off',
|
||||
},
|
||||
},
|
||||
|
||||
// Node files configuration
|
||||
{
|
||||
files: [
|
||||
'eslint.config.js',
|
||||
'.prettierrc.js',
|
||||
'.stylelintrc.js',
|
||||
'.template-lintrc.js',
|
||||
'ember-cli-build.js',
|
||||
'testem.js',
|
||||
'testem-electron.js',
|
||||
'playwright.config.js',
|
||||
'config/**/*.js',
|
||||
'server/**/*.js',
|
||||
'electron-app/**/*.js',
|
||||
],
|
||||
plugins: { n: nPlugin },
|
||||
extends: [nPlugin.configs['flat/recommended-script']],
|
||||
},
|
||||
|
||||
// These files reference config/config.js which is generated at build time
|
||||
// and listed in .gitignore, so it won't exist when linting in CI unless we build first.
|
||||
{
|
||||
files: [
|
||||
'electron-app/config/forge.config.js',
|
||||
'electron-app/src/index.js',
|
||||
'electron-app/src/config/menu.js',
|
||||
'electron-app/src/ipc/handlers.js',
|
||||
'electron-app/src/helpers/app-updater.js',
|
||||
],
|
||||
rules: {
|
||||
'n/no-missing-require': 'off',
|
||||
},
|
||||
},
|
||||
|
||||
// Test files configuration
|
||||
{
|
||||
files: ['tests/**/*-test.{js,ts}'],
|
||||
extends: [
|
||||
{ ...qunitPlugin.configs.recommended, plugins: { qunit: qunitPlugin } },
|
||||
],
|
||||
rules: {
|
||||
'qunit/require-expect': [2, 'except-simple'],
|
||||
},
|
||||
},
|
||||
// Prettier should be last
|
||||
eslintConfigPrettier,
|
||||
globalIgnores([
|
||||
'declarations/',
|
||||
'dist/',
|
||||
'coverage/',
|
||||
'**/.*/',
|
||||
'.node_modules.ember-try/',
|
||||
'electron-app/out/',
|
||||
'electron-app/ember-dist/',
|
||||
]),
|
||||
]);
|
||||
@@ -95,11 +95,13 @@
|
||||
"ember-template-lint": "^6.0.0",
|
||||
"ember-template-lint-plugin-prettier": "^5.0.0",
|
||||
"ember-wormhole": "^0.6.0",
|
||||
"eslint": "^8.57.1",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-ember": "^12.2.1",
|
||||
"eslint-plugin-n": "^16.6.2",
|
||||
"eslint-plugin-qunit": "^8.1.2",
|
||||
"eslint": "^9.18.0",
|
||||
"eslint-config-prettier": "^10.1.8",
|
||||
"eslint-plugin-ember": "^12.7.5",
|
||||
"eslint-plugin-n": "^17.24.0",
|
||||
"eslint-plugin-qunit": "^8.2.6",
|
||||
"@eslint/js": "^9.18.0",
|
||||
"globals": "^17.3.0",
|
||||
"js-bexpr": "hashicorp/js-bexpr#9b4a4b54d85eba67fdfc0990133d1518d890b1e1",
|
||||
"loader.js": "^4.7.0",
|
||||
"miragejs": "^0.1.48",
|
||||
|
||||
Reference in new issue
Block a user