diff --git a/.changeset/clever-poets-hunt.md b/.changeset/clever-poets-hunt.md new file mode 100644 index 0000000..5dd807b --- /dev/null +++ b/.changeset/clever-poets-hunt.md @@ -0,0 +1,5 @@ +--- +"create-v2-addon-repo": minor +--- + +Scaffolded create-v2-addon-repo diff --git a/package.json b/package.json index 73cb8d9..f9d3f18 100644 --- a/package.json +++ b/package.json @@ -11,16 +11,17 @@ "author": "Isaac J. Lee", "type": "module", "scripts": { + "build": "pnpm --filter './packages/**' build", "lint": "pnpm --filter '*' lint", "lint:fix": "pnpm --filter '*' lint:fix", + "prepare": "pnpm build", "release:changelog": "changeset version", - "release:publish": "changeset publish", + "release:publish": "pnpm build && changeset publish", "test": "pnpm --filter '*' test" }, "devDependencies": { "@changesets/cli": "^2.27.7", - "@changesets/get-github-info": "^0.6.0", - "concurrently": "^8.2.2" + "@changesets/get-github-info": "^0.6.0" }, "engines": { "node": "18.* || >= 20", diff --git a/packages/create-v2-addon-repo/.eslintignore b/packages/create-v2-addon-repo/.eslintignore new file mode 100644 index 0000000..771057c --- /dev/null +++ b/packages/create-v2-addon-repo/.eslintignore @@ -0,0 +1,13 @@ +# compiled output +/dist/ +/dist-for-testing/ +/tmp/ + +# dependencies +/node_modules/ + +# misc +!.* +.*/ +/src/blueprints/ +/tests/fixtures/ diff --git a/packages/create-v2-addon-repo/.eslintrc.cjs b/packages/create-v2-addon-repo/.eslintrc.cjs new file mode 100644 index 0000000..c4e7794 --- /dev/null +++ b/packages/create-v2-addon-repo/.eslintrc.cjs @@ -0,0 +1,15 @@ +'use strict'; + +require('@shared-configs/eslint-config-node/patch'); + +module.exports = { + extends: ['@shared-configs/eslint-config-node/typescript'], + overrides: [ + { + files: ['bin/**/*.{js,ts}'], + rules: { + 'n/hashbang': 'off', + }, + }, + ], +}; diff --git a/packages/create-v2-addon-repo/.npmignore b/packages/create-v2-addon-repo/.npmignore new file mode 100644 index 0000000..b0b3cfa --- /dev/null +++ b/packages/create-v2-addon-repo/.npmignore @@ -0,0 +1,24 @@ +# compiled output +/dist-for-testing/ +/tmp/ + +# dependencies +/node_modules/ + +# misc +/.DS_Store +/.env* +/.eslintcache +/.eslintignore +/.eslintrc.cjs +/.git/ +/.github/ +/.gitignore +/.pnpm-debug.log +/.prettierignore +/.prettierrc.cjs +/build.sh +/codemod-test-fixture.sh +/codemod-test-fixtures.sh +/create-test-fixture.sh +/tests/ diff --git a/packages/create-v2-addon-repo/.prettierrc.cjs b/packages/create-v2-addon-repo/.prettierrc.cjs new file mode 100644 index 0000000..038d697 --- /dev/null +++ b/packages/create-v2-addon-repo/.prettierrc.cjs @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('@shared-configs/prettier'); diff --git a/packages/create-v2-addon-repo/CHANGELOG.md b/packages/create-v2-addon-repo/CHANGELOG.md new file mode 100644 index 0000000..7b8156a --- /dev/null +++ b/packages/create-v2-addon-repo/CHANGELOG.md @@ -0,0 +1 @@ +# create-v2-addon-repo diff --git a/packages/create-v2-addon-repo/LICENSE.md b/packages/create-v2-addon-repo/LICENSE.md new file mode 100644 index 0000000..cba618f --- /dev/null +++ b/packages/create-v2-addon-repo/LICENSE.md @@ -0,0 +1,9 @@ +The MIT License (MIT) + +Copyright (c) 2024 Isaac J. Lee + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/packages/create-v2-addon-repo/README.md b/packages/create-v2-addon-repo/README.md new file mode 100644 index 0000000..7b8156a --- /dev/null +++ b/packages/create-v2-addon-repo/README.md @@ -0,0 +1 @@ +# create-v2-addon-repo diff --git a/packages/create-v2-addon-repo/bin/create-v2-addon-repo.ts b/packages/create-v2-addon-repo/bin/create-v2-addon-repo.ts new file mode 100755 index 0000000..10b5c0a --- /dev/null +++ b/packages/create-v2-addon-repo/bin/create-v2-addon-repo.ts @@ -0,0 +1,31 @@ +#!/usr/bin/env node +'use strict'; + +import yargs from 'yargs'; +import { hideBin } from 'yargs/helpers'; + +import { runCodemod } from '../src/index.js'; +import type { CodemodOptions } from '../src/types/index.js'; + +// Provide a title to the process in `ps` +process.title = 'create-v2-addon-repo'; + +// Set codemod options +const argv = yargs(hideBin(process.argv)) + .option('name', { + demandOption: true, + describe: 'Name of your project', + type: 'string', + }) + .option('root', { + describe: 'Where to run the codemod', + type: 'string', + }) + .parseSync(); + +const codemodOptions: CodemodOptions = { + name: argv['name'], + projectRoot: argv['root'] ?? process.cwd(), +}; + +runCodemod(codemodOptions); diff --git a/packages/create-v2-addon-repo/build.sh b/packages/create-v2-addon-repo/build.sh new file mode 100755 index 0000000..36c7286 --- /dev/null +++ b/packages/create-v2-addon-repo/build.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env sh + +COMMAND="create-v2-addon-repo" +ENVIRONMENT=$1 + +if [ $ENVIRONMENT = "--production" ] +then + # Clean slate + rm -rf "dist" + + # Compile TypeScript + tsc --project "tsconfig.build.json" + + # Configure files + chmod +x "dist/bin/$COMMAND.js" + + if [ -d "src/blueprints" ] + then + cp -r "src/blueprints" "dist/src/blueprints" + fi + + echo "SUCCESS: Built dist.\n" + +elif [ $ENVIRONMENT = "--test" ] +then + # Clean slate + rm -rf "dist-for-testing" + + # Compile TypeScript + tsc --project "tsconfig.json" + + # Configure files + if [ -d "src/blueprints" ] + then + cp -r "src/blueprints" "dist-for-testing/src/blueprints" + fi + + echo "SUCCESS: Built dist-for-testing.\n" + +fi diff --git a/packages/create-v2-addon-repo/codemod-test-fixture.sh b/packages/create-v2-addon-repo/codemod-test-fixture.sh new file mode 100755 index 0000000..3569d72 --- /dev/null +++ b/packages/create-v2-addon-repo/codemod-test-fixture.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env sh + +#---------- +# +# A. Purpose +# +# Fix the expected output of a test fixture after updating the source code. +# +# B. Usage +# +# For named arguments, do not include `=` between the flag and the value. +# Positional arguments are to appear at the end. +# +# ./codemod-test-fixture.sh [OPTIONAL-FLAGS] +# +#--------- + +# Get named arguments for the binary +while getopts ":N:" flag +do + case $flag in + N) NAMED_ARGUMENTS=$OPTARG;; + esac +done + +# Get fixture name +FIXTURE=${@:$OPTIND:1} + +if [ ! $FIXTURE ] +then + echo "ERROR: Please specify the fixture name.\n" + exit 1 +elif [ ! -d "tests/fixtures/$FIXTURE/input" ] +then + echo "ERROR: Input folder \`tests/fixtures/$FIXTURE/input\` does not exist.\n" + exit 1 +fi + +rm -r "tests/fixtures/$FIXTURE/output" +cp -r "tests/fixtures/$FIXTURE/input" "tests/fixtures/$FIXTURE/output" + +./dist/bin/create-v2-addon-repo.js $NAMED_ARGUMENTS --root="tests/fixtures/$FIXTURE/output" + +echo "SUCCESS: Updated the output of $FIXTURE.\n" diff --git a/packages/create-v2-addon-repo/codemod-test-fixtures.sh b/packages/create-v2-addon-repo/codemod-test-fixtures.sh new file mode 100755 index 0000000..02bfb40 --- /dev/null +++ b/packages/create-v2-addon-repo/codemod-test-fixtures.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env sh + +#---------- +# +# A. Purpose +# +# Fix all test fixtures after updating the source code. +# +# B. Usage +# +# ./codemod-test-fixtures.sh +# +#--------- + +# Compile TypeScript +pnpm build + +./codemod-test-fixture.sh \ + -N "--name my-repo" \ + typescript diff --git a/packages/create-v2-addon-repo/package.json b/packages/create-v2-addon-repo/package.json new file mode 100644 index 0000000..6ac0631 --- /dev/null +++ b/packages/create-v2-addon-repo/package.json @@ -0,0 +1,56 @@ +{ + "name": "create-v2-addon-repo", + "version": "0.0.0", + "private": true, + "description": "Create a repo with v2 addons", + "keywords": [ + "codemod", + "ember-codemod", + "emberjs" + ], + "repository": { + "type": "git", + "url": "https://github.com/ijlee2/embroider-toolbox.git" + }, + "license": "MIT", + "author": "Isaac J. Lee", + "type": "module", + "main": "dist/src/index.js", + "bin": "dist/bin/create-v2-addon-repo.js", + "directories": { + "test": "tests" + }, + "files": [ + "dist" + ], + "scripts": { + "build": "./build.sh --production", + "lint": "concurrently 'pnpm:lint:*(!fix)' --names 'lint:'", + "lint:fix": "concurrently 'pnpm:lint:*:fix' --names 'fix:'", + "lint:js": "eslint . --cache", + "lint:js:fix": "eslint . --fix", + "lint:types": "tsc --noEmit", + "test": "./build.sh --test && mt dist-for-testing --quiet" + }, + "dependencies": { + "@codemod-utils/blueprints": "^1.1.5", + "@codemod-utils/files": "^2.0.4", + "yargs": "^17.7.2" + }, + "devDependencies": { + "@codemod-utils/tests": "^1.1.7", + "@shared-configs/eslint-config-node": "workspace:*", + "@shared-configs/prettier": "workspace:*", + "@shared-configs/typescript": "workspace:*", + "@sondr3/minitest": "^0.1.2", + "@types/node": "^18.19.44", + "@types/yargs": "^17.0.33", + "concurrently": "^8.2.2", + "eslint": "^8.57.0", + "prettier": "^3.3.3", + "typescript": "^5.5.4" + }, + "engines": { + "node": "18.* || >= 20" + } +} diff --git a/packages/create-v2-addon-repo/src/blueprints/.gitkeep b/packages/create-v2-addon-repo/src/blueprints/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/packages/create-v2-addon-repo/src/index.ts b/packages/create-v2-addon-repo/src/index.ts new file mode 100644 index 0000000..1a0f717 --- /dev/null +++ b/packages/create-v2-addon-repo/src/index.ts @@ -0,0 +1,8 @@ +import { createFilesFromBlueprints, createOptions } from './steps/index.js'; +import type { CodemodOptions } from './types/index.js'; + +export function runCodemod(codemodOptions: CodemodOptions): void { + const options = createOptions(codemodOptions); + + createFilesFromBlueprints(options); +} diff --git a/packages/create-v2-addon-repo/src/steps/create-files-from-blueprints.ts b/packages/create-v2-addon-repo/src/steps/create-files-from-blueprints.ts new file mode 100644 index 0000000..a3d4aaf --- /dev/null +++ b/packages/create-v2-addon-repo/src/steps/create-files-from-blueprints.ts @@ -0,0 +1,42 @@ +import { readFileSync } from 'node:fs'; +import { join } from 'node:path'; + +import { processTemplate } from '@codemod-utils/blueprints'; +import { createFiles, findFiles } from '@codemod-utils/files'; + +import type { Options } from '../types/index.js'; +import { blueprintsRoot } from '../utils/blueprints.js'; + +function resolveBlueprintFilePath(blueprintFilePath: string): string { + return blueprintFilePath; +} + +export function createFilesFromBlueprints(options: Options): void { + const { project } = options; + + const blueprintFilePaths = findFiles('**/*', { + projectRoot: blueprintsRoot, + }); + + const fileMap = new Map( + blueprintFilePaths.map((blueprintFilePath) => { + const filePath = join( + project.name, + resolveBlueprintFilePath(blueprintFilePath), + ); + + const blueprintFile = readFileSync( + join(blueprintsRoot, blueprintFilePath), + 'utf8', + ); + + const file = processTemplate(blueprintFile, { + options, + }); + + return [filePath, file]; + }), + ); + + createFiles(fileMap, options); +} diff --git a/packages/create-v2-addon-repo/src/steps/create-options.ts b/packages/create-v2-addon-repo/src/steps/create-options.ts new file mode 100644 index 0000000..87d6e16 --- /dev/null +++ b/packages/create-v2-addon-repo/src/steps/create-options.ts @@ -0,0 +1,12 @@ +import type { CodemodOptions, Options } from '../types/index.js'; + +export function createOptions(codemodOptions: CodemodOptions): Options { + const { name, projectRoot } = codemodOptions; + + return { + project: { + name, + }, + projectRoot, + }; +} diff --git a/packages/create-v2-addon-repo/src/steps/index.ts b/packages/create-v2-addon-repo/src/steps/index.ts new file mode 100644 index 0000000..0cb0adb --- /dev/null +++ b/packages/create-v2-addon-repo/src/steps/index.ts @@ -0,0 +1,2 @@ +export * from './create-files-from-blueprints.js'; +export * from './create-options.js'; diff --git a/packages/create-v2-addon-repo/src/types/index.ts b/packages/create-v2-addon-repo/src/types/index.ts new file mode 100644 index 0000000..3bd56f1 --- /dev/null +++ b/packages/create-v2-addon-repo/src/types/index.ts @@ -0,0 +1,13 @@ +type CodemodOptions = { + name: string; + projectRoot: string; +}; + +type Options = { + project: { + name: string; + }; + projectRoot: string; +}; + +export type { CodemodOptions, Options }; diff --git a/packages/create-v2-addon-repo/src/utils/blueprints.ts b/packages/create-v2-addon-repo/src/utils/blueprints.ts new file mode 100644 index 0000000..1e54087 --- /dev/null +++ b/packages/create-v2-addon-repo/src/utils/blueprints.ts @@ -0,0 +1 @@ +export * from './blueprints/blueprints-root.js'; diff --git a/packages/create-v2-addon-repo/src/utils/blueprints/blueprints-root.ts b/packages/create-v2-addon-repo/src/utils/blueprints/blueprints-root.ts new file mode 100644 index 0000000..237d2fb --- /dev/null +++ b/packages/create-v2-addon-repo/src/utils/blueprints/blueprints-root.ts @@ -0,0 +1,7 @@ +import { join } from 'node:path'; + +import { getFilePath } from '@codemod-utils/blueprints'; + +const fileURL = import.meta.url; + +export const blueprintsRoot = join(getFilePath(fileURL), '../../blueprints'); diff --git a/packages/create-v2-addon-repo/tests/fixtures/typescript/index.ts b/packages/create-v2-addon-repo/tests/fixtures/typescript/index.ts new file mode 100644 index 0000000..28d0868 --- /dev/null +++ b/packages/create-v2-addon-repo/tests/fixtures/typescript/index.ts @@ -0,0 +1,6 @@ +import { convertFixtureToJson } from '@codemod-utils/tests'; + +const inputProject = convertFixtureToJson('typescript/input'); +const outputProject = convertFixtureToJson('typescript/output'); + +export { inputProject, outputProject }; diff --git a/packages/create-v2-addon-repo/tests/fixtures/typescript/input/.gitkeep b/packages/create-v2-addon-repo/tests/fixtures/typescript/input/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/packages/create-v2-addon-repo/tests/fixtures/typescript/output/.gitkeep b/packages/create-v2-addon-repo/tests/fixtures/typescript/output/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/packages/create-v2-addon-repo/tests/fixtures/typescript/output/my-repo/.gitkeep b/packages/create-v2-addon-repo/tests/fixtures/typescript/output/my-repo/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/packages/create-v2-addon-repo/tests/helpers/shared-test-setups/typescript.ts b/packages/create-v2-addon-repo/tests/helpers/shared-test-setups/typescript.ts new file mode 100644 index 0000000..e80e68c --- /dev/null +++ b/packages/create-v2-addon-repo/tests/helpers/shared-test-setups/typescript.ts @@ -0,0 +1,15 @@ +import type { CodemodOptions, Options } from '../../../src/types/index.js'; + +const codemodOptions: CodemodOptions = { + name: 'my-repo', + projectRoot: 'tmp/typescript', +}; + +const options: Options = { + project: { + name: 'my-repo', + }, + projectRoot: 'tmp/typescript', +}; + +export { codemodOptions, options }; diff --git a/packages/create-v2-addon-repo/tests/index/typescript.test.ts b/packages/create-v2-addon-repo/tests/index/typescript.test.ts new file mode 100644 index 0000000..d435a03 --- /dev/null +++ b/packages/create-v2-addon-repo/tests/index/typescript.test.ts @@ -0,0 +1,18 @@ +import { assertFixture, loadFixture, test } from '@codemod-utils/tests'; + +import { runCodemod } from '../../src/index.js'; +import { inputProject, outputProject } from '../fixtures/typescript/index.js'; +import { codemodOptions } from '../helpers/shared-test-setups/typescript.js'; + +test('index > typescript', function () { + loadFixture(inputProject, codemodOptions); + + runCodemod(codemodOptions); + + assertFixture(outputProject, codemodOptions); + + // Check idempotence + runCodemod(codemodOptions); + + assertFixture(outputProject, codemodOptions); +}); diff --git a/packages/create-v2-addon-repo/tests/steps/create-options/typescript.test.ts b/packages/create-v2-addon-repo/tests/steps/create-options/typescript.test.ts new file mode 100644 index 0000000..1765a2d --- /dev/null +++ b/packages/create-v2-addon-repo/tests/steps/create-options/typescript.test.ts @@ -0,0 +1,11 @@ +import { assert, test } from '@codemod-utils/tests'; + +import { createOptions } from '../../../src/steps/index.js'; +import { + codemodOptions, + options, +} from '../../helpers/shared-test-setups/typescript.js'; + +test('steps | create-options > typescript', function () { + assert.deepStrictEqual(createOptions(codemodOptions), options); +}); diff --git a/packages/create-v2-addon-repo/tests/utils/blueprints/blueprints-root.test.ts b/packages/create-v2-addon-repo/tests/utils/blueprints/blueprints-root.test.ts new file mode 100644 index 0000000..df5ed4f --- /dev/null +++ b/packages/create-v2-addon-repo/tests/utils/blueprints/blueprints-root.test.ts @@ -0,0 +1,7 @@ +import { assert, test } from '@codemod-utils/tests'; + +import { blueprintsRoot } from '../../../src/utils/blueprints.js'; + +test('utils | blueprints | blueprints-root', function () { + assert.strictEqual(blueprintsRoot.endsWith('src/blueprints'), true); +}); diff --git a/packages/create-v2-addon-repo/tsconfig.build.json b/packages/create-v2-addon-repo/tsconfig.build.json new file mode 100644 index 0000000..d65c669 --- /dev/null +++ b/packages/create-v2-addon-repo/tsconfig.build.json @@ -0,0 +1,9 @@ +{ + "extends": "@shared-configs/typescript/node18", + "compilerOptions": { + "declaration": false, + "outDir": "dist" + }, + "include": ["bin", "src"], + "exclude": ["src/blueprints"] +} diff --git a/packages/create-v2-addon-repo/tsconfig.json b/packages/create-v2-addon-repo/tsconfig.json new file mode 100644 index 0000000..498b990 --- /dev/null +++ b/packages/create-v2-addon-repo/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@shared-configs/typescript/node18", + "compilerOptions": { + "declaration": false, + "outDir": "dist-for-testing" + }, + "include": ["bin", "src", "tests"], + "exclude": ["src/blueprints", "tests/fixtures"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 80dc143..5268643 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,9 +17,6 @@ importers: '@changesets/get-github-info': specifier: ^0.6.0 version: 0.6.0 - concurrently: - specifier: ^8.2.2 - version: 8.2.2 configs/ember-template-lint: dependencies: @@ -224,6 +221,52 @@ importers: specifier: ^3.3.3 version: 3.3.3 + packages/create-v2-addon-repo: + dependencies: + '@codemod-utils/blueprints': + specifier: ^1.1.5 + version: 1.1.5 + '@codemod-utils/files': + specifier: ^2.0.4 + version: 2.0.4 + yargs: + specifier: ^17.7.2 + version: 17.7.2 + devDependencies: + '@codemod-utils/tests': + specifier: ^1.1.7 + version: 1.1.7(@sondr3/minitest@0.1.2) + '@shared-configs/eslint-config-node': + specifier: workspace:* + version: link:../../configs/eslint/node + '@shared-configs/prettier': + specifier: workspace:* + version: link:../../configs/prettier + '@shared-configs/typescript': + specifier: workspace:* + version: link:../../configs/typescript + '@sondr3/minitest': + specifier: ^0.1.2 + version: 0.1.2 + '@types/node': + specifier: ^18.19.44 + version: 18.19.44 + '@types/yargs': + specifier: ^17.0.33 + version: 17.0.33 + concurrently: + specifier: ^8.2.2 + version: 8.2.2 + eslint: + specifier: ^8.57.0 + version: 8.57.0 + prettier: + specifier: ^3.3.3 + version: 3.3.3 + typescript: + specifier: ^5.5.4 + version: 5.5.4 + packages: '@ampproject/remapping@2.3.0': @@ -377,6 +420,20 @@ packages: '@changesets/write@0.3.1': resolution: {integrity: sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==} + '@codemod-utils/blueprints@1.1.5': + resolution: {integrity: sha512-xNEGw1xp4VjyhwcLiHAnuUhIp3430m0BHl+nfCRXCkWlbCLjIKWsnkywPavK5pUYyp4TnAwVSrNrzHtELQOp7A==} + engines: {node: 18.* || >= 20} + + '@codemod-utils/files@2.0.4': + resolution: {integrity: sha512-j8T1ktraMjDsEUkqLrBrDDjrSHrrxvgfc7qSE+0vFa3lZiszQ2gxjGdVljbwACQO8otle45RTouy/w72gEbXYQ==} + engines: {node: 18.* || >= 20} + + '@codemod-utils/tests@1.1.7': + resolution: {integrity: sha512-WzSG1ChrpcGHjLEOHYTADgPaXp6GalailcVKvoSKRsLe7wmCQ1PpLlhhSmpDzsi0mpeDEFuXlKZj31IJ8ZdZ5A==} + engines: {node: 18.* || >= 20} + peerDependencies: + '@sondr3/minitest': ^0.1.2 + '@csstools/css-parser-algorithms@2.7.1': resolution: {integrity: sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==} engines: {node: ^14 || ^16 || >=18} @@ -473,6 +530,10 @@ packages: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -516,6 +577,10 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + '@pkgr/core@0.1.1': resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -535,6 +600,11 @@ packages: resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} + '@sondr3/minitest@0.1.2': + resolution: {integrity: sha512-Ru43wBFch0GWPCtGTUEh8oGvC1fdAKyOQFmgwOZEFhoyR/+mk3vpRzh5ldEYdfTW4mlqdDNOf6TZWnIb17QOzw==} + engines: {node: '>=18'} + hasBin: true + '@tsconfig/ember@3.0.8': resolution: {integrity: sha512-OVnIsZIt/8q0VEtcdz3rRryNrm6gdJTxXlxefkGIrkZnME0wqslmwHlUEZ7mvh377df9FqBhNKrYNarhCW8zJA==} @@ -553,21 +623,42 @@ packages: '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/fs-extra@9.0.13': + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} + + '@types/glob@8.1.0': + resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} + '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} '@types/minimatch@3.0.5': resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + '@types/node@18.19.44': + resolution: {integrity: sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==} + + '@types/rimraf@3.0.2': + resolution: {integrity: sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==} + '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} '@types/symlink-or-copy@1.2.2': resolution: {integrity: sha512-MQ1AnmTLOncwEf9IVU+B2e4Hchrku5N67NkgcAHW0p3sdzPe0FNMANxEm6OJUzPniEQGkeT3OROLlCwZJLWFZA==} + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + '@typescript-eslint/eslint-plugin@8.1.0': resolution: {integrity: sha512-LlNBaHFCEBPHyD4pZXb35mzjGkuGKXU5eeCA1SxvHfiRES0E82dOounfVpL4DCqYvJEKab0bZIA0gCRpdLKkCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -697,6 +788,10 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -1040,6 +1135,9 @@ packages: dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + editions@1.3.4: resolution: {integrity: sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==} engines: {node: '>=0.8'} @@ -1092,6 +1190,9 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + enhanced-resolve@5.17.1: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} @@ -1377,6 +1478,10 @@ packages: find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + fixturify@3.0.0: + resolution: {integrity: sha512-PFOf/DT9/t2NCiVyiQ5cBMJtGZfWh3aeOV8XVqQQOPBlTv8r6l0k75/hm36JOaiJlrWFk/8aYFyOKAvOkrkjrw==} + engines: {node: 14.* || >= 16.*} + flat-cache@3.2.0: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -1391,6 +1496,14 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -1462,6 +1575,10 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + glob@5.0.15: resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} deprecated: Glob versions prior to v9 are no longer supported @@ -1711,6 +1828,9 @@ packages: resolution: {integrity: sha512-kT1g2zxZ5Tdabtpp9VSdOzW9lb6LXImyWbzbQeTxoRtHhurC9Ej9Wckngr2+uepPL09ky/mJHmN9jeJPML5t6A==} engines: {node: '>=0.12'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -1824,6 +1944,9 @@ packages: lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} @@ -1836,6 +1959,10 @@ packages: matcher-collection@1.1.2: resolution: {integrity: sha512-YQ/teqaOIIfUHedRam08PB3NK7Mjct6BvzRnJmpGDm8uFXpNr1sbY4yuflI5JcEs6COpYA0FpRQhSDBf1tT95g==} + matcher-collection@2.0.1: + resolution: {integrity: sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==} + engines: {node: 6.* || 8.* || >= 10.*} + mathml-tag-names@2.1.3: resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} @@ -1871,6 +1998,10 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -2008,6 +2139,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -2049,6 +2183,10 @@ packages: resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} engines: {node: '>=0.10.0'} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -2336,6 +2474,10 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + string.prototype.matchall@4.0.11: resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} engines: {node: '>= 0.4'} @@ -2538,6 +2680,9 @@ packages: underscore.string@3.3.6: resolution: {integrity: sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==} + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} @@ -2581,6 +2726,10 @@ packages: walk-sync@1.1.4: resolution: {integrity: sha512-nowc9thB/Jg0KW4TgxoRjLLYRPvl3DB/98S89r4ZcJqq2B0alNcKDh6pzLkBSkPMzRSMsJghJHQi79qw0YWEkA==} + walk-sync@3.0.0: + resolution: {integrity: sha512-41TvKmDGVpm2iuH7o+DAOt06yyu/cSHpX3uzAwetzASvlNtVddgIjXIb2DfB/Wa20B1Jo86+1Dv1CraSU7hWdw==} + engines: {node: 10.* || >= 12.*} + wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -2621,6 +2770,10 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -2956,6 +3109,20 @@ snapshots: human-id: 1.0.2 prettier: 2.8.8 + '@codemod-utils/blueprints@1.1.5': + dependencies: + lodash: 4.17.21 + + '@codemod-utils/files@2.0.4': + dependencies: + glob: 10.4.5 + + '@codemod-utils/tests@1.1.7(@sondr3/minitest@0.1.2)': + dependencies: + '@sondr3/minitest': 0.1.2 + fixturify: 3.0.0 + glob: 10.4.5 + '@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1)': dependencies: '@csstools/css-tokenizer': 2.4.1 @@ -3070,6 +3237,15 @@ snapshots: '@humanwhocodes/object-schema@2.0.3': {} + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -3129,6 +3305,9 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@pkgjs/parseargs@0.11.0': + optional: true + '@pkgr/core@0.1.1': {} '@prettier/sync@0.2.1(prettier@3.3.3)': @@ -3141,6 +3320,8 @@ snapshots: '@sindresorhus/merge-streams@2.3.0': {} + '@sondr3/minitest@0.1.2': {} + '@tsconfig/ember@3.0.8': {} '@tsconfig/node18@18.2.4': {} @@ -3160,16 +3341,42 @@ snapshots: '@types/estree@1.0.5': {} + '@types/fs-extra@9.0.13': + dependencies: + '@types/node': 18.19.44 + + '@types/glob@8.1.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 18.19.44 + '@types/json-schema@7.0.15': {} '@types/minimatch@3.0.5': {} + '@types/minimatch@5.1.2': {} + '@types/node@12.20.55': {} + '@types/node@18.19.44': + dependencies: + undici-types: 5.26.5 + + '@types/rimraf@3.0.2': + dependencies: + '@types/glob': 8.1.0 + '@types/node': 18.19.44 + '@types/semver@7.5.8': {} '@types/symlink-or-copy@1.2.2': {} + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + '@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.1.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.11.0 @@ -3336,6 +3543,8 @@ snapshots: dependencies: color-convert: 2.0.1 + ansi-styles@6.2.1: {} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -3763,6 +3972,8 @@ snapshots: no-case: 3.0.4 tslib: 2.6.3 + eastasianwidth@0.2.0: {} + editions@1.3.4: {} electron-to-chromium@1.5.7: {} @@ -3854,6 +4065,8 @@ snapshots: emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} + enhanced-resolve@5.17.1: dependencies: graceful-fs: 4.2.11 @@ -4249,6 +4462,15 @@ snapshots: micromatch: 4.0.7 pkg-dir: 4.2.0 + fixturify@3.0.0: + dependencies: + '@types/fs-extra': 9.0.13 + '@types/minimatch': 3.0.5 + '@types/rimraf': 3.0.2 + fs-extra: 10.1.0 + matcher-collection: 2.0.1 + walk-sync: 3.0.0 + flat-cache@3.2.0: dependencies: flatted: 3.3.1 @@ -4266,6 +4488,17 @@ snapshots: dependencies: is-callable: 1.2.7 + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 @@ -4361,6 +4594,15 @@ snapshots: dependencies: is-glob: 4.0.3 + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 + glob@5.0.15: dependencies: inflight: 1.0.6 @@ -4608,6 +4850,12 @@ snapshots: editions: 1.3.4 textextensions: 2.6.0 + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + js-tokens@4.0.0: {} js-yaml@3.14.1: @@ -4711,6 +4959,8 @@ snapshots: dependencies: tslib: 2.6.3 + lru-cache@10.4.3: {} + lru-cache@4.1.5: dependencies: pseudomap: 1.0.2 @@ -4728,6 +4978,11 @@ snapshots: dependencies: minimatch: 3.1.2 + matcher-collection@2.0.1: + dependencies: + '@types/minimatch': 3.0.5 + minimatch: 3.1.2 + mathml-tag-names@2.1.3: {} mdn-data@2.0.30: {} @@ -4760,6 +5015,8 @@ snapshots: minimist@1.2.8: {} + minipass@7.1.2: {} + mkdirp@0.5.6: dependencies: minimist: 1.2.8 @@ -4890,6 +5147,8 @@ snapshots: p-try@2.2.0: {} + package-json-from-dist@1.0.0: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -4921,6 +5180,11 @@ snapshots: dependencies: path-root-regex: 0.1.2 + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + path-type@4.0.0: {} path-type@5.0.0: {} @@ -5186,6 +5450,12 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + string.prototype.matchall@4.0.11: dependencies: call-bind: 1.0.7 @@ -5457,6 +5727,8 @@ snapshots: sprintf-js: 1.1.3 util-deprecate: 1.0.2 + undici-types@5.26.5: {} + unicorn-magic@0.1.0: {} universalify@0.1.2: {} @@ -5497,6 +5769,13 @@ snapshots: ensure-posix-path: 1.1.1 matcher-collection: 1.1.2 + walk-sync@3.0.0: + dependencies: + '@types/minimatch': 3.0.5 + ensure-posix-path: 1.1.1 + matcher-collection: 2.0.1 + minimatch: 3.1.2 + wcwidth@1.0.1: dependencies: defaults: 1.0.4 @@ -5547,6 +5826,12 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + wrappy@1.0.2: {} write-file-atomic@5.0.1: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 21a83f8..9fdb336 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,2 +1,3 @@ packages: - configs/** + - packages/create-v2-addon-repo