From b1afad612c52dce5d171767189c8468a9142942f Mon Sep 17 00:00:00 2001 From: Bert De Block Date: Wed, 18 Dec 2024 10:23:07 +0100 Subject: [PATCH 1/2] Migrate test suite to ES modules --- .eslintrc.js | 4 ++ test/commands/try-each-test.js | 6 +-- test/commands/try-ember-test.js | 6 +-- test/commands/try-one-test.js | 6 +-- .../npm-adapter-test.js | 21 +++++----- .../pnpm-adapter-test.js | 18 ++++----- .../workspace-adapter-test.js | 21 +++++----- .../yarn-adapter-test.js | 21 +++++----- test/helpers/assert-file-contains-json.js | 12 +++--- test/helpers/generate-mock-run.js | 8 ++-- .../stub-dependency-manager-adapter.js | 6 +-- test/helpers/write-json-file.js | 8 ++-- test/package.json | 6 +++ test/tasks/reset-test.js | 13 +++--- test/tasks/try-each-test.js | 40 +++++++------------ test/utils/config-test.js | 17 ++++---- ...dependency-manager-adapter-factory-test.js | 16 ++++---- test/utils/find-ember-path-test.js | 6 +-- test/utils/run-command-test.js | 9 ++--- test/utils/run-test.js | 7 +--- test/utils/scenario-manager-test.js | 6 +-- 21 files changed, 111 insertions(+), 146 deletions(-) create mode 100644 test/package.json diff --git a/.eslintrc.js b/.eslintrc.js index ba2b291e..9a0bd7f5 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -4,6 +4,10 @@ module.exports = { { env: { mocha: true }, files: ['test/**/*.js'], + parserOptions: { sourceType: 'module' }, + rules: { + 'n/no-extraneous-import': 'off', + }, }, ], parser: '@babel/eslint-parser', diff --git a/test/commands/try-each-test.js b/test/commands/try-each-test.js index 69d702f6..1abc7af5 100644 --- a/test/commands/try-each-test.js +++ b/test/commands/try-each-test.js @@ -1,7 +1,5 @@ -'use strict'; - -const expect = require('chai').expect; -const TryEachCommand = require('../../lib/commands/try-each'); +import { expect } from 'chai'; +import TryEachCommand from '../../lib/commands/try-each.js'; const origTryEachTask = TryEachCommand._TryEachTask; const origGetConfig = TryEachCommand._getConfig; diff --git a/test/commands/try-ember-test.js b/test/commands/try-ember-test.js index 766ab102..275a8114 100644 --- a/test/commands/try-ember-test.js +++ b/test/commands/try-ember-test.js @@ -1,7 +1,5 @@ -'use strict'; - -const expect = require('chai').expect; -const TryEmberCommand = require('../../lib/commands/try-ember'); +import { expect } from 'chai'; +import TryEmberCommand from '../../lib/commands/try-ember.js'; const origTryEachTask = TryEmberCommand._TryEachTask; const origGetConfig = TryEmberCommand._getConfig; diff --git a/test/commands/try-one-test.js b/test/commands/try-one-test.js index 9183ed21..02c8fc0c 100644 --- a/test/commands/try-one-test.js +++ b/test/commands/try-one-test.js @@ -1,7 +1,5 @@ -'use strict'; - -const expect = require('chai').expect; -const TryOneCommand = require('../../lib/commands/try-one'); +import { expect } from 'chai'; +import TryOneCommand from '../../lib/commands/try-one.js'; const origTryEachTask = TryOneCommand._TryEachTask; const origGetConfig = TryOneCommand._getConfig; diff --git a/test/dependency-manager-adapters/npm-adapter-test.js b/test/dependency-manager-adapters/npm-adapter-test.js index f70c1123..fd61e4a3 100644 --- a/test/dependency-manager-adapters/npm-adapter-test.js +++ b/test/dependency-manager-adapters/npm-adapter-test.js @@ -1,14 +1,13 @@ -'use strict'; - -let expect = require('chai').expect; -let fs = require('fs-extra'); -let path = require('path'); -let tmp = require('tmp-sync'); -let fixturePackage = require('../fixtures/package.json'); -let NpmAdapter = require('../../lib/dependency-manager-adapters/npm'); -let writeJSONFile = require('../helpers/write-json-file'); -let assertFileContainsJSON = require('../helpers/assert-file-contains-json'); -let generateMockRun = require('../helpers/generate-mock-run'); +import { expect } from 'chai'; +import fs from 'fs-extra'; +import path from 'path'; +import tmp from 'tmp-sync'; +import NpmAdapter from '../../lib/dependency-manager-adapters/npm.js'; +import writeJSONFile from '../helpers/write-json-file.js'; +import assertFileContainsJSON from '../helpers/assert-file-contains-json.js'; +import generateMockRun from '../helpers/generate-mock-run.js'; + +const fixturePackage = fs.readJsonSync('./test/fixtures/package.json'); let root = process.cwd(); let tmproot = path.join(root, 'tmp'); diff --git a/test/dependency-manager-adapters/pnpm-adapter-test.js b/test/dependency-manager-adapters/pnpm-adapter-test.js index bd16a80e..b5c952cc 100644 --- a/test/dependency-manager-adapters/pnpm-adapter-test.js +++ b/test/dependency-manager-adapters/pnpm-adapter-test.js @@ -1,15 +1,13 @@ -'use strict'; +import chai, { expect } from 'chai'; +import chaiAsPromised from 'chai-as-promised'; +import fs from 'fs-extra'; +import path from 'path'; +import tmp from 'tmp-sync'; +import sinon from 'sinon'; +import PnpmAdapter from '../../lib/dependency-manager-adapters/pnpm.js'; +import generateMockRun from '../helpers/generate-mock-run.js'; -let chai = require('chai'); -let chaiAsPromised = require('chai-as-promised'); chai.use(chaiAsPromised); -let { expect } = chai; -let fs = require('fs-extra'); -let path = require('path'); -let tmp = require('tmp-sync'); -const sinon = require('sinon'); -let PnpmAdapter = require('../../lib/dependency-manager-adapters/pnpm'); -let generateMockRun = require('../helpers/generate-mock-run'); let root = process.cwd(); let tmproot = path.join(root, 'tmp'); diff --git a/test/dependency-manager-adapters/workspace-adapter-test.js b/test/dependency-manager-adapters/workspace-adapter-test.js index be34e08f..18fca404 100644 --- a/test/dependency-manager-adapters/workspace-adapter-test.js +++ b/test/dependency-manager-adapters/workspace-adapter-test.js @@ -1,14 +1,13 @@ -'use strict'; - -let expect = require('chai').expect; -let fs = require('fs-extra'); -let path = require('path'); -let tmp = require('tmp-sync'); -let fixtureWorkspaces = require('../fixtures/package-with-workspaces.json'); -let WorkspaceAdapter = require('../../lib/dependency-manager-adapters/workspace'); -let writeJSONFile = require('../helpers/write-json-file'); -let assertFileContainsJSON = require('../helpers/assert-file-contains-json'); -let generateMockRun = require('../helpers/generate-mock-run'); +import { expect } from 'chai'; +import fs from 'fs-extra'; +import path from 'path'; +import tmp from 'tmp-sync'; +import WorkspaceAdapter from '../../lib/dependency-manager-adapters/workspace.js'; +import writeJSONFile from '../helpers/write-json-file.js'; +import assertFileContainsJSON from '../helpers/assert-file-contains-json.js'; +import generateMockRun from '../helpers/generate-mock-run.js'; + +const fixtureWorkspaces = fs.readJsonSync('./test/fixtures/package-with-workspaces.json'); let root = process.cwd(); let tmproot = path.join(root, 'tmp'); diff --git a/test/dependency-manager-adapters/yarn-adapter-test.js b/test/dependency-manager-adapters/yarn-adapter-test.js index 665a431a..821348d6 100644 --- a/test/dependency-manager-adapters/yarn-adapter-test.js +++ b/test/dependency-manager-adapters/yarn-adapter-test.js @@ -1,14 +1,13 @@ -'use strict'; - -let expect = require('chai').expect; -let fs = require('fs-extra'); -let path = require('path'); -let tmp = require('tmp-sync'); -let fixturePackage = require('../fixtures/package.json'); -let YarnAdapter = require('../../lib/dependency-manager-adapters/yarn'); -let writeJSONFile = require('../helpers/write-json-file'); -let assertFileContainsJSON = require('../helpers/assert-file-contains-json'); -let generateMockRun = require('../helpers/generate-mock-run'); +import { expect } from 'chai'; +import fs from 'fs-extra'; +import path from 'path'; +import tmp from 'tmp-sync'; +import YarnAdapter from '../../lib/dependency-manager-adapters/yarn.js'; +import writeJSONFile from '../helpers/write-json-file.js'; +import assertFileContainsJSON from '../helpers/assert-file-contains-json.js'; +import generateMockRun from '../helpers/generate-mock-run.js'; + +const fixturePackage = fs.readJsonSync('./test/fixtures/package.json'); let root = process.cwd(); let tmproot = path.join(root, 'tmp'); diff --git a/test/helpers/assert-file-contains-json.js b/test/helpers/assert-file-contains-json.js index 04c174d9..6e60c5e1 100644 --- a/test/helpers/assert-file-contains-json.js +++ b/test/helpers/assert-file-contains-json.js @@ -1,12 +1,10 @@ -'use strict'; +import { expect } from 'chai'; +import fs from 'fs-extra'; +import path from 'path'; -let expect = require('chai').expect; -let fs = require('fs-extra'); -let path = require('path'); - -module.exports = function assertFileContainsJSON(filePath, expectedObj) { +export default function assertFileContainsJSON(filePath, expectedObj) { return assertFileContains(filePath, JSON.stringify(expectedObj, null, 2)); -}; +} function assertFileContains(filePath, expectedContents) { let regex = new RegExp(`${escapeForRegex(expectedContents)}($|\\W)`, 'gm'); diff --git a/test/helpers/generate-mock-run.js b/test/helpers/generate-mock-run.js index db02a2b7..c112b420 100644 --- a/test/helpers/generate-mock-run.js +++ b/test/helpers/generate-mock-run.js @@ -1,8 +1,6 @@ -'use strict'; +import { _originalRunFunction } from '../../lib/utils/run.js'; -const { _originalRunFunction } = require('../../lib/utils/run'); - -module.exports = function generateMockRun() { +export default function generateMockRun() { let mockedRuns = []; let options = { allowPassthrough: true }; if (typeof arguments[0] === 'string') { @@ -28,7 +26,7 @@ module.exports = function generateMockRun() { ); } }; -}; +} function isCommandMocked(mockedRun, actualCommand, actualArgs) { let mockedRunParts = mockedRun.command.split(' '); diff --git a/test/helpers/stub-dependency-manager-adapter.js b/test/helpers/stub-dependency-manager-adapter.js index 724a3fb2..1cb7648b 100644 --- a/test/helpers/stub-dependency-manager-adapter.js +++ b/test/helpers/stub-dependency-manager-adapter.js @@ -1,6 +1,4 @@ -'use strict'; - -module.exports = class { +export default class { setup() { return Promise.resolve(); } @@ -18,4 +16,4 @@ module.exports = class { cleanup() { return Promise.resolve(); } -}; +} diff --git a/test/helpers/write-json-file.js b/test/helpers/write-json-file.js index cc136a1f..db767302 100644 --- a/test/helpers/write-json-file.js +++ b/test/helpers/write-json-file.js @@ -1,7 +1,5 @@ -'use strict'; +import fs from 'fs-extra'; -const fs = require('fs-extra'); - -module.exports = function writeJSONFile(filename, contents) { +export default function writeJSONFile(filename, contents) { fs.writeFileSync(filename, JSON.stringify(contents, null, 2)); -}; +} diff --git a/test/package.json b/test/package.json new file mode 100644 index 00000000..bd4377d0 --- /dev/null +++ b/test/package.json @@ -0,0 +1,6 @@ +{ + "description": "This `package.json` file solely exists to use ES modules in the test suite.", + "name": "test", + "private": true, + "type": "module" +} diff --git a/test/tasks/reset-test.js b/test/tasks/reset-test.js index ee2918c6..53c3f872 100644 --- a/test/tasks/reset-test.js +++ b/test/tasks/reset-test.js @@ -1,10 +1,10 @@ -'use strict'; +import tmp from 'tmp-sync'; +import path from 'path'; +import fs from 'fs-extra'; +import writeJSONFile from '../helpers/write-json-file.js'; +import ResetTask from '../../lib/tasks/reset.js'; -const tmp = require('tmp-sync'); -const path = require('path'); -const fs = require('fs-extra'); -const fixturePackageJson = require('../fixtures/package.json'); -const writeJSONFile = require('../helpers/write-json-file'); +const fixturePackageJson = fs.readJsonSync('./test/fixtures/package.json'); const root = process.cwd(); const tmproot = path.join(root, 'tmp'); @@ -36,7 +36,6 @@ describe('reset', () => { ], }; - let ResetTask = require('../../lib/tasks/reset'); let resetTask = new ResetTask({ project: { root: tmpdir }, config, diff --git a/test/tasks/try-each-test.js b/test/tasks/try-each-test.js index 8d974489..35a391f0 100644 --- a/test/tasks/try-each-test.js +++ b/test/tasks/try-each-test.js @@ -1,17 +1,18 @@ -'use strict'; - -const expect = require('chai').expect; -const tmp = require('tmp-sync'); -const path = require('path'); -const fs = require('fs-extra'); -const fixturePackage = require('../fixtures/package.json'); -const writeJSONFile = require('../helpers/write-json-file'); -const { _mockLog, _restoreLog } = require('../../lib/utils/console'); -const { _mockRun, _restoreRun } = require('../../lib/utils/run'); +import { expect } from 'chai'; +import chalk from 'chalk'; +import tmp from 'tmp-sync'; +import path from 'path'; +import fs from 'fs-extra'; +import writeJSONFile from '../helpers/write-json-file.js'; +import TryEachTask from '../../lib/tasks/try-each.js'; +import { _mockLog, _restoreLog } from '../../lib/utils/console.js'; +import { _mockRun, _restoreRun } from '../../lib/utils/run.js'; /* Some of the tests in this file intentionally DO NOT stub dependency manager adapter*/ -const StubDependencyAdapter = require('../helpers/stub-dependency-manager-adapter'); -const generateMockRun = require('../helpers/generate-mock-run'); +import StubDependencyAdapter from '../helpers/stub-dependency-manager-adapter.js'; +import generateMockRun from '../helpers/generate-mock-run.js'; + +const fixturePackage = fs.readJsonSync('./test/fixtures/package.json'); const root = process.cwd(); const tmproot = path.join(root, 'tmp'); @@ -54,7 +55,7 @@ describe('tryEach', () => { beforeEach(() => { tmpdir = tmp.in(tmproot); process.chdir(tmpdir); - require('chalk').level = 0; + chalk.level = 0; }); afterEach(() => { @@ -81,7 +82,6 @@ describe('tryEach', () => { _mockLog(outputFn); - let TryEachTask = require('../../lib/tasks/try-each'); let tryEachTask = new TryEachTask({ project: { root: tmpdir }, config, @@ -137,7 +137,6 @@ describe('tryEach', () => { _mockLog(outputFn); - let TryEachTask = require('../../lib/tasks/try-each'); let tryEachTask = new TryEachTask({ project: { root: tmpdir }, config, @@ -203,7 +202,6 @@ describe('tryEach', () => { _mockLog(outputFn); - let TryEachTask = require('../../lib/tasks/try-each'); let tryEachTask = new TryEachTask({ project: { root: tmpdir }, config, @@ -252,7 +250,6 @@ describe('tryEach', () => { _mockLog(outputFn); - let TryEachTask = require('../../lib/tasks/try-each'); let tryEachTask = new TryEachTask({ project: { root: tmpdir }, config, @@ -307,7 +304,6 @@ describe('tryEach', () => { _mockLog(outputFn); - let TryEachTask = require('../../lib/tasks/try-each'); let tryEachTask = new TryEachTask({ project: { root: tmpdir }, config, @@ -359,7 +355,6 @@ describe('tryEach', () => { _mockLog(outputFn); - let TryEachTask = require('../../lib/tasks/try-each'); let tryEachTask = new TryEachTask({ project: { root: tmpdir }, config, @@ -412,7 +407,6 @@ describe('tryEach', () => { _mockLog(outputFn); - let TryEachTask = require('../../lib/tasks/try-each'); let tryEachTask = new TryEachTask({ project: { root: tmpdir }, config, @@ -468,7 +462,6 @@ describe('tryEach', () => { _mockLog(outputFn); - let TryEachTask = require('../../lib/tasks/try-each'); let tryEachTask = new TryEachTask({ project: { root: tmpdir }, config, @@ -517,7 +510,6 @@ describe('tryEach', () => { _mockLog(outputFn); - let TryEachTask = require('../../lib/tasks/try-each'); let tryEachTask = new TryEachTask({ project: { root: tmpdir }, config, @@ -591,7 +583,6 @@ describe('tryEach', () => { _mockLog(outputFn); - let TryEachTask = require('../../lib/tasks/try-each'); let tryEachTask = new TryEachTask({ project: { root: tmpdir }, config, @@ -640,7 +631,6 @@ describe('tryEach', () => { _mockLog(outputFn); - let TryEachTask = require('../../lib/tasks/try-each'); let tryEachTask = new TryEachTask({ project: { root: tmpdir }, config, @@ -697,7 +687,6 @@ describe('tryEach', () => { _mockLog(outputFn); - let TryEachTask = require('../../lib/tasks/try-each'); let tryEachTask = new TryEachTask({ project: { root: tmpdir }, config, @@ -752,7 +741,6 @@ describe('tryEach', () => { return Promise.resolve(true); }; - let TryEachTask = require('../../lib/tasks/try-each'); let tryEachTask = new TryEachTask({ project: { root: tmpdir }, config, diff --git a/test/utils/config-test.js b/test/utils/config-test.js index bda75edf..31a67365 100644 --- a/test/utils/config-test.js +++ b/test/utils/config-test.js @@ -1,12 +1,11 @@ -'use strict'; - -const expect = require('chai').expect; -const fs = require('fs-extra'); -const path = require('path'); -const tmp = require('tmp-sync'); -const fixturePackage = require('../fixtures/package.json'); -const writeJSONFile = require('../helpers/write-json-file'); -const getConfig = require('../../lib/utils/config'); +import { expect } from 'chai'; +import fs from 'fs-extra'; +import path from 'path'; +import tmp from 'tmp-sync'; +import writeJSONFile from '../helpers/write-json-file.js'; +import getConfig from '../../lib/utils/config.js'; + +const fixturePackage = fs.readJsonSync('./test/fixtures/package.json'); const root = process.cwd(); const tmproot = path.join(root, 'tmp'); diff --git a/test/utils/dependency-manager-adapter-factory-test.js b/test/utils/dependency-manager-adapter-factory-test.js index fa30e9bf..45320deb 100644 --- a/test/utils/dependency-manager-adapter-factory-test.js +++ b/test/utils/dependency-manager-adapter-factory-test.js @@ -1,12 +1,10 @@ -'use strict'; - -const path = require('path'); -const fs = require('fs-extra'); -const tmp = require('tmp-sync'); -const expect = require('chai').expect; -const DependencyManagerAdapterFactory = require('../../lib/utils/dependency-manager-adapter-factory'); -const WorkspaceAdapter = require('../../lib/dependency-manager-adapters/workspace'); -let writeJSONFile = require('../helpers/write-json-file'); +import path from 'path'; +import fs from 'fs-extra'; +import tmp from 'tmp-sync'; +import { expect } from 'chai'; +import DependencyManagerAdapterFactory from '../../lib/utils/dependency-manager-adapter-factory.js'; +import WorkspaceAdapter from '../../lib/dependency-manager-adapters/workspace.js'; +import writeJSONFile from '../helpers/write-json-file.js'; const ROOT = process.cwd(); let tmproot = path.join(ROOT, 'tmp'); diff --git a/test/utils/find-ember-path-test.js b/test/utils/find-ember-path-test.js index 10138ad1..77864141 100644 --- a/test/utils/find-ember-path-test.js +++ b/test/utils/find-ember-path-test.js @@ -1,7 +1,5 @@ -'use strict'; - -const expect = require('chai').expect; -const findEmberPath = require('../../lib/utils/find-ember-path'); +import { expect } from 'chai'; +import findEmberPath from '../../lib/utils/find-ember-path.js'; describe('findEmberPath()', () => { it('refers to the ember-cli in node_modules', () => { diff --git a/test/utils/run-command-test.js b/test/utils/run-command-test.js index 87c80fe3..2388f4a3 100644 --- a/test/utils/run-command-test.js +++ b/test/utils/run-command-test.js @@ -1,7 +1,6 @@ -'use strict'; - -const expect = require('chai').expect; -const { _mockRun, _restoreRun } = require('../../lib/utils/run'); +import { expect } from 'chai'; +import { _mockRun, _restoreRun } from '../../lib/utils/run.js'; +import runCommand from '../../lib/utils/run-command.js'; describe('utils/run-command', () => { afterEach(() => { @@ -20,8 +19,6 @@ describe('utils/run-command', () => { _mockRun(mockedRun); - let runCommand = require('../../lib/utils/run-command'); - return runCommand('rootPath', ['ember', 'help', '--json', 'true'], {}).then((result) => { expect(result).to.equal(true); }); diff --git a/test/utils/run-test.js b/test/utils/run-test.js index e459a0e8..ce950c52 100644 --- a/test/utils/run-test.js +++ b/test/utils/run-test.js @@ -1,11 +1,8 @@ -'use strict'; - -const expect = require('chai').expect; +import { expect } from 'chai'; +import run from '../../lib/utils/run.js'; describe('utils/run', () => { it('rejects if command exits non-zero', () => { - let run = require('../../lib/utils/run'); - return run('exit 1', [], {}) .then(() => { expect(true).to.equal(false, 'Should not succeed'); diff --git a/test/utils/scenario-manager-test.js b/test/utils/scenario-manager-test.js index 7814a5d0..b8e6ccd2 100644 --- a/test/utils/scenario-manager-test.js +++ b/test/utils/scenario-manager-test.js @@ -1,7 +1,5 @@ -'use strict'; - -const expect = require('chai').expect; -const ScenarioManager = require('../../lib/utils/scenario-manager'); +import { expect } from 'chai'; +import ScenarioManager from '../../lib/utils/scenario-manager.js'; describe('scenarioManager', () => { it('does not require any dependency managers', () => { From 7ba588ca2e39f6066a4b58c543a7a278bd071f4a Mon Sep 17 00:00:00 2001 From: Bert De Block Date: Wed, 18 Dec 2024 10:26:33 +0100 Subject: [PATCH 2/2] Update test dependencies --- package.json | 8 +- .../pnpm-adapter-test.js | 4 +- yarn.lock | 228 +++++++++++++----- 3 files changed, 168 insertions(+), 72 deletions(-) diff --git a/package.json b/package.json index ffa27396..1c8bdb7f 100644 --- a/package.json +++ b/package.json @@ -51,17 +51,17 @@ "@babel/core": "^7.26.0", "@babel/eslint-parser": "^7.25.9", "@release-it-plugins/lerna-changelog": "^7.0.0", - "chai": "^4.4.1", - "chai-as-promised": "^7.1.1", + "chai": "^5.1.2", + "chai-as-promised": "^8.0.1", "codecov": "^3.8.3", "concurrently": "^9.1.0", "ember-cli": "~5.12.0", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-n": "^17.15.0", - "mocha": "^10.8.2", + "mocha": "^11.0.1", "nyc": "^17.1.0", - "prettier": "^3.3.3", + "prettier": "^3.4.2", "release-it": "^17.10.0", "sinon": "^19.0.2", "tmp-sync": "^1.1.0" diff --git a/test/dependency-manager-adapters/pnpm-adapter-test.js b/test/dependency-manager-adapters/pnpm-adapter-test.js index b5c952cc..4fdba02a 100644 --- a/test/dependency-manager-adapters/pnpm-adapter-test.js +++ b/test/dependency-manager-adapters/pnpm-adapter-test.js @@ -1,4 +1,4 @@ -import chai, { expect } from 'chai'; +import { expect, use } from 'chai'; import chaiAsPromised from 'chai-as-promised'; import fs from 'fs-extra'; import path from 'path'; @@ -7,7 +7,7 @@ import sinon from 'sinon'; import PnpmAdapter from '../../lib/dependency-manager-adapters/pnpm.js'; import generateMockRun from '../helpers/generate-mock-run.js'; -chai.use(chaiAsPromised); +use(chaiAsPromised); let root = process.cwd(); let tmproot = path.join(root, 'tmp'); diff --git a/yarn.lock b/yarn.lock index bcc275d8..dc01499d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -538,6 +538,18 @@ resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.7.tgz#d050ccc0eabfacc0248c4ff647a9dfba1b01594b" integrity sha512-m+Trk77mp54Zma6xLkLuY+mvanPxlE4A7yNKs2HBiyZ4UkVs28Mv5c/pgWrHeInx+USHeX/WEPzjrWrcJiQgjw== +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -758,6 +770,11 @@ dependencies: "@octokit/openapi-types" "^22.2.0" +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + "@pnpm/config.env-replace@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" @@ -1198,7 +1215,7 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" -ansi-styles@^6.2.1: +ansi-styles@^6.1.0, ansi-styles@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== @@ -1306,10 +1323,10 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== +assertion-error@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" + integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== assign-symbols@^1.0.0: version "1.0.0" @@ -2088,25 +2105,23 @@ cardinal@^1.0.0: ansicolors "~0.2.1" redeyed "~1.0.0" -chai-as-promised@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" - integrity sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA== +chai-as-promised@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-8.0.1.tgz#8913b2fd685b3f5637d25f627518e3ac9614d8e1" + integrity sha512-OIEJtOL8xxJSH8JJWbIoRjybbzR52iFuDHuF8eb+nTPD6tgXLjRqsgnUGqQfFODxYvq5QdirT0pN9dZ0+Gz6rA== dependencies: - check-error "^1.0.2" + check-error "^2.0.0" -chai@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" - integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== +chai@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/chai/-/chai-5.1.2.tgz#3afbc340b994ae3610ca519a6c70ace77ad4378d" + integrity sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw== dependencies: - assertion-error "^1.1.0" - check-error "^1.0.3" - deep-eql "^4.1.3" - get-func-name "^2.0.2" - loupe "^2.3.6" - pathval "^1.1.1" - type-detect "^4.0.8" + assertion-error "^2.0.1" + check-error "^2.1.1" + deep-eql "^5.0.1" + loupe "^3.1.0" + pathval "^2.0.0" chalk@5.3.0, chalk@^5.3.0: version "5.3.0" @@ -2147,17 +2162,10 @@ charm@^1.0.0: dependencies: inherits "^2.0.1" -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= - -check-error@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" - integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== - dependencies: - get-func-name "^2.0.2" +check-error@^2.0.0, check-error@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" + integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== chokidar@^3.5.3: version "3.6.0" @@ -2731,12 +2739,10 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" -deep-eql@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" - integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== - dependencies: - type-detect "^4.0.0" +deep-eql@^5.0.1: + version "5.0.2" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341" + integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q== deep-extend@^0.6.0: version "0.6.0" @@ -2923,6 +2929,11 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + editions@^1.1.1: version "1.3.4" resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" @@ -3091,6 +3102,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -3905,7 +3921,7 @@ foreground-child@^2.0.0: cross-spawn "^7.0.0" signal-exit "^3.0.2" -foreground-child@^3.3.0: +foreground-child@^3.1.0, foreground-child@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== @@ -4117,11 +4133,6 @@ get-east-asian-width@^1.0.0: resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz#5e6ebd9baee6fb8b7b6bd505221065f0cd91f64e" integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== -get-func-name@^2.0.1, get-func-name@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" - integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== - get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" @@ -4223,6 +4234,18 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" +glob@^10.4.5: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + glob@^5.0.10: version "5.0.15" resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" @@ -5288,6 +5311,15 @@ istextorbinary@2.1.0: editions "^1.1.1" textextensions "1 || 2" +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -5647,12 +5679,10 @@ log-symbols@^6.0.0: chalk "^5.3.0" is-unicode-supported "^1.3.0" -loupe@^2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" - integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== - dependencies: - get-func-name "^2.0.1" +loupe@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-3.1.2.tgz#c86e0696804a02218f2206124c45d8b15291a240" + integrity sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg== lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" @@ -5664,6 +5694,11 @@ lowercase-keys@^2.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -6174,7 +6209,7 @@ minimatch@^7.4.3: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.5: +minimatch@^9.0.4, minimatch@^9.0.5: version "9.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== @@ -6257,6 +6292,11 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + minizlib@^2.0.0, minizlib@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" @@ -6302,10 +6342,10 @@ mktemp@~0.4.0: resolved "https://registry.yarnpkg.com/mktemp/-/mktemp-0.4.0.tgz#6d0515611c8a8c84e484aa2000129b98e981ff0b" integrity sha1-bQUVYRyKjITkhKogABKbmOmB/ws= -mocha@^10.8.2: - version "10.8.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.8.2.tgz#8d8342d016ed411b12a429eb731b825f961afb96" - integrity sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg== +mocha@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-11.0.1.tgz#85c1c0e806275fe2479245be4ac4a0d81f533aa8" + integrity sha512-+3GkODfsDG71KSCQhc4IekSW+ItCK/kiez1Z28ksWvYhKXV/syxMlerR/sC7whDp7IyreZ4YxceMLdTs5hQE8A== dependencies: ansi-colors "^4.1.3" browser-stdout "^1.3.1" @@ -6314,7 +6354,7 @@ mocha@^10.8.2: diff "^5.2.0" escape-string-regexp "^4.0.0" find-up "^5.0.0" - glob "^8.1.0" + glob "^10.4.5" he "^1.2.0" js-yaml "^4.1.0" log-symbols "^4.1.0" @@ -6880,6 +6920,11 @@ package-hash@^4.0.0: lodash.flattendeep "^4.4.0" release-zalgo "^1.0.0" +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + package-json@^10.0.0: version "10.0.1" resolved "https://registry.yarnpkg.com/package-json/-/package-json-10.0.1.tgz#e49ee07b8de63b638e7f1b5bb353733e428fe7d7" @@ -7015,6 +7060,14 @@ path-root@^0.1.1: dependencies: path-root-regex "^0.1.0" +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -7035,10 +7088,10 @@ path-type@^5.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-5.0.0.tgz#14b01ed7aea7ddf9c7c3f46181d4d04f9c785bb8" integrity sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg== -pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== +pathval@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25" + integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA== picocolors@^1.0.0: version "1.0.0" @@ -7096,10 +7149,10 @@ prettier@^2.5.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== -prettier@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" - integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== +prettier@^3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f" + integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ== printf@^0.6.1: version "0.6.1" @@ -8222,6 +8275,15 @@ string-template@~0.2.1: resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0= +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -8248,6 +8310,15 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string-width@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.1.0.tgz#d994252935224729ea3719c49f7206dc9c46550a" @@ -8278,6 +8349,13 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" @@ -8306,7 +8384,7 @@ strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-ansi@^7.1.0: +strip-ansi@^7.0.1, strip-ansi@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== @@ -8676,7 +8754,7 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.8: +type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== @@ -9102,6 +9180,15 @@ workerpool@^6.4.0, workerpool@^6.5.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -9120,6 +9207,15 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrap-ansi@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-9.0.0.tgz#1a3dc8b70d85eeb8398ddfb1e4a02cd186e58b3e"