chore: 🤖 Upgrade addons/core to Ember 4.12.2 (#1965)

* chore: 🤖 Upgrade `addons/core` to Ember 4.12.2

Upgrade `addons/core` to Ember 4.12.2

✅ Closes: ICU-11341

* refactor: 💡 testing updating plugin-proposal-decorators version

Update `@babel/plugin-proposal-decorators` to latest version.

* refactor: 💡 testing legacy plugin-proposa-decorators version

Testin `legacy` version for `plugin-proposal-decorators` plugin

* refactor: 💡 testing plugin-proposal-decorators

Testing `@babel/plugin-proposal-decorators`

* refactor: 💡 Revert @babel/exlint-parser to previous version

Revert `@babel/eslint-parser` to use version 2018 EcmaScript version
until further research is done on latest versions

* Update package.json

put @babel/core back into `devDependencies`

* refactor: 💡 testing linging changes

Pushed ember-tempalate-lint, prettier, and ember template lint plugin
for prettier to latest versions to test why CI builds are not passing.

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-11341
This commit is contained in:
Devon Anderson authored and GitHub committed 2023-10-27 11:10:30 -04:00
1 parent c548c381bf
commit 9e7852f18d
25 files changed
+182 -125

No files matched your search

-1
View File
@@ -38,7 +38,6 @@ module.exports = {
files: [
'./.eslintrc.js',
'./.prettierrc.js',
'./.stylelintrc.js',
'./.template-lintrc.js',
'./ember-cli-build.js',
'./index.js',
+2 -2
View File
@@ -31,8 +31,8 @@
"ember-fetch": "^8.1.1"
},
"devDependencies": {
"@babel/core": "^7.18.5",
"@babel/eslint-parser": "^7.21.3",
"@babel/core": "^7.21.0",
"@babel/eslint-parser": "^7.18.2",
"@babel/plugin-proposal-decorators": "^7.21.0",
"@ember/optional-features": "^2.0.0",
"@ember/string": "^3.0.1",
+1 -1
View File
@@ -27,7 +27,7 @@
"ember-simple-auth": "^4.2.2"
},
"devDependencies": {
"@babel/eslint-parser": "^7.21.3",
"@babel/eslint-parser": "^7.18.2",
"@babel/plugin-proposal-decorators": "^7.21.0",
"@ember/optional-features": "^2.0.0",
"@ember/string": "^3.0.1",
+2 -2
View File
@@ -8,8 +8,8 @@
"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.
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
}
+5 -4
View File
@@ -9,12 +9,14 @@ module.exports = {
root: true,
parser: '@babel/eslint-parser',
parserOptions: {
ecmaVersion: 2018,
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', { legacy: true }]],
plugins: [
['@babel/plugin-proposal-decorators', { decoratorsBeforeExport: true }],
],
},
// end of babel-config
},
@@ -51,8 +53,7 @@ module.exports = {
browser: false,
node: true,
},
plugins: ['node'],
extends: ['plugin:node/recommended'],
extends: ['plugin:n/recommended'],
},
{
// Test files:
+5
View File
@@ -8,4 +8,9 @@
module.exports = {
plugins: ['ember-template-lint-plugin-prettier'],
extends: ['recommended', 'ember-template-lint-plugin-prettier:recommended'],
rules: {
'no-curly-component-invocation': {
allow: ['app-name', 'company-name', 'company-copyright'],
},
},
};
@@ -3,12 +3,10 @@
SPDX-License-Identifier: MPL-2.0
}}
{{! //TODO fix the issue and delete disabling the rule }}
{{! template-lint-disable no-passed-in-event-handlers }}
{{#if @model.type}}
{{component
(concat 'form/authenticate/' @model.type)
submit=@submit
onSubmit=@submit
disabled=@disabled
}}
{{/if}}
@@ -3,4 +3,4 @@
SPDX-License-Identifier: MPL-2.0
}}
<Form::Authenticate::Details @onSubmit={{@submit}} @disabled={{@disabled}} />
<Form::Authenticate::Details @onSubmit={{@onSubmit}} @disabled={{@disabled}} />
@@ -5,7 +5,7 @@
<Rose::Form
class='full-width'
@onSubmit={{@submit}}
@onSubmit={{@onSubmit}}
@disabled={{@disabled}}
as |form|
>
@@ -3,4 +3,4 @@
SPDX-License-Identifier: MPL-2.0
}}
<Form::Authenticate::Details @onSubmit={{@submit}} @disabled={{@disabled}} />
<Form::Authenticate::Details @onSubmit={{@onSubmit}} @disabled={{@disabled}} />
+1 -1
View File
@@ -9,7 +9,7 @@ const EmberAddon = require('ember-cli/lib/broccoli/ember-addon');
const { maybeEmbroider } = require('@embroider/test-setup');
module.exports = function (defaults) {
let app = new EmberAddon(defaults, {
const app = new EmberAddon(defaults, {
// Add options here
'ember-simple-auth': {
useSessionSetupMethod: true,
+26 -23
View File
@@ -15,8 +15,8 @@
"scripts": {
"build:development": "ember build",
"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:fix": "concurrently \"npm:lint:*:fix\" --names \"fix:\"",
"lint:hbs": "ember-template-lint .",
"lint:hbs:fix": "ember-template-lint . --fix",
"lint:js": "eslint .",
@@ -33,10 +33,10 @@
"dependencies": {
"api": "*",
"auth": "*",
"ember-auto-import": "^2.4.2",
"ember-auto-import": "^2.6.3",
"ember-browser-services": "^4.0.3",
"ember-cli-babel": "^7.26.11",
"ember-cli-htmlbars": "^6.1.0",
"ember-cli-htmlbars": "^6.2.0",
"ember-feature-flags": "^6.0.0",
"ember-intl": "^6.0.0-beta.6",
"ember-loading": "^2.0.0",
@@ -46,43 +46,46 @@
},
"devDependencies": {
"@babel/eslint-parser": "^7.18.2",
"@babel/plugin-proposal-decorators": "^7.18.6",
"@babel/plugin-proposal-decorators": "^7.21.0",
"@ember/optional-features": "^2.0.0",
"@ember/test-helpers": "^2.8.1",
"@ember/string": "^3.0.1",
"@ember/test-helpers": "^2.9.3",
"@embroider/test-setup": "^2.1.1",
"@faker-js/faker": "^8.0.2",
"@glimmer/component": "^1.1.2",
"@glimmer/tracking": "^1.1.2",
"broccoli-asset-rev": "^3.0.0",
"concurrently": "^8.0.1",
"doctoc": "^2.2.0",
"ember-cli": "^4.4.1",
"ember-cli": "^4.12.2",
"ember-cli-dependency-checker": "^3.3.1",
"ember-cli-inject-live-reload": "^2.1.0",
"ember-cli-sri": "^2.1.1",
"ember-cli-terser": "^4.0.2",
"ember-disable-prototype-extensions": "^1.1.3",
"ember-export-application-global": "^2.0.1",
"ember-inline-svg": "^1.0.1",
"ember-load-initializers": "^2.1.2",
"ember-page-title": "^7.0.0",
"ember-qunit": "^6.0.0",
"ember-resolver": "^8.0.3",
"ember-source": "~4.4.0",
"ember-template-lint": "^4.14.0",
"ember-template-lint-plugin-prettier": "^4.0.0",
"eslint": "^8.18.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-ember": "^10.6.1",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-qunit": "^7.3.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": "^5.7.2",
"ember-template-lint-plugin-prettier": "^5.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-qunit": "^7.3.4",
"js-bexpr": "hashicorp/js-bexpr#9b4a4b54d85eba67fdfc0990133d1518d890b1e1",
"loader.js": "^4.7.0",
"npm-run-all": "^4.1.5",
"prettier": "^2.7.1",
"qunit": "^2.19.1",
"prettier": "^3.0.0",
"qunit": "^2.19.4",
"qunit-dom": "^2.0.0",
"rose": "*",
"webpack": "^5.76.0"
"webpack": "^5.78.0"
},
"peerDependencies": {
"ember-source": "^4.0.0"
},
"engines": {
"node": "16.* || 18.*"
@@ -3,7 +3,7 @@
"packages": [
{
"name": "ember-cli",
"version": "4.4.1",
"version": "4.12.2",
"blueprints": [
{
"name": "addon",
@@ -0,0 +1,58 @@
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
'use strict';
const getChannelURL = require('ember-source-channel-url');
const { embroiderSafe, embroiderOptimized } = require('@embroider/test-setup');
module.exports = async function () {
return {
scenarios: [
{
name: 'ember-lts-4.4',
npm: {
devDependencies: {
'ember-source': '~4.4.0',
},
},
},
{
name: 'ember-lts-4.8',
npm: {
devDependencies: {
'ember-source': '~4.8.0',
},
},
},
{
name: 'ember-release',
npm: {
devDependencies: {
'ember-source': await getChannelURL('release'),
},
},
},
{
name: 'ember-beta',
npm: {
devDependencies: {
'ember-source': await getChannelURL('beta'),
},
},
},
{
name: 'ember-canary',
npm: {
devDependencies: {
'ember-source': await getChannelURL('canary'),
},
},
},
embroiderSafe(),
embroiderOptimized(),
],
};
};
@@ -6,20 +6,17 @@
'use strict';
module.exports = function (environment) {
let ENV = {
const ENV = {
modulePrefix: 'dummy',
environment,
rootURL: '/',
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: {
@@ -13,7 +13,7 @@ module('Integration | Component | doc-link', function (hooks) {
test('it renders', async function (assert) {
assert.expect(1);
await render(hbs`<DocLink @doc="account" @iconSize="large" />`);
await render(hbs`<DocLink @doc='account' @iconSize='large' />`);
assert.ok(find('.doc-link .rose-icon.large'));
});
});
@@ -29,15 +29,16 @@ module('Integration | Component | form | authenticate', function (hooks) {
this.submit = () => {};
this.disabled = () => {};
await render(hbs`<Form::Authenticate
@model={{this.model}}
@submit={{this.submit}}
@disabled={{this.disabled}}/>`);
await render(hbs`<Form::Authenticate
@model={{this.model}}
@onSubmit={{this.submit}}
@disabled={{this.disabled}}
/>`);
assert.ok(find('.full-width'));
assert.ok(find('.hds-form-text-input'));
assert.strictEqual(
find('button[type="submit"]').textContent.trim(),
'Sign In'
'Sign In',
);
});
@@ -52,15 +53,16 @@ module('Integration | Component | form | authenticate', function (hooks) {
this.submit = () => {};
this.disabled = () => {};
await render(hbs`<Form::Authenticate
@model={{this.model}}
@submit={{this.submit}}
@disabled={{this.disabled}}/>`);
await render(hbs`<Form::Authenticate
@model={{this.model}}
@onSubmit={{this.submit}}
@disabled={{this.disabled}}
/>`);
assert.ok(find('.full-width'));
assert.ok(find('.hds-form-text-input'));
assert.strictEqual(
find('button[type="submit"]').textContent.trim(),
'Sign In'
'Sign In',
);
});
@@ -75,15 +77,16 @@ module('Integration | Component | form | authenticate', function (hooks) {
this.submit = () => {};
this.disabled = () => {};
await render(hbs`<Form::Authenticate
@model={{this.model}}
@submit={{this.submit}}
@disabled={{this.disabled}}/>`);
await render(hbs`<Form::Authenticate
@model={{this.model}}
@onSubmit={{this.submit}}
@disabled={{this.disabled}}
/>`);
assert.ok(find('.full-width'));
assert.notOk(find('.hds-form-text-input'));
assert.strictEqual(
find('button[type="submit"]').textContent.trim(),
'Sign In'
'Sign In',
);
});
});
@@ -13,7 +13,7 @@ module('Integration | Component | Image', function (hooks) {
test('it renders', async function (assert) {
assert.expect(1);
await render(hbs`<Image @name="logo-app" />`);
await render(hbs`<Image @name='logo-app' />`);
assert.ok(find('.image-container'));
});
});
@@ -18,7 +18,7 @@ module('Integration | Component | loading-button', function (hooks) {
test('it executes a function on refresh button click', async function (assert) {
assert.expect(2);
this.onClick = () => assert.ok(true, 'refresh was clicked');
await render(hbs`<LoadingButton @onClick={{this.onClick}}/>`);
await render(hbs`<LoadingButton @onClick={{this.onClick}} />`);
assert.ok(find('.loading-button'));
await click('button');
});
@@ -15,26 +15,21 @@ module('Integration | Component | pending-confirmations', function (hooks) {
assert.expect(2);
const service = this.owner.lookup('service:confirm');
service.enabled = true;
await render(hbs`
<PendingConfirmations as |confirmations|>
<div class="pending">Pending</div>
</PendingConfirmations>
`);
await render(hbs`<PendingConfirmations as |confirmation|>
<div class='pending'>{{confirmation.text}}</div>
</PendingConfirmations>`);
assert.strictEqual(
findAll('.pending').length,
0,
'No pending confirmations'
'No pending confirmations',
);
service.confirm();
await render(hbs`
<PendingConfirmations as |confirmations|>
<div class="pending">Pending</div>
</PendingConfirmations>
`);
service.confirm('Text', { type: 'pending' });
await render(hbs`<PendingConfirmations as |confirmation|>
<div class='pending'>{{confirmation.text}}</div></PendingConfirmations>`);
assert.strictEqual(
findAll('.pending').length,
1,
'One pending confirmations'
'One pending confirmations',
);
});
@@ -44,11 +39,9 @@ module('Integration | Component | pending-confirmations', function (hooks) {
service.enabled = true;
const confirmation = service.confirm();
confirmation.then(() => assert.ok(true, 'confirmation.then was called'));
await render(hbs`
<PendingConfirmations as |confirmations confirm|>
<button {{on "click" confirm}}>Confirm</button>
</PendingConfirmations>
`);
await render(hbs`<PendingConfirmations as |confirmations confirm|>
<button type='button' {{on 'click' confirm}}>Confirm</button>
</PendingConfirmations>`);
assert.notOk(confirmation.done, 'Confirmation is not done');
await click('button');
assert.ok(confirmation.done, 'Confirmation is done');
@@ -60,11 +53,9 @@ module('Integration | Component | pending-confirmations', function (hooks) {
service.enabled = true;
const confirmation = service.confirm();
confirmation.catch(() => assert.ok(true, 'confirmation.catch was called'));
await render(hbs`
<PendingConfirmations as |confirmations confirm dismiss|>
<button {{on "click" dismiss}}>Dismiss</button>
</PendingConfirmations>
`);
await render(hbs`<PendingConfirmations as |confirmations confirm dismiss|>
<button type='button' {{on 'click' dismiss}}>Dismiss</button>
</PendingConfirmations>`);
assert.notOk(confirmation.done, 'Confirmation is not done');
await click('button');
assert.ok(confirmation.done, 'Confirmation is done');
@@ -24,7 +24,7 @@ module('Integration | Component | session-status', function (hooks) {
assert.expect(3);
const store = this.owner.lookup('service:store');
this.model = store.createRecord('session', { status: 'canceling' });
await render(hbs`<SessionStatus @model={{this.model}}/>`);
await render(hbs`<SessionStatus @model={{this.model}} />`);
assert.ok(find('.flight-icon-alert-triangle'));
assert.ok(find('.hds-badge--color-warning'));
assert.ok(find('.hds-badge--type-filled'));
@@ -34,7 +34,7 @@ module('Integration | Component | session-status', function (hooks) {
assert.expect(3);
const store = this.owner.lookup('service:store');
this.model = store.createRecord('session', { status: 'terminated' });
await render(hbs`<SessionStatus @model={{this.model}}/>`);
await render(hbs`<SessionStatus @model={{this.model}} />`);
assert.ok(find('.flight-icon-x'));
assert.ok(find('.hds-badge--color-critical'));
assert.ok(find('.hds-badge--type-filled'));
@@ -44,7 +44,7 @@ module('Integration | Component | session-status', function (hooks) {
assert.expect(3);
const store = this.owner.lookup('service:store');
this.model = store.createRecord('session', { status: 'pending' });
await render(hbs`<SessionStatus @model={{this.model}}/>`);
await render(hbs`<SessionStatus @model={{this.model}} />`);
assert.ok(find('.flight-icon-delay'));
assert.ok(find('.hds-badge--color-neutral'));
assert.ok(find('.hds-badge--type-filled'));
@@ -54,7 +54,7 @@ module('Integration | Component | session-status', function (hooks) {
assert.expect(3);
const store = this.owner.lookup('service:store');
this.model = store.createRecord('session', { status: 'any string' });
await render(hbs`<SessionStatus @model={{this.model}}/>`);
await render(hbs`<SessionStatus @model={{this.model}} />`);
assert.notOk(find('.flight-icon'));
assert.ok(find('.hds-badge--color-neutral'));
assert.ok(find('.hds-badge--type-outlined'));
@@ -14,7 +14,7 @@ module('Integration | Helper | format-date-iso-human', function (hooks) {
test('it renders', async function (assert) {
this.set('inputValue', new Date('2020-01-01T00:00:00.999Z'));
await render(hbs`{{format-date-iso-human this.inputValue }}`);
await render(hbs`{{format-date-iso-human this.inputValue}}`);
assert.strictEqual(this.element.textContent.trim(), '2020-01-01 00:00:00');
});
@@ -22,7 +22,7 @@ module('Integration | Helper | format-date-iso-human', function (hooks) {
test('it renders when null', async function (assert) {
this.set('inputValue', null);
await render(hbs`{{format-date-iso-human this.inputValue }}`);
await render(hbs`{{format-date-iso-human this.inputValue}}`);
assert.strictEqual(this.element.textContent.trim(), '');
});
@@ -17,26 +17,26 @@ module('Integration | Helper | reverse-indexed-display-name', function (hooks) {
this.set('array', ['Boundary', 'is', 'cool!']);
await render(hbs`{{reverse-indexed-display-name
'resources.session-recording.connection.title_index'
this.array
'Boundary'
}}`);
'resources.session-recording.connection.title_index'
this.array
'Boundary'
}}`);
assert.dom(this.element).hasText('Connection 3');
await render(hbs`{{reverse-indexed-display-name
'resources.session-recording.connection.title_index'
this.array
'is'
}}`);
'resources.session-recording.connection.title_index'
this.array
'is'
}}`);
assert.dom(this.element).hasText('Connection 2');
await render(hbs`{{reverse-indexed-display-name
'resources.session-recording.connection.title_index'
this.array
'cool!'
}}`);
'resources.session-recording.connection.title_index'
this.array
'cool!'
}}`);
assert.dom(this.element).hasText('Connection 1');
});
@@ -45,10 +45,10 @@ module('Integration | Helper | reverse-indexed-display-name', function (hooks) {
this.set('array', ['Boundary', 'is', 'cool!']);
await render(hbs`{{reverse-indexed-display-name
'resources.session-recording.connection.title_index'
this.array
'Watchtower'
}}`);
'resources.session-recording.connection.title_index'
this.array
'Watchtower'
}}`);
assert.dom(this.element).hasText('Connection');
});
View File
Whitespace-only changes.
+18 -16
View File
@@ -260,15 +260,6 @@
eslint-visitor-keys "^2.1.0"
semver "^6.3.0"
"@babel/eslint-parser@^7.21.3":
version "7.22.10"
resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.22.10.tgz#bfdf3d1b32ad573fe7c1c3447e0b485e3a41fd09"
integrity sha512-0J8DNPRXQRLeR9rPaUMM3fA+RbixjnVLe/MRMYCkp3hzgsSuxCHQ8NN8xQG1wIHKJ4a1DTROTvFJdW+B5/eOsg==
dependencies:
"@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1"
eslint-visitor-keys "^2.1.0"
semver "^6.3.1"
"@babel/generator@^7.15.0":
version "7.15.0"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.0.tgz#a7d0c172e0d814974bad5aa77ace543b97917f15"
@@ -4742,13 +4733,6 @@
call-me-maybe "^1.0.1"
glob-to-regexp "^0.3.0"
"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1":
version "5.1.1-v1"
resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129"
integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==
dependencies:
eslint-scope "5.1.1"
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@@ -4804,6 +4788,11 @@
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
"@prettier/sync@^0.2.1":
version "0.2.1"
resolved "https://registry.yarnpkg.com/@prettier/sync/-/sync-0.2.1.tgz#00f628a394247cc18535b3cce0b9756b352a09e0"
integrity sha512-7ls1R6//+GPYD9vof1XaL5psViv83CwpdwlS8oUkWldYgbPhzZ3WgxIQMWqGyBmWPmoBfQg8C7jj7KI/ZuDHhQ==
"@scalvert/ember-setup-middleware-reporter@^0.1.1":
version "0.1.1"
resolved "https://registry.yarnpkg.com/@scalvert/ember-setup-middleware-reporter/-/ember-setup-middleware-reporter-0.1.1.tgz#bdd74c19d99feeef8807dea9c9ee2d272b6c1923"
@@ -11056,6 +11045,14 @@ ember-template-lint-plugin-prettier@^4.0.0:
dependencies:
prettier-linter-helpers "^1.0.0"
ember-template-lint-plugin-prettier@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/ember-template-lint-plugin-prettier/-/ember-template-lint-plugin-prettier-5.0.0.tgz#1a2c8c87fee54347997c20017f7842b052a78f54"
integrity sha512-aXUYM4yuIdPZ80+AsAU8QBwGSJJ/aAkRsNcQ5vI5HmXiBjzHlDc/ZhmP6iVcYuCmoA/3iKcssMAYwIDbuby4pg==
dependencies:
"@prettier/sync" "^0.2.1"
prettier-linter-helpers "^1.0.0"
ember-template-lint@^4.14.0:
version "4.14.0"
resolved "https://registry.yarnpkg.com/ember-template-lint/-/ember-template-lint-4.14.0.tgz#7807ad19fc88c99de451a639ded2e3bbd14baa74"
@@ -18088,6 +18085,11 @@ prettier@^2.8.7:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da"
integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
prettier@^3.0.0:
version "3.0.3"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643"
integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==
pretty-bytes@^1.0.2:
version "1.0.4"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz#0a22e8210609ad35542f8c8d5d2159aff0751c84"