From 72a8b1e2fe82e01e0c4e8fbfafacd2d194ebec54 Mon Sep 17 00:00:00 2001 From: koraybilgi Date: Sat, 6 Dec 2025 21:46:11 +0300 Subject: [PATCH 1/5] feat: advanced format features --- .eslintrc.cjs | 18 + README.md | 65 +- eslint.config.cjs | 29 + images/icon-128.png | Bin 0 -> 8287 bytes images/icon-256.png | Bin 0 -> 10137 bytes images/icon.png | Bin 0 -> 10137 bytes package.json | 127 ++- src/extension.ts | 122 ++- src/test/runTest.ts | 2 +- src/test/suite/extension.test.ts | 13 +- src/test/suite/index.ts | 16 +- tsconfig.json | 12 +- yarn.lock | 1376 ++++++++++++++++++++++++++++++ 13 files changed, 1730 insertions(+), 50 deletions(-) create mode 100644 .eslintrc.cjs create mode 100644 eslint.config.cjs create mode 100644 images/icon-128.png create mode 100644 images/icon-256.png create mode 100644 images/icon.png create mode 100644 yarn.lock diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..71fd5e5 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,18 @@ +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + parserOptions: { + project: './tsconfig.json', + tsconfigRootDir: __dirname, + ecmaVersion: 2020, + sourceType: 'module' + }, + plugins: ['@typescript-eslint'], + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended' + ], + rules: { + // keep default rules; you can customize as needed + } +}; diff --git a/README.md b/README.md index e3af1aa..dfa5c0b 100644 --- a/README.md +++ b/README.md @@ -28,4 +28,67 @@ To this ``` -![Extension in action](./resources/animation.gif) \ No newline at end of file +![Extension in action](./resources/animation.gif) + +## Right-click and Editor Title + +You can now access `Paste as String Array` from the editor's context (right-click) menu and from the editor title menu. Use the right-click menu when you want to paste directly into the editor without opening the command palette. + +## Icons and Marketplace Assets + +This repository includes the extension icon in several sizes to make publishing to the VS Code Marketplace easier. + +- `images/icon.png` — original downloaded icon (used as the package `icon`). +- `images/icon-128.png` — 128×128 (recommended for Marketplace display). +- `images/icon-256.png` — 256×256 (higher-resolution asset). + +When packaging the extension with `vsce` the `icon` field in `package.json` points to `images/icon.png` and will be included in the `.vsix`: + +``` +"icon": "images/icon.png" +``` + +Marketplace tips: +- When publishing on the Marketplace you can upload additional images (128×128 or 256×256) in the publisher portal — include `icon-128.png`/`icon-256.png` there for best results. +- Keep the images in `images/` so contributors see the actual assets and you can easily regenerate or replace them. + +If you want, I can also: +- Repackage a new `.vsix` including these icons. +- Add a small `publish` section to `README.md` with exact steps for `vsce package` and `vsce publish`. + +## Publishing + +To package the extension locally and create a `.vsix` (includes the `icon` referenced in `package.json`): + +```bash +# create the package (outputs e.g. advanced-paste-as-string-array-1.0.0.vsix) +npx vsce package +# or using yarn +yarn dlx vsce package +``` + +To publish the extension to the VS Code Marketplace you need a publisher and a Personal Access Token. + +Basic publish steps: + +1. Install `vsce` (optional if using `npx`/`yarn dlx`): + +```bash +npm install -g vsce +``` + +2. Create a Personal Access Token in your Azure DevOps account (PAT) and set it into an environment variable: + +```bash +export VSCE_PAT="" +``` + +3. Publish (example — publish a patch): + +```bash +npx vsce publish --pat $VSCE_PAT --packagePath ./advanced-paste-as-string-array-1.0.0.vsix +# or increment and publish a patch version directly: +npx vsce publish patch --pat $VSCE_PAT +``` + +See the `vsce` docs for more publish options and authentication details: https://code.visualstudio.com/api/working-with-extensions/publishing-extension \ No newline at end of file diff --git a/eslint.config.cjs b/eslint.config.cjs new file mode 100644 index 0000000..28504e5 --- /dev/null +++ b/eslint.config.cjs @@ -0,0 +1,29 @@ +module.exports = [ + // ignore build artifacts + { + ignores: ['out/**', 'node_modules/**'] + }, + // TypeScript files + { + files: ['**/*.ts'], + languageOptions: { + parser: require('@typescript-eslint/parser'), + parserOptions: { + project: './tsconfig.json', + tsconfigRootDir: __dirname, + ecmaVersion: 2020, + sourceType: 'module' + } + }, + plugins: { + '@typescript-eslint': require('@typescript-eslint/eslint-plugin') + }, + rules: { + // Keep a minimal set of sensible rules; you can expand this later. + 'no-console': 'off', + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': ['warn', { 'argsIgnorePattern': '^_' }], + '@typescript-eslint/naming-convention': 'off' + } + } +]; diff --git a/images/icon-128.png b/images/icon-128.png new file mode 100644 index 0000000000000000000000000000000000000000..058070964291ca17a9e8d46da008f621d0218891 GIT binary patch literal 8287 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 BLp}fi literal 0 HcmV?d00001 diff --git a/images/icon-256.png b/images/icon-256.png new file mode 100644 index 0000000000000000000000000000000000000000..5a85be0901e2cf35d07f32c50709cbce3267e2c0 GIT binary patch literal 10137 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'promptForSeparator', true); + const defaultSeparator = config.get('defaultSeparator', 'newline'); + const defaultSpecialSeparator = config.get('defaultSpecialSeparator', ','); + + // Determine separator choice (ask user if configured to prompt) + let separatorChoice: 'newline' | 'whitespace' |'special' = 'newline'; + let specialSeparatorValue = defaultSpecialSeparator; + if (promptForSeparator) { + const sepPick = await vscode.window.showQuickPick([ + { label: 'New line', detail: 'Split on new lines', value: 'newline' }, + { label: 'Whitespace', detail: 'Split on any whitespace', value: 'whitespace' }, + { label: 'Special character', detail: 'Provide a custom separator', value: 'special' } + ].map(i => ({ label: i.label, description: i.detail, value: (i as any).value } as any)), { + placeHolder: 'Choose separator for pasted text' + }); + + if (!sepPick) { + separatorChoice = (defaultSeparator === 'newline' ? 'newline' : defaultSeparator === 'special' ? 'special' : 'whitespace'); + } else { + separatorChoice = sepPick.value === 'newline' ? 'newline' : sepPick.value === 'special' ? 'special' : 'whitespace'; + if (separatorChoice === 'special') { + const input = await vscode.window.showInputBox({ + prompt: 'Enter the special separator string (e.g. "," or ";")', + value: defaultSpecialSeparator + }); + if (!input) { + // cancelled, fall back to default separator + separatorChoice = (defaultSeparator === 'newline' ? 'newline' : defaultSeparator === 'special' ? 'special' : 'whitespace'); + specialSeparatorValue = defaultSpecialSeparator; + } else { + specialSeparatorValue = input; + } + } + } + } else { + separatorChoice = (defaultSeparator === 'newline' ? 'newline' : defaultSeparator === 'special' ? 'special' : 'whitespace'); + specialSeparatorValue = defaultSpecialSeparator; + } + + // Split clipboard content according to chosen separator + let items: string[] = []; + if (separatorChoice === 'newline') { + items = clipboardContent + .split(/\r?\n+/) + .map(s => s.trim()) + .filter(s => s !== ''); + } else if (separatorChoice === 'whitespace') { + items = clipboardContent .trim() - .split(" ") - .map((value) => value.toString()) - ).slice(1, -1); + .split(/\s+/) + .filter((value) => value !== "") + .map((value) => value.toString()); + } else { + // special separator - split by the exact string, then trim + const sep = specialSeparatorValue; + if (sep === '') { + items = [clipboardContent.trim()].filter(s => s !== ''); + } else { + items = clipboardContent + .split(sep) + .map(s => s.trim()) + .filter(s => s !== ''); + } + } + + const promptForQuote = config.get('promptForQuote', true); + const defaultQuote = config.get('defaultQuote', 'single'); + + let chosen: 'single' | 'double' = 'single'; + + if (promptForQuote) { + const pick = await vscode.window.showQuickPick([ + { label: "Single quotes (')", detail: 'Use single quotes', value: 'single' }, + { label: 'Double quotes (\")', detail: 'Use double quotes', value: 'double' } + ].map(i => ({ label: i.label, description: i.detail, value: (i as any).value } as any)), { + placeHolder: 'Choose quote style for pasted strings' + }); + + if (!pick) { + // user cancelled the pick -> use default + chosen = (defaultQuote === 'single') ? 'single' : 'double'; + } else { + chosen = pick.value === 'single' ? 'single' : 'double'; + } + } else { + chosen = (defaultQuote === 'single') ? 'single' : 'double'; + } + + let str: string; + if (chosen === 'double') { + // use JSON.stringify so escapes for double-quoted strings are correct + str = JSON.stringify(items).slice(1, -1); + } else { + // build single-quoted representation: convert each item from JSON escaping + str = items + .map((s) => { + const jsEscaped = JSON.stringify(s); // "..." + let inner = jsEscaped.slice(1, -1); + // unescape escaped double quotes so they appear raw inside single-quoted string + inner = inner.replace(/\\"/g, '"'); + // escape single quotes for single-quoted output + inner = inner.replace(/'/g, "\\'"); + return "'" + inner + "'"; + }) + .join(', '); + } editor.selections.forEach((selection, _) => { editor.edit((editBuilder) => { diff --git a/src/test/runTest.ts b/src/test/runTest.ts index 27b3ceb..93a4441 100644 --- a/src/test/runTest.ts +++ b/src/test/runTest.ts @@ -15,7 +15,7 @@ async function main() { // Download VS Code, unzip it and run the integration test await runTests({ extensionDevelopmentPath, extensionTestsPath }); } catch (err) { - console.error('Failed to run tests'); + console.error('Failed to run tests', err); process.exit(1); } } diff --git a/src/test/suite/extension.test.ts b/src/test/suite/extension.test.ts index 83307ac..cebe9a4 100644 --- a/src/test/suite/extension.test.ts +++ b/src/test/suite/extension.test.ts @@ -1,21 +1,26 @@ -/* eslint-disable @typescript-eslint/naming-convention */ +// Test suite for extension import * as assert from "assert"; // You can import and use all API from the 'vscode' module // as well as import your extension to test it import * as vscode from "vscode"; // import * as myExtension from '../../extension'; -import * as extension from "../../extension"; +// extension import not needed in these tests import * as path from "path"; suite("Extension Test Suite", async () => { vscode.window.showInformationMessage("Start all tests."); + // Ensure tests don't trigger interactive prompts (quotes and separator) + await vscode.workspace.getConfiguration('paste-as-string-array').update('promptForQuote', false, vscode.ConfigurationTarget.Global); + await vscode.workspace.getConfiguration('paste-as-string-array').update('defaultQuote', 'double', vscode.ConfigurationTarget.Global); + await vscode.workspace.getConfiguration('paste-as-string-array').update('promptForSeparator', false, vscode.ConfigurationTarget.Global); + await vscode.workspace.getConfiguration('paste-as-string-array').update('defaultSeparator', 'whitespace', vscode.ConfigurationTarget.Global); test("Paste", async () => { let testStrings = { "--arg1": `"--arg1"`, "--arg1 --arg2 --arg3": `"--arg1","--arg2","--arg3"`, - "--arg1 1 --arg2 2 --arg3 3": `"--arg1","1","--arg2","2","--arg3","3"`, + "--arg1 1 --arg2 2 --arg3 3": `"--arg1","1","--arg2","2","--arg3","3"`, }; for (let [key, value] of Object.entries(testStrings)) { let filepath = path.join(__dirname, '../../../resources/test.txt'); @@ -25,7 +30,7 @@ suite("Extension Test Suite", async () => { await vscode.env.clipboard.writeText(key); let editor = vscode.window.activeTextEditor!; - await vscode.commands.executeCommand("paste-as-string-array.pasteAsStringArray", vscode.window.activeTextEditor!, null); + await vscode.commands.executeCommand("advanced-paste-as-string-array.pasteAsStringArray", vscode.window.activeTextEditor!, null); await new Promise(f => setTimeout(f, 100)); await vscode.commands.executeCommand("editor.action.selectAll", new vscode.Position(0, 0)); diff --git a/src/test/suite/index.ts b/src/test/suite/index.ts index be32db8..22c202e 100644 --- a/src/test/suite/index.ts +++ b/src/test/suite/index.ts @@ -1,6 +1,6 @@ import * as path from 'path'; import * as Mocha from 'mocha'; -import * as glob from 'glob'; +import { glob } from 'glob'; export function run(): Promise { // Create the mocha test @@ -12,17 +12,13 @@ export function run(): Promise { const testsRoot = path.resolve(__dirname, '..'); return new Promise((c, e) => { - glob('**/**.test.js', { cwd: testsRoot }, (err, files) => { - if (err) { - return e(err); - } - + glob('**/**.test.js', { cwd: testsRoot }).then((files: string[]) => { // Add files to the test suite - files.forEach(f => mocha.addFile(path.resolve(testsRoot, f))); + files.forEach((f: string) => mocha.addFile(path.resolve(testsRoot, f))); try { // Run the mocha test - mocha.run(failures => { + mocha.run((failures: number) => { if (failures > 0) { e(new Error(`${failures} tests failed.`)); } else { @@ -31,8 +27,8 @@ export function run(): Promise { }); } catch (err) { console.error(err); - e(err); + e(err as Error); } - }); + }).catch((err: Error) => e(err)); }); } diff --git a/tsconfig.json b/tsconfig.json index 315af7e..d19fd62 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,10 +8,18 @@ ], "sourceMap": true, "rootDir": "src", - "strict": true /* enable all strict type-checking options */ + "strict": true, /* enable all strict type-checking options */ + "skipLibCheck": true /* ignore declaration (.d.ts) errors in node_modules */ /* Additional Checks */ // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ // "noUnusedParameters": true, /* Report errors on unused parameters. */ - } + }, + "exclude": [ + "node_modules", + "out", + "dist" + ] + } + diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..e3b5fbb --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1376 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@eslint-community/eslint-utils@^4.7.0", "@eslint-community/eslint-utils@^4.8.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz#7308df158e064f0dd8b8fdb58aa14fa2a7f913b3" + integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": + version "4.12.2" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" + integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== + +"@eslint/config-array@^0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.1.tgz#7d1b0060fea407f8301e932492ba8c18aff29713" + integrity sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA== + dependencies: + "@eslint/object-schema" "^2.1.7" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/config-helpers@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.4.2.tgz#1bd006ceeb7e2e55b2b773ab318d300e1a66aeda" + integrity sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw== + dependencies: + "@eslint/core" "^0.17.0" + +"@eslint/core@^0.17.0": + version "0.17.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.17.0.tgz#77225820413d9617509da9342190a2019e78761c" + integrity sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ== + dependencies: + "@types/json-schema" "^7.0.15" + +"@eslint/eslintrc@^3.3.1": + version "3.3.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.3.tgz#26393a0806501b5e2b6a43aa588a4d8df67880ac" + integrity sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^10.0.1" + globals "^14.0.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.1" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@9.39.1": + version "9.39.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.39.1.tgz#0dd59c3a9f40e3f1882975c321470969243e0164" + integrity sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw== + +"@eslint/object-schema@^2.1.7": + version "2.1.7" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.7.tgz#6e2126a1347e86a4dedf8706ec67ff8e107ebbad" + integrity sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA== + +"@eslint/plugin-kit@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz#9779e3fd9b7ee33571a57435cf4335a1794a6cb2" + integrity sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA== + dependencies: + "@eslint/core" "^0.17.0" + levn "^0.4.1" + +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.6": + version "0.16.7" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.7.tgz#822cb7b3a12c5a240a24f621b5a2413e27a45f26" + integrity sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ== + dependencies: + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.4.0" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/retry@^0.4.0", "@humanwhocodes/retry@^0.4.2": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" + integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== + +"@isaacs/balanced-match@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29" + integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ== + +"@isaacs/brace-expansion@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz#4b3dabab7d8e75a429414a96bd67bf4c1d13e0f3" + integrity sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA== + dependencies: + "@isaacs/balanced-match" "^4.0.1" + +"@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" + +"@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== + +"@types/estree@^1.0.6": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + +"@types/json-schema@^7.0.15": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/minimatch@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-6.0.0.tgz#4d207b1cc941367bdcd195a3a781a7e4fc3b1e03" + integrity sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA== + dependencies: + minimatch "*" + +"@types/mocha@^10.0.10": + version "10.0.10" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.10.tgz#91f62905e8d23cbd66225312f239454a23bebfa0" + integrity sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q== + +"@types/node@^24.10.1": + version "24.10.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.10.1.tgz#91e92182c93db8bd6224fca031e2370cef9a8f01" + integrity sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ== + dependencies: + undici-types "~7.16.0" + +"@types/vscode@^1.71.0": + version "1.106.1" + resolved "https://registry.yarnpkg.com/@types/vscode/-/vscode-1.106.1.tgz#c8c9591b4b9debd8cf67b46d5e5ef54bdec9b805" + integrity sha512-R/HV8u2h8CAddSbX8cjpdd7B8/GnE4UjgjpuGuHcbp1xV6yh4OeqU4L1pKjlwujCrSFS0MOpwJAIs/NexMB1fQ== + +"@typescript-eslint/eslint-plugin@^8.48.1": + version "8.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.48.1.tgz#c772d1dbdd97cfddf85f5a161a97783233643631" + integrity sha512-X63hI1bxl5ohelzr0LY5coufyl0LJNthld+abwxpCoo6Gq+hSqhKwci7MUWkXo67mzgUK6YFByhmaHmUcuBJmA== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.48.1" + "@typescript-eslint/type-utils" "8.48.1" + "@typescript-eslint/utils" "8.48.1" + "@typescript-eslint/visitor-keys" "8.48.1" + graphemer "^1.4.0" + ignore "^7.0.0" + natural-compare "^1.4.0" + ts-api-utils "^2.1.0" + +"@typescript-eslint/parser@^8.48.1": + version "8.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.48.1.tgz#4e3c66d9ec20683ec142417fafeadab61c479c3f" + integrity sha512-PC0PDZfJg8sP7cmKe6L3QIL8GZwU5aRvUFedqSIpw3B+QjRSUZeeITC2M5XKeMXEzL6wccN196iy3JLwKNvDVA== + dependencies: + "@typescript-eslint/scope-manager" "8.48.1" + "@typescript-eslint/types" "8.48.1" + "@typescript-eslint/typescript-estree" "8.48.1" + "@typescript-eslint/visitor-keys" "8.48.1" + debug "^4.3.4" + +"@typescript-eslint/project-service@8.48.1": + version "8.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.48.1.tgz#cfe1741613b9112d85ae766de9e09b27a7d3f2f1" + integrity sha512-HQWSicah4s9z2/HifRPQ6b6R7G+SBx64JlFQpgSSHWPKdvCZX57XCbszg/bapbRsOEv42q5tayTYcEFpACcX1w== + dependencies: + "@typescript-eslint/tsconfig-utils" "^8.48.1" + "@typescript-eslint/types" "^8.48.1" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@8.48.1": + version "8.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.48.1.tgz#8bc70643e7cca57864b1ff95dd350fc27756bec0" + integrity sha512-rj4vWQsytQbLxC5Bf4XwZ0/CKd362DkWMUkviT7DCS057SK64D5lH74sSGzhI6PDD2HCEq02xAP9cX68dYyg1w== + dependencies: + "@typescript-eslint/types" "8.48.1" + "@typescript-eslint/visitor-keys" "8.48.1" + +"@typescript-eslint/tsconfig-utils@8.48.1", "@typescript-eslint/tsconfig-utils@^8.48.1": + version "8.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.48.1.tgz#68139ce2d258f984e2b33a95389158f1212af646" + integrity sha512-k0Jhs4CpEffIBm6wPaCXBAD7jxBtrHjrSgtfCjUvPp9AZ78lXKdTR8fxyZO5y4vWNlOvYXRtngSZNSn+H53Jkw== + +"@typescript-eslint/type-utils@8.48.1": + version "8.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.48.1.tgz#955bd3ddd648450f0a627925ff12ade63fb7516d" + integrity sha512-1jEop81a3LrJQLTf/1VfPQdhIY4PlGDBc/i67EVWObrtvcziysbLN3oReexHOM6N3jyXgCrkBsZpqwH0hiDOQg== + dependencies: + "@typescript-eslint/types" "8.48.1" + "@typescript-eslint/typescript-estree" "8.48.1" + "@typescript-eslint/utils" "8.48.1" + debug "^4.3.4" + ts-api-utils "^2.1.0" + +"@typescript-eslint/types@8.48.1", "@typescript-eslint/types@^8.48.1": + version "8.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.48.1.tgz#a9ff808f5f798f28767d5c0b015a88fa7ce46bd7" + integrity sha512-+fZ3LZNeiELGmimrujsDCT4CRIbq5oXdHe7chLiW8qzqyPMnn1puNstCrMNVAqwcl2FdIxkuJ4tOs/RFDBVc/Q== + +"@typescript-eslint/typescript-estree@8.48.1": + version "8.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.48.1.tgz#0d0e31fc47c5796c6463ab50cde19e1718d465b1" + integrity sha512-/9wQ4PqaefTK6POVTjJaYS0bynCgzh6ClJHGSBj06XEHjkfylzB+A3qvyaXnErEZSaxhIo4YdyBgq6j4RysxDg== + dependencies: + "@typescript-eslint/project-service" "8.48.1" + "@typescript-eslint/tsconfig-utils" "8.48.1" + "@typescript-eslint/types" "8.48.1" + "@typescript-eslint/visitor-keys" "8.48.1" + debug "^4.3.4" + minimatch "^9.0.4" + semver "^7.6.0" + tinyglobby "^0.2.15" + ts-api-utils "^2.1.0" + +"@typescript-eslint/utils@8.48.1": + version "8.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.48.1.tgz#6cf7b99e0943b33a983ef687b9a86b65578b5c32" + integrity sha512-fAnhLrDjiVfey5wwFRwrweyRlCmdz5ZxXz2G/4cLn0YDLjTapmN4gcCsTBR1N2rWnZSDeWpYtgLDsJt+FpmcwA== + dependencies: + "@eslint-community/eslint-utils" "^4.7.0" + "@typescript-eslint/scope-manager" "8.48.1" + "@typescript-eslint/types" "8.48.1" + "@typescript-eslint/typescript-estree" "8.48.1" + +"@typescript-eslint/visitor-keys@8.48.1": + version "8.48.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.48.1.tgz#247d4fe6dcc044f45b7f1c15110bf95e5d73b334" + integrity sha512-BmxxndzEWhE4TIEEMBs8lP3MBWN3jFPs/p6gPm/wkv02o41hI6cq9AuSmGAaTTHPtA1FTi2jBre4A9rm5ZmX+Q== + dependencies: + "@typescript-eslint/types" "8.48.1" + eslint-visitor-keys "^4.2.1" + +"@vscode/test-electron@^2.1.5": + version "2.5.2" + resolved "https://registry.yarnpkg.com/@vscode/test-electron/-/test-electron-2.5.2.tgz#f7d4078e8230ce9c94322f2a29cc16c17954085d" + integrity sha512-8ukpxv4wYe0iWMRQU18jhzJOHkeGKbnw7xWRX3Zw1WJA4cEKbHcmmLPdPrPtL6rhDcrlCZN+xKRpv09n4gRHYg== + dependencies: + http-proxy-agent "^7.0.2" + https-proxy-agent "^7.0.5" + jszip "^3.10.1" + ora "^8.1.0" + semver "^7.6.2" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.15.0: + version "8.15.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + +agent-base@^7.1.0, agent-base@^7.1.2: + version "7.1.4" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" + integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.2.2" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1" + integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.3" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.3.tgz#c044d5dcc521a076413472597a1acb1f103c4041" + integrity sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +brace-expansion@^1.1.7: + version "1.1.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== + dependencies: + balanced-match "^1.0.0" + +browser-stdout@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^5.3.0: + version "5.6.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.6.2.tgz#b1238b6e23ea337af71c7f8a295db5af0c158aea" + integrity sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA== + +chokidar@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" + integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== + dependencies: + readdirp "^4.0.1" + +cli-cursor@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-5.0.0.tgz#24a4831ecf5a6b01ddeb32fb71a4b2088b0dce38" + integrity sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw== + dependencies: + restore-cursor "^5.0.0" + +cli-spinners@^2.9.2: + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5: + version "4.4.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== + dependencies: + ms "^2.1.3" + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +diff@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-7.0.0.tgz#3fb34d387cd76d803f6eebea67b921dab0182a9a" + integrity sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw== + +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== + +emoji-regex@^10.3.0: + version "10.6.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.6.0.tgz#bf3d6e8f7f8fd22a65d9703475bc0147357a6b0d" + integrity sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A== + +emoji-regex@^8.0.0: + version "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== + +escalade@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-scope@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82" + integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint-visitor-keys@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" + integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== + +eslint@^9.39.1: + version "9.39.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.39.1.tgz#be8bf7c6de77dcc4252b5a8dcb31c2efff74a6e5" + integrity sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g== + dependencies: + "@eslint-community/eslint-utils" "^4.8.0" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.21.1" + "@eslint/config-helpers" "^0.4.2" + "@eslint/core" "^0.17.0" + "@eslint/eslintrc" "^3.3.1" + "@eslint/js" "9.39.1" + "@eslint/plugin-kit" "^0.4.1" + "@humanfs/node" "^0.16.6" + "@humanwhocodes/module-importer" "^1.0.1" + "@humanwhocodes/retry" "^0.4.2" + "@types/estree" "^1.0.6" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.6" + debug "^4.3.2" + escape-string-regexp "^4.0.0" + eslint-scope "^8.4.0" + eslint-visitor-keys "^4.2.1" + espree "^10.4.0" + esquery "^1.5.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^8.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + json-stable-stringify-without-jsonify "^1.0.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + +espree@^10.0.1, espree@^10.4.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837" + integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== + dependencies: + acorn "^8.15.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.2.1" + +esquery@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== + dependencies: + flat-cache "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.4" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.2.9: + version "3.3.3" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" + integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== + +foreground-child@^3.1.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== + dependencies: + cross-spawn "^7.0.6" + signal-exit "^4.0.1" + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-east-asian-width@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz#9bc4caa131702b4b61729cb7e42735bc550c9ee6" + integrity sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q== + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^10.4.5: + version "10.5.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.5.0.tgz#8ec0355919cd3338c28428a23d4f24ecc5fe738c" + integrity sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg== + 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@^13.0.0: + version "13.0.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-13.0.0.tgz#9d9233a4a274fc28ef7adce5508b7ef6237a1be3" + integrity sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA== + dependencies: + minimatch "^10.1.1" + minipass "^7.1.2" + path-scurry "^2.0.0" + +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +http-proxy-agent@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + +https-proxy-agent@^7.0.5: + version "7.0.6" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" + integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== + dependencies: + agent-base "^7.1.2" + debug "4" + +ignore@^5.2.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +ignore@^7.0.0: + version "7.0.5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.5.tgz#4cb5f6cd7d4c7ab0365738c7aea888baa6d7efd9" + integrity sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg== + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + +import-fresh@^3.2.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" + integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-2.0.0.tgz#40c57614593826da1100ade6059778d597f16e90" + integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-unicode-supported@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714" + integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ== + +is-unicode-supported@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz#09f0ab0de6d3744d48d265ebb98f65d11f2a9b3a" + integrity sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +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-yaml@^4.1.0, js-yaml@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" + integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== + dependencies: + argparse "^2.0.1" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +jszip@^3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" + integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + setimmediate "^1.0.5" + +keyv@^4.5.4: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log-symbols@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-6.0.0.tgz#bb95e5f05322651cac30c0feb6404f9f2a8a9439" + integrity sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw== + dependencies: + chalk "^5.3.0" + is-unicode-supported "^1.3.0" + +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@^11.0.0: + version "11.2.4" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.2.4.tgz#ecb523ebb0e6f4d837c807ad1abaea8e0619770d" + integrity sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg== + +mimic-function@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mimic-function/-/mimic-function-5.0.1.tgz#acbe2b3349f99b9deaca7fb70e48b83e94e67076" + integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== + +minimatch@*, minimatch@^10.1.1: + version "10.1.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.1.1.tgz#e6e61b9b0c1dcab116b5a7d1458e8b6ae9e73a55" + integrity sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ== + dependencies: + "@isaacs/brace-expansion" "^5.0.0" + +minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +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== + dependencies: + brace-expansion "^2.0.1" + +"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== + +mocha@^11.7.5: + version "11.7.5" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-11.7.5.tgz#58f5bbfa5e0211ce7e5ee6128107cefc2515a627" + integrity sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig== + dependencies: + browser-stdout "^1.3.1" + chokidar "^4.0.1" + debug "^4.3.5" + diff "^7.0.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^10.4.5" + he "^1.2.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^9.0.5" + ms "^2.1.3" + picocolors "^1.1.1" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^9.2.0" + yargs "^17.7.2" + yargs-parser "^21.1.1" + yargs-unparser "^2.0.0" + +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +onetime@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-7.0.0.tgz#9f16c92d8c9ef5120e3acd9dd9957cceecc1ab60" + integrity sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ== + dependencies: + mimic-function "^5.0.0" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +ora@^8.1.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-8.2.0.tgz#8fbbb7151afe33b540dd153f171ffa8bd38e9861" + integrity sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw== + dependencies: + chalk "^5.3.0" + cli-cursor "^5.0.0" + cli-spinners "^2.9.2" + is-interactive "^2.0.0" + is-unicode-supported "^2.0.0" + log-symbols "^6.0.0" + stdin-discarder "^0.2.2" + string-width "^7.2.0" + strip-ansi "^7.1.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +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== + +pako@~1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +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-scurry@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.1.tgz#4b6572376cfd8b811fca9cd1f5c24b3cbac0fe10" + integrity sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA== + dependencies: + lru-cache "^11.0.0" + minipass "^7.1.2" + +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdirp@^4.0.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" + integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +restore-cursor@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-5.1.0.tgz#0766d95699efacb14150993f55baf0953ea1ebe7" + integrity sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA== + dependencies: + onetime "^7.0.0" + signal-exit "^4.1.0" + +safe-buffer@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +semver@^7.6.0, semver@^7.6.2: + version "7.7.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" + integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== + +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^4.0.1, signal-exit@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +stdin-discarder@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/stdin-discarder/-/stdin-discarder-0.2.2.tgz#390037f44c4ae1a1ae535c5fe38dc3aba8d997be" + integrity sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ== + +"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@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + 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@^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.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.2.0.tgz#b5bb8e2165ce275d4d43476dd2700ad9091db6dc" + integrity sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ== + dependencies: + emoji-regex "^10.3.0" + get-east-asian-width "^1.0.0" + strip-ansi "^7.1.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.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@^6.0.0, 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@^7.0.1, strip-ansi@^7.1.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.2.tgz#132875abde678c7ea8d691533f2e7e22bb744dba" + integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA== + dependencies: + ansi-regex "^6.0.1" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +tinyglobby@^0.2.15: + version "0.2.15" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + +ts-api-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" + integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +typescript@^5.9.3: + version "5.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f" + integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== + +undici-types@~7.16.0: + version "7.16.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46" + integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +workerpool@^9.2.0: + version "9.3.4" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-9.3.4.tgz#f6c92395b2141afd78e2a889e80cb338fe9fca41" + integrity sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg== + +"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@^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@^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" + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs-unparser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 60e2d77c77d2f0043b6a50b5e7b8119e6ef29c9e Mon Sep 17 00:00:00 2001 From: koraybilgi Date: Sun, 7 Dec 2025 21:26:23 +0300 Subject: [PATCH 2/5] fix: options, interruption and readme --- README.md | 115 +++++++++++++++++++++----------------------- images/icon-128.png | Bin 8287 -> 7515 bytes images/icon-256.png | Bin 10137 -> 11005 bytes images/icon.png | Bin 10137 -> 11005 bytes package.json | 33 +++++++------ src/extension.ts | 14 +++--- 6 files changed, 78 insertions(+), 84 deletions(-) diff --git a/README.md b/README.md index dfa5c0b..8c34771 100644 --- a/README.md +++ b/README.md @@ -1,94 +1,87 @@ +# Advanced Paste as String Array +![CI](https://github.com/koraybilgi/vscode-paste-as-string-array/actions/workflows/ci.yaml/badge.svg) +**Paste anything — instantly format it as a string array.** +This VS Code extension converts whatever you've copied into a clean, ready-to-use **string array**, complete with your chosen delimiter and quote style. -# paste-as-string-array -![CI](https://github.com/shadyboukhary/vscode-paste-as-string-array/actions/workflows/ci.yaml/badge.svg) +Perfect for developers who frequently transfer data from spreadsheets, logs, or file systems into code. -Tired of having to convert command line arguments to an array of strings for use in `launch.json` in VSCode? You're not alone. This extension solves this issue by automatically converting arguments to fit VSCode expectations. +--- -## Features +## ✨ What It Does -### Paste As String Array +Copy text from virtually any source: -Simply execute the `Paste as String Array` command in Ctrl+shift+P or use the following shortcuts +* Excel or Google Sheets +* Multi-line strings +* Single-line inputs +* Terminal output +* OS folder contents +* File lists, URLs, logs, etc. -* Windows: Ctrl+Alt+V -* Linux: Ctrl+Alt+V -* MacOS: Cmd+Shift+V - -It will convert an example cmdline from this: +Then paste it as a neatly formatted string array, for example: ``` ---arg1 1 --arg2 2 --arg3 3 --args4 1 2 3 test --args5 test1 test2 test3 test4 +'First', 'Second', 'Third', 'And The Last Item' ``` -To this -``` -"--arg1","1","--arg2","2","--arg3","3","--args4","1","2","3","test","--args5","test1","test2","test3","test4" -``` +No more manual find/replace — just paste and code. +### Supported Options -![Extension in action](./resources/animation.gif) +* **Quote style:** single `' '` or double `" "` +* **Separator:** whitespace, newline, or custom +* **Prompt before pasting:** use default settings or choose options each time. -## Right-click and Editor Title +--- -You can now access `Paste as String Array` from the editor's context (right-click) menu and from the editor title menu. Use the right-click menu when you want to paste directly into the editor without opening the command palette. +## 🚀 Usage -## Icons and Marketplace Assets +### 1- Context Menu -This repository includes the extension icon in several sizes to make publishing to the VS Code Marketplace easier. +Right-click inside the editor and select: +`Paste As` > `String Array` -- `images/icon.png` — original downloaded icon (used as the package `icon`). -- `images/icon-128.png` — 128×128 (recommended for Marketplace display). -- `images/icon-256.png` — 256×256 (higher-resolution asset). +### 2- Command Palette -When packaging the extension with `vsce` the `icon` field in `package.json` points to `images/icon.png` and will be included in the `.vsix`: +Run: +`Paste as String Array` -``` -"icon": "images/icon.png" -``` +### 3- Editor Title Button -Marketplace tips: -- When publishing on the Marketplace you can upload additional images (128×128 or 256×256) in the publisher portal — include `icon-128.png`/`icon-256.png` there for best results. -- Keep the images in `images/` so contributors see the actual assets and you can easily regenerate or replace them. +A dedicated poop ( Poop Icon ) button appears in the editor title for quick access. -If you want, I can also: -- Repackage a new `.vsix` including these icons. -- Add a small `publish` section to `README.md` with exact steps for `vsce package` and `vsce publish`. -## Publishing +--- +## ⚙️ Settings -To package the extension locally and create a `.vsix` (includes the `icon` referenced in `package.json`): +You can customize output preferences in `settings.json`: -```bash -# create the package (outputs e.g. advanced-paste-as-string-array-1.0.0.vsix) -npx vsce package -# or using yarn -yarn dlx vsce package +```jsonc +{ + // Default quote style: ["double", "single"] + "paste-as-string-array.defaultQuote": "single", + // Default separator: ["whitespace", "newline", "special"] + "paste-as-string-array.defaultSeparator": "newline", + // Works only if defaultSeparator is "special" + "paste-as-string-array.defaultSpecialSeparator": ",", + // Show quote style options when pasting + "paste-as-string-array.promptForQuote": true, + // Show separator options when pasting + "paste-as-string-array.promptForSeparator": true +} ``` -To publish the extension to the VS Code Marketplace you need a publisher and a Personal Access Token. +--- +## 🧪 CI & Reliability -Basic publish steps: +This extension is continuously validated with GitHub Actions to ensure consistent behavior across platforms. -1. Install `vsce` (optional if using `npx`/`yarn dlx`): +![CI](https://github.com/koraybilgi/vscode-paste-as-string-array/actions/workflows/ci.yaml/badge.svg) -```bash -npm install -g vsce -``` +--- -2. Create a Personal Access Token in your Azure DevOps account (PAT) and set it into an environment variable: - -```bash -export VSCE_PAT="" -``` - -3. Publish (example — publish a patch): - -```bash -npx vsce publish --pat $VSCE_PAT --packagePath ./advanced-paste-as-string-array-1.0.0.vsix -# or increment and publish a patch version directly: -npx vsce publish patch --pat $VSCE_PAT -``` +### Derived From -See the `vsce` docs for more publish options and authentication details: https://code.visualstudio.com/api/working-with-extensions/publishing-extension \ No newline at end of file +This extension is originally based on **ShadyBoukhary**’s [vscode-paste-as-string-array](https://github.com/ShadyBoukhary/vscode-paste-as-string-array) and has been enhanced with additional features and improvements. diff --git a/images/icon-128.png b/images/icon-128.png index 058070964291ca17a9e8d46da008f621d0218891..747812a37209b32f9398688d1b8e63c95e93a752 100644 GIT binary patch delta 7020 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 KMNUMnLSTZQO+w88 delta 7798 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 cancel the whole operation + return; } else { separatorChoice = sepPick.value === 'newline' ? 'newline' : sepPick.value === 'special' ? 'special' : 'whitespace'; if (separatorChoice === 'special') { @@ -42,10 +43,9 @@ export async function pasteAsStringArray(editor: TextEditor, _edit?: TextEditorE prompt: 'Enter the special separator string (e.g. "," or ";")', value: defaultSpecialSeparator }); - if (!input) { - // cancelled, fall back to default separator - separatorChoice = (defaultSeparator === 'newline' ? 'newline' : defaultSeparator === 'special' ? 'special' : 'whitespace'); - specialSeparatorValue = defaultSpecialSeparator; + if (input === undefined) { + // user cancelled the special-separator input -> cancel the whole operation + return; } else { specialSeparatorValue = input; } @@ -96,8 +96,8 @@ export async function pasteAsStringArray(editor: TextEditor, _edit?: TextEditorE }); if (!pick) { - // user cancelled the pick -> use default - chosen = (defaultQuote === 'single') ? 'single' : 'double'; + // user cancelled the quote pick -> cancel the whole operation + return; } else { chosen = pick.value === 'single' ? 'single' : 'double'; } From f1ca704b0f7155cb9ff1781a744fe7deea0f4d07 Mon Sep 17 00:00:00 2001 From: koraybilgi Date: Sun, 14 Dec 2025 00:53:26 +0300 Subject: [PATCH 3/5] fix: icons --- images/poop.png | Bin 0 -> 5365 bytes resources/icon-dark.svg | 24 ++++++++++++++++++++++++ resources/icon-light.svg | 24 ++++++++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 images/poop.png create mode 100644 resources/icon-dark.svg create mode 100644 resources/icon-light.svg diff --git a/images/poop.png b/images/poop.png new file mode 100644 index 0000000000000000000000000000000000000000..c543007cf3327de7b3587efc8b548ccb4b73cfaa GIT binary patch literal 5365 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 + + + + + + diff --git a/resources/icon-light.svg b/resources/icon-light.svg new file mode 100644 index 0000000..e462c3e --- /dev/null +++ b/resources/icon-light.svg @@ -0,0 +1,24 @@ + + + + + + + From 7bbf4feac91d9cf5030916960cb5027b94d92acb Mon Sep 17 00:00:00 2001 From: koraybilgi Date: Tue, 23 Dec 2025 00:25:47 +0300 Subject: [PATCH 4/5] fix: CLRF support --- package.json | 5 +++-- src/extension.ts | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 98d157f..c421747 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "name": "Koray Bilgi", "email": "kbilgi@meeticore.com" }, - "version": "1.0.1", + "version": "1.0.2", "engines": { "vscode": "^1.71.0" }, @@ -121,7 +121,8 @@ "pretest": "npm run compile && npm run lint", "lint": "eslint src --ext ts", "test": "node ./out/test/runTest.js", - "vsix": "npx vsce package" + "vsix": "npx vsce package", + "package:vsix": "npm run compile && npx vsce package" }, "devDependencies": { diff --git a/src/extension.ts b/src/extension.ts index 400e29f..4da91da 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -59,8 +59,9 @@ export async function pasteAsStringArray(editor: TextEditor, _edit?: TextEditorE // Split clipboard content according to chosen separator let items: string[] = []; if (separatorChoice === 'newline') { + // split on CRLF (\r\n), LF (\n) or CR (\r) sequences items = clipboardContent - .split(/\r?\n+/) + .split(/\r\n|[\r\n]+/) .map(s => s.trim()) .filter(s => s !== ''); } else if (separatorChoice === 'whitespace') { From d69a822115e66a57b670a87f64d6fc1a2c03195f Mon Sep 17 00:00:00 2001 From: koraybilgi Date: Tue, 23 Dec 2025 00:38:36 +0300 Subject: [PATCH 5/5] feat: paste format --- README.md | 6 +++++- package.json | 2 +- src/extension.ts | 31 +++++++++++++++++++++++++++---- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 8c34771..2e04b59 100644 --- a/README.md +++ b/README.md @@ -66,10 +66,14 @@ You can customize output preferences in `settings.json`: "paste-as-string-array.defaultSeparator": "newline", // Works only if defaultSeparator is "special" "paste-as-string-array.defaultSpecialSeparator": ",", + // Default paste format: ["single", "multi"] + "paste-as-string-array.defaultFormat": "single", // Show quote style options when pasting "paste-as-string-array.promptForQuote": true, // Show separator options when pasting - "paste-as-string-array.promptForSeparator": true + "paste-as-string-array.promptForSeparator": true, + // Show format options when pasting + "paste-as-string-array.promptForFormat": true } ``` diff --git a/package.json b/package.json index c421747..95fdf98 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "name": "Koray Bilgi", "email": "kbilgi@meeticore.com" }, - "version": "1.0.2", + "version": "1.0.3", "engines": { "vscode": "^1.71.0" }, diff --git a/src/extension.ts b/src/extension.ts index 4da91da..d122cb0 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -30,7 +30,7 @@ export async function pasteAsStringArray(editor: TextEditor, _edit?: TextEditorE { label: 'Whitespace', detail: 'Split on any whitespace', value: 'whitespace' }, { label: 'Special character', detail: 'Provide a custom separator', value: 'special' } ].map(i => ({ label: i.label, description: i.detail, value: (i as any).value } as any)), { - placeHolder: 'Choose separator for pasted text' + placeHolder: 'Choose separator for copied text' }); if (!sepPick) { @@ -106,10 +106,33 @@ export async function pasteAsStringArray(editor: TextEditor, _edit?: TextEditorE chosen = (defaultQuote === 'single') ? 'single' : 'double'; } + // Prompt for paste format: single-line or multi-line + const promptForFormat = config.get('promptForFormat', true); + const defaultFormat = config.get('defaultFormat', 'single'); + let formatChoice: 'single' | 'multi' = 'single'; + if (promptForFormat) { + const fmtPick = await vscode.window.showQuickPick([ + { label: 'Single-line', detail: 'Paste all items on one line', value: 'single' }, + { label: 'Multi-line', detail: 'Paste each item on its own line', value: 'multi' } + ].map(i => ({ label: i.label, description: i.detail, value: (i as any).value } as any)), { + placeHolder: 'Choose paste format' + }); + + if (!fmtPick) { + // user cancelled -> cancel the whole operation + return; + } else { + formatChoice = fmtPick.value === 'single' ? 'single' : 'multi'; + } + } else { + formatChoice = (defaultFormat === 'single') ? 'single' : 'multi'; + } + let str: string; + const joiner = formatChoice === 'multi' ? ',\n' : ', '; if (chosen === 'double') { - // use JSON.stringify so escapes for double-quoted strings are correct - str = JSON.stringify(items).slice(1, -1); + // build each item with JSON.stringify so escapes are correct, then join + str = items.map((s) => JSON.stringify(s)).join(joiner); } else { // build single-quoted representation: convert each item from JSON escaping str = items @@ -122,7 +145,7 @@ export async function pasteAsStringArray(editor: TextEditor, _edit?: TextEditorE inner = inner.replace(/'/g, "\\'"); return "'" + inner + "'"; }) - .join(', '); + .join(joiner); } editor.selections.forEach((selection, _) => {