diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 0000000..1d159d6
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1,7 @@
+# Every path is owned by the maintainer, so each pull request — including the ones
+# Dependabot opens — automatically requests a review rather than sitting unnoticed.
+#
+# This is the GitHub account handle, which is unchanged. The publisher's DISPLAY
+# name is WinterNova5; every id, URL, and handle still reads ElecTreeFrying, and
+# that is correct — do not "fix" it here.
+* @ElecTreeFrying
diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..8a8686f
--- /dev/null
+++ b/.github/CODE_OF_CONDUCT.md
@@ -0,0 +1,130 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, caste, color, religion, or sexual
+identity and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+* Demonstrating empathy and kindness toward other people
+* Being respectful of differing opinions, viewpoints, and experiences
+* Giving and gracefully accepting constructive feedback
+* Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+* Focusing on what is best not just for us as individuals, but for the overall
+ community
+
+Examples of unacceptable behavior include:
+
+* The use of sexualized language or imagery, and sexual attention or advances of
+ any kind
+* Trolling, insulting or derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or email address,
+ without their explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official email address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement at
+**electreefrying.git@gmail.com**.
+
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series of
+actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or permanent
+ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within the
+community.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 2.1, available at
+https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
+
+Community Impact Guidelines were inspired by
+[Mozilla's code of conduct enforcement ladder][mozilla].
+
+For answers to common questions about this code of conduct, see the FAQ at
+https://www.contributor-covenant.org/faq. Translations are available at
+https://www.contributor-covenant.org/translations.
+
+[homepage]: https://www.contributor-covenant.org
+[mozilla]: https://github.com/mozilla/diversity
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
new file mode 100644
index 0000000..8ef419f
--- /dev/null
+++ b/.github/CONTRIBUTING.md
@@ -0,0 +1,99 @@
+# Contributing
+
+Thanks for wanting to help. Bug reports, feature requests, and pull requests are all
+welcome — **new data generators especially.** Breadth is the whole value of this
+extension, and a new generator is one of the easiest first contributions here.
+
+## Before you start
+
+- **Open an issue first** for anything structural. A new generator usually does not
+ need one; a new *setting* or a change to how insertion works does.
+- Read [`SPEC.md`](../SPEC.md). It is the user-facing contract — every command, every
+ setting, every catalog row. If your change alters behavior, **it lands there too**.
+
+## Setup
+
+```bash
+npm install
+```
+
+Press F5 → **Run Extension** to launch an Extension Development Host.
+
+## The commands that matter
+
+```bash
+npm run compile # check-types + lint + esbuild (node AND web) ← "green"
+npm run watch # incremental dev build
+npm run lint # eslint src
+npm run package # production build; what vscode:prepublish runs
+
+# Headless — the vscode-free areas, no Extension Host needed
+npm run compile-tests && npx mocha "out/test/{quote,config,catalog,engine,format,record,prompted,custom,randomize}/*.test.js"
+
+# Full suite — required for commands/ and extension.test.ts
+npm test
+```
+
+Do not widen that mocha glob to `**`: `extension.test.ts` and `commands/` import
+`vscode` and fail under plain node. And if headless results look stale after renaming
+or deleting a test, `rm -rf out` — orphaned compiled tests linger there.
+
+## Adding a generator — the common case
+
+1. **`src/catalog.ts`** — add a `{ id, label, group, generate }` entry. It shows up in
+ the Quick Pick automatically.
+2. **`package.json`** → `contributes.commands` — add
+ `{ "command": "insertRandomText.", "title": "Insert Random: " }`.
+3. **`src/extension.ts`** — add `'insertRandomText.': ''` to
+ `COMMAND_TO_GENERATOR`.
+4. **`README.md`** → the *What it generates* table — add the type to its category row
+ and bump that category's `(N)`. The headline total is deliberately soft ("130+"),
+ so it never needs touching.
+5. **`SPEC.md`** → the *Data Catalog* — add the row under its category heading and
+ bump that heading's `(N)`, **plus every literal total in the file**. SPEC.md has no
+ soft numbers; grep the old totals and update all of them.
+
+`activationEvents` are generated from `contributes.commands` automatically — nothing
+to update there.
+
+## Two rules that are easy to break
+
+**Never delete a legacy command id.** The original `extension.insert*` ids stay
+registered permanently. VS Code has no command-alias mechanism, so removing one
+silently breaks any keybinding a user already made. They are hidden from the palette
+via `contributes.menus.commandPalette` with `when: "false"` — that is why they do not
+appear twice.
+
+**Draw a fresh value per call.** `Generator.generate()` runs once per cursor inside
+the selections loop and must return a new value each time. Do not store or memoize a
+generated value — an earlier bug came from exactly that, and the registry shape now
+prevents it structurally.
+
+## Before you open a PR
+
+1. `npm run compile` passes — including the **web** bundle. esbuild hard-fails the
+ `dist/web` build on any Node built-in, which is what keeps the extension usable on
+ vscode.dev. If you reach for a Node API, that gate will stop you, and it is right to.
+2. Tests pass.
+3. `SPEC.md` and the README table reflect the change.
+4. The packaged `.vsix` stays under ~1.5 MB. **Only import the shipped
+ `@faker-js/faker/locale/` entries — never the faker root**, which pulls 60+
+ locales and blows the size gate.
+5. Your commits do not bump `version` in `package.json` — releases own that.
+
+## Code style
+
+- **LF line endings**, enforced by `.gitattributes`.
+- **Padded single-line arrays**: `[ 'a', 'b' ]`, not `['a', 'b']`.
+- Generation code stays free of `vscode` imports. That separation is what makes the
+ logic testable without an Extension Host, and it is worth protecting.
+
+[`CLAUDE.md`](../CLAUDE.md) has the fuller architecture notes. It is written for
+maintainers, but it is the honest map of this codebase.
+
+## Reporting bugs
+
+Use the issue templates. [`SUPPORT.md`](../SUPPORT.md) may resolve the problem before
+you file.
+
+For **security** problems, do not open an issue — see [`SECURITY.md`](SECURITY.md).
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..8a661d0
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,40 @@
+
+
+## What this changes
+
+
+
+## Why
+
+
+
+## How to verify
+
+
+
+---
+
+## Checklist
+
+- [ ] `npm run compile` passes (check-types + lint + esbuild).
+- [ ] If `package.json` display strings changed — `package.nls.json` **and all eight
+ locale files** were updated together. A key missing from one locale silently
+ falls back to English there, which reads as a broken translation.
+- [ ] No configuration `enum` value or `default` was localized. Those are matched at
+ runtime by exact string; only their *descriptions* are display text.
+- [ ] Behaviour changes are reflected in `SPEC.md`, the tracked user-facing contract.
+- [ ] `README.md` still describes what the extension actually does — it is the
+ Marketplace and Open VSX front page, not just a GitHub file.
+- [ ] Links added to `README.md` or `CHANGELOG.md` are **absolute URLs**. Both ship
+ inside the VSIX, where relative paths do not resolve.
+- [ ] No AI attribution anywhere in the commits or this description — no
+ `Co-Authored-By: Claude`, no "Generated with", no 🤖.
+- [ ] Line endings are LF (enforced by `.gitattributes`; a CRLF re-save produces an
+ enormous phantom diff).
+- [ ] `version` in `package.json` was **not** hand-bumped — `vsce publish` owns that.
diff --git a/.github/SECURITY.md b/.github/SECURITY.md
new file mode 100644
index 0000000..53de38b
--- /dev/null
+++ b/.github/SECURITY.md
@@ -0,0 +1,69 @@
+# Security Policy
+
+## Supported versions
+
+Only the **latest published version** of Random, Fake & Mock Data Generator receives
+security fixes. Older versions are never patched in place — a fix ships as a new
+release to both registries:
+
+- [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=ElecTreeFrying.insert-random-text)
+- [Open VSX](https://open-vsx.org/extension/ElecTreeFrying/insert-random-text)
+
+If you are reporting against an older version, please confirm the problem still
+reproduces on the latest one first.
+
+## Reporting a vulnerability
+
+**Please do not open a public issue for a security problem.** A public report tells
+everyone about the weakness before there is a fix available.
+
+Email **electreefrying.git@gmail.com** with:
+
+- what the problem is, and roughly how severe you think it is
+- the extension version, your VS Code (or Cursor / VSCodium / Windsurf) version, and your OS
+- steps to reproduce, or a proof of concept
+- whether you would like to be credited in the release notes, and under what name
+
+You can expect an acknowledgement as soon as I can manage it — usually within a week.
+If the report is confirmed, I will let you know the fix timeline and tell you when the
+patched version is live on both registries. If I conclude it is not a vulnerability,
+I will explain why rather than going quiet.
+
+This is a solo-maintained project, so please be patient with response times. There is
+no bug bounty.
+
+## Scope
+
+This extension generates data **locally**. It makes **no network requests**, collects
+**no telemetry**, and calls no model or remote service — every value comes from
+`@faker-js/faker`, which is bundled into the shipped extension rather than fetched at
+runtime.
+
+**In scope:**
+
+- Anything that turns user-supplied input into code execution. The two places worth
+ looking hardest at are the `insertRandomText.templates` and
+ `insertRandomText.customLists` settings, and the **From Template…** / **From
+ Pattern…** commands — all of them pass user input to faker's `helpers.fake()` and
+ `helpers.fromRegExp()`
+- A crafted pattern that hangs or exhausts memory (catastrophic backtracking in
+ **From Pattern…**, or a dataset size that escapes the row-count cap)
+- Vulnerabilities in `@faker-js/faker` that reach the shipped bundle
+- Anything that causes the extension to read or write files outside what the user asked for
+
+**Out of scope:**
+
+- Vulnerabilities in VS Code itself — report those to
+ [Microsoft](https://github.com/microsoft/vscode/security/policy)
+- Generated data being predictable. This is **not** a cryptographic random source and
+ is not meant to be one: `insertRandomText.seed` deliberately makes output
+ reproducible. Never use it for passwords, keys, or tokens that protect anything real
+- Generated values that are merely *wrong* or unrealistic — ordinary bugs, please open
+ a normal issue
+- Anything requiring an attacker to already have local code execution on the machine
+
+## Disclosure
+
+Please give me a reasonable window to ship a fix before disclosing publicly. Once the
+patched version is live on both registries, you are welcome to write about it — and
+I will credit you in the release notes if you would like.
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..d6624c4
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,37 @@
+version: 2
+
+updates:
+ # Extension dependencies. Dev dependencies are grouped into a single PR;
+ # @faker-js/faker is a RUNTIME dependency that esbuild inlines into the
+ # shipped bundle, so it stays ungrouped and arrives as its own PR — it
+ # reaches users directly and changes generated output.
+ - package-ecosystem: npm
+ directory: /
+ schedule:
+ interval: weekly
+ day: monday
+ open-pull-requests-limit: 5
+ commit-message:
+ prefix: chore
+ include: scope
+ # Load-bearing here, not boilerplate: faker is bundled INTO the published
+ # VSIX. Without a wait, a compromised release could be proposed, merged,
+ # bundled and shipped before npm yanks it. A week is the window in which
+ # malicious npm releases are normally caught.
+ cooldown:
+ default-days: 7
+ groups:
+ dev-dependencies:
+ dependency-type: development
+
+ # The actions pinned in .github/workflows/
+ - package-ecosystem: github-actions
+ directory: /
+ schedule:
+ interval: weekly
+ day: monday
+ open-pull-requests-limit: 3
+ commit-message:
+ prefix: chore
+ cooldown:
+ default-days: 7
diff --git a/.github/scripts/check-nls.js b/.github/scripts/check-nls.js
new file mode 100644
index 0000000..d627054
--- /dev/null
+++ b/.github/scripts/check-nls.js
@@ -0,0 +1,131 @@
+#!/usr/bin/env node
+/**
+ * Manifest-localization gate.
+ *
+ * VS Code substitutes a manifest string ONLY when the whole value matches
+ * /^%key%$/. A key missing from the bundle leaves the literal "%key%" rendered in
+ * the UI, and a placeholder embedded in a longer string is never substituted at
+ * all. Neither is caught by tsc, eslint, or `vsce package` — but both are fully
+ * decidable from the files on disk, which is what this script does.
+ *
+ * Zero dependencies, so it runs on a bare checkout with no `npm ci`.
+ *
+ * Exit 0 = clean. Exit 1 = at least one error.
+ */
+'use strict';
+const fs = require('fs');
+const path = require('path');
+
+const ROOT = path.resolve(__dirname, '..', '..');
+const LOCALES = [ 'zh-cn', 'es', 'fr', 'pt-br', 'ru', 'de', 'ja', 'tr' ];
+const EXACT = /^%([\w\d.\-]+)%$/;
+const ANY = /%[\w\d.\-]+%/;
+
+/** Positions whose value VS Code matches at runtime — never display text. */
+const FORBIDDEN = [
+ [ /\.enum\[\]$/, 'enum VALUE is matched against settings at runtime' ],
+ [ /\.default$/, 'default VALUE is matched at runtime' ],
+ [ /^contributes\.commands\[\]\.command$/, 'command ID is resolved at runtime' ],
+ [ /\.when$/, 'when-clause is a context expression' ],
+ [ /^contributes\.menus\./, 'menu entries are runtime-resolved' ],
+ [ /^contributes\.keybindings\[\]\./, 'keybindings are runtime-resolved' ],
+ [ /^(name|publisher|version|main|browser|icon|license)$/, 'manifest identity field' ],
+ [ /^categories\[\]$/, 'category is matched against a fixed VS Code vocabulary' ],
+];
+
+const errors = [];
+const warnings = [];
+
+const readJson = (p) => {
+ const raw = fs.readFileSync(p, 'utf8');
+ if (raw.charCodeAt(0) === 0xfeff) errors.push(`${path.basename(p)}: has a UTF-8 BOM`);
+ return { raw, json: JSON.parse(raw.replace(/^/, '')) };
+};
+
+/** Flat one-level bundles: a line scan finds keys JSON.parse would silently collapse. */
+function duplicates(raw) {
+ const seen = new Set(), dup = [];
+ for (const line of raw.split('\n')) {
+ const m = line.match(/^\s*"((?:[^"\\]|\\.)*)"\s*:/);
+ if (m) { if (seen.has(m[1])) dup.push(m[1]); seen.add(m[1]); }
+ }
+ return dup;
+}
+
+function walk(node, p, out) {
+ if (typeof node === 'string') return void out.push([ p, node ]);
+ if (Array.isArray(node)) return void node.forEach((v) => walk(v, p + '[]', out));
+ if (node && typeof node === 'object') for (const k of Object.keys(node)) walk(node[k], p ? `${p}.${k}` : k, out);
+}
+
+const pkg = readJson(path.join(ROOT, 'package.json')).json;
+const baseFile = path.join(ROOT, 'package.nls.json');
+if (!fs.existsSync(baseFile)) { console.error('FAIL: package.nls.json is missing'); process.exit(1); }
+const { raw: baseRaw, json: base } = readJson(baseFile);
+
+// 1. every placeholder in the manifest resolves, and sits somewhere localizable
+const strings = [];
+walk(pkg, '', strings);
+const used = new Set();
+for (const [ p, v ] of strings) {
+ const m = v.match(EXACT);
+ if (m) {
+ used.add(m[1]);
+ if (!(m[1] in base)) errors.push(`unresolved %${m[1]}% at ${p} — VS Code renders the literal placeholder`);
+ const bad = FORBIDDEN.find(([ re ]) => re.test(p));
+ if (bad) errors.push(`%${m[1]}% sits at ${p} — ${bad[1]}`);
+ } else if (ANY.test(v)) {
+ errors.push(`embedded placeholder at ${p}: ${JSON.stringify(v)} — only a whole-value %key% is substituted`);
+ }
+}
+
+// 2. base bundle integrity
+for (const d of duplicates(baseRaw)) errors.push(`package.nls.json: duplicate key "${d}" — the earlier value is silently dead`);
+for (const [ k, v ] of Object.entries(base)) {
+ if (typeof v !== 'string') errors.push(`package.nls.json: "${k}" is ${typeof v}, expected string`);
+ else if (!v.trim()) errors.push(`package.nls.json: "${k}" is empty — renders as a blank label`);
+}
+for (const k of Object.keys(base)) if (!used.has(k)) warnings.push(`orphan key "${k}" — defined but referenced nowhere in package.json`);
+
+// 3. every locale carries exactly the base key set
+const baseKeys = Object.keys(base);
+const args = (s) => (String(s).match(/\{\d+\}/g) || []).sort().join(',');
+for (const loc of LOCALES) {
+ const f = path.join(ROOT, `package.nls.${loc}.json`);
+ if (!fs.existsSync(f)) { errors.push(`package.nls.${loc}.json is missing`); continue; }
+ let r;
+ try { r = readJson(f); } catch (e) { errors.push(`package.nls.${loc}.json: invalid JSON — ${e.message}`); continue; }
+ for (const d of duplicates(r.raw)) errors.push(`package.nls.${loc}.json: duplicate key "${d}"`);
+ const missing = baseKeys.filter((k) => !(k in r.json));
+ const extra = Object.keys(r.json).filter((k) => !baseKeys.includes(k));
+ if (missing.length) errors.push(`package.nls.${loc}.json: missing ${missing.length} key(s) — ${missing.slice(0, 5).join(', ')}${missing.length > 5 ? ' …' : ''} (falls back to English, which reads as a broken translation)`);
+ if (extra.length) errors.push(`package.nls.${loc}.json: ${extra.length} stale key(s) — ${extra.slice(0, 5).join(', ')}${extra.length > 5 ? ' …' : ''}`);
+ for (const [ k, v ] of Object.entries(r.json)) {
+ if (typeof v !== 'string') errors.push(`package.nls.${loc}.json: "${k}" is ${typeof v}, expected string`);
+ else if (!v.trim()) errors.push(`package.nls.${loc}.json: "${k}" is empty`);
+ else if (k in base && args(base[k]) !== args(v)) errors.push(`package.nls.${loc}.json: "${k}" placeholder args differ from base (${args(base[k]) || 'none'} vs ${args(v) || 'none'})`);
+ }
+}
+
+// 4. the bundles must actually ship. A .vscodeignore glob that matches them is
+// fatal: the extension would install with every string unresolved. The `*` has
+// to be inside the character class — "package.nls*.json" is the natural way to
+// write the mistake, and omitting it made this check silently unable to fire.
+const ignore = path.join(ROOT, '.vscodeignore');
+if (fs.existsSync(ignore)) {
+ for (const line of fs.readFileSync(ignore, 'utf8').split('\n')) {
+ const t = line.trim();
+ if (!t || t.startsWith('#') || t.startsWith('!')) continue;
+ if (/(^|\/)(\*\*?|package\.nls[\w.*\-]*)\.json$/.test(t)) {
+ errors.push(`.vscodeignore excludes the nls bundles via "${t}" — they must ship inside the VSIX or every string renders unresolved`);
+ }
+ }
+}
+
+for (const w of warnings) console.warn(`warning: ${w}`);
+if (errors.length) {
+ console.error(`\nFAILED — ${errors.length} localization error(s):`);
+ for (const e of errors) console.error(` ✗ ${e}`);
+ process.exit(1);
+}
+console.log(`OK — ${baseKeys.length} key(s) × ${LOCALES.length} locale(s), all placeholders resolve, no forbidden positions.`);
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..e2234db
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,158 @@
+name: CI
+
+on:
+ push:
+ branches: [ main ]
+ pull_request:
+ branches: [ main ]
+ workflow_dispatch:
+
+# Least privilege by default. No job here writes to the repo; a job that ever needs
+# to should raise its own `permissions:` block rather than widening this one.
+permissions:
+ contents: read
+
+concurrency:
+ group: ci-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ build:
+ name: Build & headless tests (node ${{ matrix.node }})
+ runs-on: ubuntu-latest
+ timeout-minutes: 15
+
+ strategy:
+ fail-fast: false
+ matrix:
+ # 20 is what the extension host ships today; 22 is the forward check, so a
+ # toolchain break on a newer Node surfaces here rather than on a dev machine.
+ node: [ 20, 22 ]
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/setup-node@v4
+ with:
+ node-version: ${{ matrix.node }}
+ cache: npm
+
+ - name: Install dependencies
+ run: npm ci
+
+ # This repo's definition of green: check-types + lint + esbuild
+ # (both targets — the node bundle AND the browser bundle).
+ - name: Compile
+ run: npm run compile
+
+ # The vscode-free areas run under plain mocha, no Extension Host needed.
+ # The glob is deliberately NOT widened to `**`: extension.test.ts and
+ # commands/ import `vscode` and fail under plain node.
+ - name: Headless unit tests
+ run: |
+ npm run compile-tests
+ npx mocha "out/test/{quote,config,catalog,engine,format,record,prompted,custom,randomize}/*.test.js"
+
+ # Exactly what `vscode:prepublish` runs before every publish.
+ - name: Production bundle
+ run: npm run package
+
+ # The browser bundle is the web-cleanliness gate — esbuild hard-fails it
+ # on any Node built-in. Assert it actually landed rather than trusting it.
+ - name: Assert both bundles exist
+ run: test -f dist/extension.js && test -f dist/web/extension.js
+
+ # The full Extension Host suite (`npm test`) is deliberately not wired
+ # here — it needs a virtual display on Linux runners. Run it locally
+ # before cutting a release.
+
+ localization:
+ name: Localization bundles
+ runs-on: ubuntu-latest
+ timeout-minutes: 5
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 20
+
+ # No `npm ci` — the gate is dependency-free on purpose, so a broken lockfile
+ # can never mask a broken translation. It decides everything from the files
+ # on disk: unresolved %key% placeholders, keys missing from a locale, keys
+ # localized in runtime-matched positions (enum values, defaults, command ids).
+ - name: Verify package.nls bundles
+ run: node .github/scripts/check-nls.js
+
+ package:
+ name: VSIX packages
+ runs-on: ubuntu-latest
+ timeout-minutes: 15
+ needs: [ build, localization ]
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 20
+ cache: npm
+
+ - name: Install dependencies
+ run: npm ci
+
+ # The release gate CI was missing. `npm run compile` can pass while the VSIX
+ # still fails to build — a bad .vscodeignore, an invalid `contributes` block,
+ # or a missing icon only surface here.
+ #
+ # Invoked by explicit path, NOT `npx vsce` or `npm exec -- vsce`. Both of those
+ # fall back to the registry when the binary is absent, and the unscoped `vsce`
+ # package there is DEPRECATED and frozen at 2.15.0 — which rejects a manifest
+ # that omits `activationEvents`, something VS Code has auto-generated since
+ # 1.74. This repo omits it deliberately, so that stale binary fails here with
+ # an error that reads like a manifest bug and is not one. This path resolves
+ # only to the `@vscode/vsce` version in package-lock.json.
+ - name: Build the VSIX
+ run: ./node_modules/.bin/vsce package --out extension.vsix
+
+ # Authoritative shipping check: inspect the archive itself rather than
+ # reasoning about .vscodeignore globs.
+ - name: Assert the VSIX contents are correct
+ run: |
+ unzip -l extension.vsix > listing.txt
+ fail=0
+
+ for loc in "" .zh-cn .es .fr .pt-br .ru .de .ja .tr; do
+ if ! grep -q "package.nls${loc}.json" listing.txt; then
+ echo "MISSING from VSIX: package.nls${loc}.json"
+ fail=1
+ fi
+ done
+
+ # Maintainer-only trees must never ship. Each is excluded deliberately
+ # in .vscodeignore; this is what proves the exclusion still holds.
+ for leak in "extension/src/" "CLAUDE.md" "extension/.github/" "SPEC.md" "extension/qa/" "extension/docs/"; do
+ if grep -q "$leak" listing.txt; then
+ echo "LEAKED into VSIX: $leak"
+ fail=1
+ fi
+ done
+
+ # This extension bundles @faker-js/faker; the size gate is a real one.
+ size=$(stat -c%s extension.vsix)
+ echo "VSIX size: $size bytes"
+ if [ "$size" -gt 1572864 ]; then
+ echo "VSIX exceeds the ~1.5 MB budget — check that only the shipped faker locales are bundled"
+ fail=1
+ fi
+
+ echo "--- VSIX contents ---"
+ cat listing.txt
+ exit $fail
+
+ - uses: actions/upload-artifact@v4
+ with:
+ name: vsix
+ path: extension.vsix
+ retention-days: 14
diff --git a/.gitignore b/.gitignore
index 5328410..bd514fe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,9 +25,7 @@ Thumbs.db
# directories of the same name, which would silently swallow fixtures on a fresh clone.
/docs/
/qa/
-# Agent session state. Self-ignored by .remember/.gitignore too; named here so the tree stays
-# ignored even if that file is ever lost.
-.remember/
+# Agent session state.
.claude/
# Local media — masters and cards that never enter the tree
diff --git a/.vscodeignore b/.vscodeignore
index ba91f4b..1785fbe 100644
--- a/.vscodeignore
+++ b/.vscodeignore
@@ -35,7 +35,6 @@ SUPPORT.md
# Self-ignored from git, so they never appear in `git status` — but vsce packages
# from disk, not from git, and would otherwise ship them. Must stay named here.
.claude/**
-.remember/**
docs/**
# Demo media — the README loads these from GitHub, so the package stays lean.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c265b50..d4cf6c6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,20 @@
# Changelog
+## v1.0.2 (2026-08-08)
+
+### Features
+
+- **Commands, settings, and the context menu now follow VS Code's display language.** Every command title, the *Insert Random* submenu label, the extension's own name and description, and every setting's title, description, and dropdown descriptions render in Simplified Chinese, Spanish, French, Brazilian Portuguese, Russian, German, Japanese, or Turkish. English is the fallback for every other display language.
+- **Palette search still works with a single term in any language.** Each locale translates the category prefix along with the command — `Insert Random: First Name` reads `Zufällig einfügen: Vorname` in German and `随机插入: 名字` in Simplified Chinese — and the right-click submenu carries the same phrase. Generators reachable under both their original `extension.insert*` id and the modern `insertRandomText.*` id share one translation, so the two ids can never show different titles.
+
+### Changes
+
+- **What stays English, on purpose.** Setting *values* — `Cursor` / `Top` / `Clipboard`, the output formats, the faker locale ids — are matched at runtime, so only their descriptions are translated. Prompts, Quick Picks, and notifications shown while the extension is running are English too.
+- **`insertRandomText.locale` is unrelated to the display language.** It picks the language the *generated data* is drawn from, and this release doesn't change it; the specification now says so explicitly.
+- **Open VSX is now linked directly from the README** — a version badge, an **Open VSX listing** line under Installation, and a link to the publisher's other extensions on the registry. Compatibility notes that the listing is published by **WinterNova5**, a verified Open VSX publisher, and now records which display languages the extension ships in — separately from `insertRandomText.locale`, which governs the generated data instead.
+- **The publisher reads as WinterNova5** throughout the README. Install commands, URLs, and the extension id are unchanged.
+- **GitHub Sponsors** now sits alongside the existing donation options.
+
## v1.0.1 (2026-07-25)
### Features
diff --git a/CLAUDE.md b/CLAUDE.md
index d43944d..3ca115f 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -54,12 +54,16 @@ Eleven single-responsibility modules. Generation is `vscode`-free and lives apar
- **Two command namespaces, one visible.** Every generator is reachable under a namespaced `insertRandomText.` id, and that is the family the Command Palette shows. The original 14 `extension.insert*` ids (`insertRandom*` and `insertLorem*`) stay registered permanently for **back-compat** (existing keybindings, `tasks.json` references), but `contributes.menus.commandPalette` hides them with `when: "false"` — without that the fourteen oldest generators would appear twice under identical titles. Both families register via `COMMAND_TO_GENERATOR`, so each legacy id and its namespaced twin point at the same generator. **Never delete a legacy id:** VS Code has no command-alias mechanism, so a removed id silently breaks any keybinding a user already made.
- **Settings are split.** The 3 remaining legacy keys stay **flat & non-namespaced** (`insertType`, `withQuote`, `withNewLine`) for back-compat; **all new keys are namespaced** under `insertRandomText.*` (`uniquePerCursor`, `seed`, `locale`, `bulkCount`, `outputFormat`, `templates`, `customLists`, `contextMenu.enabled`, …). Do **not** migrate the legacy keys.
- **Hidden generators.** The Lorem/Hash Small/Medium/Large back-compat generators carry `hidden: true` so they serve their legacy commands without cluttering the Quick Pick.
-- **Settings commands.** `settingsCommands.ts` contributes `insertRandomText.set*` / `toggle*` / `resetSettings` so every setting is changeable from the Command Palette (mirrors the sibling `auto-import-relative-path`). Each new one is a `package.json` command + an entry in `SETTING_COMMANDS` (registered in `extension.ts`). Writes are workspace-scoped when a folder is open, else global.
-- **Prompted commands.** The parameterized types (`numberRange` / `floatRange` / `stringLength` / `dateBetween` / `wordsCount` / `sentencesCount` / `paragraphsCount` / `uuidFormat` / `passwordOptions` / `phoneFormat` / `fromTemplate` / `fromPattern` / `sequence`, all `insertRandomText.*`) ask for parameters in input boxes and Quick Picks, then insert via `insertWith`. `sequence` is the stateful one — not random at all: `createRender` builds one counter per insert (start/step boxes), advancing per cursor/bulk item and restarting on the next insert. Adding one: entry in `promptedCommands` (`src/prompted.ts`) + a `package.json` command `insertRandomText.` — registration is automatic; they are intentionally **not** in `COMMAND_TO_GENERATOR` (the parity test reads `promptedCommands` and holds contributed ↔ registered in sync, and guards prompted ids against catalog-id collisions).
+- **Settings commands.** `settingsCommands.ts` contributes `insertRandomText.set*` / `toggle*` / `resetSettings` so every setting is changeable from the Command Palette (mirrors the sibling `auto-import-relative-path`). Each new one is a `package.json` command (title via the nls files — see Manifest localization) + an entry in `SETTING_COMMANDS` (registered in `extension.ts`). Writes are workspace-scoped when a folder is open, else global.
+- **Prompted commands.** The parameterized types (`numberRange` / `floatRange` / `stringLength` / `dateBetween` / `wordsCount` / `sentencesCount` / `paragraphsCount` / `uuidFormat` / `passwordOptions` / `phoneFormat` / `fromTemplate` / `fromPattern` / `sequence`, all `insertRandomText.*`) ask for parameters in input boxes and Quick Picks, then insert via `insertWith`. `sequence` is the stateful one — not random at all: `createRender` builds one counter per insert (start/step boxes), advancing per cursor/bulk item and restarting on the next insert. Adding one: entry in `promptedCommands` (`src/prompted.ts`) + a `package.json` command `insertRandomText.` with its title keys in the nls files (see Manifest localization) — registration is automatic; they are intentionally **not** in `COMMAND_TO_GENERATOR` (the parity test reads `promptedCommands` and holds contributed ↔ registered in sync, and guards prompted ids against catalog-id collisions).
+
+### Manifest localization (package.nls)
+
+Every user-visible manifest string — `displayName`, `description`, command titles, the submenu label, and each setting's title / description / enumDescriptions — is a `%key%` placeholder in `package.json`, resolved from `package.nls.json` (the English base, and the per-key fallback for every unlocalized display language) plus the locale files `package.nls.{zh-cn,es,fr,pt-br,ru,de,ja,tr}.json`. All nine files ship in the VSIX (`.vscodeignore` must never exclude them). Key shapes: `command..title` (derived from the namespaced id — each legacy `extension.insert*` id **shares its twin's key**, no separate legacy keys), `submenu.contextSubmenu.label`, `config..title|description|enumDescriptions.` (property key minus the `insertRandomText.` prefix). Locale command titles compose as a translated category prefix + translated type name; the prefixes (also each locale's submenu label) are: de `Zufällig einfügen: `, fr `Insertion aléatoire : ` (French space-before-colon), es `Insertar aleatorio: `, pt-br `Inserir aleatório: `, ru `Вставить случайное: `, ja `ランダム挿入: `, zh-cn `随机插入: `, tr `Rastgele Ekle: `. Two hard rules: **never localize a configuration `enum` or `default`** — those are runtime-matched values (`configuration.ts` normalizes by exact string; the `locale` enum holds faker locale ids) — and a locale file must carry **exactly** the base key set (a missing key falls back to English per-key, which reads as a broken translation). Runtime strings in `src/` (Quick Picks, prompts, toasts) are deliberately **not** localized — no `vscode.l10n`. `src/test/config/contributions.test.ts` resolves titles through the base file before asserting the `Insert Random: ` palette prefix and the submenu label.
### Adding a generator (the common case)
1. `src/catalog.ts` — add a `{ id, label, group, generate }` entry. It appears in the Quick Pick automatically.
-2. `package.json` → `contributes.commands` — add `{ "command": "insertRandomText.", "title": "Insert Random: " }` (direct command + search visibility).
+2. `package.json` → `contributes.commands` — add `{ "command": "insertRandomText.", "title": "%command..title%" }`, then the English `Insert Random: ` in `package.nls.json` **and** a translation in each of the eight locale files (see Manifest localization — the build breaks nothing if one is missing, but that locale silently falls back to English).
3. `src/extension.ts` — add `'insertRandomText.': ''` to `COMMAND_TO_GENERATOR`.
4. `README.md` → the **What it generates** table — add the type to its category row and bump that category's `(N)` count (and the "20 categories" figure if it's a new group). The headline total is deliberately soft ("130+"), so it never needs a per-type edit.
5. `SPEC.md` → the **Data Catalog** — add the type's row under its category heading (label / registry id / command id / faker source) and bump that heading's `(N)`, plus every literal total: the front-matter summary, the Commands section, and the catalog intro state the visible / registry / modern-command / contributed-command counts **exactly** (SPEC.md has no soft numbers — grep the old totals).
@@ -78,5 +82,5 @@ Eleven single-responsibility modules. Generation is `vscode`-free and lives apar
- **Line endings are LF**, enforced by `.gitattributes` (`* text=auto eol=lf`).
## Scope & toolchain
-- **Core work lives in `src/**`, `package.json`, `README.md`, `SPEC.md`, `CLAUDE.md`, `CHANGELOG.md`.** `SPEC.md` is the tracked user-facing functionality contract (every command, setting, and catalog row — README links into it; vsix-excluded like CLAUDE.md): any behavior change lands there too. Out of scope (later waves): icon assets under `images/`, CI, Open VSX, `tsconfig.json` / `esbuild.js`.
+- **Core work lives in `src/**`, `package.json`, `package.nls*.json`, `README.md`, `SPEC.md`, `CLAUDE.md`, `CHANGELOG.md`.** `SPEC.md` is the tracked user-facing functionality contract (every command, setting, and catalog row — README links into it; vsix-excluded like CLAUDE.md): any behavior change lands there too. Out of scope (later waves): icon assets under `images/`, CI, Open VSX, `tsconfig.json` / `esbuild.js`.
- TypeScript 5.9 (target `ES2022`, module `Node16`, `strict: false`), ESLint 9 flat config (rules are warnings), esbuild bundling, engine `vscode ^1.97.0`. **Runtime dependency: `@faker-js/faker`** (bundled into `dist/`). Mirrors the sibling `auto-import-relative-path` extension.
diff --git a/README.md b/README.md
index 04abe4d..448918d 100644
--- a/README.md
+++ b/README.md
@@ -4,15 +4,20 @@
[![installs][installs-badge]][package]
[![downloads][downloads-badge]][package]
[![rating][rating-badge]][package]
-[![license][license-badge]][repo]
+[![open vsx][ovsx-badge]][open-vsx]
[![vscode][vscode-badge]][package]
+[![license][license-badge]][repo]
+
+[![sponsor][sponsor-badge]][sponsors]
[version-badge]: https://vsmarketplacebadges.dev/version-short/ElecTreeFrying.insert-random-text.png
[installs-badge]: https://vsmarketplacebadges.dev/installs-short/ElecTreeFrying.insert-random-text.png
[downloads-badge]: https://vsmarketplacebadges.dev/downloads-short/ElecTreeFrying.insert-random-text.png
[rating-badge]: https://vsmarketplacebadges.dev/rating-short/ElecTreeFrying.insert-random-text.png
-[license-badge]: https://img.shields.io/github/license/ElecTreeFrying/insert-random-text
+[ovsx-badge]: https://img.shields.io/open-vsx/v/ElecTreeFrying/insert-random-text
[vscode-badge]: https://img.shields.io/badge/vscode-%3E%3D1.97.0-blue
+[license-badge]: https://img.shields.io/github/license/ElecTreeFrying/insert-random-text
+[sponsor-badge]: https://img.shields.io/badge/GitHub_Sponsors-ea4aaa?logo=githubsponsors&logoColor=white
[package]: https://marketplace.visualstudio.com/items?itemName=ElecTreeFrying.insert-random-text
[repo]: https://github.com/ElecTreeFrying/insert-random-text
@@ -313,6 +318,7 @@ This extension ships **no default keyboard shortcuts** — with 130+ commands, p
- **Marketplace:** Extensions view (Cmd /Ctrl +Shift +X ) → search **Random, Fake & Mock Data Generator** by *WinterNova5* → **Install**.
- **CLI:** `code --install-extension ElecTreeFrying.insert-random-text`
- **Direct:** [VS Code Marketplace listing][package]
+- **Direct (Open VSX):** [Open VSX listing][open-vsx]
- **Cursor / Windsurf / VSCodium / Gitpod:** Search **Random, Fake & Mock Data Generator** in the Extensions panel — served via [Open VSX][open-vsx].
[open-vsx]: https://open-vsx.org/extension/ElecTreeFrying/insert-random-text
@@ -322,9 +328,10 @@ This extension ships **no default keyboard shortcuts** — with 130+ commands, p
## Compatibility
- **VS Code:** 1.97.0 or later.
-- **Registries:** Available on both the [VS Code Marketplace][package] and [Open VSX][open-vsx].
+- **Registries:** Available on both the [VS Code Marketplace][package] and [Open VSX][open-vsx] — published by **WinterNova5**, a verified Open VSX publisher.
- **Compatible hosts:** Cursor, Windsurf, VSCodium, Gitpod, Code Server, and other forks that implement the VS Code API at the same engine version — installable directly from their Extensions panel via Open VSX.
- **Web:** Runs on [vscode.dev](https://vscode.dev) and [github.dev](https://github.dev) — a browser build ships in the extension.
+- **Display language:** Command titles, the *Insert Random* submenu, and every setting follow VS Code's display language — Simplified Chinese, Spanish, French, Brazilian Portuguese, Russian, German, Japanese, and Turkish, with English as the fallback. Each locale translates the category prefix too, so one palette search still finds every generator. This is separate from `insertRandomText.locale`, which picks the language the *generated data* is drawn from.
- **Platforms:** macOS, Windows, Linux.
- **Footprint:** Bundles `@faker-js/faker` (six locales) — nothing is fetched at runtime.
- **Telemetry:** None. No network calls, no telemetry, no model calls — every value is generated locally by the bundled library.
@@ -405,9 +412,10 @@ See [SPEC.md][SPEC] for the full behavior contract — behavior changes belong t
## Related
-- **[All extensions by WinterNova5][all]** on the VS Code Marketplace.
+- **[All extensions by WinterNova5][all]** on the VS Code Marketplace — and on [Open VSX][all-ovsx].
[all]: https://marketplace.visualstudio.com/publishers/ElecTreeFrying
+[all-ovsx]: https://open-vsx.org/namespace/ElecTreeFrying
---
diff --git a/SPEC.md b/SPEC.md
index da6884e..9e857e0 100644
--- a/SPEC.md
+++ b/SPEC.md
@@ -26,7 +26,7 @@ Every command title is prefixed **`Insert Random:`**, so typing "Insert Random"
### Two command namespaces
-- **Legacy `extension.insert*` (14 commands — `insertRandom*` and `insertLorem*`)** — the original ids, kept verbatim for **back-compat** so existing user keybindings keep working. They cover eight visible generators (`animal`, `person`, `date`, `country`, `number`, `string`, `lorem`, `hash`) and the six hidden Lorem/Hash size variants. Each of these fourteen also has a modern `insertRandomText.*` twin pointing at the same generator, so `contributes.menus.commandPalette` hides every legacy id with `when: "false"` — the two families share command titles, and without the hiding those fourteen generators would appear twice in the palette under identical names. The legacy ids stay registered permanently: VS Code has no command-alias mechanism, so removing one would silently break any keybinding a user already made.
+- **Legacy `extension.insert*` (14 commands — `insertRandom*` and `insertLorem*`)** — the original ids, kept verbatim for **back-compat** so existing user keybindings keep working. They cover eight visible generators (`animal`, `person`, `date`, `country`, `number`, `string`, `lorem`, `hash`) and the six hidden Lorem/Hash size variants. Each of these fourteen also has a modern `insertRandomText.*` twin pointing at the same generator, so `contributes.menus.commandPalette` hides every legacy id with `when: "false"` — the two families share command titles (and share single nls keys — see [Localization](#localization)), and without the hiding those fourteen generators would appear twice in the palette under identical names. The legacy ids stay registered permanently: VS Code has no command-alias mechanism, so removing one would silently break any keybinding a user already made.
- **Modern `insertRandomText.` (143 commands)** — every generator, including the fourteen with a legacy twin. The command suffix is byte-identical to the generator's registry `id` (e.g. `insertRandomText.creditCard` → generator `creditCard`).
Both namespaces register through a single `COMMAND_TO_GENERATOR` map (157 entries) in `extension.ts`; each registered command calls one shared `insertGenerated(id)`. See the [Data Catalog](#data-catalog) for the exact command id of every type.
@@ -238,7 +238,7 @@ Sequences are **per locale**: under the same seed, `de` draws different (German)
## Locales
-`insertRandomText.locale` picks the language/region every generator draws from. Six faker locale data sets ship in the bundle:
+`insertRandomText.locale` picks the language/region every generator draws from. (It governs the **generated data**, not the extension's UI — command titles and settings prose follow VS Code's display language instead; see [Localization](#localization).) Six faker locale data sets ship in the bundle:
| Value | Data set |
|---|---|
@@ -712,3 +712,17 @@ An optional editor right-click entry, **off by default**.
- **Trust & virtual workspaces** — `capabilities.untrustedWorkspaces.supported = true` and `virtualWorkspaces = true`: the extension runs in restricted/untrusted and virtual (no-filesystem) workspaces, because it neither reads project files nor makes network calls.
- **faker lifecycle** — `engine.ts` loads faker **lazily** on the first command via `load(locale)`: one literal dynamic `import('@faker-js/faker/locale/')` per shipped locale (`en` / `de` / `fr` / `es` / `pt_BR` / `ja`), cached in a promise map so each locale is imported once and concurrent loads share the import; `faker()` returns the **active** instance (the last locale loaded). Only those six locale entries are imported — never the package root — so faker's other 60+ locales never reach the esbuild bundle (which would blow the `.vsix` size gate). `seed(value)` forwards to the active instance's `seed`.
- **Privacy** — every value is generated in-process. No network requests, no telemetry, fully offline.
+
+---
+
+## Localization
+
+The **manifest** is localized: `displayName`, `description`, all 190 command titles, the "Insert Random" submenu label, and every setting's title, description, and enum descriptions render in VS Code's display language when it is one of the eight shipped locales — Simplified Chinese (`zh-cn`), Spanish (`es`), French (`fr`), Brazilian Portuguese (`pt-br`), Russian (`ru`), German (`de`), Japanese (`ja`), or Turkish (`tr`). English is the base file (`package.nls.json`) and the per-key fallback for every other display language. The 14 legacy command ids resolve through the same nls keys as their modern twins, so both namespaces always carry identical titles in every language.
+
+Each language keeps the searchable category-prefix pattern — `Insert Random: First Name` appears as `Zufällig einfügen: Vorname` (de), `Insertion aléatoire : Prénom` (fr), `随机插入: 名字` (zh-cn), `ランダム挿入: 名` (ja) — and the [editor context-menu submenu](#context-menu) carries the same localized phrase, so palette search and the right-click menu stay consistent per language.
+
+Deliberately **not** localized:
+
+- **Setting values.** Enum ids and defaults (`Cursor` / `Top` / `Clipboard`, `plain` / `jsonArray` / `quotedList`, the faker locale ids `en` … `ja`, and every other value in the [Configuration Reference](#configuration-reference)) are runtime-matched strings and stay English in every display language — only their descriptions are translated.
+- **Runtime UI.** Quick Pick entries, prompts, input-box validation, and notifications emitted by the running extension are English.
+- **Generated data.** What the generators produce is governed by `insertRandomText.locale` (see [Locales](#locales)), independently of the display language.
diff --git a/package-lock.json b/package-lock.json
index da2e56b..5789e14 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,8 +15,9 @@
"@types/mocha": "^10.0.10",
"@types/node": "^22.19.18",
"@types/vscode": "1.97.0",
- "@vscode/test-cli": "^0.0.12",
- "@vscode/test-electron": "^2.5.2",
+ "@vscode/test-cli": "^0.0.15",
+ "@vscode/test-electron": "^3.1.0",
+ "@vscode/vsce": "^3.9.2",
"esbuild": "^0.28.0",
"eslint": "^9.39.3",
"npm-run-all": "^4.1.5",
@@ -27,6 +28,216 @@
"vscode": "^1.97.0"
}
},
+ "node_modules/@azu/format-text": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz",
+ "integrity": "sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@azu/style-format": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.1.tgz",
+ "integrity": "sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==",
+ "dev": true,
+ "license": "WTFPL",
+ "dependencies": {
+ "@azu/format-text": "^1.0.1"
+ }
+ },
+ "node_modules/@azure/abort-controller": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.2.0.tgz",
+ "integrity": "sha512-fNAjWnA/nZ2jz31kxR/AqRaUT8ewHBw/WuBIosK0moMy1C9e5ValbDfFdIxJzVOOYaYkV/b2F1S4H/aHiqfVQg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=22.0.0"
+ }
+ },
+ "node_modules/@azure/core-auth": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.11.0.tgz",
+ "integrity": "sha512-IUZydyTUkDnYdstOW9pFOOUQlBjAepK5teihDE3x6yxsPJs/hsAaaYpeGxdxrgtOiJbBKSjKW7MDk7AEhb4LRg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@azure/abort-controller": "^2.1.2",
+ "@azure/core-util": "^1.13.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=22.0.0"
+ }
+ },
+ "node_modules/@azure/core-client": {
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.11.0.tgz",
+ "integrity": "sha512-JjQWO6akOck45PH/XBrxzsQGAiKrfFl4m5iggJ0ItMIz5omRufOXWpqCPpdjKN3vKDzlSUvFjaMb7Zwf0gvAdA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@azure/abort-controller": "^2.1.2",
+ "@azure/core-auth": "^1.10.0",
+ "@azure/core-rest-pipeline": "^1.22.0",
+ "@azure/core-tracing": "^1.3.0",
+ "@azure/core-util": "^1.13.0",
+ "@azure/logger": "^1.3.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=22.0.0"
+ }
+ },
+ "node_modules/@azure/core-rest-pipeline": {
+ "version": "1.25.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.25.0.tgz",
+ "integrity": "sha512-bMs8ekJLjX8wPV+9IPBges1SLPyuDtE9g5gLDWOpxzKcoOFQnpLGkbcT1tdw3FaAmDS1gnPmMmJ6y/T5B96kIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@azure/abort-controller": "^2.1.2",
+ "@azure/core-auth": "^1.10.0",
+ "@azure/core-tracing": "^1.3.0",
+ "@azure/core-util": "^1.13.0",
+ "@azure/logger": "^1.3.0",
+ "@typespec/ts-http-runtime": "^0.3.4",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=22.0.0"
+ }
+ },
+ "node_modules/@azure/core-tracing": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.4.0.tgz",
+ "integrity": "sha512-eGwxD0AtncrxeBM4tG8R55Pc3rdX1hNW2WibJAgYpCVA6E93mvvVH+LcssoVjOBrSKWS55yEIHsk0X8ctHmfOQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=22.0.0"
+ }
+ },
+ "node_modules/@azure/core-util": {
+ "version": "1.14.0",
+ "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.14.0.tgz",
+ "integrity": "sha512-9n2pWK61veAuN0V20t9lOuoV4CFMdyAZ1ygZzvBGk/pBBJRib/PjL9PLXa/aI2CcPpyHfqVsxxqLCYl6uZlfDw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@azure/abort-controller": "^2.1.2",
+ "@typespec/ts-http-runtime": "^0.3.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=22.0.0"
+ }
+ },
+ "node_modules/@azure/identity": {
+ "version": "4.13.1",
+ "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.13.1.tgz",
+ "integrity": "sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@azure/abort-controller": "^2.0.0",
+ "@azure/core-auth": "^1.9.0",
+ "@azure/core-client": "^1.9.2",
+ "@azure/core-rest-pipeline": "^1.17.0",
+ "@azure/core-tracing": "^1.0.0",
+ "@azure/core-util": "^1.11.0",
+ "@azure/logger": "^1.0.0",
+ "@azure/msal-browser": "^5.5.0",
+ "@azure/msal-node": "^5.1.0",
+ "open": "^10.1.0",
+ "tslib": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
+ "node_modules/@azure/logger": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.4.0.tgz",
+ "integrity": "sha512-rbAE25KUfjU/s3XHUdJgceoCP5dEOpMx85J04kF+QMdta73XkuG9JGHHinch+XIoKpBdqljin+KqURpJriSzLA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typespec/ts-http-runtime": "^0.3.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=22.0.0"
+ }
+ },
+ "node_modules/@azure/msal-browser": {
+ "version": "5.17.3",
+ "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-5.17.3.tgz",
+ "integrity": "sha512-qMabD7Xrm/UgRhs+/IVyCTZRjUl8Qb+uGsRrCkaKNWsiTwRaeyStJbChE7/ySNTNYtiWo7khfF7vUDd0wGMnLw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@azure/msal-common": "16.11.3"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@azure/msal-common": {
+ "version": "16.11.3",
+ "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-16.11.3.tgz",
+ "integrity": "sha512-VeXOW+t3Rdd9XGX6lVyIg3DhtjMR1JD8ARKcsnGbJFUWwAmF3sHL7GwZc/ZjEUfHESResAonETRYCuG06OBT7A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/@azure/msal-node": {
+ "version": "5.4.3",
+ "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-5.4.3.tgz",
+ "integrity": "sha512-tumCMmzrRhKmTbYQg/7OlfbrIKcKaf8Ed0Fw3suUpRT3owFYljznVgxcfHe8RycQXY9uyROGiLD1GjhpF45AwA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@azure/msal-common": "16.11.3",
+ "jsonwebtoken": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
+ "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.29.7",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
+ "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@bcoe/v8-coverage": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz",
@@ -809,195 +1020,484 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
- "node_modules/@pkgjs/parseargs": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dev": true,
"license": "MIT",
- "optional": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
"engines": {
- "node": ">=14"
+ "node": ">= 8"
}
},
- "node_modules/@types/estree": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
- "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/istanbul-lib-coverage": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
- "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/json-schema": {
- "version": "7.0.15",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
- "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/mocha": {
- "version": "10.0.10",
- "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz",
- "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==",
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
},
- "node_modules/@types/node": {
- "version": "22.20.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.0.tgz",
- "integrity": "sha512-QWlFW2wf3nTjC13/DqRnBpR4ZO36VJH/JVBkA/vcnmbTBNQIlnObqyqZE1tUR7+Ni23Lda8R1BxMfbXRpCUx5g==",
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "undici-types": "~6.21.0"
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
}
},
- "node_modules/@types/vscode": {
- "version": "1.97.0",
- "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.97.0.tgz",
- "integrity": "sha512-ueE73loeOTe7olaVyqP9mrRI54kVPJifUPjblZo9fYcv1CuVLPOEKEkqW0GkqPC454+nCEoigLWnC2Pp7prZ9w==",
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
},
- "node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.61.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.61.1.tgz",
- "integrity": "sha512-ZPlVl3PB3et/59Ne0fv/sci6ZXz4T4Hp4nTJ56i/Y0gR89ARb+KphojTq6j+56E5PIezmOIOOWyY+aWQFd+IkQ==",
+ "node_modules/@secretlint/config-creator": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-10.2.2.tgz",
+ "integrity": "sha512-BynOBe7Hn3LJjb3CqCHZjeNB09s/vgf0baBaHVw67w7gHF0d25c3ZsZ5+vv8TgwSchRdUCRrbbcq5i2B1fJ2QQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@eslint-community/regexpp": "^4.12.2",
- "@typescript-eslint/scope-manager": "8.61.1",
- "@typescript-eslint/type-utils": "8.61.1",
- "@typescript-eslint/utils": "8.61.1",
- "@typescript-eslint/visitor-keys": "8.61.1",
- "ignore": "^7.0.5",
- "natural-compare": "^1.4.0",
- "ts-api-utils": "^2.5.0"
+ "@secretlint/types": "^10.2.2"
},
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^8.61.1",
- "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
- "typescript": ">=4.8.4 <6.1.0"
+ "node": ">=20.0.0"
}
},
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
- "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "node_modules/@secretlint/config-loader": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-10.2.2.tgz",
+ "integrity": "sha512-ndjjQNgLg4DIcMJp4iaRD6xb9ijWQZVbd9694Ol2IszBIbGPPkwZHzJYKICbTBmh6AH/pLr0CiCaWdGJU7RbpQ==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@secretlint/profiler": "^10.2.2",
+ "@secretlint/resolver": "^10.2.2",
+ "@secretlint/types": "^10.2.2",
+ "ajv": "^8.17.1",
+ "debug": "^4.4.1",
+ "rc-config-loader": "^4.1.3"
+ },
"engines": {
- "node": ">= 4"
+ "node": ">=20.0.0"
}
},
- "node_modules/@typescript-eslint/parser": {
- "version": "8.61.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.61.1.tgz",
- "integrity": "sha512-PJ5vePq5/ognBbrIcoC5+SHO5dfpeLPzP9FpLkzWrguoYQEeeSjlJpVwOpo1JRSTEi7dRcwNy4h4dzV70PqHcg==",
+ "node_modules/@secretlint/config-loader/node_modules/ajv": {
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
+ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/scope-manager": "8.61.1",
- "@typescript-eslint/types": "8.61.1",
- "@typescript-eslint/typescript-estree": "8.61.1",
- "@typescript-eslint/visitor-keys": "8.61.1",
- "debug": "^4.4.3"
- },
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
- "typescript": ">=4.8.4 <6.1.0"
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/@typescript-eslint/project-service": {
- "version": "8.61.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.61.1.tgz",
- "integrity": "sha512-PrC4JYGmR241lYnfhmKGTXkFqv8+ymbTFgSAY0fVXpY82/QkMw5TZPl+vGzuDDU2QYJk9fIDOBTntF+yDv9LEA==",
+ "node_modules/@secretlint/config-loader/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@secretlint/core": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/@secretlint/core/-/core-10.2.2.tgz",
+ "integrity": "sha512-6rdwBwLP9+TO3rRjMVW1tX+lQeo5gBbxl1I5F8nh8bgGtKwdlCMhMKsBWzWg1ostxx/tIG7OjZI0/BxsP8bUgw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/tsconfig-utils": "^8.61.1",
- "@typescript-eslint/types": "^8.61.1",
- "debug": "^4.4.3"
+ "@secretlint/profiler": "^10.2.2",
+ "@secretlint/types": "^10.2.2",
+ "debug": "^4.4.1",
+ "structured-source": "^4.0.0"
},
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "typescript": ">=4.8.4 <6.1.0"
+ "node": ">=20.0.0"
}
},
- "node_modules/@typescript-eslint/scope-manager": {
- "version": "8.61.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.61.1.tgz",
- "integrity": "sha512-L2bdIeoQS8FlKAvONAr20w6OcLXeB+qiDKbAooS9A0Ben+iSIkBef0FxqwKWYqt5sa0i4KJtxVyVmhMylKzF5w==",
+ "node_modules/@secretlint/formatter": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/@secretlint/formatter/-/formatter-10.2.2.tgz",
+ "integrity": "sha512-10f/eKV+8YdGKNQmoDUD1QnYL7TzhI2kzyx95vsJKbEa8akzLAR5ZrWIZ3LbcMmBLzxlSQMMccRmi05yDQ5YDA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.61.1",
- "@typescript-eslint/visitor-keys": "8.61.1"
+ "@secretlint/resolver": "^10.2.2",
+ "@secretlint/types": "^10.2.2",
+ "@textlint/linter-formatter": "^15.2.0",
+ "@textlint/module-interop": "^15.2.0",
+ "@textlint/types": "^15.2.0",
+ "chalk": "^5.4.1",
+ "debug": "^4.4.1",
+ "pluralize": "^8.0.0",
+ "strip-ansi": "^7.1.0",
+ "table": "^6.9.0",
+ "terminal-link": "^4.0.0"
},
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "node": ">=20.0.0"
}
},
- "node_modules/@typescript-eslint/tsconfig-utils": {
- "version": "8.61.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.61.1.tgz",
- "integrity": "sha512-UN/H4di+OO7EWx2ovME+8t31YO+KVnK0RRKEHR3kOt21/Ay8BOq3M1OMvWs5vNiqcFCYGYoxK3MXPZzmMUE+yg==",
+ "node_modules/@secretlint/formatter/node_modules/chalk": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
"dev": true,
"license": "MIT",
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/@secretlint/node": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/@secretlint/node/-/node-10.2.2.tgz",
+ "integrity": "sha512-eZGJQgcg/3WRBwX1bRnss7RmHHK/YlP/l7zOQsrjexYt6l+JJa5YhUmHbuGXS94yW0++3YkEJp0kQGYhiw1DMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@secretlint/config-loader": "^10.2.2",
+ "@secretlint/core": "^10.2.2",
+ "@secretlint/formatter": "^10.2.2",
+ "@secretlint/profiler": "^10.2.2",
+ "@secretlint/source-creator": "^10.2.2",
+ "@secretlint/types": "^10.2.2",
+ "debug": "^4.4.1",
+ "p-map": "^7.0.3"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
+ "node_modules/@secretlint/profiler": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/@secretlint/profiler/-/profiler-10.2.2.tgz",
+ "integrity": "sha512-qm9rWfkh/o8OvzMIfY8a5bCmgIniSpltbVlUVl983zDG1bUuQNd1/5lUEeWx5o/WJ99bXxS7yNI4/KIXfHexig==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@secretlint/resolver": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/@secretlint/resolver/-/resolver-10.2.2.tgz",
+ "integrity": "sha512-3md0cp12e+Ae5V+crPQYGd6aaO7ahw95s28OlULGyclyyUtf861UoRGS2prnUrKh7MZb23kdDOyGCYb9br5e4w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@secretlint/secretlint-formatter-sarif": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-10.2.2.tgz",
+ "integrity": "sha512-ojiF9TGRKJJw308DnYBucHxkpNovDNu1XvPh7IfUp0A12gzTtxuWDqdpuVezL7/IP8Ua7mp5/VkDMN9OLp1doQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "node-sarif-builder": "^3.2.0"
+ }
+ },
+ "node_modules/@secretlint/secretlint-rule-no-dotenv": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-10.2.2.tgz",
+ "integrity": "sha512-KJRbIShA9DVc5Va3yArtJ6QDzGjg3PRa1uYp9As4RsyKtKSSZjI64jVca57FZ8gbuk4em0/0Jq+uy6485wxIdg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@secretlint/types": "^10.2.2"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
+ "node_modules/@secretlint/secretlint-rule-preset-recommend": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-10.2.2.tgz",
+ "integrity": "sha512-K3jPqjva8bQndDKJqctnGfwuAxU2n9XNCPtbXVI5JvC7FnQiNg/yWlQPbMUlBXtBoBGFYp08A94m6fvtc9v+zA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
+ "node_modules/@secretlint/source-creator": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-10.2.2.tgz",
+ "integrity": "sha512-h6I87xJfwfUTgQ7irWq7UTdq/Bm1RuQ/fYhA3dtTIAop5BwSFmZyrchph4WcoEvbN460BWKmk4RYSvPElIIvxw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@secretlint/types": "^10.2.2",
+ "istextorbinary": "^9.5.0"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
+ "node_modules/@secretlint/types": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/@secretlint/types/-/types-10.2.2.tgz",
+ "integrity": "sha512-Nqc90v4lWCXyakD6xNyNACBJNJ0tNCwj2WNk/7ivyacYHxiITVgmLUFXTBOeCdy79iz6HtN9Y31uw/jbLrdOAg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz",
+ "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@textlint/ast-node-types": {
+ "version": "15.8.0",
+ "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-15.8.0.tgz",
+ "integrity": "sha512-5CiH9COYmovWmExQgs7763DzX6Gy9zjkjJ7JxCC95wyTcjwQn/8poNF6fv3qzRlmx8CRRde8DHr9FcgAAiPzgw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@textlint/linter-formatter": {
+ "version": "15.8.0",
+ "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-15.8.0.tgz",
+ "integrity": "sha512-+oU3A235NATv6Lzi4xa4kJ65PuNJlIxesaO4AvDhDWA9FWm7y4XKWaoQCW1esgaQQ6dwnUiFKArQ8TcJ86mC4w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@azu/format-text": "^1.0.2",
+ "@azu/style-format": "^1.0.1",
+ "@textlint/module-interop": "15.8.0",
+ "@textlint/resolver": "15.8.0",
+ "@textlint/types": "15.8.0",
+ "debug": "^4.4.3",
+ "js-yaml": "^4.3.0",
+ "lodash": "^4.18.1",
+ "pluralize": "^2.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "table": "^6.9.0",
+ "text-table": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=20.18.0"
+ }
+ },
+ "node_modules/@textlint/linter-formatter/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@textlint/linter-formatter/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@textlint/linter-formatter/node_modules/pluralize": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz",
+ "integrity": "sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@textlint/linter-formatter/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@textlint/linter-formatter/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@textlint/module-interop": {
+ "version": "15.8.0",
+ "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-15.8.0.tgz",
+ "integrity": "sha512-rt+OR1WYGoLOY8HkA/aBPrqufF6yUUEsKEAh7XohTsT3lp9IyZFT6zOIbjul9P4FAzsmSPkcrYjVx3Bz/IUfkg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@textlint/resolver": {
+ "version": "15.8.0",
+ "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-15.8.0.tgz",
+ "integrity": "sha512-E88tzfX3K8Jykk+38aJ9cy8RquD8ABVOPTO2rFEESq0wcg8x6/ypdAS8ZgR7OKiGqlRF0hkO/m5PbQwVfKM3VA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@textlint/types": {
+ "version": "15.8.0",
+ "resolved": "https://registry.npmjs.org/@textlint/types/-/types-15.8.0.tgz",
+ "integrity": "sha512-Anhc6y5736YIsvqae0U6k0YmB2M/QVHkEeOv2aydAn/WIkdI69dCOiDbe3/+RagS3qstFTSFWJzNRA2lUjv19w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@textlint/ast-node-types": "15.8.0"
+ }
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
+ "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/mocha": {
+ "version": "10.0.10",
+ "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz",
+ "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "22.20.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.0.tgz",
+ "integrity": "sha512-QWlFW2wf3nTjC13/DqRnBpR4ZO36VJH/JVBkA/vcnmbTBNQIlnObqyqZE1tUR7+Ni23Lda8R1BxMfbXRpCUx5g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.21.0"
+ }
+ },
+ "node_modules/@types/normalize-package-data": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz",
+ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/sarif": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz",
+ "integrity": "sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/vscode": {
+ "version": "1.97.0",
+ "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.97.0.tgz",
+ "integrity": "sha512-ueE73loeOTe7olaVyqP9mrRI54kVPJifUPjblZo9fYcv1CuVLPOEKEkqW0GkqPC454+nCEoigLWnC2Pp7prZ9w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "8.61.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.61.1.tgz",
+ "integrity": "sha512-ZPlVl3PB3et/59Ne0fv/sci6ZXz4T4Hp4nTJ56i/Y0gR89ARb+KphojTq6j+56E5PIezmOIOOWyY+aWQFd+IkQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.12.2",
+ "@typescript-eslint/scope-manager": "8.61.1",
+ "@typescript-eslint/type-utils": "8.61.1",
+ "@typescript-eslint/utils": "8.61.1",
+ "@typescript-eslint/visitor-keys": "8.61.1",
+ "ignore": "^7.0.5",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^2.5.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
+ "@typescript-eslint/parser": "^8.61.1",
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
"typescript": ">=4.8.4 <6.1.0"
}
},
- "node_modules/@typescript-eslint/type-utils": {
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
+ "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
"version": "8.61.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.61.1.tgz",
- "integrity": "sha512-GYRicKmVK0C4fsKgaACaknOUAq9Oa2kwsjnpFhFcS/5p4Ht5IP9OVLbgIgcK4SRk92nVHFluurg1lumD9dBcLw==",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.61.1.tgz",
+ "integrity": "sha512-PJ5vePq5/ognBbrIcoC5+SHO5dfpeLPzP9FpLkzWrguoYQEeeSjlJpVwOpo1JRSTEi7dRcwNy4h4dzV70PqHcg==",
"dev": true,
"license": "MIT",
"dependencies": {
+ "@typescript-eslint/scope-manager": "8.61.1",
"@typescript-eslint/types": "8.61.1",
"@typescript-eslint/typescript-estree": "8.61.1",
- "@typescript-eslint/utils": "8.61.1",
- "debug": "^4.4.3",
- "ts-api-utils": "^2.5.0"
+ "@typescript-eslint/visitor-keys": "8.61.1",
+ "debug": "^4.4.3"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1011,49 +1511,691 @@
"typescript": ">=4.8.4 <6.1.0"
}
},
- "node_modules/@typescript-eslint/types": {
+ "node_modules/@typescript-eslint/project-service": {
"version": "8.61.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.61.1.tgz",
- "integrity": "sha512-G+CRlPqLv7Bz1IZVs03x5K59F1veqL0EJUROAdGhKsEq8qOiRiZbI+HUojPq5l0fEGOKModD9br6lObhB8zkoA==",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.61.1.tgz",
+ "integrity": "sha512-PrC4JYGmR241lYnfhmKGTXkFqv8+ymbTFgSAY0fVXpY82/QkMw5TZPl+vGzuDDU2QYJk9fIDOBTntF+yDv9LEA==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/tsconfig-utils": "^8.61.1",
+ "@typescript-eslint/types": "^8.61.1",
+ "debug": "^4.4.3"
+ },
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.1.0"
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "8.61.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.61.1.tgz",
+ "integrity": "sha512-L2bdIeoQS8FlKAvONAr20w6OcLXeB+qiDKbAooS9A0Ben+iSIkBef0FxqwKWYqt5sa0i4KJtxVyVmhMylKzF5w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.61.1",
+ "@typescript-eslint/visitor-keys": "8.61.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/tsconfig-utils": {
+ "version": "8.61.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.61.1.tgz",
+ "integrity": "sha512-UN/H4di+OO7EWx2ovME+8t31YO+KVnK0RRKEHR3kOt21/Ay8BOq3M1OMvWs5vNiqcFCYGYoxK3MXPZzmMUE+yg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.1.0"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "8.61.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.61.1.tgz",
+ "integrity": "sha512-GYRicKmVK0C4fsKgaACaknOUAq9Oa2kwsjnpFhFcS/5p4Ht5IP9OVLbgIgcK4SRk92nVHFluurg1lumD9dBcLw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.61.1",
+ "@typescript-eslint/typescript-estree": "8.61.1",
+ "@typescript-eslint/utils": "8.61.1",
+ "debug": "^4.4.3",
+ "ts-api-utils": "^2.5.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
+ "typescript": ">=4.8.4 <6.1.0"
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "8.61.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.61.1.tgz",
+ "integrity": "sha512-G+CRlPqLv7Bz1IZVs03x5K59F1veqL0EJUROAdGhKsEq8qOiRiZbI+HUojPq5l0fEGOKModD9br6lObhB8zkoA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "8.61.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.61.1.tgz",
+ "integrity": "sha512-u+oQD3BqYWPc8YV9Zab4vaJElJuwOLPRc10Jm1o/qS+6Qwen14HCWwx0Seo4LnSn2wxea2Ik8DxPt2/FHmuhrg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/project-service": "8.61.1",
+ "@typescript-eslint/tsconfig-utils": "8.61.1",
+ "@typescript-eslint/types": "8.61.1",
+ "@typescript-eslint/visitor-keys": "8.61.1",
+ "debug": "^4.4.3",
+ "minimatch": "^10.2.2",
+ "semver": "^7.7.3",
+ "tinyglobby": "^0.2.15",
+ "ts-api-utils": "^2.5.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.1.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
+ "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "10.2.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
+ "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.5"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "8.61.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.61.1.tgz",
+ "integrity": "sha512-1+P/3Dj6jvtybE1q0HQ6yBt/gq+oKJyLdEv4HdnqasaEXRSYCAsD59mXEVQnM/ULNdQxbX77tdG4jPRjIS6knA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.9.1",
+ "@typescript-eslint/scope-manager": "8.61.1",
+ "@typescript-eslint/types": "8.61.1",
+ "@typescript-eslint/typescript-estree": "8.61.1"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
+ "typescript": ">=4.8.4 <6.1.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "8.61.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.61.1.tgz",
+ "integrity": "sha512-6fJ9MHWtK14C1DSkiMlHUSOmrVebL7150xZJBlJiL62jjhIA4JmOq6flwBgDxIdBKKdoiZRel+dfPD5MLfny3w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.61.1",
+ "eslint-visitor-keys": "^5.0.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
+ "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@typespec/ts-http-runtime": {
+ "version": "0.3.8",
+ "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.8.tgz",
+ "integrity": "sha512-bLMpVcWZNzq6lYOybwFwOAR1IXKcHnhUNqYeHjl1bET/qE3jFPFH+p8Wrh3rU4xwdnifPxmKNESBYnvnmc75aA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "http-proxy-agent": "^7.0.0",
+ "https-proxy-agent": "^7.0.0",
+ "tslib": "^2.6.2"
+ },
+ "engines": {
+ "node": ">=22.0.0"
+ }
+ },
+ "node_modules/@vscode/test-cli": {
+ "version": "0.0.15",
+ "resolved": "https://registry.npmjs.org/@vscode/test-cli/-/test-cli-0.0.15.tgz",
+ "integrity": "sha512-nAxk2X79wuXS7aOhyFFhFcCqd7EBUoMesu7ZgsYE/4eFjyBMuyIweVE94BxdKH1RieN8eOz2SIrljrZt6Lk9fQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/mocha": "^10.0.10",
+ "c8": "^11.0.0",
+ "chokidar": "^5.0.0",
+ "enhanced-resolve": "^5.24.0",
+ "glob": "^13.0.6",
+ "minimatch": "^10.2.5",
+ "mocha": "^11.7.6",
+ "supports-color": "^10.2.2",
+ "yargs": "^18.0.0"
+ },
+ "bin": {
+ "vscode-test": "out/bin.mjs"
+ },
+ "engines": {
+ "node": ">=22"
+ }
+ },
+ "node_modules/@vscode/test-cli/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/@vscode/test-cli/node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/@vscode/test-cli/node_modules/brace-expansion": {
+ "version": "5.0.9",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz",
+ "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/@vscode/test-cli/node_modules/cliui": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz",
+ "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^7.2.0",
+ "strip-ansi": "^7.1.0",
+ "wrap-ansi": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/@vscode/test-cli/node_modules/cliui/node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@vscode/test-cli/node_modules/emoji-regex": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vscode/test-cli/node_modules/glob": {
+ "version": "13.0.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz",
+ "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "minimatch": "^10.2.2",
+ "minipass": "^7.1.3",
+ "path-scurry": "^2.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@vscode/test-cli/node_modules/lru-cache": {
+ "version": "11.5.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
+ "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/@vscode/test-cli/node_modules/minimatch": {
+ "version": "10.2.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz",
+ "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.8"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@vscode/test-cli/node_modules/path-scurry": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz",
+ "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^11.0.0",
+ "minipass": "^7.1.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@vscode/test-cli/node_modules/string-width": {
+ "version": "8.2.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.2.tgz",
+ "integrity": "sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.5.0",
+ "strip-ansi": "^7.1.2"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@vscode/test-cli/node_modules/wrap-ansi": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@vscode/test-cli/node_modules/wrap-ansi/node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@vscode/test-cli/node_modules/yargs": {
+ "version": "18.1.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.1.0.tgz",
+ "integrity": "sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^9.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "string-width": "^8.2.1",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^22.0.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=23"
+ }
+ },
+ "node_modules/@vscode/test-cli/node_modules/yargs-parser": {
+ "version": "22.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz",
+ "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "^20.19.0 || ^22.12.0 || >=23"
+ }
+ },
+ "node_modules/@vscode/test-electron": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-3.1.0.tgz",
+ "integrity": "sha512-CRqv5u+YYoseuNVJ6Tyo4k0sF0mx4qnKMihRB0PjsUF8Dc0WKtCXo6CNL6nWWm5esfFQsQA/pejMj4ZbpJVLTw==",
+ "dev": true,
+ "license": "MIT",
+ "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"
+ },
+ "engines": {
+ "node": ">=22"
}
},
- "node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.61.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.61.1.tgz",
- "integrity": "sha512-u+oQD3BqYWPc8YV9Zab4vaJElJuwOLPRc10Jm1o/qS+6Qwen14HCWwx0Seo4LnSn2wxea2Ik8DxPt2/FHmuhrg==",
+ "node_modules/@vscode/vsce": {
+ "version": "3.9.2",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-3.9.2.tgz",
+ "integrity": "sha512-XSxMosEEDO6vLxELAHVkwmhC0qe0ijZni2jB9Rcs8kQsW4lhTDQ/wMzmwFs/buotAWSnpmUp/dRWD2ufG3UYKA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/project-service": "8.61.1",
- "@typescript-eslint/tsconfig-utils": "8.61.1",
- "@typescript-eslint/types": "8.61.1",
- "@typescript-eslint/visitor-keys": "8.61.1",
- "debug": "^4.4.3",
+ "@azure/identity": "^4.1.0",
+ "@secretlint/node": "^10.1.2",
+ "@secretlint/secretlint-formatter-sarif": "^10.1.2",
+ "@secretlint/secretlint-rule-no-dotenv": "^10.1.2",
+ "@secretlint/secretlint-rule-preset-recommend": "^10.1.2",
+ "@vscode/vsce-sign": "^2.0.0",
+ "azure-devops-node-api": "^12.5.0",
+ "chalk": "^4.1.2",
+ "cheerio": "^1.0.0-rc.9",
+ "cockatiel": "^3.1.2",
+ "commander": "^12.1.0",
+ "form-data": "^4.0.0",
+ "glob": "^13.0.6",
+ "hosted-git-info": "^4.0.2",
+ "jsonc-parser": "^3.2.0",
+ "leven": "^3.1.0",
+ "markdown-it": "^14.1.0",
+ "mime": "^1.3.4",
"minimatch": "^10.2.2",
- "semver": "^7.7.3",
- "tinyglobby": "^0.2.15",
- "ts-api-utils": "^2.5.0"
+ "parse-semver": "^1.1.1",
+ "read": "^1.0.7",
+ "secretlint": "^10.1.2",
+ "semver": "^7.5.2",
+ "tmp": "^0.2.3",
+ "typed-rest-client": "^1.8.4",
+ "url-join": "^4.0.1",
+ "xml2js": "^0.5.0",
+ "yauzl": "^3.2.1",
+ "yazl": "^2.2.2"
},
- "engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ "bin": {
+ "vsce": "vsce"
},
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "engines": {
+ "node": ">= 20"
},
- "peerDependencies": {
- "typescript": ">=4.8.4 <6.1.0"
+ "optionalDependencies": {
+ "keytar": "^7.7.0"
}
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": {
+ "node_modules/@vscode/vsce-sign": {
+ "version": "2.0.9",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.9.tgz",
+ "integrity": "sha512-8IvaRvtFyzUnGGl3f5+1Cnor3LqaUWvhaUjAYO8Y39OUYlOf3cRd+dowuQYLpZcP3uwSG+mURwjEBOSq4SOJ0g==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "SEE LICENSE IN LICENSE.txt",
+ "optionalDependencies": {
+ "@vscode/vsce-sign-alpine-arm64": "2.0.6",
+ "@vscode/vsce-sign-alpine-x64": "2.0.6",
+ "@vscode/vsce-sign-darwin-arm64": "2.0.6",
+ "@vscode/vsce-sign-darwin-x64": "2.0.6",
+ "@vscode/vsce-sign-linux-arm": "2.0.6",
+ "@vscode/vsce-sign-linux-arm64": "2.0.6",
+ "@vscode/vsce-sign-linux-x64": "2.0.6",
+ "@vscode/vsce-sign-win32-arm64": "2.0.6",
+ "@vscode/vsce-sign-win32-x64": "2.0.6"
+ }
+ },
+ "node_modules/@vscode/vsce-sign-alpine-arm64": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.6.tgz",
+ "integrity": "sha512-wKkJBsvKF+f0GfsUuGT0tSW0kZL87QggEiqNqK6/8hvqsXvpx8OsTEc3mnE1kejkh5r+qUyQ7PtF8jZYN0mo8Q==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "SEE LICENSE IN LICENSE.txt",
+ "optional": true,
+ "os": [
+ "alpine"
+ ]
+ },
+ "node_modules/@vscode/vsce-sign-alpine-x64": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.6.tgz",
+ "integrity": "sha512-YoAGlmdK39vKi9jA18i4ufBbd95OqGJxRvF3n6ZbCyziwy3O+JgOpIUPxv5tjeO6gQfx29qBivQ8ZZTUF2Ba0w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "SEE LICENSE IN LICENSE.txt",
+ "optional": true,
+ "os": [
+ "alpine"
+ ]
+ },
+ "node_modules/@vscode/vsce-sign-darwin-arm64": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.6.tgz",
+ "integrity": "sha512-5HMHaJRIQuozm/XQIiJiA0W9uhdblwwl2ZNDSSAeXGO9YhB9MH5C4KIHOmvyjUnKy4UCuiP43VKpIxW1VWP4tQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "SEE LICENSE IN LICENSE.txt",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@vscode/vsce-sign-darwin-x64": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.6.tgz",
+ "integrity": "sha512-25GsUbTAiNfHSuRItoQafXOIpxlYj+IXb4/qarrXu7kmbH94jlm5sdWSCKrrREs8+GsXF1b+l3OB7VJy5jsykw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "SEE LICENSE IN LICENSE.txt",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@vscode/vsce-sign-linux-arm": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.6.tgz",
+ "integrity": "sha512-UndEc2Xlq4HsuMPnwu7420uqceXjs4yb5W8E2/UkaHBB9OWCwMd3/bRe/1eLe3D8kPpxzcaeTyXiK3RdzS/1CA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "SEE LICENSE IN LICENSE.txt",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@vscode/vsce-sign-linux-arm64": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.6.tgz",
+ "integrity": "sha512-cfb1qK7lygtMa4NUl2582nP7aliLYuDEVpAbXJMkDq1qE+olIw/es+C8j1LJwvcRq1I2yWGtSn3EkDp9Dq5FdA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "SEE LICENSE IN LICENSE.txt",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@vscode/vsce-sign-linux-x64": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.6.tgz",
+ "integrity": "sha512-/olerl1A4sOqdP+hjvJ1sbQjKN07Y3DVnxO4gnbn/ahtQvFrdhUi0G1VsZXDNjfqmXw57DmPi5ASnj/8PGZhAA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "SEE LICENSE IN LICENSE.txt",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@vscode/vsce-sign-win32-arm64": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.6.tgz",
+ "integrity": "sha512-ivM/MiGIY0PJNZBoGtlRBM/xDpwbdlCWomUWuLmIxbi1Cxe/1nooYrEQoaHD8ojVRgzdQEUzMsRbyF5cJJgYOg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "SEE LICENSE IN LICENSE.txt",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@vscode/vsce-sign-win32-x64": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.6.tgz",
+ "integrity": "sha512-mgth9Kvze+u8CruYMmhHw6Zgy3GRX2S+Ed5oSokDEK5vPEwGGKnmuXua9tmFhomeAnhgJnL4DCna3TiNuGrBTQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "SEE LICENSE IN LICENSE.txt",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@vscode/vsce/node_modules/balanced-match": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
"integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
@@ -1063,27 +2205,29 @@
"node": "18 || 20 || >=22"
}
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
- "version": "5.0.6",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
- "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
+ "node_modules/@vscode/vsce/node_modules/brace-expansion": {
+ "version": "5.0.9",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz",
+ "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==",
"dev": true,
"license": "MIT",
"dependencies": {
"balanced-match": "^4.0.2"
},
"engines": {
- "node": "18 || 20 || >=22"
+ "node": "20 || >=22"
}
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
- "version": "10.2.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
- "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
+ "node_modules/@vscode/vsce/node_modules/glob": {
+ "version": "13.0.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz",
+ "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
- "brace-expansion": "^5.0.5"
+ "minimatch": "^10.2.2",
+ "minipass": "^7.1.3",
+ "path-scurry": "^2.0.2"
},
"engines": {
"node": "18 || 20 || >=22"
@@ -1092,100 +2236,73 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/@typescript-eslint/utils": {
- "version": "8.61.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.61.1.tgz",
- "integrity": "sha512-1+P/3Dj6jvtybE1q0HQ6yBt/gq+oKJyLdEv4HdnqasaEXRSYCAsD59mXEVQnM/ULNdQxbX77tdG4jPRjIS6knA==",
+ "node_modules/@vscode/vsce/node_modules/hosted-git-info": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
+ "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
"dev": true,
- "license": "MIT",
+ "license": "ISC",
"dependencies": {
- "@eslint-community/eslint-utils": "^4.9.1",
- "@typescript-eslint/scope-manager": "8.61.1",
- "@typescript-eslint/types": "8.61.1",
- "@typescript-eslint/typescript-estree": "8.61.1"
+ "lru-cache": "^6.0.0"
},
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
- "typescript": ">=4.8.4 <6.1.0"
+ "node": ">=10"
}
},
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.61.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.61.1.tgz",
- "integrity": "sha512-6fJ9MHWtK14C1DSkiMlHUSOmrVebL7150xZJBlJiL62jjhIA4JmOq6flwBgDxIdBKKdoiZRel+dfPD5MLfny3w==",
+ "node_modules/@vscode/vsce/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
- "license": "MIT",
+ "license": "ISC",
"dependencies": {
- "@typescript-eslint/types": "8.61.1",
- "eslint-visitor-keys": "^5.0.0"
+ "yallist": "^4.0.0"
},
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
+ "node": ">=10"
}
},
- "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
- "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
+ "node_modules/@vscode/vsce/node_modules/minimatch": {
+ "version": "10.2.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz",
+ "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.8"
+ },
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": "18 || 20 || >=22"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/@vscode/test-cli": {
- "version": "0.0.12",
- "resolved": "https://registry.npmjs.org/@vscode/test-cli/-/test-cli-0.0.12.tgz",
- "integrity": "sha512-iYN0fDg29+a2Xelle/Y56Xvv7Nc8Thzq4VwpzAF/SIE6918rDicqfsQxV6w1ttr2+SOm+10laGuY9FG2ptEKsQ==",
+ "node_modules/@vscode/vsce/node_modules/path-scurry": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz",
+ "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==",
"dev": true,
- "license": "MIT",
+ "license": "BlueOak-1.0.0",
"dependencies": {
- "@types/mocha": "^10.0.10",
- "c8": "^10.1.3",
- "chokidar": "^3.6.0",
- "enhanced-resolve": "^5.18.3",
- "glob": "^10.3.10",
- "minimatch": "^9.0.3",
- "mocha": "^11.7.4",
- "supports-color": "^10.2.2",
- "yargs": "^17.7.2"
- },
- "bin": {
- "vscode-test": "out/bin.mjs"
+ "lru-cache": "^11.0.0",
+ "minipass": "^7.1.2"
},
"engines": {
- "node": ">=18"
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/@vscode/test-electron": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.5.2.tgz",
- "integrity": "sha512-8ukpxv4wYe0iWMRQU18jhzJOHkeGKbnw7xWRX3Zw1WJA4cEKbHcmmLPdPrPtL6rhDcrlCZN+xKRpv09n4gRHYg==",
+ "node_modules/@vscode/vsce/node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "11.5.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
+ "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
"dev": true,
- "license": "MIT",
- "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"
- },
+ "license": "BlueOak-1.0.0",
"engines": {
- "node": ">=16"
+ "node": "20 || >=22"
}
},
"node_modules/acorn": {
@@ -1238,6 +2355,22 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
+ "node_modules/ansi-escapes": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz",
+ "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "environment": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/ansi-regex": {
"version": "6.2.2",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
@@ -1267,20 +2400,6 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "node_modules/anymatch": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -1327,6 +2446,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/async-function": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz",
@@ -1337,6 +2466,13 @@
"node": ">= 0.4"
}
},
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/available-typed-arrays": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
@@ -1344,35 +2480,114 @@
"dev": true,
"license": "MIT",
"dependencies": {
- "possible-typed-array-names": "^1.0.0"
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/azure-devops-node-api": {
+ "version": "12.5.0",
+ "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz",
+ "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tunnel": "0.0.6",
+ "typed-rest-client": "^1.8.4"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/binaryextensions": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-6.11.0.tgz",
+ "integrity": "sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==",
+ "dev": true,
+ "license": "Artistic-2.0",
+ "dependencies": {
+ "editions": "^6.21.0"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=4"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://bevry.me/fund"
}
},
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "node_modules/bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
},
- "node_modules/binary-extensions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
- "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "node_modules/bl/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": ">=8"
+ "optional": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "engines": {
+ "node": ">= 6"
}
},
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/boundary": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz",
+ "integrity": "sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
"node_modules/brace-expansion": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
@@ -1403,10 +2618,69 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/buffer-equal-constant-time": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
+ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/bundle-name": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
+ "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "run-applescript": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/c8": {
- "version": "10.1.3",
- "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz",
- "integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==",
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/c8/-/c8-11.0.0.tgz",
+ "integrity": "sha512-e/uRViGHSVIJv7zsaDKM7VRn2390TgHXqUSvYwPHBQaU6L7E9L0n9JbdkwdYPvshDT0KymBmmlwSpms3yBaMNg==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -1417,7 +2691,7 @@
"istanbul-lib-coverage": "^3.2.0",
"istanbul-lib-report": "^3.0.1",
"istanbul-reports": "^3.1.6",
- "test-exclude": "^7.0.1",
+ "test-exclude": "^8.0.0",
"v8-to-istanbul": "^9.0.0",
"yargs": "^17.7.2",
"yargs-parser": "^21.1.1"
@@ -1426,7 +2700,7 @@
"c8": "bin/c8.js"
},
"engines": {
- "node": ">=18"
+ "node": "20 || >=22"
},
"peerDependencies": {
"monocart-coverage-reports": "^2"
@@ -1540,31 +2814,74 @@
"node": ">=8"
}
},
+ "node_modules/cheerio": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz",
+ "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cheerio-select": "^2.1.0",
+ "dom-serializer": "^2.0.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.2.2",
+ "encoding-sniffer": "^0.2.1",
+ "htmlparser2": "^10.1.0",
+ "parse5": "^7.3.0",
+ "parse5-htmlparser2-tree-adapter": "^7.1.0",
+ "parse5-parser-stream": "^7.1.2",
+ "undici": "^7.19.0",
+ "whatwg-mimetype": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=20.18.1"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
+ }
+ },
+ "node_modules/cheerio-select": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
+ "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-select": "^5.1.0",
+ "css-what": "^6.1.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
"node_modules/chokidar": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
- "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz",
+ "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
+ "readdirp": "^5.0.0"
},
"engines": {
- "node": ">= 8.10.0"
+ "node": ">= 20.19.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
}
},
+ "node_modules/chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "dev": true,
+ "license": "ISC",
+ "optional": true
+ },
"node_modules/cli-cursor": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
@@ -1672,6 +2989,16 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
+ "node_modules/cockatiel": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz",
+ "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ }
+ },
"node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
@@ -1692,6 +3019,29 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
+ "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -1728,6 +3078,36 @@
"node": ">= 8"
}
},
+ "node_modules/css-select": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz",
+ "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.1.0",
+ "domhandler": "^5.0.2",
+ "domutils": "^3.0.1",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz",
+ "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
"node_modules/data-view-buffer": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz",
@@ -1813,6 +3193,34 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "mimic-response": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"node_modules/deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -1820,6 +3228,36 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/default-browser": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz",
+ "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bundle-name": "^4.1.0",
+ "default-browser-id": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser-id": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz",
+ "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/define-data-property": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
@@ -1838,6 +3276,19 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/define-properties": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
@@ -1856,6 +3307,27 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/diff": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz",
@@ -1866,6 +3338,65 @@
"node": ">=0.3.1"
}
},
+ "node_modules/dom-serializer": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
+ "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.2",
+ "entities": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/domhandler": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
+ "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "domelementtype": "^2.3.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz",
+ "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "dom-serializer": "^2.0.0",
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@@ -1888,6 +3419,33 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/ecdsa-sig-formatter": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
+ "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/editions": {
+ "version": "6.22.0",
+ "resolved": "https://registry.npmjs.org/editions/-/editions-6.22.0.tgz",
+ "integrity": "sha512-UgGlf8IW75je7HZjNDpJdCv4cGJWIi6yumFdZ0R7A8/CIhQiWUjyGLCxdHpd8bmyD1gnkfUNK0oeOXqUS2cpfQ==",
+ "dev": true,
+ "license": "Artistic-2.0",
+ "dependencies": {
+ "version-range": "^4.15.0"
+ },
+ "engines": {
+ "ecmascript": ">= es5",
+ "node": ">=4"
+ },
+ "funding": {
+ "url": "https://bevry.me/fund"
+ }
+ },
"node_modules/emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
@@ -1895,6 +3453,31 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/encoding-sniffer": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz",
+ "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "iconv-lite": "^0.6.3",
+ "whatwg-encoding": "^3.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/encoding-sniffer?sponsor=1"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
"node_modules/enhanced-resolve": {
"version": "5.24.0",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.0.tgz",
@@ -1909,6 +3492,32 @@
"node": ">=10.13.0"
}
},
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/environment": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz",
+ "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/error-ex": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
@@ -2332,6 +3941,17 @@
"node": ">=0.10.0"
}
},
+ "node_modules/expand-template": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
+ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
+ "dev": true,
+ "license": "(MIT OR WTFPL)",
+ "optional": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -2339,6 +3959,23 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -2353,6 +3990,33 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/fast-uri": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz",
+ "integrity": "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/fastq": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
"node_modules/file-entry-cache": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
@@ -2460,19 +4124,44 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/fsevents": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
- "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "node_modules/form-data": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz",
+ "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==",
"dev": true,
- "hasInstallScript": true,
"license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "hasown": "^2.0.4",
+ "mime-types": "^2.1.35"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/fs-extra": {
+ "version": "11.4.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz",
+ "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
"engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ "node": ">=14.14"
}
},
"node_modules/function-bind": {
@@ -2609,6 +4298,14 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/github-from-package": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
+ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
"node_modules/glob": {
"version": "10.5.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
@@ -2674,6 +4371,50 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/globby": {
+ "version": "14.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz",
+ "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^2.1.0",
+ "fast-glob": "^3.3.3",
+ "ignore": "^7.0.3",
+ "path-type": "^6.0.0",
+ "slash": "^5.1.0",
+ "unicorn-magic": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globby/node_modules/ignore": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz",
+ "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/globby/node_modules/path-type": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz",
+ "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/gopd": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
@@ -2812,6 +4553,39 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/htmlparser2": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz",
+ "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==",
+ "dev": true,
+ "funding": [
+ "https://github.com/fb55/htmlparser2?sponsor=1",
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "domelementtype": "^2.3.0",
+ "domhandler": "^5.0.3",
+ "domutils": "^3.2.2",
+ "entities": "^7.0.1"
+ }
+ },
+ "node_modules/htmlparser2/node_modules/entities": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz",
+ "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
"node_modules/http-proxy-agent": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
@@ -2840,6 +4614,41 @@
"node": ">= 14"
}
},
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "BSD-3-Clause",
+ "optional": true
+ },
"node_modules/ignore": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
@@ -2884,6 +4693,19 @@
"node": ">=0.8.19"
}
},
+ "node_modules/index-to-position": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz",
+ "integrity": "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
@@ -2891,6 +4713,14 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true,
+ "license": "ISC",
+ "optional": true
+ },
"node_modules/internal-slot": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
@@ -2967,19 +4797,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-boolean-object": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz",
@@ -3061,6 +4878,22 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-document.all": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-document.all/-/is-document.all-1.0.0.tgz",
@@ -3146,6 +4979,25 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-interactive": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz",
@@ -3390,6 +5242,22 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-wsl": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz",
+ "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-inside-container": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
@@ -3456,6 +5324,24 @@
"node": ">=8"
}
},
+ "node_modules/istextorbinary": {
+ "version": "9.5.0",
+ "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-9.5.0.tgz",
+ "integrity": "sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==",
+ "dev": true,
+ "license": "Artistic-2.0",
+ "dependencies": {
+ "binaryextensions": "^6.11.0",
+ "editions": "^6.21.0",
+ "textextensions": "^6.11.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "funding": {
+ "url": "https://bevry.me/fund"
+ }
+ },
"node_modules/jackspeak": {
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
@@ -3472,10 +5358,17 @@
"@pkgjs/parseargs": "^0.11.0"
}
},
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/js-yaml": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz",
- "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz",
+ "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==",
"dev": true,
"funding": [
{
@@ -3523,6 +5416,62 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
+ "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jsonfile": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz",
+ "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/jsonwebtoken": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz",
+ "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "jws": "^4.0.1",
+ "lodash.includes": "^4.3.0",
+ "lodash.isboolean": "^3.0.3",
+ "lodash.isinteger": "^4.0.4",
+ "lodash.isnumber": "^3.0.3",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.isstring": "^4.0.1",
+ "lodash.once": "^4.0.0",
+ "ms": "^2.1.1",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">=12",
+ "npm": ">=6"
+ }
+ },
"node_modules/jszip": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
@@ -3530,10 +5479,46 @@
"dev": true,
"license": "(MIT OR GPL-3.0-or-later)",
"dependencies": {
- "lie": "~3.3.0",
- "pako": "~1.0.2",
- "readable-stream": "~2.3.6",
- "setimmediate": "^1.0.5"
+ "lie": "~3.3.0",
+ "pako": "~1.0.2",
+ "readable-stream": "~2.3.6",
+ "setimmediate": "^1.0.5"
+ }
+ },
+ "node_modules/jwa": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz",
+ "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer-equal-constant-time": "^1.0.1",
+ "ecdsa-sig-formatter": "1.0.11",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/jws": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz",
+ "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "jwa": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/keytar": {
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz",
+ "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "node-addon-api": "^4.3.0",
+ "prebuild-install": "^7.0.1"
}
},
"node_modules/keyv": {
@@ -3546,6 +5531,16 @@
"json-buffer": "3.0.1"
}
},
+ "node_modules/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -3570,6 +5565,26 @@
"immediate": "~3.0.5"
}
},
+ "node_modules/linkify-it": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.2.tgz",
+ "integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/markdown-it"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "uc.micro": "^2.0.0"
+ }
+ },
"node_modules/load-json-file": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
@@ -3602,6 +5617,55 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/lodash": {
+ "version": "4.18.1",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz",
+ "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.includes": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
+ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.isboolean": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.isinteger": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz",
+ "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.isnumber": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz",
+ "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
@@ -3609,6 +5673,20 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/lodash.once": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
+ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.truncate": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
+ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/log-symbols": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
@@ -3649,6 +5727,34 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/markdown-it": {
+ "version": "14.3.0",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz",
+ "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/markdown-it"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "entities": "^4.5.0",
+ "linkify-it": "^5.0.2",
+ "mdurl": "^2.0.0",
+ "punycode.js": "^2.3.1",
+ "uc.micro": "^2.1.0"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.mjs"
+ }
+ },
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
@@ -3659,6 +5765,13 @@
"node": ">= 0.4"
}
},
+ "node_modules/mdurl": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.1.0.tgz",
+ "integrity": "sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/memorystream": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
@@ -3668,6 +5781,66 @@
"node": ">= 0.10.0"
}
},
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/mimic-function": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz",
@@ -3681,6 +5854,20 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/minimatch": {
"version": "9.0.9",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
@@ -3697,6 +5884,17 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/minipass": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
@@ -3707,6 +5905,14 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/mkdirp-classic": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
"node_modules/mocha": {
"version": "11.7.6",
"resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.6.tgz",
@@ -3797,6 +6003,21 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/napi-build-utils": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz",
+ "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
"node_modules/natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -3811,6 +6032,42 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/node-abi": {
+ "version": "3.94.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.94.0.tgz",
+ "integrity": "sha512-W5ZNO5KRPB5TkYmGVD9F6YqhsglXJzE6etpbmT+f6EQElhiX/UTG551cnsRGvLG3fyZEg9HwaDmNmj5nwJ4z9g==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/node-addon-api": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz",
+ "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/node-sarif-builder": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/node-sarif-builder/-/node-sarif-builder-3.4.0.tgz",
+ "integrity": "sha512-tGnJW6OKRii9u/b2WiUViTJS+h7Apxx17qsMUjsUeNDiMMX5ZFf8F8Fcz7PAQ6omvOxHZtvDTmOYKJQwmfpjeg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/sarif": "^2.1.7",
+ "fs-extra": "^11.1.1"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
"node_modules/normalize-package-data": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
@@ -3834,16 +6091,6 @@
"semver": "bin/semver"
}
},
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/npm-run-all": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
@@ -4045,6 +6292,19 @@
"which": "bin/which"
}
},
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
"node_modules/object-inspect": {
"version": "1.13.4",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
@@ -4089,6 +6349,17 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "license": "ISC",
+ "optional": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
"node_modules/onetime": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz",
@@ -4105,6 +6376,25 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/open": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz",
+ "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "default-browser": "^5.2.1",
+ "define-lazy-prop": "^3.0.0",
+ "is-inside-container": "^1.0.0",
+ "wsl-utils": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/optionator": {
"version": "0.9.4",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
@@ -4278,6 +6568,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/p-map": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.6.tgz",
+ "integrity": "sha512-I4Prw6ivkd6p8PiYR1tXASOAOBzIJwu0TB7fqaX0c/8c3QAehNYmX57EijyGGGBt3c/BIowGwV03RVBtXvHEVg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/package-json-from-dist": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
@@ -4292,31 +6595,104 @@
"dev": true,
"license": "(MIT AND Zlib)"
},
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/parse-semver": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz",
+ "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^5.1.0"
+ }
+ },
+ "node_modules/parse-semver/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^6.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/parse5-htmlparser2-tree-adapter": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz",
+ "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "callsites": "^3.0.0"
+ "domhandler": "^5.0.3",
+ "parse5": "^7.0.0"
},
- "engines": {
- "node": ">=6"
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
}
},
- "node_modules/parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "node_modules/parse5-parser-stream": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz",
+ "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==",
"dev": true,
"license": "MIT",
"dependencies": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
+ "parse5": "^7.0.0"
},
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/parse5/node_modules/entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
"engines": {
- "node": ">=4"
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/path-exists": {
@@ -4376,6 +6752,13 @@
"node": ">=4"
}
},
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -4419,6 +6802,16 @@
"node": ">=4"
}
},
+ "node_modules/pluralize": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
+ "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/possible-typed-array-names": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
@@ -4429,6 +6822,35 @@
"node": ">= 0.4"
}
},
+ "node_modules/prebuild-install": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz",
+ "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==",
+ "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^2.0.0",
+ "expand-template": "^2.0.3",
+ "github-from-package": "0.0.0",
+ "minimist": "^1.2.3",
+ "mkdirp-classic": "^0.5.3",
+ "napi-build-utils": "^2.0.0",
+ "node-abi": "^3.3.0",
+ "pump": "^3.0.0",
+ "rc": "^1.2.7",
+ "simple-get": "^4.0.0",
+ "tar-fs": "^2.0.0",
+ "tunnel-agent": "^0.6.0"
+ },
+ "bin": {
+ "prebuild-install": "bin.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -4446,6 +6868,18 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/pump": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz",
+ "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
"node_modules/punycode": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -4456,6 +6890,54 @@
"node": ">=6"
}
},
+ "node_modules/punycode.js": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
+ "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.15.3",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz",
+ "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "es-define-property": "^1.0.1",
+ "side-channel": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -4466,6 +6948,60 @@
"safe-buffer": "^5.1.0"
}
},
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dev": true,
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
+ "optional": true,
+ "dependencies": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "bin": {
+ "rc": "cli.js"
+ }
+ },
+ "node_modules/rc-config-loader": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.4.tgz",
+ "integrity": "sha512-3GiwEzklkbXTDp52UR5nT8iXgYAx1V9ZG/kDZT7p60u2GCv2XTwQq4NzinMoMpNtXhmt3WkhYXcj6HH8HdwCEQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.4.3",
+ "js-yaml": "^4.1.1",
+ "json5": "^2.2.3",
+ "require-from-string": "^2.0.2"
+ }
+ },
+ "node_modules/rc/node_modules/strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/read": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
+ "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "mute-stream": "~0.0.4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
"node_modules/read-pkg": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
@@ -4498,16 +7034,17 @@
}
},
"node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz",
+ "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "picomatch": "^2.2.1"
- },
"engines": {
- "node": ">=8.10.0"
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
}
},
"node_modules/reflect.getprototypeof": {
@@ -4564,6 +7101,16 @@
"node": ">=0.10.0"
}
},
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/resolve": {
"version": "1.22.12",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz",
@@ -4613,6 +7160,54 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/run-applescript": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
+ "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
"node_modules/safe-array-concat": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz",
@@ -4627,66 +7222,184 @@
"isarray": "^2.0.5"
},
"engines": {
- "node": ">=0.4"
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-array-concat/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/safe-push-apply": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz",
+ "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-push-apply/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/safe-regex-test": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
+ "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/sax": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz",
+ "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=11.0.0"
+ }
+ },
+ "node_modules/secretlint": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/secretlint/-/secretlint-10.2.2.tgz",
+ "integrity": "sha512-xVpkeHV/aoWe4vP4TansF622nBEImzCY73y/0042DuJ29iKIaqgoJ8fGxre3rVSHHbxar4FdJobmTnLp9AU0eg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@secretlint/config-creator": "^10.2.2",
+ "@secretlint/formatter": "^10.2.2",
+ "@secretlint/node": "^10.2.2",
+ "@secretlint/profiler": "^10.2.2",
+ "debug": "^4.4.1",
+ "globby": "^14.1.0",
+ "read-pkg": "^9.0.1"
+ },
+ "bin": {
+ "secretlint": "bin/secretlint.js"
+ },
+ "engines": {
+ "node": ">=20.0.0"
+ }
+ },
+ "node_modules/secretlint/node_modules/hosted-git-info": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz",
+ "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "lru-cache": "^10.0.1"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/secretlint/node_modules/normalize-package-data": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz",
+ "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^7.0.0",
+ "semver": "^7.3.5",
+ "validate-npm-package-license": "^3.0.4"
+ },
+ "engines": {
+ "node": "^16.14.0 || >=18.0.0"
+ }
+ },
+ "node_modules/secretlint/node_modules/parse-json": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz",
+ "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.26.2",
+ "index-to-position": "^1.1.0",
+ "type-fest": "^4.39.1"
+ },
+ "engines": {
+ "node": ">=18"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/safe-array-concat/node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/safe-push-apply": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz",
- "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==",
+ "node_modules/secretlint/node_modules/read-pkg": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz",
+ "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "es-errors": "^1.3.0",
- "isarray": "^2.0.5"
+ "@types/normalize-package-data": "^2.4.3",
+ "normalize-package-data": "^6.0.0",
+ "parse-json": "^8.0.0",
+ "type-fest": "^4.6.0",
+ "unicorn-magic": "^0.1.0"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=18"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/safe-push-apply/node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/safe-regex-test": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
- "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
+ "node_modules/secretlint/node_modules/unicorn-magic": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
+ "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.2",
- "es-errors": "^1.3.0",
- "is-regex": "^1.2.1"
- },
"engines": {
- "node": ">= 0.4"
+ "node": ">=18"
},
"funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/semver": {
@@ -4893,6 +7606,86 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/simple-concat": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/simple-get": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "decompress-response": "^6.0.0",
+ "once": "^1.3.1",
+ "simple-concat": "^1.0.0"
+ }
+ },
+ "node_modules/slash": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
+ "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
+ },
"node_modules/spdx-correct": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
@@ -5125,8 +7918,193 @@
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
- "node_modules/strip-ansi-cjs": {
- "name": "strip-ansi",
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/structured-source": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-4.0.0.tgz",
+ "integrity": "sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "boundary": "^2.0.0"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz",
+ "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/supports-hyperlinks": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz",
+ "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0",
+ "supports-color": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1"
+ }
+ },
+ "node_modules/supports-hyperlinks/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/table": {
+ "version": "6.9.0",
+ "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz",
+ "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "ajv": "^8.0.1",
+ "lodash.truncate": "^4.4.2",
+ "slice-ansi": "^4.0.0",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/table/node_modules/ajv": {
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
+ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/table/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/table/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/table/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/table/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/table/node_modules/strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
@@ -5139,92 +8117,98 @@
"node": ">=8"
}
},
- "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "node_modules/tapable": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz",
+ "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=6"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
}
},
- "node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "node_modules/tar-fs": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.5.tgz",
+ "integrity": "sha512-OboTd8mmMhZDNPV+UjQcK9yKAatXu2aJ+r1w4im1Otd4M4fl2hwvdoXUxIYHFTHWK/3y3FarBP70v3vwmGlOxw==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": ">=4"
+ "optional": true,
+ "dependencies": {
+ "chownr": "^1.1.1",
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.1.4"
}
},
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "node_modules/tar-stream": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": ">=8"
+ "optional": true,
+ "dependencies": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/supports-color": {
- "version": "10.2.2",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz",
- "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==",
- "dev": true,
- "license": "MIT",
"engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
+ "node": ">=6"
}
},
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "node_modules/tar-stream/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": ">= 0.4"
+ "optional": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">= 6"
}
},
- "node_modules/tapable": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz",
- "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==",
+ "node_modules/terminal-link": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-4.0.0.tgz",
+ "integrity": "sha512-lk+vH+MccxNqgVqSnkMVKx4VLJfnLjDBGzH16JVZjKE2DoxP57s6/vt6JmXV5I3jBcfGrxNrYtC+mPtU7WJztA==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "ansi-escapes": "^7.0.0",
+ "supports-hyperlinks": "^3.2.0"
+ },
"engines": {
- "node": ">=6"
+ "node": ">=18"
},
"funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/test-exclude": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.2.tgz",
- "integrity": "sha512-u9E6A+ZDYdp7a4WnarkXPZOx8Ilz46+kby6p1yZ8zsGTz9gYa6FIS7lj2oezzNKmtdyyJNNmmXDppga5GB7kSw==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-8.0.0.tgz",
+ "integrity": "sha512-ZOffsNrXYggvU1mDGHk54I96r26P8SyMjO5slMKSc7+IWmtB/MQKnEC2fP51imB3/pT6YK5cT5E8f+Dd9KdyOQ==",
"dev": true,
"license": "ISC",
"dependencies": {
"@istanbuljs/schema": "^0.1.2",
- "glob": "^10.4.1",
+ "glob": "^13.0.6",
"minimatch": "^10.2.2"
},
"engines": {
- "node": ">=18"
+ "node": "20 || >=22"
}
},
"node_modules/test-exclude/node_modules/balanced-match": {
@@ -5238,26 +8222,71 @@
}
},
"node_modules/test-exclude/node_modules/brace-expansion": {
- "version": "5.0.6",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
- "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
+ "version": "5.0.9",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz",
+ "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==",
"dev": true,
"license": "MIT",
"dependencies": {
"balanced-match": "^4.0.2"
},
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/test-exclude/node_modules/glob": {
+ "version": "13.0.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz",
+ "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "minimatch": "^10.2.2",
+ "minipass": "^7.1.3",
+ "path-scurry": "^2.0.2"
+ },
"engines": {
"node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/test-exclude/node_modules/lru-cache": {
+ "version": "11.5.2",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
+ "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
}
},
"node_modules/test-exclude/node_modules/minimatch": {
- "version": "10.2.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
- "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
+ "version": "10.2.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz",
+ "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
- "brace-expansion": "^5.0.5"
+ "brace-expansion": "^5.0.8"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/test-exclude/node_modules/path-scurry": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz",
+ "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^11.0.0",
+ "minipass": "^7.1.2"
},
"engines": {
"node": "18 || 20 || >=22"
@@ -5266,6 +8295,29 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/textextensions": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-6.11.0.tgz",
+ "integrity": "sha512-tXJwSr9355kFJI3lbCkPpUH5cP8/M0GGy2xLO34aZCjMXBaK3SoPnZwr/oWmo1FdCnELcs4npdCIOFtq9W3ruQ==",
+ "dev": true,
+ "license": "Artistic-2.0",
+ "dependencies": {
+ "editions": "^6.21.0"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "funding": {
+ "url": "https://bevry.me/fund"
+ }
+ },
"node_modules/tinyglobby": {
"version": "0.2.17",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
@@ -5314,6 +8366,16 @@
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/tmp": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz",
+ "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -5340,6 +8402,37 @@
"typescript": ">=4.8.4"
}
},
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "dev": true,
+ "license": "0BSD"
+ },
+ "node_modules/tunnel": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
+ }
+ },
+ "node_modules/tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -5353,6 +8446,19 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/type-fest": {
+ "version": "4.41.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
+ "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/typed-array-buffer": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
@@ -5431,6 +8537,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/typed-rest-client": {
+ "version": "1.8.11",
+ "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz",
+ "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "qs": "^6.9.1",
+ "tunnel": "0.0.6",
+ "underscore": "^1.12.1"
+ }
+ },
"node_modules/typescript": {
"version": "5.9.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
@@ -5469,6 +8587,13 @@
"typescript": ">=4.8.4 <6.1.0"
}
},
+ "node_modules/uc.micro": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
+ "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/unbox-primitive": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
@@ -5488,6 +8613,23 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/underscore": {
+ "version": "1.13.8",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.8.tgz",
+ "integrity": "sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/undici": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.0.tgz",
+ "integrity": "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.18.1"
+ }
+ },
"node_modules/undici-types": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
@@ -5495,6 +8637,29 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/unicorn-magic": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
+ "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -5505,6 +8670,13 @@
"punycode": "^2.1.0"
}
},
+ "node_modules/url-join": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
+ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -5538,6 +8710,43 @@
"spdx-expression-parse": "^3.0.0"
}
},
+ "node_modules/version-range": {
+ "version": "4.15.0",
+ "resolved": "https://registry.npmjs.org/version-range/-/version-range-4.15.0.tgz",
+ "integrity": "sha512-Ck0EJbAGxHwprkzFO966t4/5QkRuzh+/I1RxhLgUKKwEn+Cd8NwM60mE3AqBZg5gYODoXW0EFsQvbZjRlvdqbg==",
+ "dev": true,
+ "license": "Artistic-2.0",
+ "engines": {
+ "node": ">=4"
+ },
+ "funding": {
+ "url": "https://bevry.me/fund"
+ }
+ },
+ "node_modules/whatwg-encoding": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
+ "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
+ "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "iconv-lite": "0.6.3"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/whatwg-mimetype": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
+ "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -5762,6 +8971,54 @@
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true,
+ "license": "ISC",
+ "optional": true
+ },
+ "node_modules/wsl-utils": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz",
+ "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-wsl": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/xml2js": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
+ "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
"node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
@@ -5772,6 +9029,13 @@
"node": ">=10"
}
},
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/yargs": {
"version": "17.7.3",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz",
@@ -5862,6 +9126,29 @@
"node": ">=8"
}
},
+ "node_modules/yauzl": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.4.0.tgz",
+ "integrity": "sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pend": "~1.2.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yazl": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz",
+ "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer-crc32": "~0.2.3"
+ }
+ },
"node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
diff --git a/package.json b/package.json
index 57f525e..abf358c 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "insert-random-text",
- "displayName": "Random, Fake & Mock Data Generator",
- "description": "Insert 130+ types of random, fake & mock data at every cursor — names, emails, UUIDs, lorem ipsum, JSON/SQL/CSV records & whole datasets, templates, locales, anonymize in place. Bulk, seeded, fully offline. The only data faker you'll need.",
+ "displayName": "%displayName%",
+ "description": "%description%",
"publisher": "ElecTreeFrying",
"version": "1.0.1",
"author": {
@@ -105,769 +105,769 @@
"commands": [
{
"command": "extension.insertRandomAnimal",
- "title": "Insert Random: Animal"
+ "title": "%command.animal.title%"
},
{
"command": "extension.insertRandomPerson",
- "title": "Insert Random: Person"
+ "title": "%command.person.title%"
},
{
"command": "extension.insertRandomDate",
- "title": "Insert Random: Date"
+ "title": "%command.date.title%"
},
{
"command": "extension.insertRandomCountry",
- "title": "Insert Random: Country"
+ "title": "%command.country.title%"
},
{
"command": "extension.insertRandomNumber",
- "title": "Insert Random: Number"
+ "title": "%command.number.title%"
},
{
"command": "extension.insertRandomString",
- "title": "Insert Random: String"
+ "title": "%command.string.title%"
},
{
"command": "extension.insertLorem",
- "title": "Insert Random: Lorem"
+ "title": "%command.lorem.title%"
},
{
"command": "extension.insertLoremSmall",
- "title": "Insert Random: Lorem Small"
+ "title": "%command.loremSmall.title%"
},
{
"command": "extension.insertLoremMedium",
- "title": "Insert Random: Lorem Medium"
+ "title": "%command.loremMedium.title%"
},
{
"command": "extension.insertLoremLarge",
- "title": "Insert Random: Lorem Large"
+ "title": "%command.loremLarge.title%"
},
{
"command": "extension.insertRandomHash",
- "title": "Insert Random: Hash"
+ "title": "%command.hash.title%"
},
{
"command": "extension.insertRandomHashSmall",
- "title": "Insert Random: Hash Small"
+ "title": "%command.hashSmall.title%"
},
{
"command": "extension.insertRandomHashMedium",
- "title": "Insert Random: Hash Medium"
+ "title": "%command.hashMedium.title%"
},
{
"command": "extension.insertRandomHashLarge",
- "title": "Insert Random: Hash Large"
+ "title": "%command.hashLarge.title%"
},
{
"command": "insertRandomText.animal",
- "title": "Insert Random: Animal"
+ "title": "%command.animal.title%"
},
{
"command": "insertRandomText.person",
- "title": "Insert Random: Person"
+ "title": "%command.person.title%"
},
{
"command": "insertRandomText.date",
- "title": "Insert Random: Date"
+ "title": "%command.date.title%"
},
{
"command": "insertRandomText.country",
- "title": "Insert Random: Country"
+ "title": "%command.country.title%"
},
{
"command": "insertRandomText.number",
- "title": "Insert Random: Number"
+ "title": "%command.number.title%"
},
{
"command": "insertRandomText.string",
- "title": "Insert Random: String"
+ "title": "%command.string.title%"
},
{
"command": "insertRandomText.lorem",
- "title": "Insert Random: Lorem"
+ "title": "%command.lorem.title%"
},
{
"command": "insertRandomText.loremSmall",
- "title": "Insert Random: Lorem Small"
+ "title": "%command.loremSmall.title%"
},
{
"command": "insertRandomText.loremMedium",
- "title": "Insert Random: Lorem Medium"
+ "title": "%command.loremMedium.title%"
},
{
"command": "insertRandomText.loremLarge",
- "title": "Insert Random: Lorem Large"
+ "title": "%command.loremLarge.title%"
},
{
"command": "insertRandomText.hash",
- "title": "Insert Random: Hash"
+ "title": "%command.hash.title%"
},
{
"command": "insertRandomText.hashSmall",
- "title": "Insert Random: Hash Small"
+ "title": "%command.hashSmall.title%"
},
{
"command": "insertRandomText.hashMedium",
- "title": "Insert Random: Hash Medium"
+ "title": "%command.hashMedium.title%"
},
{
"command": "insertRandomText.hashLarge",
- "title": "Insert Random: Hash Large"
+ "title": "%command.hashLarge.title%"
},
{
"command": "insertRandomText.pick",
- "title": "Insert Random: Pick…"
+ "title": "%command.pick.title%"
},
{
"command": "insertRandomText.record",
- "title": "Insert Random: Record…"
+ "title": "%command.record.title%"
},
{
"command": "insertRandomText.generateDataset",
- "title": "Insert Random: Generate Dataset…"
+ "title": "%command.generateDataset.title%"
},
{
"command": "insertRandomText.randomizeSelection",
- "title": "Insert Random: Randomize Selection"
+ "title": "%command.randomizeSelection.title%"
},
{
"command": "insertRandomText.numberRange",
- "title": "Insert Random: Number (Range…)"
+ "title": "%command.numberRange.title%"
},
{
"command": "insertRandomText.floatRange",
- "title": "Insert Random: Float (Range…)"
+ "title": "%command.floatRange.title%"
},
{
"command": "insertRandomText.stringLength",
- "title": "Insert Random: String (Length…)"
+ "title": "%command.stringLength.title%"
},
{
"command": "insertRandomText.dateBetween",
- "title": "Insert Random: Date (Between…)"
+ "title": "%command.dateBetween.title%"
},
{
"command": "insertRandomText.wordsCount",
- "title": "Insert Random: Words (Count…)"
+ "title": "%command.wordsCount.title%"
},
{
"command": "insertRandomText.sentencesCount",
- "title": "Insert Random: Sentences (Count…)"
+ "title": "%command.sentencesCount.title%"
},
{
"command": "insertRandomText.paragraphsCount",
- "title": "Insert Random: Paragraphs (Count…)"
+ "title": "%command.paragraphsCount.title%"
},
{
"command": "insertRandomText.uuidFormat",
- "title": "Insert Random: UUID (Format…)"
+ "title": "%command.uuidFormat.title%"
},
{
"command": "insertRandomText.passwordOptions",
- "title": "Insert Random: Password (Options…)"
+ "title": "%command.passwordOptions.title%"
},
{
"command": "insertRandomText.phoneFormat",
- "title": "Insert Random: Phone (Format…)"
+ "title": "%command.phoneFormat.title%"
},
{
"command": "insertRandomText.fromTemplate",
- "title": "Insert Random: From Template…"
+ "title": "%command.fromTemplate.title%"
},
{
"command": "insertRandomText.fromPattern",
- "title": "Insert Random: From Pattern…"
+ "title": "%command.fromPattern.title%"
},
{
"command": "insertRandomText.sequence",
- "title": "Insert Random: Sequence (Start/Step…)"
+ "title": "%command.sequence.title%"
},
{
"command": "insertRandomText.uuid",
- "title": "Insert Random: UUID"
+ "title": "%command.uuid.title%"
},
{
"command": "insertRandomText.email",
- "title": "Insert Random: Email"
+ "title": "%command.email.title%"
},
{
"command": "insertRandomText.username",
- "title": "Insert Random: Username"
+ "title": "%command.username.title%"
},
{
"command": "insertRandomText.boolean",
- "title": "Insert Random: Boolean"
+ "title": "%command.boolean.title%"
},
{
"command": "insertRandomText.firstName",
- "title": "Insert Random: First Name"
+ "title": "%command.firstName.title%"
},
{
"command": "insertRandomText.lastName",
- "title": "Insert Random: Last Name"
+ "title": "%command.lastName.title%"
},
{
"command": "insertRandomText.phone",
- "title": "Insert Random: Phone"
+ "title": "%command.phone.title%"
},
{
"command": "insertRandomText.city",
- "title": "Insert Random: City"
+ "title": "%command.city.title%"
},
{
"command": "insertRandomText.address",
- "title": "Insert Random: Street Address"
+ "title": "%command.address.title%"
},
{
"command": "insertRandomText.ipv4",
- "title": "Insert Random: IP Address"
+ "title": "%command.ipv4.title%"
},
{
"command": "insertRandomText.mac",
- "title": "Insert Random: MAC Address"
+ "title": "%command.mac.title%"
},
{
"command": "insertRandomText.url",
- "title": "Insert Random: URL"
+ "title": "%command.url.title%"
},
{
"command": "insertRandomText.color",
- "title": "Insert Random: Color (hex)"
+ "title": "%command.color.title%"
},
{
"command": "insertRandomText.password",
- "title": "Insert Random: Password"
+ "title": "%command.password.title%"
},
{
"command": "insertRandomText.word",
- "title": "Insert Random: Word"
+ "title": "%command.word.title%"
},
{
"command": "insertRandomText.sentence",
- "title": "Insert Random: Sentence"
+ "title": "%command.sentence.title%"
},
{
"command": "insertRandomText.middleName",
- "title": "Insert Random: Middle Name"
+ "title": "%command.middleName.title%"
},
{
"command": "insertRandomText.prefix",
- "title": "Insert Random: Name Prefix"
+ "title": "%command.prefix.title%"
},
{
"command": "insertRandomText.suffix",
- "title": "Insert Random: Name Suffix"
+ "title": "%command.suffix.title%"
},
{
"command": "insertRandomText.sex",
- "title": "Insert Random: Sex"
+ "title": "%command.sex.title%"
},
{
"command": "insertRandomText.gender",
- "title": "Insert Random: Gender"
+ "title": "%command.gender.title%"
},
{
"command": "insertRandomText.jobTitle",
- "title": "Insert Random: Job Title"
+ "title": "%command.jobTitle.title%"
},
{
"command": "insertRandomText.jobType",
- "title": "Insert Random: Job Type"
+ "title": "%command.jobType.title%"
},
{
"command": "insertRandomText.jobArea",
- "title": "Insert Random: Job Area"
+ "title": "%command.jobArea.title%"
},
{
"command": "insertRandomText.bio",
- "title": "Insert Random: Bio"
+ "title": "%command.bio.title%"
},
{
"command": "insertRandomText.zodiac",
- "title": "Insert Random: Zodiac Sign"
+ "title": "%command.zodiac.title%"
},
{
"command": "insertRandomText.ipv6",
- "title": "Insert Random: IPv6 Address"
+ "title": "%command.ipv6.title%"
},
{
"command": "insertRandomText.port",
- "title": "Insert Random: Port"
+ "title": "%command.port.title%"
},
{
"command": "insertRandomText.httpMethod",
- "title": "Insert Random: HTTP Method"
+ "title": "%command.httpMethod.title%"
},
{
"command": "insertRandomText.httpStatus",
- "title": "Insert Random: HTTP Status Code"
+ "title": "%command.httpStatus.title%"
},
{
"command": "insertRandomText.userAgent",
- "title": "Insert Random: User Agent"
+ "title": "%command.userAgent.title%"
},
{
"command": "insertRandomText.domainName",
- "title": "Insert Random: Domain Name"
+ "title": "%command.domainName.title%"
},
{
"command": "insertRandomText.emoji",
- "title": "Insert Random: Emoji"
+ "title": "%command.emoji.title%"
},
{
"command": "insertRandomText.protocol",
- "title": "Insert Random: Protocol"
+ "title": "%command.protocol.title%"
},
{
"command": "insertRandomText.jwt",
- "title": "Insert Random: JWT"
+ "title": "%command.jwt.title%"
},
{
"command": "insertRandomText.displayName",
- "title": "Insert Random: Display Name"
+ "title": "%command.displayName.title%"
},
{
"command": "insertRandomText.company",
- "title": "Insert Random: Company Name"
+ "title": "%command.company.title%"
},
{
"command": "insertRandomText.catchPhrase",
- "title": "Insert Random: Catch Phrase"
+ "title": "%command.catchPhrase.title%"
},
{
"command": "insertRandomText.buzzPhrase",
- "title": "Insert Random: Buzz Phrase"
+ "title": "%command.buzzPhrase.title%"
},
{
"command": "insertRandomText.product",
- "title": "Insert Random: Product"
+ "title": "%command.product.title%"
},
{
"command": "insertRandomText.productName",
- "title": "Insert Random: Product Name"
+ "title": "%command.productName.title%"
},
{
"command": "insertRandomText.price",
- "title": "Insert Random: Price"
+ "title": "%command.price.title%"
},
{
"command": "insertRandomText.department",
- "title": "Insert Random: Department"
+ "title": "%command.department.title%"
},
{
"command": "insertRandomText.productMaterial",
- "title": "Insert Random: Product Material"
+ "title": "%command.productMaterial.title%"
},
{
"command": "insertRandomText.productDescription",
- "title": "Insert Random: Product Description"
+ "title": "%command.productDescription.title%"
},
{
"command": "insertRandomText.isbn",
- "title": "Insert Random: ISBN"
+ "title": "%command.isbn.title%"
},
{
"command": "insertRandomText.amount",
- "title": "Insert Random: Amount"
+ "title": "%command.amount.title%"
},
{
"command": "insertRandomText.currencyCode",
- "title": "Insert Random: Currency Code"
+ "title": "%command.currencyCode.title%"
},
{
"command": "insertRandomText.currencyName",
- "title": "Insert Random: Currency Name"
+ "title": "%command.currencyName.title%"
},
{
"command": "insertRandomText.currencySymbol",
- "title": "Insert Random: Currency Symbol"
+ "title": "%command.currencySymbol.title%"
},
{
"command": "insertRandomText.creditCard",
- "title": "Insert Random: Credit Card Number"
+ "title": "%command.creditCard.title%"
},
{
"command": "insertRandomText.creditCardCVV",
- "title": "Insert Random: Credit Card CVV"
+ "title": "%command.creditCardCVV.title%"
},
{
"command": "insertRandomText.iban",
- "title": "Insert Random: IBAN"
+ "title": "%command.iban.title%"
},
{
"command": "insertRandomText.bic",
- "title": "Insert Random: BIC"
+ "title": "%command.bic.title%"
},
{
"command": "insertRandomText.accountNumber",
- "title": "Insert Random: Account Number"
+ "title": "%command.accountNumber.title%"
},
{
"command": "insertRandomText.routingNumber",
- "title": "Insert Random: Routing Number"
+ "title": "%command.routingNumber.title%"
},
{
"command": "insertRandomText.bitcoin",
- "title": "Insert Random: Bitcoin Address"
+ "title": "%command.bitcoin.title%"
},
{
"command": "insertRandomText.ethereum",
- "title": "Insert Random: Ethereum Address"
+ "title": "%command.ethereum.title%"
},
{
"command": "insertRandomText.pin",
- "title": "Insert Random: PIN"
+ "title": "%command.pin.title%"
},
{
"command": "insertRandomText.zipCode",
- "title": "Insert Random: Zip Code"
+ "title": "%command.zipCode.title%"
},
{
"command": "insertRandomText.state",
- "title": "Insert Random: State"
+ "title": "%command.state.title%"
},
{
"command": "insertRandomText.stateAbbr",
- "title": "Insert Random: State Abbreviation"
+ "title": "%command.stateAbbr.title%"
},
{
"command": "insertRandomText.countryCode",
- "title": "Insert Random: Country Code"
+ "title": "%command.countryCode.title%"
},
{
"command": "insertRandomText.latitude",
- "title": "Insert Random: Latitude"
+ "title": "%command.latitude.title%"
},
{
"command": "insertRandomText.longitude",
- "title": "Insert Random: Longitude"
+ "title": "%command.longitude.title%"
},
{
"command": "insertRandomText.timeZone",
- "title": "Insert Random: Time Zone"
+ "title": "%command.timeZone.title%"
},
{
"command": "insertRandomText.county",
- "title": "Insert Random: County"
+ "title": "%command.county.title%"
},
{
"command": "insertRandomText.street",
- "title": "Insert Random: Street Name"
+ "title": "%command.street.title%"
},
{
"command": "insertRandomText.secondaryAddress",
- "title": "Insert Random: Secondary Address"
+ "title": "%command.secondaryAddress.title%"
},
{
"command": "insertRandomText.buildingNumber",
- "title": "Insert Random: Building Number"
+ "title": "%command.buildingNumber.title%"
},
{
"command": "insertRandomText.direction",
- "title": "Insert Random: Direction"
+ "title": "%command.direction.title%"
},
{
"command": "insertRandomText.pastDate",
- "title": "Insert Random: Past Date"
+ "title": "%command.pastDate.title%"
},
{
"command": "insertRandomText.futureDate",
- "title": "Insert Random: Future Date"
+ "title": "%command.futureDate.title%"
},
{
"command": "insertRandomText.recentDate",
- "title": "Insert Random: Recent Date"
+ "title": "%command.recentDate.title%"
},
{
"command": "insertRandomText.soonDate",
- "title": "Insert Random: Soon Date"
+ "title": "%command.soonDate.title%"
},
{
"command": "insertRandomText.birthdate",
- "title": "Insert Random: Birthdate"
+ "title": "%command.birthdate.title%"
},
{
"command": "insertRandomText.weekday",
- "title": "Insert Random: Weekday"
+ "title": "%command.weekday.title%"
},
{
"command": "insertRandomText.month",
- "title": "Insert Random: Month"
+ "title": "%command.month.title%"
},
{
"command": "insertRandomText.float",
- "title": "Insert Random: Float"
+ "title": "%command.float.title%"
},
{
"command": "insertRandomText.hexNumber",
- "title": "Insert Random: Hex Number"
+ "title": "%command.hexNumber.title%"
},
{
"command": "insertRandomText.binary",
- "title": "Insert Random: Binary Number"
+ "title": "%command.binary.title%"
},
{
"command": "insertRandomText.octal",
- "title": "Insert Random: Octal Number"
+ "title": "%command.octal.title%"
},
{
"command": "insertRandomText.nanoid",
- "title": "Insert Random: Nano ID"
+ "title": "%command.nanoid.title%"
},
{
"command": "insertRandomText.ulid",
- "title": "Insert Random: ULID"
+ "title": "%command.ulid.title%"
},
{
"command": "insertRandomText.alpha",
- "title": "Insert Random: Alpha String"
+ "title": "%command.alpha.title%"
},
{
"command": "insertRandomText.numeric",
- "title": "Insert Random: Numeric String"
+ "title": "%command.numeric.title%"
},
{
"command": "insertRandomText.hackerPhrase",
- "title": "Insert Random: Hacker Phrase"
+ "title": "%command.hackerPhrase.title%"
},
{
"command": "insertRandomText.slug",
- "title": "Insert Random: Slug"
+ "title": "%command.slug.title%"
},
{
"command": "insertRandomText.words",
- "title": "Insert Random: Words"
+ "title": "%command.words.title%"
},
{
"command": "insertRandomText.bookTitle",
- "title": "Insert Random: Book Title"
+ "title": "%command.bookTitle.title%"
},
{
"command": "insertRandomText.bookAuthor",
- "title": "Insert Random: Book Author"
+ "title": "%command.bookAuthor.title%"
},
{
"command": "insertRandomText.gitBranch",
- "title": "Insert Random: Git Branch"
+ "title": "%command.gitBranch.title%"
},
{
"command": "insertRandomText.gitCommitSha",
- "title": "Insert Random: Git Commit SHA"
+ "title": "%command.gitCommitSha.title%"
},
{
"command": "insertRandomText.gitCommitMessage",
- "title": "Insert Random: Git Commit Message"
+ "title": "%command.gitCommitMessage.title%"
},
{
"command": "insertRandomText.fileName",
- "title": "Insert Random: File Name"
+ "title": "%command.fileName.title%"
},
{
"command": "insertRandomText.filePath",
- "title": "Insert Random: File Path"
+ "title": "%command.filePath.title%"
},
{
"command": "insertRandomText.fileExt",
- "title": "Insert Random: File Extension"
+ "title": "%command.fileExt.title%"
},
{
"command": "insertRandomText.mimeType",
- "title": "Insert Random: MIME Type"
+ "title": "%command.mimeType.title%"
},
{
"command": "insertRandomText.semver",
- "title": "Insert Random: Semver"
+ "title": "%command.semver.title%"
},
{
"command": "insertRandomText.cron",
- "title": "Insert Random: Cron Expression"
+ "title": "%command.cron.title%"
},
{
"command": "insertRandomText.rgb",
- "title": "Insert Random: Color (rgb)"
+ "title": "%command.rgb.title%"
},
{
"command": "insertRandomText.hsl",
- "title": "Insert Random: Color (hsl)"
+ "title": "%command.hsl.title%"
},
{
"command": "insertRandomText.colorName",
- "title": "Insert Random: Color Name"
+ "title": "%command.colorName.title%"
},
{
"command": "insertRandomText.vehicle",
- "title": "Insert Random: Vehicle"
+ "title": "%command.vehicle.title%"
},
{
"command": "insertRandomText.vehicleManufacturer",
- "title": "Insert Random: Vehicle Manufacturer"
+ "title": "%command.vehicleManufacturer.title%"
},
{
"command": "insertRandomText.vehicleModel",
- "title": "Insert Random: Vehicle Model"
+ "title": "%command.vehicleModel.title%"
},
{
"command": "insertRandomText.vin",
- "title": "Insert Random: VIN"
+ "title": "%command.vin.title%"
},
{
"command": "insertRandomText.vrm",
- "title": "Insert Random: License Plate (VRM)"
+ "title": "%command.vrm.title%"
},
{
"command": "insertRandomText.dish",
- "title": "Insert Random: Dish"
+ "title": "%command.dish.title%"
},
{
"command": "insertRandomText.ingredient",
- "title": "Insert Random: Ingredient"
+ "title": "%command.ingredient.title%"
},
{
"command": "insertRandomText.fruit",
- "title": "Insert Random: Fruit"
+ "title": "%command.fruit.title%"
},
{
"command": "insertRandomText.vegetable",
- "title": "Insert Random: Vegetable"
+ "title": "%command.vegetable.title%"
},
{
"command": "insertRandomText.cuisine",
- "title": "Insert Random: Cuisine"
+ "title": "%command.cuisine.title%"
},
{
"command": "insertRandomText.songName",
- "title": "Insert Random: Song Name"
+ "title": "%command.songName.title%"
},
{
"command": "insertRandomText.musicGenre",
- "title": "Insert Random: Music Genre"
+ "title": "%command.musicGenre.title%"
},
{
"command": "insertRandomText.artist",
- "title": "Insert Random: Artist"
+ "title": "%command.artist.title%"
},
{
"command": "insertRandomText.album",
- "title": "Insert Random: Album"
+ "title": "%command.album.title%"
},
{
"command": "insertRandomText.dog",
- "title": "Insert Random: Dog Breed"
+ "title": "%command.dog.title%"
},
{
"command": "insertRandomText.cat",
- "title": "Insert Random: Cat Breed"
+ "title": "%command.cat.title%"
},
{
"command": "insertRandomText.bird",
- "title": "Insert Random: Bird Species"
+ "title": "%command.bird.title%"
},
{
"command": "insertRandomText.fish",
- "title": "Insert Random: Fish Species"
+ "title": "%command.fish.title%"
},
{
"command": "insertRandomText.horse",
- "title": "Insert Random: Horse Breed"
+ "title": "%command.horse.title%"
},
{
"command": "insertRandomText.airline",
- "title": "Insert Random: Airline"
+ "title": "%command.airline.title%"
},
{
"command": "insertRandomText.airport",
- "title": "Insert Random: Airport"
+ "title": "%command.airport.title%"
},
{
"command": "insertRandomText.flightNumber",
- "title": "Insert Random: Flight Number"
+ "title": "%command.flightNumber.title%"
},
{
"command": "insertRandomText.seat",
- "title": "Insert Random: Seat"
+ "title": "%command.seat.title%"
},
{
"command": "insertRandomText.imageUrl",
- "title": "Insert Random: Image URL"
+ "title": "%command.imageUrl.title%"
},
{
"command": "insertRandomText.avatarUrl",
- "title": "Insert Random: Avatar URL"
+ "title": "%command.avatarUrl.title%"
},
{
"command": "insertRandomText.mongodbObjectId",
- "title": "Insert Random: MongoDB ObjectId"
+ "title": "%command.mongodbObjectId.title%"
},
{
"command": "insertRandomText.setInsertType",
- "title": "Insert Random: Set Insert Type"
+ "title": "%command.setInsertType.title%"
},
{
"command": "insertRandomText.setOutputFormat",
- "title": "Insert Random: Set Output Format"
+ "title": "%command.setOutputFormat.title%"
},
{
"command": "insertRandomText.setDateFormat",
- "title": "Insert Random: Set Date Format"
+ "title": "%command.setDateFormat.title%"
},
{
"command": "insertRandomText.setRecordFormat",
- "title": "Insert Random: Set Record Format"
+ "title": "%command.setRecordFormat.title%"
},
{
"command": "insertRandomText.setRecordSqlTable",
- "title": "Insert Random: Set Record SQL Table"
+ "title": "%command.setRecordSqlTable.title%"
},
{
"command": "insertRandomText.setBulkCount",
- "title": "Insert Random: Set Bulk Count"
+ "title": "%command.setBulkCount.title%"
},
{
"command": "insertRandomText.setSeed",
- "title": "Insert Random: Set Seed"
+ "title": "%command.setSeed.title%"
},
{
"command": "insertRandomText.setLocale",
- "title": "Insert Random: Set Locale"
+ "title": "%command.setLocale.title%"
},
{
"command": "insertRandomText.toggleQuotes",
- "title": "Insert Random: Toggle Wrap With Quotes"
+ "title": "%command.toggleQuotes.title%"
},
{
"command": "insertRandomText.toggleNewLine",
- "title": "Insert Random: Toggle Trailing New Line"
+ "title": "%command.toggleNewLine.title%"
},
{
"command": "insertRandomText.toggleUniquePerCursor",
- "title": "Insert Random: Toggle Unique Value Per Cursor"
+ "title": "%command.toggleUniquePerCursor.title%"
},
{
"command": "insertRandomText.toggleStrictUnique",
- "title": "Insert Random: Toggle Strict Unique"
+ "title": "%command.toggleStrictUnique.title%"
},
{
"command": "insertRandomText.toggleContextMenu",
- "title": "Insert Random: Toggle Editor Context Menu"
+ "title": "%command.toggleContextMenu.title%"
},
{
"command": "insertRandomText.manageTemplates",
- "title": "Insert Random: Manage Templates"
+ "title": "%command.manageTemplates.title%"
},
{
"command": "insertRandomText.manageCustomLists",
- "title": "Insert Random: Manage Custom Lists"
+ "title": "%command.manageCustomLists.title%"
},
{
"command": "insertRandomText.resetSettings",
- "title": "Insert Random: Reset Settings to Defaults"
+ "title": "%command.resetSettings.title%"
}
],
"submenus": [
{
"id": "insertRandomText.contextSubmenu",
- "label": "Insert Random"
+ "label": "%submenu.contextSubmenu.label%"
}
],
"menus": {
@@ -973,11 +973,11 @@
},
"configuration": [
{
- "title": "Insert Random Text",
+ "title": "%config.title%",
"properties": {
"insertType": {
- "title": "Insert type",
- "description": "Where generated values go.",
+ "title": "%config.insertType.title%",
+ "description": "%config.insertType.description%",
"type": "string",
"default": "Cursor",
"enum": [
@@ -986,44 +986,44 @@
"Clipboard"
],
"enumDescriptions": [
- "Fill a fresh value at each cursor.",
- "Insert one block at line 1.",
- "Copy to the clipboard instead of inserting (no editor needed)."
+ "%config.insertType.enumDescriptions.0%",
+ "%config.insertType.enumDescriptions.1%",
+ "%config.insertType.enumDescriptions.2%"
]
},
"withQuote": {
- "title": "Wrap with quotes",
- "description": "Toggle to wrap random text with quotes.",
+ "title": "%config.withQuote.title%",
+ "description": "%config.withQuote.description%",
"type": "boolean",
"default": true
},
"withNewLine": {
- "title": "Include newline",
- "description": "Toggle to include a newline at the end of each insert.",
+ "title": "%config.withNewLine.title%",
+ "description": "%config.withNewLine.description%",
"type": "boolean",
"default": true
},
"insertRandomText.uniquePerCursor": {
- "title": "Unique value per cursor",
- "description": "Insert a different random value at each cursor (multi-cursor fill). When off, the same value is repeated at every cursor.",
+ "title": "%config.uniquePerCursor.title%",
+ "description": "%config.uniquePerCursor.description%",
"type": "boolean",
"default": true
},
"insertRandomText.strictUnique": {
- "title": "Strict unique",
- "description": "Re-draw duplicates so values meant to differ within one insert really do — the values of a bulk block, and values across cursors when unique value per cursor is on. Bounded at 25 re-draws per value, so a small pool (booleans, weekdays) that runs out keeps its duplicate instead of hanging. Applies to single-type inserts, not records.",
+ "title": "%config.strictUnique.title%",
+ "description": "%config.strictUnique.description%",
"type": "boolean",
"default": false
},
"insertRandomText.seed": {
- "title": "Seed",
- "description": "Set a number for reproducible output — the same seed produces the same values every run. Leave blank for random.",
+ "title": "%config.seed.title%",
+ "description": "%config.seed.description%",
"type": "string",
"default": ""
},
"insertRandomText.locale": {
- "title": "Locale",
- "description": "Language/region the generated data draws from — names, addresses, words and more come out localized. A type without localized data falls back to English.",
+ "title": "%config.locale.title%",
+ "description": "%config.locale.description%",
"type": "string",
"default": "en",
"enum": [
@@ -1035,25 +1035,25 @@
"ja"
],
"enumDescriptions": [
- "English (default).",
- "German — Deutsch.",
- "French — Français.",
- "Spanish — Español.",
- "Brazilian Portuguese — Português (Brasil).",
- "Japanese — 日本語."
+ "%config.locale.enumDescriptions.0%",
+ "%config.locale.enumDescriptions.1%",
+ "%config.locale.enumDescriptions.2%",
+ "%config.locale.enumDescriptions.3%",
+ "%config.locale.enumDescriptions.4%",
+ "%config.locale.enumDescriptions.5%"
]
},
"insertRandomText.bulkCount": {
- "title": "Bulk count",
- "description": "How many values to insert at each cursor.",
+ "title": "%config.bulkCount.title%",
+ "description": "%config.bulkCount.description%",
"type": "number",
"default": 1,
"minimum": 1,
"maximum": 1000
},
"insertRandomText.outputFormat": {
- "title": "Output format",
- "description": "How multiple values (bulk count > 1) are formatted at each cursor.",
+ "title": "%config.outputFormat.title%",
+ "description": "%config.outputFormat.description%",
"type": "string",
"default": "plain",
"enum": [
@@ -1062,14 +1062,14 @@
"quotedList"
],
"enumDescriptions": [
- "One value per line.",
- "A JSON array, e.g. [ \"a\", \"b\" ].",
- "A quoted, comma-separated list, e.g. \"a\", \"b\"."
+ "%config.outputFormat.enumDescriptions.0%",
+ "%config.outputFormat.enumDescriptions.1%",
+ "%config.outputFormat.enumDescriptions.2%"
]
},
"insertRandomText.dateFormat": {
- "title": "Date format",
- "description": "How the timestamp Time generators (Date, Past/Future/Recent/Soon Date, Birthdate, Date (Between…)) render their value. Weekday and Month are unaffected.",
+ "title": "%config.dateFormat.title%",
+ "description": "%config.dateFormat.description%",
"type": "string",
"default": "iso",
"enum": [
@@ -1080,16 +1080,16 @@
"unixMillis"
],
"enumDescriptions": [
- "Full ISO 8601 timestamp, e.g. 2026-07-02T12:34:56.789Z.",
- "Date only (YYYY-MM-DD), e.g. 2026-07-02.",
- "Time only (HH:mm:ss), e.g. 12:34:56.",
- "Unix time in seconds, e.g. 1783082096.",
- "Unix time in milliseconds, e.g. 1783082096123."
+ "%config.dateFormat.enumDescriptions.0%",
+ "%config.dateFormat.enumDescriptions.1%",
+ "%config.dateFormat.enumDescriptions.2%",
+ "%config.dateFormat.enumDescriptions.3%",
+ "%config.dateFormat.enumDescriptions.4%"
]
},
"insertRandomText.recordFormat": {
- "title": "Record format",
- "description": "Shape for multi-field records (Insert Random: Record…): a JSON object, a SQL INSERT row, or a CSV line.",
+ "title": "%config.recordFormat.title%",
+ "description": "%config.recordFormat.description%",
"type": "string",
"default": "json",
"enum": [
@@ -1098,20 +1098,20 @@
"csv"
],
"enumDescriptions": [
- "A JSON object, e.g. { \"name\": \"…\", \"email\": \"…\" }.",
- "A SQL INSERT row, e.g. INSERT INTO table (…) VALUES (…);",
- "A CSV line, e.g. value,value,…"
+ "%config.recordFormat.enumDescriptions.0%",
+ "%config.recordFormat.enumDescriptions.1%",
+ "%config.recordFormat.enumDescriptions.2%"
]
},
"insertRandomText.recordSqlTable": {
- "title": "Record SQL table",
- "description": "Table name used by the SQL record shape.",
+ "title": "%config.recordSqlTable.title%",
+ "description": "%config.recordSqlTable.description%",
"type": "string",
"default": "table"
},
"insertRandomText.templates": {
- "title": "Saved templates",
- "description": "Named faker templates, shown in a Templates group at the top of Insert Random: Pick…. Each value is a template with {{module.method}} placeholders, e.g. { \"invoice\": \"INV-{{string.numeric(4)}}\", \"contact\": \"{{person.fullName}} <{{internet.email}}>\" }. Entries that are not non-empty strings are ignored (logged to the console).",
+ "title": "%config.templates.title%",
+ "description": "%config.templates.description%",
"type": "object",
"default": {},
"additionalProperties": {
@@ -1119,8 +1119,8 @@
}
},
"insertRandomText.customLists": {
- "title": "Custom lists",
- "description": "Named lists of your own values, shown in a Custom Lists group at the top of Insert Random: Pick… and offered as Record… fields (the name becomes the field key). Each insert draws one random item, e.g. { \"environment\": [ \"dev\", \"staging\", \"production\" ] }. Non-string values are ignored (logged to the console).",
+ "title": "%config.customLists.title%",
+ "description": "%config.customLists.description%",
"type": "object",
"default": {},
"additionalProperties": {
@@ -1131,8 +1131,8 @@
}
},
"insertRandomText.contextMenu.enabled": {
- "title": "Show in editor context menu",
- "description": "Add an \"Insert Random\" submenu to the editor right-click menu.",
+ "title": "%config.contextMenu.enabled.title%",
+ "description": "%config.contextMenu.enabled.description%",
"type": "boolean",
"default": false
}
@@ -1162,8 +1162,9 @@
"@types/mocha": "^10.0.10",
"@types/node": "^22.19.18",
"@types/vscode": "1.97.0",
- "@vscode/test-cli": "^0.0.12",
- "@vscode/test-electron": "^2.5.2",
+ "@vscode/test-cli": "^0.0.15",
+ "@vscode/test-electron": "^3.1.0",
+ "@vscode/vsce": "^3.9.2",
"esbuild": "^0.28.0",
"eslint": "^9.39.3",
"npm-run-all": "^4.1.5",
diff --git a/package.nls.de.json b/package.nls.de.json
new file mode 100644
index 0000000..74ea474
--- /dev/null
+++ b/package.nls.de.json
@@ -0,0 +1,232 @@
+{
+ "displayName": "Generator für Zufalls-, Fake- & Mock-Daten",
+ "description": "Fügt 130+ Arten von Zufalls-, Fake- & Mock-Daten an jedem Cursor ein — Namen, E-Mails, UUIDs, Lorem Ipsum, JSON/SQL/CSV-Datensätze & ganze Datasets, Vorlagen, Gebietsschemas, Anonymisieren direkt im Text. Bulk, seedbar, komplett offline. Der einzige Daten-Faker, den Sie brauchen.",
+ "command.animal.title": "Zufällig einfügen: Tier",
+ "command.person.title": "Zufällig einfügen: Person",
+ "command.date.title": "Zufällig einfügen: Datum",
+ "command.country.title": "Zufällig einfügen: Land",
+ "command.number.title": "Zufällig einfügen: Zahl",
+ "command.string.title": "Zufällig einfügen: Zeichenfolge",
+ "command.lorem.title": "Zufällig einfügen: Lorem",
+ "command.loremSmall.title": "Zufällig einfügen: Lorem klein",
+ "command.loremMedium.title": "Zufällig einfügen: Lorem mittel",
+ "command.loremLarge.title": "Zufällig einfügen: Lorem groß",
+ "command.hash.title": "Zufällig einfügen: Hash",
+ "command.hashSmall.title": "Zufällig einfügen: Hash klein",
+ "command.hashMedium.title": "Zufällig einfügen: Hash mittel",
+ "command.hashLarge.title": "Zufällig einfügen: Hash groß",
+ "command.pick.title": "Zufällig einfügen: Auswählen…",
+ "command.record.title": "Zufällig einfügen: Datensatz…",
+ "command.generateDataset.title": "Zufällig einfügen: Dataset generieren…",
+ "command.randomizeSelection.title": "Zufällig einfügen: Auswahl randomisieren",
+ "command.numberRange.title": "Zufällig einfügen: Zahl (Bereich…)",
+ "command.floatRange.title": "Zufällig einfügen: Gleitkommazahl (Bereich…)",
+ "command.stringLength.title": "Zufällig einfügen: Zeichenfolge (Länge…)",
+ "command.dateBetween.title": "Zufällig einfügen: Datum (Zwischen…)",
+ "command.wordsCount.title": "Zufällig einfügen: Wörter (Anzahl…)",
+ "command.sentencesCount.title": "Zufällig einfügen: Sätze (Anzahl…)",
+ "command.paragraphsCount.title": "Zufällig einfügen: Absätze (Anzahl…)",
+ "command.uuidFormat.title": "Zufällig einfügen: UUID (Format…)",
+ "command.passwordOptions.title": "Zufällig einfügen: Passwort (Optionen…)",
+ "command.phoneFormat.title": "Zufällig einfügen: Telefonnummer (Format…)",
+ "command.fromTemplate.title": "Zufällig einfügen: Aus Vorlage…",
+ "command.fromPattern.title": "Zufällig einfügen: Aus Muster…",
+ "command.sequence.title": "Zufällig einfügen: Sequenz (Start/Schritt…)",
+ "command.uuid.title": "Zufällig einfügen: UUID",
+ "command.email.title": "Zufällig einfügen: E-Mail-Adresse",
+ "command.username.title": "Zufällig einfügen: Benutzername",
+ "command.boolean.title": "Zufällig einfügen: Boolescher Wert",
+ "command.firstName.title": "Zufällig einfügen: Vorname",
+ "command.lastName.title": "Zufällig einfügen: Nachname",
+ "command.phone.title": "Zufällig einfügen: Telefonnummer",
+ "command.city.title": "Zufällig einfügen: Stadt",
+ "command.address.title": "Zufällig einfügen: Straßenadresse",
+ "command.ipv4.title": "Zufällig einfügen: IP-Adresse",
+ "command.mac.title": "Zufällig einfügen: MAC-Adresse",
+ "command.url.title": "Zufällig einfügen: URL",
+ "command.color.title": "Zufällig einfügen: Farbe (hex)",
+ "command.password.title": "Zufällig einfügen: Passwort",
+ "command.word.title": "Zufällig einfügen: Wort",
+ "command.sentence.title": "Zufällig einfügen: Satz",
+ "command.middleName.title": "Zufällig einfügen: Zweiter Vorname",
+ "command.prefix.title": "Zufällig einfügen: Namenspräfix",
+ "command.suffix.title": "Zufällig einfügen: Namenssuffix",
+ "command.sex.title": "Zufällig einfügen: Geschlecht",
+ "command.gender.title": "Zufällig einfügen: Geschlechtsidentität",
+ "command.jobTitle.title": "Zufällig einfügen: Berufsbezeichnung",
+ "command.jobType.title": "Zufällig einfügen: Beschäftigungsart",
+ "command.jobArea.title": "Zufällig einfügen: Berufsfeld",
+ "command.bio.title": "Zufällig einfügen: Biografie",
+ "command.zodiac.title": "Zufällig einfügen: Sternzeichen",
+ "command.ipv6.title": "Zufällig einfügen: IPv6-Adresse",
+ "command.port.title": "Zufällig einfügen: Port",
+ "command.httpMethod.title": "Zufällig einfügen: HTTP-Methode",
+ "command.httpStatus.title": "Zufällig einfügen: HTTP-Statuscode",
+ "command.userAgent.title": "Zufällig einfügen: User-Agent",
+ "command.domainName.title": "Zufällig einfügen: Domainname",
+ "command.emoji.title": "Zufällig einfügen: Emoji",
+ "command.protocol.title": "Zufällig einfügen: Protokoll",
+ "command.jwt.title": "Zufällig einfügen: JWT",
+ "command.displayName.title": "Zufällig einfügen: Anzeigename",
+ "command.company.title": "Zufällig einfügen: Firmenname",
+ "command.catchPhrase.title": "Zufällig einfügen: Slogan",
+ "command.buzzPhrase.title": "Zufällig einfügen: Buzzword-Phrase",
+ "command.product.title": "Zufällig einfügen: Produkt",
+ "command.productName.title": "Zufällig einfügen: Produktname",
+ "command.price.title": "Zufällig einfügen: Preis",
+ "command.department.title": "Zufällig einfügen: Abteilung",
+ "command.productMaterial.title": "Zufällig einfügen: Produktmaterial",
+ "command.productDescription.title": "Zufällig einfügen: Produktbeschreibung",
+ "command.isbn.title": "Zufällig einfügen: ISBN",
+ "command.amount.title": "Zufällig einfügen: Betrag",
+ "command.currencyCode.title": "Zufällig einfügen: Währungscode",
+ "command.currencyName.title": "Zufällig einfügen: Währungsname",
+ "command.currencySymbol.title": "Zufällig einfügen: Währungssymbol",
+ "command.creditCard.title": "Zufällig einfügen: Kreditkartennummer",
+ "command.creditCardCVV.title": "Zufällig einfügen: Kreditkarten-CVV",
+ "command.iban.title": "Zufällig einfügen: IBAN",
+ "command.bic.title": "Zufällig einfügen: BIC",
+ "command.accountNumber.title": "Zufällig einfügen: Kontonummer",
+ "command.routingNumber.title": "Zufällig einfügen: Bankleitzahl",
+ "command.bitcoin.title": "Zufällig einfügen: Bitcoin-Adresse",
+ "command.ethereum.title": "Zufällig einfügen: Ethereum-Adresse",
+ "command.pin.title": "Zufällig einfügen: PIN",
+ "command.zipCode.title": "Zufällig einfügen: Postleitzahl",
+ "command.state.title": "Zufällig einfügen: Bundesland",
+ "command.stateAbbr.title": "Zufällig einfügen: Bundesland (Abkürzung)",
+ "command.countryCode.title": "Zufällig einfügen: Ländercode",
+ "command.latitude.title": "Zufällig einfügen: Breitengrad",
+ "command.longitude.title": "Zufällig einfügen: Längengrad",
+ "command.timeZone.title": "Zufällig einfügen: Zeitzone",
+ "command.county.title": "Zufällig einfügen: Landkreis",
+ "command.street.title": "Zufällig einfügen: Straßenname",
+ "command.secondaryAddress.title": "Zufällig einfügen: Adresszusatz",
+ "command.buildingNumber.title": "Zufällig einfügen: Hausnummer",
+ "command.direction.title": "Zufällig einfügen: Himmelsrichtung",
+ "command.pastDate.title": "Zufällig einfügen: Vergangenes Datum",
+ "command.futureDate.title": "Zufällig einfügen: Zukünftiges Datum",
+ "command.recentDate.title": "Zufällig einfügen: Kürzliches Datum",
+ "command.soonDate.title": "Zufällig einfügen: Baldiges Datum",
+ "command.birthdate.title": "Zufällig einfügen: Geburtsdatum",
+ "command.weekday.title": "Zufällig einfügen: Wochentag",
+ "command.month.title": "Zufällig einfügen: Monat",
+ "command.float.title": "Zufällig einfügen: Gleitkommazahl",
+ "command.hexNumber.title": "Zufällig einfügen: Hexadezimalzahl",
+ "command.binary.title": "Zufällig einfügen: Binärzahl",
+ "command.octal.title": "Zufällig einfügen: Oktalzahl",
+ "command.nanoid.title": "Zufällig einfügen: Nano ID",
+ "command.ulid.title": "Zufällig einfügen: ULID",
+ "command.alpha.title": "Zufällig einfügen: Buchstabenfolge",
+ "command.numeric.title": "Zufällig einfügen: Ziffernfolge",
+ "command.hackerPhrase.title": "Zufällig einfügen: Hacker-Phrase",
+ "command.slug.title": "Zufällig einfügen: Slug",
+ "command.words.title": "Zufällig einfügen: Wörter",
+ "command.bookTitle.title": "Zufällig einfügen: Buchtitel",
+ "command.bookAuthor.title": "Zufällig einfügen: Buchautor",
+ "command.gitBranch.title": "Zufällig einfügen: Git-Branch",
+ "command.gitCommitSha.title": "Zufällig einfügen: Git-Commit-SHA",
+ "command.gitCommitMessage.title": "Zufällig einfügen: Git-Commit-Nachricht",
+ "command.fileName.title": "Zufällig einfügen: Dateiname",
+ "command.filePath.title": "Zufällig einfügen: Dateipfad",
+ "command.fileExt.title": "Zufällig einfügen: Dateierweiterung",
+ "command.mimeType.title": "Zufällig einfügen: MIME-Typ",
+ "command.semver.title": "Zufällig einfügen: Semver",
+ "command.cron.title": "Zufällig einfügen: Cron-Ausdruck",
+ "command.rgb.title": "Zufällig einfügen: Farbe (rgb)",
+ "command.hsl.title": "Zufällig einfügen: Farbe (hsl)",
+ "command.colorName.title": "Zufällig einfügen: Farbname",
+ "command.vehicle.title": "Zufällig einfügen: Fahrzeug",
+ "command.vehicleManufacturer.title": "Zufällig einfügen: Fahrzeughersteller",
+ "command.vehicleModel.title": "Zufällig einfügen: Fahrzeugmodell",
+ "command.vin.title": "Zufällig einfügen: VIN",
+ "command.vrm.title": "Zufällig einfügen: Kfz-Kennzeichen (VRM)",
+ "command.dish.title": "Zufällig einfügen: Gericht",
+ "command.ingredient.title": "Zufällig einfügen: Zutat",
+ "command.fruit.title": "Zufällig einfügen: Frucht",
+ "command.vegetable.title": "Zufällig einfügen: Gemüse",
+ "command.cuisine.title": "Zufällig einfügen: Küche",
+ "command.songName.title": "Zufällig einfügen: Songtitel",
+ "command.musicGenre.title": "Zufällig einfügen: Musikgenre",
+ "command.artist.title": "Zufällig einfügen: Künstler",
+ "command.album.title": "Zufällig einfügen: Album",
+ "command.dog.title": "Zufällig einfügen: Hunderasse",
+ "command.cat.title": "Zufällig einfügen: Katzenrasse",
+ "command.bird.title": "Zufällig einfügen: Vogelart",
+ "command.fish.title": "Zufällig einfügen: Fischart",
+ "command.horse.title": "Zufällig einfügen: Pferderasse",
+ "command.airline.title": "Zufällig einfügen: Fluggesellschaft",
+ "command.airport.title": "Zufällig einfügen: Flughafen",
+ "command.flightNumber.title": "Zufällig einfügen: Flugnummer",
+ "command.seat.title": "Zufällig einfügen: Sitzplatz",
+ "command.imageUrl.title": "Zufällig einfügen: Bild-URL",
+ "command.avatarUrl.title": "Zufällig einfügen: Avatar-URL",
+ "command.mongodbObjectId.title": "Zufällig einfügen: MongoDB ObjectId",
+ "command.setInsertType.title": "Zufällig einfügen: Einfügetyp festlegen",
+ "command.setOutputFormat.title": "Zufällig einfügen: Ausgabeformat festlegen",
+ "command.setDateFormat.title": "Zufällig einfügen: Datumsformat festlegen",
+ "command.setRecordFormat.title": "Zufällig einfügen: Datensatzformat festlegen",
+ "command.setRecordSqlTable.title": "Zufällig einfügen: SQL-Tabelle für Datensätze festlegen",
+ "command.setBulkCount.title": "Zufällig einfügen: Bulk-Anzahl festlegen",
+ "command.setSeed.title": "Zufällig einfügen: Seed festlegen",
+ "command.setLocale.title": "Zufällig einfügen: Gebietsschema festlegen",
+ "command.toggleQuotes.title": "Zufällig einfügen: Anführungszeichen umschalten",
+ "command.toggleNewLine.title": "Zufällig einfügen: Abschließenden Zeilenumbruch umschalten",
+ "command.toggleUniquePerCursor.title": "Zufällig einfügen: Eindeutigen Wert pro Cursor umschalten",
+ "command.toggleStrictUnique.title": "Zufällig einfügen: Strikte Eindeutigkeit umschalten",
+ "command.toggleContextMenu.title": "Zufällig einfügen: Editor-Kontextmenü umschalten",
+ "command.manageTemplates.title": "Zufällig einfügen: Vorlagen verwalten",
+ "command.manageCustomLists.title": "Zufällig einfügen: Eigene Listen verwalten",
+ "command.resetSettings.title": "Zufällig einfügen: Einstellungen auf Standardwerte zurücksetzen",
+ "submenu.contextSubmenu.label": "Zufällig einfügen",
+ "config.title": "Zufallstext einfügen",
+ "config.insertType.title": "Einfügetyp",
+ "config.insertType.description": "Wohin generierte Werte eingefügt werden.",
+ "config.insertType.enumDescriptions.0": "Fügt an jedem Cursor einen frischen Wert ein.",
+ "config.insertType.enumDescriptions.1": "Fügt einen Block in Zeile 1 ein.",
+ "config.insertType.enumDescriptions.2": "Kopiert in die Zwischenablage, statt einzufügen (kein Editor nötig).",
+ "config.withQuote.title": "In Anführungszeichen einschließen",
+ "config.withQuote.description": "Umschalten, um Zufallstext in Anführungszeichen einzuschließen.",
+ "config.withNewLine.title": "Zeilenumbruch anhängen",
+ "config.withNewLine.description": "Umschalten, um am Ende jedes Einfügens einen Zeilenumbruch anzuhängen.",
+ "config.uniquePerCursor.title": "Eindeutiger Wert pro Cursor",
+ "config.uniquePerCursor.description": "Fügt an jedem Cursor einen anderen Zufallswert ein (Multi-Cursor-Füllung). Wenn deaktiviert, wird derselbe Wert an jedem Cursor wiederholt.",
+ "config.strictUnique.title": "Strikte Eindeutigkeit",
+ "config.strictUnique.description": "Zieht Duplikate neu, damit Werte, die sich innerhalb eines Einfügens unterscheiden sollen, es wirklich tun — die Werte eines Bulk-Blocks sowie Werte über Cursor hinweg, wenn „Eindeutiger Wert pro Cursor“ aktiv ist. Begrenzt auf 25 Neuziehungen pro Wert; ein kleiner Pool (Boolesche Werte, Wochentage), der erschöpft ist, behält sein Duplikat, statt zu hängen. Gilt für Einfügungen eines einzelnen Typs, nicht für Datensätze.",
+ "config.seed.title": "Seed",
+ "config.seed.description": "Eine Zahl für reproduzierbare Ausgaben festlegen — derselbe Seed erzeugt bei jedem Lauf dieselben Werte. Leer lassen für Zufall.",
+ "config.locale.title": "Gebietsschema",
+ "config.locale.description": "Sprache/Region, aus der die generierten Daten stammen — Namen, Adressen, Wörter und mehr kommen lokalisiert heraus. Ein Typ ohne lokalisierte Daten fällt auf Englisch zurück.",
+ "config.locale.enumDescriptions.0": "Englisch (Standard).",
+ "config.locale.enumDescriptions.1": "Deutsch.",
+ "config.locale.enumDescriptions.2": "Französisch — Français.",
+ "config.locale.enumDescriptions.3": "Spanisch — Español.",
+ "config.locale.enumDescriptions.4": "Brasilianisches Portugiesisch — Português (Brasil).",
+ "config.locale.enumDescriptions.5": "Japanisch — 日本語.",
+ "config.bulkCount.title": "Bulk-Anzahl",
+ "config.bulkCount.description": "Wie viele Werte an jedem Cursor eingefügt werden.",
+ "config.outputFormat.title": "Ausgabeformat",
+ "config.outputFormat.description": "Wie mehrere Werte (Bulk-Anzahl > 1) an jedem Cursor formatiert werden.",
+ "config.outputFormat.enumDescriptions.0": "Ein Wert pro Zeile.",
+ "config.outputFormat.enumDescriptions.1": "Ein JSON-Array, z. B. [ \"a\", \"b\" ].",
+ "config.outputFormat.enumDescriptions.2": "Eine kommagetrennte Liste in Anführungszeichen, z. B. \"a\", \"b\".",
+ "config.dateFormat.title": "Datumsformat",
+ "config.dateFormat.description": "Wie die Zeitstempel-Generatoren (Datum, Vergangenes/Zukünftiges/Kürzliches/Baldiges Datum, Geburtsdatum, Datum (Zwischen…)) ihren Wert darstellen. Wochentag und Monat sind nicht betroffen.",
+ "config.dateFormat.enumDescriptions.0": "Vollständiger ISO-8601-Zeitstempel, z. B. 2026-07-02T12:34:56.789Z.",
+ "config.dateFormat.enumDescriptions.1": "Nur Datum (YYYY-MM-DD), z. B. 2026-07-02.",
+ "config.dateFormat.enumDescriptions.2": "Nur Uhrzeit (HH:mm:ss), z. B. 12:34:56.",
+ "config.dateFormat.enumDescriptions.3": "Unix-Zeit in Sekunden, z. B. 1783082096.",
+ "config.dateFormat.enumDescriptions.4": "Unix-Zeit in Millisekunden, z. B. 1783082096123.",
+ "config.recordFormat.title": "Datensatzformat",
+ "config.recordFormat.description": "Form für mehrfeldrige Datensätze (Zufällig einfügen: Datensatz…): ein JSON-Objekt, eine SQL-INSERT-Zeile oder eine CSV-Zeile.",
+ "config.recordFormat.enumDescriptions.0": "Ein JSON-Objekt, z. B. { \"name\": \"…\", \"email\": \"…\" }.",
+ "config.recordFormat.enumDescriptions.1": "Eine SQL-INSERT-Zeile, z. B. INSERT INTO table (…) VALUES (…);",
+ "config.recordFormat.enumDescriptions.2": "Eine CSV-Zeile, z. B. value,value,…",
+ "config.recordSqlTable.title": "SQL-Tabelle für Datensätze",
+ "config.recordSqlTable.description": "Tabellenname für die SQL-Datensatzform.",
+ "config.templates.title": "Gespeicherte Vorlagen",
+ "config.templates.description": "Benannte Faker-Vorlagen, angezeigt in einer Gruppe „Vorlagen“ oben in Zufällig einfügen: Auswählen…. Jeder Wert ist eine Vorlage mit {{module.method}}-Platzhaltern, z. B. { \"invoice\": \"INV-{{string.numeric(4)}}\", \"contact\": \"{{person.fullName}} <{{internet.email}}>\" }. Einträge, die keine nicht-leeren Zeichenfolgen sind, werden ignoriert (mit Protokoll in der Konsole).",
+ "config.customLists.title": "Eigene Listen",
+ "config.customLists.description": "Benannte Listen mit eigenen Werten, angezeigt in einer Gruppe „Eigene Listen“ oben in Zufällig einfügen: Auswählen… und als Felder für Datensatz… angeboten (der Name wird zum Feldschlüssel). Jedes Einfügen zieht ein zufälliges Element, z. B. { \"environment\": [ \"dev\", \"staging\", \"production\" ] }. Werte, die keine Zeichenfolgen sind, werden ignoriert (mit Protokoll in der Konsole).",
+ "config.contextMenu.enabled.title": "Im Editor-Kontextmenü anzeigen",
+ "config.contextMenu.enabled.description": "Fügt dem Rechtsklickmenü des Editors ein Untermenü „Zufällig einfügen“ hinzu."
+}
diff --git a/package.nls.es.json b/package.nls.es.json
new file mode 100644
index 0000000..7c2a56f
--- /dev/null
+++ b/package.nls.es.json
@@ -0,0 +1,232 @@
+{
+ "displayName": "Generador de datos aleatorios, falsos y de prueba",
+ "description": "Inserta más de 130 tipos de datos aleatorios, falsos y de prueba en cada cursor — nombres, correos, UUID, lorem ipsum, registros JSON/SQL/CSV y conjuntos de datos completos, plantillas, configuraciones regionales, anonimización en el lugar. En bloque, con semilla, totalmente sin conexión. El único faker de datos que necesitarás.",
+ "command.animal.title": "Insertar aleatorio: Animal",
+ "command.person.title": "Insertar aleatorio: Persona",
+ "command.date.title": "Insertar aleatorio: Fecha",
+ "command.country.title": "Insertar aleatorio: País",
+ "command.number.title": "Insertar aleatorio: Número",
+ "command.string.title": "Insertar aleatorio: Cadena",
+ "command.lorem.title": "Insertar aleatorio: Lorem",
+ "command.loremSmall.title": "Insertar aleatorio: Lorem corto",
+ "command.loremMedium.title": "Insertar aleatorio: Lorem medio",
+ "command.loremLarge.title": "Insertar aleatorio: Lorem largo",
+ "command.hash.title": "Insertar aleatorio: Hash",
+ "command.hashSmall.title": "Insertar aleatorio: Hash corto",
+ "command.hashMedium.title": "Insertar aleatorio: Hash medio",
+ "command.hashLarge.title": "Insertar aleatorio: Hash largo",
+ "command.pick.title": "Insertar aleatorio: Elegir…",
+ "command.record.title": "Insertar aleatorio: Registro…",
+ "command.generateDataset.title": "Insertar aleatorio: Generar conjunto de datos…",
+ "command.randomizeSelection.title": "Insertar aleatorio: Aleatorizar selección",
+ "command.numberRange.title": "Insertar aleatorio: Número (rango…)",
+ "command.floatRange.title": "Insertar aleatorio: Número flotante (rango…)",
+ "command.stringLength.title": "Insertar aleatorio: Cadena (longitud…)",
+ "command.dateBetween.title": "Insertar aleatorio: Fecha (entre…)",
+ "command.wordsCount.title": "Insertar aleatorio: Palabras (cantidad…)",
+ "command.sentencesCount.title": "Insertar aleatorio: Oraciones (cantidad…)",
+ "command.paragraphsCount.title": "Insertar aleatorio: Párrafos (cantidad…)",
+ "command.uuidFormat.title": "Insertar aleatorio: UUID (formato…)",
+ "command.passwordOptions.title": "Insertar aleatorio: Contraseña (opciones…)",
+ "command.phoneFormat.title": "Insertar aleatorio: Teléfono (formato…)",
+ "command.fromTemplate.title": "Insertar aleatorio: Desde plantilla…",
+ "command.fromPattern.title": "Insertar aleatorio: Desde patrón…",
+ "command.sequence.title": "Insertar aleatorio: Secuencia (inicio/paso…)",
+ "command.uuid.title": "Insertar aleatorio: UUID",
+ "command.email.title": "Insertar aleatorio: Correo electrónico",
+ "command.username.title": "Insertar aleatorio: Nombre de usuario",
+ "command.boolean.title": "Insertar aleatorio: Booleano",
+ "command.firstName.title": "Insertar aleatorio: Nombre",
+ "command.lastName.title": "Insertar aleatorio: Apellido",
+ "command.phone.title": "Insertar aleatorio: Número de teléfono",
+ "command.city.title": "Insertar aleatorio: Ciudad",
+ "command.address.title": "Insertar aleatorio: Dirección postal",
+ "command.ipv4.title": "Insertar aleatorio: Dirección IP",
+ "command.mac.title": "Insertar aleatorio: Dirección MAC",
+ "command.url.title": "Insertar aleatorio: URL",
+ "command.color.title": "Insertar aleatorio: Color (hex)",
+ "command.password.title": "Insertar aleatorio: Contraseña",
+ "command.word.title": "Insertar aleatorio: Palabra",
+ "command.sentence.title": "Insertar aleatorio: Oración",
+ "command.middleName.title": "Insertar aleatorio: Segundo nombre",
+ "command.prefix.title": "Insertar aleatorio: Prefijo de nombre",
+ "command.suffix.title": "Insertar aleatorio: Sufijo de nombre",
+ "command.sex.title": "Insertar aleatorio: Sexo",
+ "command.gender.title": "Insertar aleatorio: Género",
+ "command.jobTitle.title": "Insertar aleatorio: Puesto de trabajo",
+ "command.jobType.title": "Insertar aleatorio: Tipo de puesto",
+ "command.jobArea.title": "Insertar aleatorio: Área profesional",
+ "command.bio.title": "Insertar aleatorio: Biografía",
+ "command.zodiac.title": "Insertar aleatorio: Signo del zodiaco",
+ "command.ipv6.title": "Insertar aleatorio: Dirección IPv6",
+ "command.port.title": "Insertar aleatorio: Puerto",
+ "command.httpMethod.title": "Insertar aleatorio: Método HTTP",
+ "command.httpStatus.title": "Insertar aleatorio: Código de estado HTTP",
+ "command.userAgent.title": "Insertar aleatorio: Agente de usuario",
+ "command.domainName.title": "Insertar aleatorio: Nombre de dominio",
+ "command.emoji.title": "Insertar aleatorio: Emoji",
+ "command.protocol.title": "Insertar aleatorio: Protocolo",
+ "command.jwt.title": "Insertar aleatorio: JWT",
+ "command.displayName.title": "Insertar aleatorio: Nombre para mostrar",
+ "command.company.title": "Insertar aleatorio: Nombre de empresa",
+ "command.catchPhrase.title": "Insertar aleatorio: Eslogan",
+ "command.buzzPhrase.title": "Insertar aleatorio: Frase corporativa",
+ "command.product.title": "Insertar aleatorio: Producto",
+ "command.productName.title": "Insertar aleatorio: Nombre de producto",
+ "command.price.title": "Insertar aleatorio: Precio",
+ "command.department.title": "Insertar aleatorio: Departamento",
+ "command.productMaterial.title": "Insertar aleatorio: Material del producto",
+ "command.productDescription.title": "Insertar aleatorio: Descripción del producto",
+ "command.isbn.title": "Insertar aleatorio: ISBN",
+ "command.amount.title": "Insertar aleatorio: Importe",
+ "command.currencyCode.title": "Insertar aleatorio: Código de moneda",
+ "command.currencyName.title": "Insertar aleatorio: Nombre de moneda",
+ "command.currencySymbol.title": "Insertar aleatorio: Símbolo de moneda",
+ "command.creditCard.title": "Insertar aleatorio: Número de tarjeta de crédito",
+ "command.creditCardCVV.title": "Insertar aleatorio: CVV de tarjeta de crédito",
+ "command.iban.title": "Insertar aleatorio: IBAN",
+ "command.bic.title": "Insertar aleatorio: BIC",
+ "command.accountNumber.title": "Insertar aleatorio: Número de cuenta",
+ "command.routingNumber.title": "Insertar aleatorio: Número de ruta bancaria",
+ "command.bitcoin.title": "Insertar aleatorio: Dirección de Bitcoin",
+ "command.ethereum.title": "Insertar aleatorio: Dirección de Ethereum",
+ "command.pin.title": "Insertar aleatorio: PIN",
+ "command.zipCode.title": "Insertar aleatorio: Código postal",
+ "command.state.title": "Insertar aleatorio: Estado",
+ "command.stateAbbr.title": "Insertar aleatorio: Abreviatura de estado",
+ "command.countryCode.title": "Insertar aleatorio: Código de país",
+ "command.latitude.title": "Insertar aleatorio: Latitud",
+ "command.longitude.title": "Insertar aleatorio: Longitud",
+ "command.timeZone.title": "Insertar aleatorio: Zona horaria",
+ "command.county.title": "Insertar aleatorio: Condado",
+ "command.street.title": "Insertar aleatorio: Nombre de calle",
+ "command.secondaryAddress.title": "Insertar aleatorio: Dirección secundaria",
+ "command.buildingNumber.title": "Insertar aleatorio: Número de edificio",
+ "command.direction.title": "Insertar aleatorio: Punto cardinal",
+ "command.pastDate.title": "Insertar aleatorio: Fecha pasada",
+ "command.futureDate.title": "Insertar aleatorio: Fecha futura",
+ "command.recentDate.title": "Insertar aleatorio: Fecha reciente",
+ "command.soonDate.title": "Insertar aleatorio: Fecha próxima",
+ "command.birthdate.title": "Insertar aleatorio: Fecha de nacimiento",
+ "command.weekday.title": "Insertar aleatorio: Día de la semana",
+ "command.month.title": "Insertar aleatorio: Mes",
+ "command.float.title": "Insertar aleatorio: Número flotante",
+ "command.hexNumber.title": "Insertar aleatorio: Número hexadecimal",
+ "command.binary.title": "Insertar aleatorio: Número binario",
+ "command.octal.title": "Insertar aleatorio: Número octal",
+ "command.nanoid.title": "Insertar aleatorio: Nano ID",
+ "command.ulid.title": "Insertar aleatorio: ULID",
+ "command.alpha.title": "Insertar aleatorio: Cadena alfabética",
+ "command.numeric.title": "Insertar aleatorio: Cadena numérica",
+ "command.hackerPhrase.title": "Insertar aleatorio: Frase hacker",
+ "command.slug.title": "Insertar aleatorio: Slug",
+ "command.words.title": "Insertar aleatorio: Palabras",
+ "command.bookTitle.title": "Insertar aleatorio: Título de libro",
+ "command.bookAuthor.title": "Insertar aleatorio: Autor de libro",
+ "command.gitBranch.title": "Insertar aleatorio: Rama de Git",
+ "command.gitCommitSha.title": "Insertar aleatorio: SHA de commit de Git",
+ "command.gitCommitMessage.title": "Insertar aleatorio: Mensaje de commit de Git",
+ "command.fileName.title": "Insertar aleatorio: Nombre de archivo",
+ "command.filePath.title": "Insertar aleatorio: Ruta de archivo",
+ "command.fileExt.title": "Insertar aleatorio: Extensión de archivo",
+ "command.mimeType.title": "Insertar aleatorio: Tipo MIME",
+ "command.semver.title": "Insertar aleatorio: Semver",
+ "command.cron.title": "Insertar aleatorio: Expresión cron",
+ "command.rgb.title": "Insertar aleatorio: Color (rgb)",
+ "command.hsl.title": "Insertar aleatorio: Color (hsl)",
+ "command.colorName.title": "Insertar aleatorio: Nombre de color",
+ "command.vehicle.title": "Insertar aleatorio: Vehículo",
+ "command.vehicleManufacturer.title": "Insertar aleatorio: Fabricante de vehículos",
+ "command.vehicleModel.title": "Insertar aleatorio: Modelo de vehículo",
+ "command.vin.title": "Insertar aleatorio: VIN",
+ "command.vrm.title": "Insertar aleatorio: Matrícula (VRM)",
+ "command.dish.title": "Insertar aleatorio: Plato",
+ "command.ingredient.title": "Insertar aleatorio: Ingrediente",
+ "command.fruit.title": "Insertar aleatorio: Fruta",
+ "command.vegetable.title": "Insertar aleatorio: Verdura",
+ "command.cuisine.title": "Insertar aleatorio: Cocina",
+ "command.songName.title": "Insertar aleatorio: Título de canción",
+ "command.musicGenre.title": "Insertar aleatorio: Género musical",
+ "command.artist.title": "Insertar aleatorio: Artista",
+ "command.album.title": "Insertar aleatorio: Álbum",
+ "command.dog.title": "Insertar aleatorio: Raza de perro",
+ "command.cat.title": "Insertar aleatorio: Raza de gato",
+ "command.bird.title": "Insertar aleatorio: Especie de ave",
+ "command.fish.title": "Insertar aleatorio: Especie de pez",
+ "command.horse.title": "Insertar aleatorio: Raza de caballo",
+ "command.airline.title": "Insertar aleatorio: Aerolínea",
+ "command.airport.title": "Insertar aleatorio: Aeropuerto",
+ "command.flightNumber.title": "Insertar aleatorio: Número de vuelo",
+ "command.seat.title": "Insertar aleatorio: Asiento",
+ "command.imageUrl.title": "Insertar aleatorio: URL de imagen",
+ "command.avatarUrl.title": "Insertar aleatorio: URL de avatar",
+ "command.mongodbObjectId.title": "Insertar aleatorio: ObjectId de MongoDB",
+ "command.setInsertType.title": "Insertar aleatorio: Establecer tipo de inserción",
+ "command.setOutputFormat.title": "Insertar aleatorio: Establecer formato de salida",
+ "command.setDateFormat.title": "Insertar aleatorio: Establecer formato de fecha",
+ "command.setRecordFormat.title": "Insertar aleatorio: Establecer formato de registro",
+ "command.setRecordSqlTable.title": "Insertar aleatorio: Establecer tabla SQL de registros",
+ "command.setBulkCount.title": "Insertar aleatorio: Establecer cantidad en bloque",
+ "command.setSeed.title": "Insertar aleatorio: Establecer semilla",
+ "command.setLocale.title": "Insertar aleatorio: Establecer configuración regional",
+ "command.toggleQuotes.title": "Insertar aleatorio: Alternar comillas",
+ "command.toggleNewLine.title": "Insertar aleatorio: Alternar salto de línea final",
+ "command.toggleUniquePerCursor.title": "Insertar aleatorio: Alternar valor único por cursor",
+ "command.toggleStrictUnique.title": "Insertar aleatorio: Alternar unicidad estricta",
+ "command.toggleContextMenu.title": "Insertar aleatorio: Alternar menú contextual del editor",
+ "command.manageTemplates.title": "Insertar aleatorio: Administrar plantillas",
+ "command.manageCustomLists.title": "Insertar aleatorio: Administrar listas personalizadas",
+ "command.resetSettings.title": "Insertar aleatorio: Restablecer configuración predeterminada",
+ "submenu.contextSubmenu.label": "Insertar aleatorio",
+ "config.title": "Insertar texto aleatorio",
+ "config.insertType.title": "Tipo de inserción",
+ "config.insertType.description": "Adónde van los valores generados.",
+ "config.insertType.enumDescriptions.0": "Rellena un valor nuevo en cada cursor.",
+ "config.insertType.enumDescriptions.1": "Inserta un bloque en la línea 1.",
+ "config.insertType.enumDescriptions.2": "Copia al portapapeles en lugar de insertar (no requiere editor).",
+ "config.withQuote.title": "Envolver entre comillas",
+ "config.withQuote.description": "Actívalo para envolver el texto aleatorio entre comillas.",
+ "config.withNewLine.title": "Incluir salto de línea",
+ "config.withNewLine.description": "Actívalo para añadir un salto de línea al final de cada inserción.",
+ "config.uniquePerCursor.title": "Valor único por cursor",
+ "config.uniquePerCursor.description": "Inserta un valor aleatorio distinto en cada cursor (relleno multicursor). Si está desactivado, se repite el mismo valor en todos los cursores.",
+ "config.strictUnique.title": "Unicidad estricta",
+ "config.strictUnique.description": "Vuelve a sortear los duplicados para que los valores que deben diferir dentro de una misma inserción realmente lo hagan — los valores de un bloque y los valores entre cursores cuando «Valor único por cursor» está activado. Limitado a 25 sorteos extra por valor; un conjunto pequeño (booleanos, días de la semana) que se agote conserva su duplicado en lugar de colgarse. Se aplica a inserciones de un solo tipo, no a registros.",
+ "config.seed.title": "Semilla",
+ "config.seed.description": "Establece un número para obtener una salida reproducible — la misma semilla produce los mismos valores en cada ejecución. Déjalo en blanco para aleatorio.",
+ "config.locale.title": "Configuración regional",
+ "config.locale.description": "Idioma/región de la que provienen los datos generados — nombres, direcciones, palabras y más salen localizados. Un tipo sin datos localizados recurre al inglés.",
+ "config.locale.enumDescriptions.0": "Inglés (predeterminado).",
+ "config.locale.enumDescriptions.1": "Alemán — Deutsch.",
+ "config.locale.enumDescriptions.2": "Francés — Français.",
+ "config.locale.enumDescriptions.3": "Español.",
+ "config.locale.enumDescriptions.4": "Portugués de Brasil — Português (Brasil).",
+ "config.locale.enumDescriptions.5": "Japonés — 日本語.",
+ "config.bulkCount.title": "Cantidad en bloque",
+ "config.bulkCount.description": "Cuántos valores insertar en cada cursor.",
+ "config.outputFormat.title": "Formato de salida",
+ "config.outputFormat.description": "Cómo se formatean varios valores (cantidad en bloque > 1) en cada cursor.",
+ "config.outputFormat.enumDescriptions.0": "Un valor por línea.",
+ "config.outputFormat.enumDescriptions.1": "Un array JSON, p. ej. [ \"a\", \"b\" ].",
+ "config.outputFormat.enumDescriptions.2": "Una lista entre comillas separada por comas, p. ej. \"a\", \"b\".",
+ "config.dateFormat.title": "Formato de fecha",
+ "config.dateFormat.description": "Cómo representan su valor los generadores de marcas de tiempo (Fecha, Fecha pasada/futura/reciente/próxima, Fecha de nacimiento, Fecha (entre…)). Día de la semana y Mes no se ven afectados.",
+ "config.dateFormat.enumDescriptions.0": "Marca de tiempo ISO 8601 completa, p. ej. 2026-07-02T12:34:56.789Z.",
+ "config.dateFormat.enumDescriptions.1": "Solo fecha (YYYY-MM-DD), p. ej. 2026-07-02.",
+ "config.dateFormat.enumDescriptions.2": "Solo hora (HH:mm:ss), p. ej. 12:34:56.",
+ "config.dateFormat.enumDescriptions.3": "Tiempo Unix en segundos, p. ej. 1783082096.",
+ "config.dateFormat.enumDescriptions.4": "Tiempo Unix en milisegundos, p. ej. 1783082096123.",
+ "config.recordFormat.title": "Formato de registro",
+ "config.recordFormat.description": "Forma de los registros de varios campos (Insertar aleatorio: Registro…): un objeto JSON, una fila SQL INSERT o una línea CSV.",
+ "config.recordFormat.enumDescriptions.0": "Un objeto JSON, p. ej. { \"name\": \"…\", \"email\": \"…\" }.",
+ "config.recordFormat.enumDescriptions.1": "Una fila SQL INSERT, p. ej. INSERT INTO table (…) VALUES (…);",
+ "config.recordFormat.enumDescriptions.2": "Una línea CSV, p. ej. value,value,…",
+ "config.recordSqlTable.title": "Tabla SQL de registros",
+ "config.recordSqlTable.description": "Nombre de tabla usado por la forma SQL de los registros.",
+ "config.templates.title": "Plantillas guardadas",
+ "config.templates.description": "Plantillas de faker con nombre, mostradas en un grupo Plantillas al inicio de Insertar aleatorio: Elegir…. Cada valor es una plantilla con marcadores {{module.method}}, p. ej. { \"invoice\": \"INV-{{string.numeric(4)}}\", \"contact\": \"{{person.fullName}} <{{internet.email}}>\" }. Las entradas que no sean cadenas no vacías se ignoran (se registran en la consola).",
+ "config.customLists.title": "Listas personalizadas",
+ "config.customLists.description": "Listas con nombre de tus propios valores, mostradas en un grupo Listas personalizadas al inicio de Insertar aleatorio: Elegir… y ofrecidas como campos de Registro… (el nombre se convierte en la clave del campo). Cada inserción sortea un elemento al azar, p. ej. { \"environment\": [ \"dev\", \"staging\", \"production\" ] }. Los valores que no sean cadenas se ignoran (se registran en la consola).",
+ "config.contextMenu.enabled.title": "Mostrar en el menú contextual del editor",
+ "config.contextMenu.enabled.description": "Añade un submenú «Insertar aleatorio» al menú contextual del editor."
+}
diff --git a/package.nls.fr.json b/package.nls.fr.json
new file mode 100644
index 0000000..3f3ec67
--- /dev/null
+++ b/package.nls.fr.json
@@ -0,0 +1,232 @@
+{
+ "displayName": "Générateur de données aléatoires, factices et fictives",
+ "description": "Insérez plus de 130 types de données aléatoires, factices et fictives à chaque curseur — noms, e-mails, UUID, lorem ipsum, enregistrements JSON/SQL/CSV et jeux de données complets, modèles, paramètres régionaux, anonymisation sur place. En masse, avec graine, entièrement hors ligne. Le seul faker de données dont vous aurez besoin.",
+ "command.animal.title": "Insertion aléatoire : Animal",
+ "command.person.title": "Insertion aléatoire : Personne",
+ "command.date.title": "Insertion aléatoire : Date",
+ "command.country.title": "Insertion aléatoire : Pays",
+ "command.number.title": "Insertion aléatoire : Nombre",
+ "command.string.title": "Insertion aléatoire : Chaîne",
+ "command.lorem.title": "Insertion aléatoire : Lorem",
+ "command.loremSmall.title": "Insertion aléatoire : Lorem court",
+ "command.loremMedium.title": "Insertion aléatoire : Lorem moyen",
+ "command.loremLarge.title": "Insertion aléatoire : Lorem long",
+ "command.hash.title": "Insertion aléatoire : Hachage",
+ "command.hashSmall.title": "Insertion aléatoire : Hachage court",
+ "command.hashMedium.title": "Insertion aléatoire : Hachage moyen",
+ "command.hashLarge.title": "Insertion aléatoire : Hachage long",
+ "command.pick.title": "Insertion aléatoire : Choisir…",
+ "command.record.title": "Insertion aléatoire : Enregistrement…",
+ "command.generateDataset.title": "Insertion aléatoire : Générer un jeu de données…",
+ "command.randomizeSelection.title": "Insertion aléatoire : Randomiser la sélection",
+ "command.numberRange.title": "Insertion aléatoire : Nombre (plage…)",
+ "command.floatRange.title": "Insertion aléatoire : Nombre flottant (plage…)",
+ "command.stringLength.title": "Insertion aléatoire : Chaîne (longueur…)",
+ "command.dateBetween.title": "Insertion aléatoire : Date (entre…)",
+ "command.wordsCount.title": "Insertion aléatoire : Mots (nombre…)",
+ "command.sentencesCount.title": "Insertion aléatoire : Phrases (nombre…)",
+ "command.paragraphsCount.title": "Insertion aléatoire : Paragraphes (nombre…)",
+ "command.uuidFormat.title": "Insertion aléatoire : UUID (format…)",
+ "command.passwordOptions.title": "Insertion aléatoire : Mot de passe (options…)",
+ "command.phoneFormat.title": "Insertion aléatoire : Téléphone (format…)",
+ "command.fromTemplate.title": "Insertion aléatoire : À partir d’un modèle…",
+ "command.fromPattern.title": "Insertion aléatoire : À partir d’un motif…",
+ "command.sequence.title": "Insertion aléatoire : Séquence (début/pas…)",
+ "command.uuid.title": "Insertion aléatoire : UUID",
+ "command.email.title": "Insertion aléatoire : Adresse e-mail",
+ "command.username.title": "Insertion aléatoire : Nom d’utilisateur",
+ "command.boolean.title": "Insertion aléatoire : Booléen",
+ "command.firstName.title": "Insertion aléatoire : Prénom",
+ "command.lastName.title": "Insertion aléatoire : Nom de famille",
+ "command.phone.title": "Insertion aléatoire : Numéro de téléphone",
+ "command.city.title": "Insertion aléatoire : Ville",
+ "command.address.title": "Insertion aléatoire : Adresse postale",
+ "command.ipv4.title": "Insertion aléatoire : Adresse IP",
+ "command.mac.title": "Insertion aléatoire : Adresse MAC",
+ "command.url.title": "Insertion aléatoire : URL",
+ "command.color.title": "Insertion aléatoire : Couleur (hex)",
+ "command.password.title": "Insertion aléatoire : Mot de passe",
+ "command.word.title": "Insertion aléatoire : Mot",
+ "command.sentence.title": "Insertion aléatoire : Phrase",
+ "command.middleName.title": "Insertion aléatoire : Deuxième prénom",
+ "command.prefix.title": "Insertion aléatoire : Préfixe de nom",
+ "command.suffix.title": "Insertion aléatoire : Suffixe de nom",
+ "command.sex.title": "Insertion aléatoire : Sexe",
+ "command.gender.title": "Insertion aléatoire : Genre",
+ "command.jobTitle.title": "Insertion aléatoire : Intitulé de poste",
+ "command.jobType.title": "Insertion aléatoire : Type de poste",
+ "command.jobArea.title": "Insertion aléatoire : Domaine professionnel",
+ "command.bio.title": "Insertion aléatoire : Biographie",
+ "command.zodiac.title": "Insertion aléatoire : Signe du zodiaque",
+ "command.ipv6.title": "Insertion aléatoire : Adresse IPv6",
+ "command.port.title": "Insertion aléatoire : Port",
+ "command.httpMethod.title": "Insertion aléatoire : Méthode HTTP",
+ "command.httpStatus.title": "Insertion aléatoire : Code de statut HTTP",
+ "command.userAgent.title": "Insertion aléatoire : Agent utilisateur",
+ "command.domainName.title": "Insertion aléatoire : Nom de domaine",
+ "command.emoji.title": "Insertion aléatoire : Émoji",
+ "command.protocol.title": "Insertion aléatoire : Protocole",
+ "command.jwt.title": "Insertion aléatoire : JWT",
+ "command.displayName.title": "Insertion aléatoire : Nom d’affichage",
+ "command.company.title": "Insertion aléatoire : Nom d’entreprise",
+ "command.catchPhrase.title": "Insertion aléatoire : Slogan",
+ "command.buzzPhrase.title": "Insertion aléatoire : Formule marketing",
+ "command.product.title": "Insertion aléatoire : Produit",
+ "command.productName.title": "Insertion aléatoire : Nom de produit",
+ "command.price.title": "Insertion aléatoire : Prix",
+ "command.department.title": "Insertion aléatoire : Rayon",
+ "command.productMaterial.title": "Insertion aléatoire : Matériau du produit",
+ "command.productDescription.title": "Insertion aléatoire : Description du produit",
+ "command.isbn.title": "Insertion aléatoire : ISBN",
+ "command.amount.title": "Insertion aléatoire : Montant",
+ "command.currencyCode.title": "Insertion aléatoire : Code de devise",
+ "command.currencyName.title": "Insertion aléatoire : Nom de devise",
+ "command.currencySymbol.title": "Insertion aléatoire : Symbole de devise",
+ "command.creditCard.title": "Insertion aléatoire : Numéro de carte bancaire",
+ "command.creditCardCVV.title": "Insertion aléatoire : CVV de carte bancaire",
+ "command.iban.title": "Insertion aléatoire : IBAN",
+ "command.bic.title": "Insertion aléatoire : BIC",
+ "command.accountNumber.title": "Insertion aléatoire : Numéro de compte",
+ "command.routingNumber.title": "Insertion aléatoire : Numéro de routage",
+ "command.bitcoin.title": "Insertion aléatoire : Adresse Bitcoin",
+ "command.ethereum.title": "Insertion aléatoire : Adresse Ethereum",
+ "command.pin.title": "Insertion aléatoire : Code PIN",
+ "command.zipCode.title": "Insertion aléatoire : Code postal",
+ "command.state.title": "Insertion aléatoire : État",
+ "command.stateAbbr.title": "Insertion aléatoire : Abréviation d’État",
+ "command.countryCode.title": "Insertion aléatoire : Code pays",
+ "command.latitude.title": "Insertion aléatoire : Latitude",
+ "command.longitude.title": "Insertion aléatoire : Longitude",
+ "command.timeZone.title": "Insertion aléatoire : Fuseau horaire",
+ "command.county.title": "Insertion aléatoire : Comté",
+ "command.street.title": "Insertion aléatoire : Nom de rue",
+ "command.secondaryAddress.title": "Insertion aléatoire : Complément d’adresse",
+ "command.buildingNumber.title": "Insertion aléatoire : Numéro de bâtiment",
+ "command.direction.title": "Insertion aléatoire : Point cardinal",
+ "command.pastDate.title": "Insertion aléatoire : Date passée",
+ "command.futureDate.title": "Insertion aléatoire : Date future",
+ "command.recentDate.title": "Insertion aléatoire : Date récente",
+ "command.soonDate.title": "Insertion aléatoire : Date proche",
+ "command.birthdate.title": "Insertion aléatoire : Date de naissance",
+ "command.weekday.title": "Insertion aléatoire : Jour de la semaine",
+ "command.month.title": "Insertion aléatoire : Mois",
+ "command.float.title": "Insertion aléatoire : Nombre flottant",
+ "command.hexNumber.title": "Insertion aléatoire : Nombre hexadécimal",
+ "command.binary.title": "Insertion aléatoire : Nombre binaire",
+ "command.octal.title": "Insertion aléatoire : Nombre octal",
+ "command.nanoid.title": "Insertion aléatoire : Nano ID",
+ "command.ulid.title": "Insertion aléatoire : ULID",
+ "command.alpha.title": "Insertion aléatoire : Chaîne alphabétique",
+ "command.numeric.title": "Insertion aléatoire : Chaîne numérique",
+ "command.hackerPhrase.title": "Insertion aléatoire : Phrase de hacker",
+ "command.slug.title": "Insertion aléatoire : Slug",
+ "command.words.title": "Insertion aléatoire : Mots",
+ "command.bookTitle.title": "Insertion aléatoire : Titre de livre",
+ "command.bookAuthor.title": "Insertion aléatoire : Auteur de livre",
+ "command.gitBranch.title": "Insertion aléatoire : Branche Git",
+ "command.gitCommitSha.title": "Insertion aléatoire : SHA de commit Git",
+ "command.gitCommitMessage.title": "Insertion aléatoire : Message de commit Git",
+ "command.fileName.title": "Insertion aléatoire : Nom de fichier",
+ "command.filePath.title": "Insertion aléatoire : Chemin de fichier",
+ "command.fileExt.title": "Insertion aléatoire : Extension de fichier",
+ "command.mimeType.title": "Insertion aléatoire : Type MIME",
+ "command.semver.title": "Insertion aléatoire : Semver",
+ "command.cron.title": "Insertion aléatoire : Expression cron",
+ "command.rgb.title": "Insertion aléatoire : Couleur (rgb)",
+ "command.hsl.title": "Insertion aléatoire : Couleur (hsl)",
+ "command.colorName.title": "Insertion aléatoire : Nom de couleur",
+ "command.vehicle.title": "Insertion aléatoire : Véhicule",
+ "command.vehicleManufacturer.title": "Insertion aléatoire : Constructeur automobile",
+ "command.vehicleModel.title": "Insertion aléatoire : Modèle de véhicule",
+ "command.vin.title": "Insertion aléatoire : VIN",
+ "command.vrm.title": "Insertion aléatoire : Plaque d’immatriculation (VRM)",
+ "command.dish.title": "Insertion aléatoire : Plat",
+ "command.ingredient.title": "Insertion aléatoire : Ingrédient",
+ "command.fruit.title": "Insertion aléatoire : Fruit",
+ "command.vegetable.title": "Insertion aléatoire : Légume",
+ "command.cuisine.title": "Insertion aléatoire : Cuisine",
+ "command.songName.title": "Insertion aléatoire : Titre de chanson",
+ "command.musicGenre.title": "Insertion aléatoire : Genre musical",
+ "command.artist.title": "Insertion aléatoire : Artiste",
+ "command.album.title": "Insertion aléatoire : Album",
+ "command.dog.title": "Insertion aléatoire : Race de chien",
+ "command.cat.title": "Insertion aléatoire : Race de chat",
+ "command.bird.title": "Insertion aléatoire : Espèce d’oiseau",
+ "command.fish.title": "Insertion aléatoire : Espèce de poisson",
+ "command.horse.title": "Insertion aléatoire : Race de cheval",
+ "command.airline.title": "Insertion aléatoire : Compagnie aérienne",
+ "command.airport.title": "Insertion aléatoire : Aéroport",
+ "command.flightNumber.title": "Insertion aléatoire : Numéro de vol",
+ "command.seat.title": "Insertion aléatoire : Siège",
+ "command.imageUrl.title": "Insertion aléatoire : URL d’image",
+ "command.avatarUrl.title": "Insertion aléatoire : URL d’avatar",
+ "command.mongodbObjectId.title": "Insertion aléatoire : ObjectId MongoDB",
+ "command.setInsertType.title": "Insertion aléatoire : Définir le type d’insertion",
+ "command.setOutputFormat.title": "Insertion aléatoire : Définir le format de sortie",
+ "command.setDateFormat.title": "Insertion aléatoire : Définir le format de date",
+ "command.setRecordFormat.title": "Insertion aléatoire : Définir le format d’enregistrement",
+ "command.setRecordSqlTable.title": "Insertion aléatoire : Définir la table SQL des enregistrements",
+ "command.setBulkCount.title": "Insertion aléatoire : Définir la quantité par lot",
+ "command.setSeed.title": "Insertion aléatoire : Définir la graine",
+ "command.setLocale.title": "Insertion aléatoire : Définir les paramètres régionaux",
+ "command.toggleQuotes.title": "Insertion aléatoire : Activer/désactiver les guillemets",
+ "command.toggleNewLine.title": "Insertion aléatoire : Activer/désactiver le saut de ligne final",
+ "command.toggleUniquePerCursor.title": "Insertion aléatoire : Activer/désactiver la valeur unique par curseur",
+ "command.toggleStrictUnique.title": "Insertion aléatoire : Activer/désactiver l’unicité stricte",
+ "command.toggleContextMenu.title": "Insertion aléatoire : Activer/désactiver le menu contextuel de l’éditeur",
+ "command.manageTemplates.title": "Insertion aléatoire : Gérer les modèles",
+ "command.manageCustomLists.title": "Insertion aléatoire : Gérer les listes personnalisées",
+ "command.resetSettings.title": "Insertion aléatoire : Réinitialiser les paramètres par défaut",
+ "submenu.contextSubmenu.label": "Insertion aléatoire",
+ "config.title": "Insertion de texte aléatoire",
+ "config.insertType.title": "Type d’insertion",
+ "config.insertType.description": "Où vont les valeurs générées.",
+ "config.insertType.enumDescriptions.0": "Insère une valeur fraîche à chaque curseur.",
+ "config.insertType.enumDescriptions.1": "Insère un bloc à la ligne 1.",
+ "config.insertType.enumDescriptions.2": "Copie dans le presse-papiers au lieu d’insérer (aucun éditeur requis).",
+ "config.withQuote.title": "Entourer de guillemets",
+ "config.withQuote.description": "Activez pour entourer le texte aléatoire de guillemets.",
+ "config.withNewLine.title": "Inclure un saut de ligne",
+ "config.withNewLine.description": "Activez pour ajouter un saut de ligne à la fin de chaque insertion.",
+ "config.uniquePerCursor.title": "Valeur unique par curseur",
+ "config.uniquePerCursor.description": "Insère une valeur aléatoire différente à chaque curseur (remplissage multi-curseur). Si l’option est désactivée, la même valeur est répétée à chaque curseur.",
+ "config.strictUnique.title": "Unicité stricte",
+ "config.strictUnique.description": "Retente le tirage des doublons pour que les valeurs censées différer au sein d’une même insertion diffèrent vraiment — les valeurs d’un bloc en lot, et les valeurs entre curseurs quand « Valeur unique par curseur » est activé. Limité à 25 tirages supplémentaires par valeur : un petit réservoir (booléens, jours de la semaine) qui s’épuise conserve son doublon au lieu de bloquer. S’applique aux insertions d’un seul type, pas aux enregistrements.",
+ "config.seed.title": "Graine",
+ "config.seed.description": "Définissez un nombre pour une sortie reproductible — la même graine produit les mêmes valeurs à chaque exécution. Laissez vide pour de l’aléatoire.",
+ "config.locale.title": "Paramètres régionaux",
+ "config.locale.description": "Langue/région dont proviennent les données générées — noms, adresses, mots et plus sortent localisés. Un type sans données localisées retombe sur l’anglais.",
+ "config.locale.enumDescriptions.0": "Anglais (par défaut).",
+ "config.locale.enumDescriptions.1": "Allemand — Deutsch.",
+ "config.locale.enumDescriptions.2": "Français.",
+ "config.locale.enumDescriptions.3": "Espagnol — Español.",
+ "config.locale.enumDescriptions.4": "Portugais brésilien — Português (Brasil).",
+ "config.locale.enumDescriptions.5": "Japonais — 日本語.",
+ "config.bulkCount.title": "Quantité par lot",
+ "config.bulkCount.description": "Combien de valeurs insérer à chaque curseur.",
+ "config.outputFormat.title": "Format de sortie",
+ "config.outputFormat.description": "Comment plusieurs valeurs (quantité par lot > 1) sont mises en forme à chaque curseur.",
+ "config.outputFormat.enumDescriptions.0": "Une valeur par ligne.",
+ "config.outputFormat.enumDescriptions.1": "Un tableau JSON, p. ex. [ \"a\", \"b\" ].",
+ "config.outputFormat.enumDescriptions.2": "Une liste entre guillemets, séparée par des virgules, p. ex. \"a\", \"b\".",
+ "config.dateFormat.title": "Format de date",
+ "config.dateFormat.description": "Comment les générateurs d’horodatage (Date, Date passée/future/récente/proche, Date de naissance, Date (entre…)) rendent leur valeur. Jour de la semaine et Mois ne sont pas concernés.",
+ "config.dateFormat.enumDescriptions.0": "Horodatage ISO 8601 complet, p. ex. 2026-07-02T12:34:56.789Z.",
+ "config.dateFormat.enumDescriptions.1": "Date seule (YYYY-MM-DD), p. ex. 2026-07-02.",
+ "config.dateFormat.enumDescriptions.2": "Heure seule (HH:mm:ss), p. ex. 12:34:56.",
+ "config.dateFormat.enumDescriptions.3": "Temps Unix en secondes, p. ex. 1783082096.",
+ "config.dateFormat.enumDescriptions.4": "Temps Unix en millisecondes, p. ex. 1783082096123.",
+ "config.recordFormat.title": "Format d’enregistrement",
+ "config.recordFormat.description": "Forme des enregistrements multi-champs (Insertion aléatoire : Enregistrement…) : un objet JSON, une ligne SQL INSERT ou une ligne CSV.",
+ "config.recordFormat.enumDescriptions.0": "Un objet JSON, p. ex. { \"name\": \"…\", \"email\": \"…\" }.",
+ "config.recordFormat.enumDescriptions.1": "Une ligne SQL INSERT, p. ex. INSERT INTO table (…) VALUES (…);",
+ "config.recordFormat.enumDescriptions.2": "Une ligne CSV, p. ex. value,value,…",
+ "config.recordSqlTable.title": "Table SQL des enregistrements",
+ "config.recordSqlTable.description": "Nom de table utilisé par la forme SQL des enregistrements.",
+ "config.templates.title": "Modèles enregistrés",
+ "config.templates.description": "Modèles faker nommés, affichés dans un groupe Modèles en haut de Insertion aléatoire : Choisir…. Chaque valeur est un modèle avec des espaces réservés {{module.method}}, p. ex. { \"invoice\": \"INV-{{string.numeric(4)}}\", \"contact\": \"{{person.fullName}} <{{internet.email}}>\" }. Les entrées qui ne sont pas des chaînes non vides sont ignorées (journalisées dans la console).",
+ "config.customLists.title": "Listes personnalisées",
+ "config.customLists.description": "Listes nommées de vos propres valeurs, affichées dans un groupe Listes personnalisées en haut de Insertion aléatoire : Choisir… et proposées comme champs d’Enregistrement… (le nom devient la clé du champ). Chaque insertion tire un élément au hasard, p. ex. { \"environment\": [ \"dev\", \"staging\", \"production\" ] }. Les valeurs qui ne sont pas des chaînes sont ignorées (journalisées dans la console).",
+ "config.contextMenu.enabled.title": "Afficher dans le menu contextuel de l’éditeur",
+ "config.contextMenu.enabled.description": "Ajoute un sous-menu « Insertion aléatoire » au menu clic droit de l’éditeur."
+}
diff --git a/package.nls.ja.json b/package.nls.ja.json
new file mode 100644
index 0000000..81ad677
--- /dev/null
+++ b/package.nls.ja.json
@@ -0,0 +1,232 @@
+{
+ "displayName": "ランダム・フェイク・モックデータジェネレーター",
+ "description": "130種類以上のランダム・フェイク・モックデータをすべてのカーソル位置に挿入 — 氏名、メールアドレス、UUID、Lorem Ipsum、JSON/SQL/CSVレコードとデータセット一式、テンプレート、ロケール、その場での匿名化。一括挿入、シード対応、完全オフライン。データフェイカーはこれひとつで十分。",
+ "command.animal.title": "ランダム挿入: 動物",
+ "command.person.title": "ランダム挿入: 氏名",
+ "command.date.title": "ランダム挿入: 日付",
+ "command.country.title": "ランダム挿入: 国",
+ "command.number.title": "ランダム挿入: 数値",
+ "command.string.title": "ランダム挿入: 文字列",
+ "command.lorem.title": "ランダム挿入: Lorem",
+ "command.loremSmall.title": "ランダム挿入: Lorem (小)",
+ "command.loremMedium.title": "ランダム挿入: Lorem (中)",
+ "command.loremLarge.title": "ランダム挿入: Lorem (大)",
+ "command.hash.title": "ランダム挿入: ハッシュ",
+ "command.hashSmall.title": "ランダム挿入: ハッシュ (小)",
+ "command.hashMedium.title": "ランダム挿入: ハッシュ (中)",
+ "command.hashLarge.title": "ランダム挿入: ハッシュ (大)",
+ "command.pick.title": "ランダム挿入: 選択…",
+ "command.record.title": "ランダム挿入: レコード…",
+ "command.generateDataset.title": "ランダム挿入: データセットを生成…",
+ "command.randomizeSelection.title": "ランダム挿入: 選択範囲をランダム化",
+ "command.numberRange.title": "ランダム挿入: 数値 (範囲…)",
+ "command.floatRange.title": "ランダム挿入: 浮動小数点数 (範囲…)",
+ "command.stringLength.title": "ランダム挿入: 文字列 (長さ…)",
+ "command.dateBetween.title": "ランダム挿入: 日付 (期間…)",
+ "command.wordsCount.title": "ランダム挿入: 単語 (個数…)",
+ "command.sentencesCount.title": "ランダム挿入: 文 (個数…)",
+ "command.paragraphsCount.title": "ランダム挿入: 段落 (個数…)",
+ "command.uuidFormat.title": "ランダム挿入: UUID (形式…)",
+ "command.passwordOptions.title": "ランダム挿入: パスワード (オプション…)",
+ "command.phoneFormat.title": "ランダム挿入: 電話番号 (形式…)",
+ "command.fromTemplate.title": "ランダム挿入: テンプレートから…",
+ "command.fromPattern.title": "ランダム挿入: パターンから…",
+ "command.sequence.title": "ランダム挿入: 連番 (開始/増分…)",
+ "command.uuid.title": "ランダム挿入: UUID",
+ "command.email.title": "ランダム挿入: メールアドレス",
+ "command.username.title": "ランダム挿入: ユーザー名",
+ "command.boolean.title": "ランダム挿入: 真偽値",
+ "command.firstName.title": "ランダム挿入: 名",
+ "command.lastName.title": "ランダム挿入: 姓",
+ "command.phone.title": "ランダム挿入: 電話番号",
+ "command.city.title": "ランダム挿入: 都市",
+ "command.address.title": "ランダム挿入: 住所",
+ "command.ipv4.title": "ランダム挿入: IPアドレス",
+ "command.mac.title": "ランダム挿入: MACアドレス",
+ "command.url.title": "ランダム挿入: URL",
+ "command.color.title": "ランダム挿入: 色 (hex)",
+ "command.password.title": "ランダム挿入: パスワード",
+ "command.word.title": "ランダム挿入: 単語",
+ "command.sentence.title": "ランダム挿入: 文",
+ "command.middleName.title": "ランダム挿入: ミドルネーム",
+ "command.prefix.title": "ランダム挿入: 敬称",
+ "command.suffix.title": "ランダム挿入: 名前のサフィックス",
+ "command.sex.title": "ランダム挿入: 性別",
+ "command.gender.title": "ランダム挿入: ジェンダー",
+ "command.jobTitle.title": "ランダム挿入: 役職",
+ "command.jobType.title": "ランダム挿入: 職種",
+ "command.jobArea.title": "ランダム挿入: 職務分野",
+ "command.bio.title": "ランダム挿入: 自己紹介",
+ "command.zodiac.title": "ランダム挿入: 星座",
+ "command.ipv6.title": "ランダム挿入: IPv6アドレス",
+ "command.port.title": "ランダム挿入: ポート番号",
+ "command.httpMethod.title": "ランダム挿入: HTTPメソッド",
+ "command.httpStatus.title": "ランダム挿入: HTTPステータスコード",
+ "command.userAgent.title": "ランダム挿入: ユーザーエージェント",
+ "command.domainName.title": "ランダム挿入: ドメイン名",
+ "command.emoji.title": "ランダム挿入: 絵文字",
+ "command.protocol.title": "ランダム挿入: プロトコル",
+ "command.jwt.title": "ランダム挿入: JWT",
+ "command.displayName.title": "ランダム挿入: 表示名",
+ "command.company.title": "ランダム挿入: 会社名",
+ "command.catchPhrase.title": "ランダム挿入: キャッチコピー",
+ "command.buzzPhrase.title": "ランダム挿入: バズフレーズ",
+ "command.product.title": "ランダム挿入: 商品",
+ "command.productName.title": "ランダム挿入: 商品名",
+ "command.price.title": "ランダム挿入: 価格",
+ "command.department.title": "ランダム挿入: 部門",
+ "command.productMaterial.title": "ランダム挿入: 商品素材",
+ "command.productDescription.title": "ランダム挿入: 商品説明",
+ "command.isbn.title": "ランダム挿入: ISBN",
+ "command.amount.title": "ランダム挿入: 金額",
+ "command.currencyCode.title": "ランダム挿入: 通貨コード",
+ "command.currencyName.title": "ランダム挿入: 通貨名",
+ "command.currencySymbol.title": "ランダム挿入: 通貨記号",
+ "command.creditCard.title": "ランダム挿入: クレジットカード番号",
+ "command.creditCardCVV.title": "ランダム挿入: クレジットカードCVV",
+ "command.iban.title": "ランダム挿入: IBAN",
+ "command.bic.title": "ランダム挿入: BIC",
+ "command.accountNumber.title": "ランダム挿入: 口座番号",
+ "command.routingNumber.title": "ランダム挿入: ルーティング番号",
+ "command.bitcoin.title": "ランダム挿入: ビットコインアドレス",
+ "command.ethereum.title": "ランダム挿入: イーサリアムアドレス",
+ "command.pin.title": "ランダム挿入: 暗証番号",
+ "command.zipCode.title": "ランダム挿入: 郵便番号",
+ "command.state.title": "ランダム挿入: 州",
+ "command.stateAbbr.title": "ランダム挿入: 州の略称",
+ "command.countryCode.title": "ランダム挿入: 国コード",
+ "command.latitude.title": "ランダム挿入: 緯度",
+ "command.longitude.title": "ランダム挿入: 経度",
+ "command.timeZone.title": "ランダム挿入: タイムゾーン",
+ "command.county.title": "ランダム挿入: 郡",
+ "command.street.title": "ランダム挿入: 通りの名前",
+ "command.secondaryAddress.title": "ランダム挿入: 建物名・部屋番号",
+ "command.buildingNumber.title": "ランダム挿入: 番地",
+ "command.direction.title": "ランダム挿入: 方角",
+ "command.pastDate.title": "ランダム挿入: 過去の日付",
+ "command.futureDate.title": "ランダム挿入: 未来の日付",
+ "command.recentDate.title": "ランダム挿入: 最近の日付",
+ "command.soonDate.title": "ランダム挿入: 近日の日付",
+ "command.birthdate.title": "ランダム挿入: 生年月日",
+ "command.weekday.title": "ランダム挿入: 曜日",
+ "command.month.title": "ランダム挿入: 月",
+ "command.float.title": "ランダム挿入: 浮動小数点数",
+ "command.hexNumber.title": "ランダム挿入: 16進数",
+ "command.binary.title": "ランダム挿入: 2進数",
+ "command.octal.title": "ランダム挿入: 8進数",
+ "command.nanoid.title": "ランダム挿入: Nano ID",
+ "command.ulid.title": "ランダム挿入: ULID",
+ "command.alpha.title": "ランダム挿入: 英字文字列",
+ "command.numeric.title": "ランダム挿入: 数字文字列",
+ "command.hackerPhrase.title": "ランダム挿入: ハッカーフレーズ",
+ "command.slug.title": "ランダム挿入: スラッグ",
+ "command.words.title": "ランダム挿入: 単語 (複数)",
+ "command.bookTitle.title": "ランダム挿入: 書籍タイトル",
+ "command.bookAuthor.title": "ランダム挿入: 書籍著者",
+ "command.gitBranch.title": "ランダム挿入: Gitブランチ",
+ "command.gitCommitSha.title": "ランダム挿入: GitコミットSHA",
+ "command.gitCommitMessage.title": "ランダム挿入: Gitコミットメッセージ",
+ "command.fileName.title": "ランダム挿入: ファイル名",
+ "command.filePath.title": "ランダム挿入: ファイルパス",
+ "command.fileExt.title": "ランダム挿入: ファイル拡張子",
+ "command.mimeType.title": "ランダム挿入: MIMEタイプ",
+ "command.semver.title": "ランダム挿入: Semver",
+ "command.cron.title": "ランダム挿入: Cron式",
+ "command.rgb.title": "ランダム挿入: 色 (rgb)",
+ "command.hsl.title": "ランダム挿入: 色 (hsl)",
+ "command.colorName.title": "ランダム挿入: 色名",
+ "command.vehicle.title": "ランダム挿入: 車両",
+ "command.vehicleManufacturer.title": "ランダム挿入: 自動車メーカー",
+ "command.vehicleModel.title": "ランダム挿入: 車種",
+ "command.vin.title": "ランダム挿入: VIN",
+ "command.vrm.title": "ランダム挿入: ナンバープレート (VRM)",
+ "command.dish.title": "ランダム挿入: 料理",
+ "command.ingredient.title": "ランダム挿入: 食材",
+ "command.fruit.title": "ランダム挿入: 果物",
+ "command.vegetable.title": "ランダム挿入: 野菜",
+ "command.cuisine.title": "ランダム挿入: 料理ジャンル",
+ "command.songName.title": "ランダム挿入: 曲名",
+ "command.musicGenre.title": "ランダム挿入: 音楽ジャンル",
+ "command.artist.title": "ランダム挿入: アーティスト",
+ "command.album.title": "ランダム挿入: アルバム",
+ "command.dog.title": "ランダム挿入: 犬種",
+ "command.cat.title": "ランダム挿入: 猫種",
+ "command.bird.title": "ランダム挿入: 鳥の種類",
+ "command.fish.title": "ランダム挿入: 魚の種類",
+ "command.horse.title": "ランダム挿入: 馬の品種",
+ "command.airline.title": "ランダム挿入: 航空会社",
+ "command.airport.title": "ランダム挿入: 空港",
+ "command.flightNumber.title": "ランダム挿入: 便名",
+ "command.seat.title": "ランダム挿入: 座席",
+ "command.imageUrl.title": "ランダム挿入: 画像URL",
+ "command.avatarUrl.title": "ランダム挿入: アバターURL",
+ "command.mongodbObjectId.title": "ランダム挿入: MongoDB ObjectId",
+ "command.setInsertType.title": "ランダム挿入: 挿入タイプを設定",
+ "command.setOutputFormat.title": "ランダム挿入: 出力形式を設定",
+ "command.setDateFormat.title": "ランダム挿入: 日付形式を設定",
+ "command.setRecordFormat.title": "ランダム挿入: レコード形式を設定",
+ "command.setRecordSqlTable.title": "ランダム挿入: レコードのSQLテーブルを設定",
+ "command.setBulkCount.title": "ランダム挿入: 一括挿入数を設定",
+ "command.setSeed.title": "ランダム挿入: シードを設定",
+ "command.setLocale.title": "ランダム挿入: ロケールを設定",
+ "command.toggleQuotes.title": "ランダム挿入: 引用符での囲みを切り替え",
+ "command.toggleNewLine.title": "ランダム挿入: 末尾の改行を切り替え",
+ "command.toggleUniquePerCursor.title": "ランダム挿入: カーソルごとの一意な値を切り替え",
+ "command.toggleStrictUnique.title": "ランダム挿入: 厳密な一意性を切り替え",
+ "command.toggleContextMenu.title": "ランダム挿入: エディターのコンテキストメニューを切り替え",
+ "command.manageTemplates.title": "ランダム挿入: テンプレートを管理",
+ "command.manageCustomLists.title": "ランダム挿入: カスタムリストを管理",
+ "command.resetSettings.title": "ランダム挿入: 設定を既定値にリセット",
+ "submenu.contextSubmenu.label": "ランダム挿入",
+ "config.title": "ランダムテキスト挿入",
+ "config.insertType.title": "挿入タイプ",
+ "config.insertType.description": "生成された値の挿入先。",
+ "config.insertType.enumDescriptions.0": "各カーソル位置に新しい値を挿入します。",
+ "config.insertType.enumDescriptions.1": "1行目に1つのブロックを挿入します。",
+ "config.insertType.enumDescriptions.2": "挿入せずにクリップボードへコピーします (エディター不要)。",
+ "config.withQuote.title": "引用符で囲む",
+ "config.withQuote.description": "オンにすると、ランダムテキストを引用符で囲みます。",
+ "config.withNewLine.title": "改行を追加",
+ "config.withNewLine.description": "オンにすると、各挿入の末尾に改行を追加します。",
+ "config.uniquePerCursor.title": "カーソルごとの一意な値",
+ "config.uniquePerCursor.description": "各カーソル位置に異なるランダム値を挿入します (マルチカーソル対応)。オフの場合、すべてのカーソル位置に同じ値が繰り返されます。",
+ "config.strictUnique.title": "厳密な一意性",
+ "config.strictUnique.description": "1回の挿入内で異なるはずの値が本当に異なるよう、重複を引き直します — 一括ブロック内の値、および「カーソルごとの一意な値」がオンのときのカーソル間の値。引き直しは値ごとに25回まで。小さな候補集合 (真偽値、曜日など) が尽きた場合は、ハングせず重複を残します。単一タイプの挿入に適用され、レコードには適用されません。",
+ "config.seed.title": "シード",
+ "config.seed.description": "再現可能な出力にするには数値を設定します — 同じシードは毎回同じ値を生成します。空欄にするとランダムになります。",
+ "config.locale.title": "ロケール",
+ "config.locale.description": "生成データの言語/地域 — 氏名、住所、単語などがローカライズされて出力されます。ローカライズデータのないタイプは英語にフォールバックします。",
+ "config.locale.enumDescriptions.0": "英語 (既定)。",
+ "config.locale.enumDescriptions.1": "ドイツ語 — Deutsch。",
+ "config.locale.enumDescriptions.2": "フランス語 — Français。",
+ "config.locale.enumDescriptions.3": "スペイン語 — Español。",
+ "config.locale.enumDescriptions.4": "ブラジルポルトガル語 — Português (Brasil)。",
+ "config.locale.enumDescriptions.5": "日本語。",
+ "config.bulkCount.title": "一括挿入数",
+ "config.bulkCount.description": "各カーソル位置に挿入する値の個数。",
+ "config.outputFormat.title": "出力形式",
+ "config.outputFormat.description": "複数の値 (一括挿入数 > 1) を各カーソル位置でどう整形するか。",
+ "config.outputFormat.enumDescriptions.0": "1行に1つの値。",
+ "config.outputFormat.enumDescriptions.1": "JSON配列。例: [ \"a\", \"b\" ]。",
+ "config.outputFormat.enumDescriptions.2": "引用符付きのカンマ区切りリスト。例: \"a\", \"b\"。",
+ "config.dateFormat.title": "日付形式",
+ "config.dateFormat.description": "タイムスタンプ系ジェネレーター (日付、過去/未来/最近/近日の日付、生年月日、日付 (期間…)) が値をどう表示するか。曜日と月には影響しません。",
+ "config.dateFormat.enumDescriptions.0": "完全なISO 8601タイムスタンプ。例: 2026-07-02T12:34:56.789Z。",
+ "config.dateFormat.enumDescriptions.1": "日付のみ (YYYY-MM-DD)。例: 2026-07-02。",
+ "config.dateFormat.enumDescriptions.2": "時刻のみ (HH:mm:ss)。例: 12:34:56。",
+ "config.dateFormat.enumDescriptions.3": "Unix時間 (秒)。例: 1783082096。",
+ "config.dateFormat.enumDescriptions.4": "Unix時間 (ミリ秒)。例: 1783082096123。",
+ "config.recordFormat.title": "レコード形式",
+ "config.recordFormat.description": "複数フィールドレコード (ランダム挿入: レコード…) の形式: JSONオブジェクト、SQL INSERT行、またはCSV行。",
+ "config.recordFormat.enumDescriptions.0": "JSONオブジェクト。例: { \"name\": \"…\", \"email\": \"…\" }。",
+ "config.recordFormat.enumDescriptions.1": "SQL INSERT行。例: INSERT INTO table (…) VALUES (…);",
+ "config.recordFormat.enumDescriptions.2": "CSV行。例: value,value,…",
+ "config.recordSqlTable.title": "レコードのSQLテーブル",
+ "config.recordSqlTable.description": "SQLレコード形式で使うテーブル名。",
+ "config.templates.title": "保存済みテンプレート",
+ "config.templates.description": "名前付きのfakerテンプレート。ランダム挿入: 選択… の先頭にテンプレートグループとして表示されます。各値は {{module.method}} プレースホルダーを含むテンプレートです。例: { \"invoice\": \"INV-{{string.numeric(4)}}\", \"contact\": \"{{person.fullName}} <{{internet.email}}>\" }。空でない文字列以外のエントリは無視されます (コンソールに記録)。",
+ "config.customLists.title": "カスタムリスト",
+ "config.customLists.description": "独自の値の名前付きリスト。ランダム挿入: 選択… の先頭にカスタムリストグループとして表示され、レコード… のフィールドとしても提供されます (名前がフィールドキーになります)。挿入のたびにランダムに1項目を選びます。例: { \"environment\": [ \"dev\", \"staging\", \"production\" ] }。文字列以外の値は無視されます (コンソールに記録)。",
+ "config.contextMenu.enabled.title": "エディターのコンテキストメニューに表示",
+ "config.contextMenu.enabled.description": "エディターの右クリックメニューに「ランダム挿入」サブメニューを追加します。"
+}
diff --git a/package.nls.json b/package.nls.json
new file mode 100644
index 0000000..57d5ef2
--- /dev/null
+++ b/package.nls.json
@@ -0,0 +1,232 @@
+{
+ "displayName": "Random, Fake & Mock Data Generator",
+ "description": "Insert 130+ types of random, fake & mock data at every cursor — names, emails, UUIDs, lorem ipsum, JSON/SQL/CSV records & whole datasets, templates, locales, anonymize in place. Bulk, seeded, fully offline. The only data faker you'll need.",
+ "command.animal.title": "Insert Random: Animal",
+ "command.person.title": "Insert Random: Person",
+ "command.date.title": "Insert Random: Date",
+ "command.country.title": "Insert Random: Country",
+ "command.number.title": "Insert Random: Number",
+ "command.string.title": "Insert Random: String",
+ "command.lorem.title": "Insert Random: Lorem",
+ "command.loremSmall.title": "Insert Random: Lorem Small",
+ "command.loremMedium.title": "Insert Random: Lorem Medium",
+ "command.loremLarge.title": "Insert Random: Lorem Large",
+ "command.hash.title": "Insert Random: Hash",
+ "command.hashSmall.title": "Insert Random: Hash Small",
+ "command.hashMedium.title": "Insert Random: Hash Medium",
+ "command.hashLarge.title": "Insert Random: Hash Large",
+ "command.pick.title": "Insert Random: Pick…",
+ "command.record.title": "Insert Random: Record…",
+ "command.generateDataset.title": "Insert Random: Generate Dataset…",
+ "command.randomizeSelection.title": "Insert Random: Randomize Selection",
+ "command.numberRange.title": "Insert Random: Number (Range…)",
+ "command.floatRange.title": "Insert Random: Float (Range…)",
+ "command.stringLength.title": "Insert Random: String (Length…)",
+ "command.dateBetween.title": "Insert Random: Date (Between…)",
+ "command.wordsCount.title": "Insert Random: Words (Count…)",
+ "command.sentencesCount.title": "Insert Random: Sentences (Count…)",
+ "command.paragraphsCount.title": "Insert Random: Paragraphs (Count…)",
+ "command.uuidFormat.title": "Insert Random: UUID (Format…)",
+ "command.passwordOptions.title": "Insert Random: Password (Options…)",
+ "command.phoneFormat.title": "Insert Random: Phone (Format…)",
+ "command.fromTemplate.title": "Insert Random: From Template…",
+ "command.fromPattern.title": "Insert Random: From Pattern…",
+ "command.sequence.title": "Insert Random: Sequence (Start/Step…)",
+ "command.uuid.title": "Insert Random: UUID",
+ "command.email.title": "Insert Random: Email",
+ "command.username.title": "Insert Random: Username",
+ "command.boolean.title": "Insert Random: Boolean",
+ "command.firstName.title": "Insert Random: First Name",
+ "command.lastName.title": "Insert Random: Last Name",
+ "command.phone.title": "Insert Random: Phone",
+ "command.city.title": "Insert Random: City",
+ "command.address.title": "Insert Random: Street Address",
+ "command.ipv4.title": "Insert Random: IP Address",
+ "command.mac.title": "Insert Random: MAC Address",
+ "command.url.title": "Insert Random: URL",
+ "command.color.title": "Insert Random: Color (hex)",
+ "command.password.title": "Insert Random: Password",
+ "command.word.title": "Insert Random: Word",
+ "command.sentence.title": "Insert Random: Sentence",
+ "command.middleName.title": "Insert Random: Middle Name",
+ "command.prefix.title": "Insert Random: Name Prefix",
+ "command.suffix.title": "Insert Random: Name Suffix",
+ "command.sex.title": "Insert Random: Sex",
+ "command.gender.title": "Insert Random: Gender",
+ "command.jobTitle.title": "Insert Random: Job Title",
+ "command.jobType.title": "Insert Random: Job Type",
+ "command.jobArea.title": "Insert Random: Job Area",
+ "command.bio.title": "Insert Random: Bio",
+ "command.zodiac.title": "Insert Random: Zodiac Sign",
+ "command.ipv6.title": "Insert Random: IPv6 Address",
+ "command.port.title": "Insert Random: Port",
+ "command.httpMethod.title": "Insert Random: HTTP Method",
+ "command.httpStatus.title": "Insert Random: HTTP Status Code",
+ "command.userAgent.title": "Insert Random: User Agent",
+ "command.domainName.title": "Insert Random: Domain Name",
+ "command.emoji.title": "Insert Random: Emoji",
+ "command.protocol.title": "Insert Random: Protocol",
+ "command.jwt.title": "Insert Random: JWT",
+ "command.displayName.title": "Insert Random: Display Name",
+ "command.company.title": "Insert Random: Company Name",
+ "command.catchPhrase.title": "Insert Random: Catch Phrase",
+ "command.buzzPhrase.title": "Insert Random: Buzz Phrase",
+ "command.product.title": "Insert Random: Product",
+ "command.productName.title": "Insert Random: Product Name",
+ "command.price.title": "Insert Random: Price",
+ "command.department.title": "Insert Random: Department",
+ "command.productMaterial.title": "Insert Random: Product Material",
+ "command.productDescription.title": "Insert Random: Product Description",
+ "command.isbn.title": "Insert Random: ISBN",
+ "command.amount.title": "Insert Random: Amount",
+ "command.currencyCode.title": "Insert Random: Currency Code",
+ "command.currencyName.title": "Insert Random: Currency Name",
+ "command.currencySymbol.title": "Insert Random: Currency Symbol",
+ "command.creditCard.title": "Insert Random: Credit Card Number",
+ "command.creditCardCVV.title": "Insert Random: Credit Card CVV",
+ "command.iban.title": "Insert Random: IBAN",
+ "command.bic.title": "Insert Random: BIC",
+ "command.accountNumber.title": "Insert Random: Account Number",
+ "command.routingNumber.title": "Insert Random: Routing Number",
+ "command.bitcoin.title": "Insert Random: Bitcoin Address",
+ "command.ethereum.title": "Insert Random: Ethereum Address",
+ "command.pin.title": "Insert Random: PIN",
+ "command.zipCode.title": "Insert Random: Zip Code",
+ "command.state.title": "Insert Random: State",
+ "command.stateAbbr.title": "Insert Random: State Abbreviation",
+ "command.countryCode.title": "Insert Random: Country Code",
+ "command.latitude.title": "Insert Random: Latitude",
+ "command.longitude.title": "Insert Random: Longitude",
+ "command.timeZone.title": "Insert Random: Time Zone",
+ "command.county.title": "Insert Random: County",
+ "command.street.title": "Insert Random: Street Name",
+ "command.secondaryAddress.title": "Insert Random: Secondary Address",
+ "command.buildingNumber.title": "Insert Random: Building Number",
+ "command.direction.title": "Insert Random: Direction",
+ "command.pastDate.title": "Insert Random: Past Date",
+ "command.futureDate.title": "Insert Random: Future Date",
+ "command.recentDate.title": "Insert Random: Recent Date",
+ "command.soonDate.title": "Insert Random: Soon Date",
+ "command.birthdate.title": "Insert Random: Birthdate",
+ "command.weekday.title": "Insert Random: Weekday",
+ "command.month.title": "Insert Random: Month",
+ "command.float.title": "Insert Random: Float",
+ "command.hexNumber.title": "Insert Random: Hex Number",
+ "command.binary.title": "Insert Random: Binary Number",
+ "command.octal.title": "Insert Random: Octal Number",
+ "command.nanoid.title": "Insert Random: Nano ID",
+ "command.ulid.title": "Insert Random: ULID",
+ "command.alpha.title": "Insert Random: Alpha String",
+ "command.numeric.title": "Insert Random: Numeric String",
+ "command.hackerPhrase.title": "Insert Random: Hacker Phrase",
+ "command.slug.title": "Insert Random: Slug",
+ "command.words.title": "Insert Random: Words",
+ "command.bookTitle.title": "Insert Random: Book Title",
+ "command.bookAuthor.title": "Insert Random: Book Author",
+ "command.gitBranch.title": "Insert Random: Git Branch",
+ "command.gitCommitSha.title": "Insert Random: Git Commit SHA",
+ "command.gitCommitMessage.title": "Insert Random: Git Commit Message",
+ "command.fileName.title": "Insert Random: File Name",
+ "command.filePath.title": "Insert Random: File Path",
+ "command.fileExt.title": "Insert Random: File Extension",
+ "command.mimeType.title": "Insert Random: MIME Type",
+ "command.semver.title": "Insert Random: Semver",
+ "command.cron.title": "Insert Random: Cron Expression",
+ "command.rgb.title": "Insert Random: Color (rgb)",
+ "command.hsl.title": "Insert Random: Color (hsl)",
+ "command.colorName.title": "Insert Random: Color Name",
+ "command.vehicle.title": "Insert Random: Vehicle",
+ "command.vehicleManufacturer.title": "Insert Random: Vehicle Manufacturer",
+ "command.vehicleModel.title": "Insert Random: Vehicle Model",
+ "command.vin.title": "Insert Random: VIN",
+ "command.vrm.title": "Insert Random: License Plate (VRM)",
+ "command.dish.title": "Insert Random: Dish",
+ "command.ingredient.title": "Insert Random: Ingredient",
+ "command.fruit.title": "Insert Random: Fruit",
+ "command.vegetable.title": "Insert Random: Vegetable",
+ "command.cuisine.title": "Insert Random: Cuisine",
+ "command.songName.title": "Insert Random: Song Name",
+ "command.musicGenre.title": "Insert Random: Music Genre",
+ "command.artist.title": "Insert Random: Artist",
+ "command.album.title": "Insert Random: Album",
+ "command.dog.title": "Insert Random: Dog Breed",
+ "command.cat.title": "Insert Random: Cat Breed",
+ "command.bird.title": "Insert Random: Bird Species",
+ "command.fish.title": "Insert Random: Fish Species",
+ "command.horse.title": "Insert Random: Horse Breed",
+ "command.airline.title": "Insert Random: Airline",
+ "command.airport.title": "Insert Random: Airport",
+ "command.flightNumber.title": "Insert Random: Flight Number",
+ "command.seat.title": "Insert Random: Seat",
+ "command.imageUrl.title": "Insert Random: Image URL",
+ "command.avatarUrl.title": "Insert Random: Avatar URL",
+ "command.mongodbObjectId.title": "Insert Random: MongoDB ObjectId",
+ "command.setInsertType.title": "Insert Random: Set Insert Type",
+ "command.setOutputFormat.title": "Insert Random: Set Output Format",
+ "command.setDateFormat.title": "Insert Random: Set Date Format",
+ "command.setRecordFormat.title": "Insert Random: Set Record Format",
+ "command.setRecordSqlTable.title": "Insert Random: Set Record SQL Table",
+ "command.setBulkCount.title": "Insert Random: Set Bulk Count",
+ "command.setSeed.title": "Insert Random: Set Seed",
+ "command.setLocale.title": "Insert Random: Set Locale",
+ "command.toggleQuotes.title": "Insert Random: Toggle Wrap With Quotes",
+ "command.toggleNewLine.title": "Insert Random: Toggle Trailing New Line",
+ "command.toggleUniquePerCursor.title": "Insert Random: Toggle Unique Value Per Cursor",
+ "command.toggleStrictUnique.title": "Insert Random: Toggle Strict Unique",
+ "command.toggleContextMenu.title": "Insert Random: Toggle Editor Context Menu",
+ "command.manageTemplates.title": "Insert Random: Manage Templates",
+ "command.manageCustomLists.title": "Insert Random: Manage Custom Lists",
+ "command.resetSettings.title": "Insert Random: Reset Settings to Defaults",
+ "submenu.contextSubmenu.label": "Insert Random",
+ "config.title": "Insert Random Text",
+ "config.insertType.title": "Insert type",
+ "config.insertType.description": "Where generated values go.",
+ "config.insertType.enumDescriptions.0": "Fill a fresh value at each cursor.",
+ "config.insertType.enumDescriptions.1": "Insert one block at line 1.",
+ "config.insertType.enumDescriptions.2": "Copy to the clipboard instead of inserting (no editor needed).",
+ "config.withQuote.title": "Wrap with quotes",
+ "config.withQuote.description": "Toggle to wrap random text with quotes.",
+ "config.withNewLine.title": "Include newline",
+ "config.withNewLine.description": "Toggle to include a newline at the end of each insert.",
+ "config.uniquePerCursor.title": "Unique value per cursor",
+ "config.uniquePerCursor.description": "Insert a different random value at each cursor (multi-cursor fill). When off, the same value is repeated at every cursor.",
+ "config.strictUnique.title": "Strict unique",
+ "config.strictUnique.description": "Re-draw duplicates so values meant to differ within one insert really do — the values of a bulk block, and values across cursors when unique value per cursor is on. Bounded at 25 re-draws per value, so a small pool (booleans, weekdays) that runs out keeps its duplicate instead of hanging. Applies to single-type inserts, not records.",
+ "config.seed.title": "Seed",
+ "config.seed.description": "Set a number for reproducible output — the same seed produces the same values every run. Leave blank for random.",
+ "config.locale.title": "Locale",
+ "config.locale.description": "Language/region the generated data draws from — names, addresses, words and more come out localized. A type without localized data falls back to English.",
+ "config.locale.enumDescriptions.0": "English (default).",
+ "config.locale.enumDescriptions.1": "German — Deutsch.",
+ "config.locale.enumDescriptions.2": "French — Français.",
+ "config.locale.enumDescriptions.3": "Spanish — Español.",
+ "config.locale.enumDescriptions.4": "Brazilian Portuguese — Português (Brasil).",
+ "config.locale.enumDescriptions.5": "Japanese — 日本語.",
+ "config.bulkCount.title": "Bulk count",
+ "config.bulkCount.description": "How many values to insert at each cursor.",
+ "config.outputFormat.title": "Output format",
+ "config.outputFormat.description": "How multiple values (bulk count > 1) are formatted at each cursor.",
+ "config.outputFormat.enumDescriptions.0": "One value per line.",
+ "config.outputFormat.enumDescriptions.1": "A JSON array, e.g. [ \"a\", \"b\" ].",
+ "config.outputFormat.enumDescriptions.2": "A quoted, comma-separated list, e.g. \"a\", \"b\".",
+ "config.dateFormat.title": "Date format",
+ "config.dateFormat.description": "How the timestamp Time generators (Date, Past/Future/Recent/Soon Date, Birthdate, Date (Between…)) render their value. Weekday and Month are unaffected.",
+ "config.dateFormat.enumDescriptions.0": "Full ISO 8601 timestamp, e.g. 2026-07-02T12:34:56.789Z.",
+ "config.dateFormat.enumDescriptions.1": "Date only (YYYY-MM-DD), e.g. 2026-07-02.",
+ "config.dateFormat.enumDescriptions.2": "Time only (HH:mm:ss), e.g. 12:34:56.",
+ "config.dateFormat.enumDescriptions.3": "Unix time in seconds, e.g. 1783082096.",
+ "config.dateFormat.enumDescriptions.4": "Unix time in milliseconds, e.g. 1783082096123.",
+ "config.recordFormat.title": "Record format",
+ "config.recordFormat.description": "Shape for multi-field records (Insert Random: Record…): a JSON object, a SQL INSERT row, or a CSV line.",
+ "config.recordFormat.enumDescriptions.0": "A JSON object, e.g. { \"name\": \"…\", \"email\": \"…\" }.",
+ "config.recordFormat.enumDescriptions.1": "A SQL INSERT row, e.g. INSERT INTO table (…) VALUES (…);",
+ "config.recordFormat.enumDescriptions.2": "A CSV line, e.g. value,value,…",
+ "config.recordSqlTable.title": "Record SQL table",
+ "config.recordSqlTable.description": "Table name used by the SQL record shape.",
+ "config.templates.title": "Saved templates",
+ "config.templates.description": "Named faker templates, shown in a Templates group at the top of Insert Random: Pick…. Each value is a template with {{module.method}} placeholders, e.g. { \"invoice\": \"INV-{{string.numeric(4)}}\", \"contact\": \"{{person.fullName}} <{{internet.email}}>\" }. Entries that are not non-empty strings are ignored (logged to the console).",
+ "config.customLists.title": "Custom lists",
+ "config.customLists.description": "Named lists of your own values, shown in a Custom Lists group at the top of Insert Random: Pick… and offered as Record… fields (the name becomes the field key). Each insert draws one random item, e.g. { \"environment\": [ \"dev\", \"staging\", \"production\" ] }. Non-string values are ignored (logged to the console).",
+ "config.contextMenu.enabled.title": "Show in editor context menu",
+ "config.contextMenu.enabled.description": "Add an \"Insert Random\" submenu to the editor right-click menu."
+}
diff --git a/package.nls.pt-br.json b/package.nls.pt-br.json
new file mode 100644
index 0000000..1b463a7
--- /dev/null
+++ b/package.nls.pt-br.json
@@ -0,0 +1,232 @@
+{
+ "displayName": "Gerador de dados aleatórios, falsos e fictícios",
+ "description": "Insira mais de 130 tipos de dados aleatórios, falsos e fictícios em cada cursor — nomes, e-mails, UUIDs, lorem ipsum, registros JSON/SQL/CSV e conjuntos de dados completos, modelos, localidades, anonimização no local. Em massa, com semente, totalmente offline. O único faker de dados de que você vai precisar.",
+ "command.animal.title": "Inserir aleatório: Animal",
+ "command.person.title": "Inserir aleatório: Pessoa",
+ "command.date.title": "Inserir aleatório: Data",
+ "command.country.title": "Inserir aleatório: País",
+ "command.number.title": "Inserir aleatório: Número",
+ "command.string.title": "Inserir aleatório: String",
+ "command.lorem.title": "Inserir aleatório: Lorem",
+ "command.loremSmall.title": "Inserir aleatório: Lorem pequeno",
+ "command.loremMedium.title": "Inserir aleatório: Lorem médio",
+ "command.loremLarge.title": "Inserir aleatório: Lorem grande",
+ "command.hash.title": "Inserir aleatório: Hash",
+ "command.hashSmall.title": "Inserir aleatório: Hash pequeno",
+ "command.hashMedium.title": "Inserir aleatório: Hash médio",
+ "command.hashLarge.title": "Inserir aleatório: Hash grande",
+ "command.pick.title": "Inserir aleatório: Escolher…",
+ "command.record.title": "Inserir aleatório: Registro…",
+ "command.generateDataset.title": "Inserir aleatório: Gerar conjunto de dados…",
+ "command.randomizeSelection.title": "Inserir aleatório: Aleatorizar seleção",
+ "command.numberRange.title": "Inserir aleatório: Número (intervalo…)",
+ "command.floatRange.title": "Inserir aleatório: Ponto flutuante (intervalo…)",
+ "command.stringLength.title": "Inserir aleatório: String (comprimento…)",
+ "command.dateBetween.title": "Inserir aleatório: Data (entre…)",
+ "command.wordsCount.title": "Inserir aleatório: Palavras (quantidade…)",
+ "command.sentencesCount.title": "Inserir aleatório: Frases (quantidade…)",
+ "command.paragraphsCount.title": "Inserir aleatório: Parágrafos (quantidade…)",
+ "command.uuidFormat.title": "Inserir aleatório: UUID (formato…)",
+ "command.passwordOptions.title": "Inserir aleatório: Senha (opções…)",
+ "command.phoneFormat.title": "Inserir aleatório: Telefone (formato…)",
+ "command.fromTemplate.title": "Inserir aleatório: A partir de um modelo…",
+ "command.fromPattern.title": "Inserir aleatório: A partir de um padrão…",
+ "command.sequence.title": "Inserir aleatório: Sequência (início/passo…)",
+ "command.uuid.title": "Inserir aleatório: UUID",
+ "command.email.title": "Inserir aleatório: E-mail",
+ "command.username.title": "Inserir aleatório: Nome de usuário",
+ "command.boolean.title": "Inserir aleatório: Booleano",
+ "command.firstName.title": "Inserir aleatório: Primeiro nome",
+ "command.lastName.title": "Inserir aleatório: Sobrenome",
+ "command.phone.title": "Inserir aleatório: Número de telefone",
+ "command.city.title": "Inserir aleatório: Cidade",
+ "command.address.title": "Inserir aleatório: Endereço",
+ "command.ipv4.title": "Inserir aleatório: Endereço IP",
+ "command.mac.title": "Inserir aleatório: Endereço MAC",
+ "command.url.title": "Inserir aleatório: URL",
+ "command.color.title": "Inserir aleatório: Cor (hex)",
+ "command.password.title": "Inserir aleatório: Senha",
+ "command.word.title": "Inserir aleatório: Palavra",
+ "command.sentence.title": "Inserir aleatório: Frase",
+ "command.middleName.title": "Inserir aleatório: Nome do meio",
+ "command.prefix.title": "Inserir aleatório: Prefixo de nome",
+ "command.suffix.title": "Inserir aleatório: Sufixo de nome",
+ "command.sex.title": "Inserir aleatório: Sexo",
+ "command.gender.title": "Inserir aleatório: Gênero",
+ "command.jobTitle.title": "Inserir aleatório: Cargo",
+ "command.jobType.title": "Inserir aleatório: Tipo de cargo",
+ "command.jobArea.title": "Inserir aleatório: Área profissional",
+ "command.bio.title": "Inserir aleatório: Biografia",
+ "command.zodiac.title": "Inserir aleatório: Signo do zodíaco",
+ "command.ipv6.title": "Inserir aleatório: Endereço IPv6",
+ "command.port.title": "Inserir aleatório: Porta",
+ "command.httpMethod.title": "Inserir aleatório: Método HTTP",
+ "command.httpStatus.title": "Inserir aleatório: Código de status HTTP",
+ "command.userAgent.title": "Inserir aleatório: Agente de usuário",
+ "command.domainName.title": "Inserir aleatório: Nome de domínio",
+ "command.emoji.title": "Inserir aleatório: Emoji",
+ "command.protocol.title": "Inserir aleatório: Protocolo",
+ "command.jwt.title": "Inserir aleatório: JWT",
+ "command.displayName.title": "Inserir aleatório: Nome de exibição",
+ "command.company.title": "Inserir aleatório: Nome da empresa",
+ "command.catchPhrase.title": "Inserir aleatório: Slogan",
+ "command.buzzPhrase.title": "Inserir aleatório: Frase corporativa",
+ "command.product.title": "Inserir aleatório: Produto",
+ "command.productName.title": "Inserir aleatório: Nome do produto",
+ "command.price.title": "Inserir aleatório: Preço",
+ "command.department.title": "Inserir aleatório: Departamento",
+ "command.productMaterial.title": "Inserir aleatório: Material do produto",
+ "command.productDescription.title": "Inserir aleatório: Descrição do produto",
+ "command.isbn.title": "Inserir aleatório: ISBN",
+ "command.amount.title": "Inserir aleatório: Valor",
+ "command.currencyCode.title": "Inserir aleatório: Código da moeda",
+ "command.currencyName.title": "Inserir aleatório: Nome da moeda",
+ "command.currencySymbol.title": "Inserir aleatório: Símbolo da moeda",
+ "command.creditCard.title": "Inserir aleatório: Número de cartão de crédito",
+ "command.creditCardCVV.title": "Inserir aleatório: CVV de cartão de crédito",
+ "command.iban.title": "Inserir aleatório: IBAN",
+ "command.bic.title": "Inserir aleatório: BIC",
+ "command.accountNumber.title": "Inserir aleatório: Número de conta",
+ "command.routingNumber.title": "Inserir aleatório: Número de roteamento bancário",
+ "command.bitcoin.title": "Inserir aleatório: Endereço de Bitcoin",
+ "command.ethereum.title": "Inserir aleatório: Endereço de Ethereum",
+ "command.pin.title": "Inserir aleatório: PIN",
+ "command.zipCode.title": "Inserir aleatório: CEP",
+ "command.state.title": "Inserir aleatório: Estado",
+ "command.stateAbbr.title": "Inserir aleatório: Sigla do estado",
+ "command.countryCode.title": "Inserir aleatório: Código do país",
+ "command.latitude.title": "Inserir aleatório: Latitude",
+ "command.longitude.title": "Inserir aleatório: Longitude",
+ "command.timeZone.title": "Inserir aleatório: Fuso horário",
+ "command.county.title": "Inserir aleatório: Condado",
+ "command.street.title": "Inserir aleatório: Nome da rua",
+ "command.secondaryAddress.title": "Inserir aleatório: Complemento de endereço",
+ "command.buildingNumber.title": "Inserir aleatório: Número do prédio",
+ "command.direction.title": "Inserir aleatório: Ponto cardeal",
+ "command.pastDate.title": "Inserir aleatório: Data passada",
+ "command.futureDate.title": "Inserir aleatório: Data futura",
+ "command.recentDate.title": "Inserir aleatório: Data recente",
+ "command.soonDate.title": "Inserir aleatório: Data próxima",
+ "command.birthdate.title": "Inserir aleatório: Data de nascimento",
+ "command.weekday.title": "Inserir aleatório: Dia da semana",
+ "command.month.title": "Inserir aleatório: Mês",
+ "command.float.title": "Inserir aleatório: Ponto flutuante",
+ "command.hexNumber.title": "Inserir aleatório: Número hexadecimal",
+ "command.binary.title": "Inserir aleatório: Número binário",
+ "command.octal.title": "Inserir aleatório: Número octal",
+ "command.nanoid.title": "Inserir aleatório: Nano ID",
+ "command.ulid.title": "Inserir aleatório: ULID",
+ "command.alpha.title": "Inserir aleatório: String alfabética",
+ "command.numeric.title": "Inserir aleatório: String numérica",
+ "command.hackerPhrase.title": "Inserir aleatório: Frase de hacker",
+ "command.slug.title": "Inserir aleatório: Slug",
+ "command.words.title": "Inserir aleatório: Palavras",
+ "command.bookTitle.title": "Inserir aleatório: Título de livro",
+ "command.bookAuthor.title": "Inserir aleatório: Autor de livro",
+ "command.gitBranch.title": "Inserir aleatório: Branch do Git",
+ "command.gitCommitSha.title": "Inserir aleatório: SHA de commit do Git",
+ "command.gitCommitMessage.title": "Inserir aleatório: Mensagem de commit do Git",
+ "command.fileName.title": "Inserir aleatório: Nome de arquivo",
+ "command.filePath.title": "Inserir aleatório: Caminho de arquivo",
+ "command.fileExt.title": "Inserir aleatório: Extensão de arquivo",
+ "command.mimeType.title": "Inserir aleatório: Tipo MIME",
+ "command.semver.title": "Inserir aleatório: Semver",
+ "command.cron.title": "Inserir aleatório: Expressão cron",
+ "command.rgb.title": "Inserir aleatório: Cor (rgb)",
+ "command.hsl.title": "Inserir aleatório: Cor (hsl)",
+ "command.colorName.title": "Inserir aleatório: Nome de cor",
+ "command.vehicle.title": "Inserir aleatório: Veículo",
+ "command.vehicleManufacturer.title": "Inserir aleatório: Fabricante de veículos",
+ "command.vehicleModel.title": "Inserir aleatório: Modelo de veículo",
+ "command.vin.title": "Inserir aleatório: VIN",
+ "command.vrm.title": "Inserir aleatório: Placa de veículo (VRM)",
+ "command.dish.title": "Inserir aleatório: Prato",
+ "command.ingredient.title": "Inserir aleatório: Ingrediente",
+ "command.fruit.title": "Inserir aleatório: Fruta",
+ "command.vegetable.title": "Inserir aleatório: Legume",
+ "command.cuisine.title": "Inserir aleatório: Culinária",
+ "command.songName.title": "Inserir aleatório: Título de música",
+ "command.musicGenre.title": "Inserir aleatório: Gênero musical",
+ "command.artist.title": "Inserir aleatório: Artista",
+ "command.album.title": "Inserir aleatório: Álbum",
+ "command.dog.title": "Inserir aleatório: Raça de cachorro",
+ "command.cat.title": "Inserir aleatório: Raça de gato",
+ "command.bird.title": "Inserir aleatório: Espécie de ave",
+ "command.fish.title": "Inserir aleatório: Espécie de peixe",
+ "command.horse.title": "Inserir aleatório: Raça de cavalo",
+ "command.airline.title": "Inserir aleatório: Companhia aérea",
+ "command.airport.title": "Inserir aleatório: Aeroporto",
+ "command.flightNumber.title": "Inserir aleatório: Número do voo",
+ "command.seat.title": "Inserir aleatório: Assento",
+ "command.imageUrl.title": "Inserir aleatório: URL de imagem",
+ "command.avatarUrl.title": "Inserir aleatório: URL de avatar",
+ "command.mongodbObjectId.title": "Inserir aleatório: ObjectId do MongoDB",
+ "command.setInsertType.title": "Inserir aleatório: Definir tipo de inserção",
+ "command.setOutputFormat.title": "Inserir aleatório: Definir formato de saída",
+ "command.setDateFormat.title": "Inserir aleatório: Definir formato de data",
+ "command.setRecordFormat.title": "Inserir aleatório: Definir formato de registro",
+ "command.setRecordSqlTable.title": "Inserir aleatório: Definir tabela SQL de registros",
+ "command.setBulkCount.title": "Inserir aleatório: Definir quantidade em massa",
+ "command.setSeed.title": "Inserir aleatório: Definir semente",
+ "command.setLocale.title": "Inserir aleatório: Definir localidade",
+ "command.toggleQuotes.title": "Inserir aleatório: Alternar aspas",
+ "command.toggleNewLine.title": "Inserir aleatório: Alternar quebra de linha final",
+ "command.toggleUniquePerCursor.title": "Inserir aleatório: Alternar valor único por cursor",
+ "command.toggleStrictUnique.title": "Inserir aleatório: Alternar exclusividade estrita",
+ "command.toggleContextMenu.title": "Inserir aleatório: Alternar menu de contexto do editor",
+ "command.manageTemplates.title": "Inserir aleatório: Gerenciar modelos",
+ "command.manageCustomLists.title": "Inserir aleatório: Gerenciar listas personalizadas",
+ "command.resetSettings.title": "Inserir aleatório: Redefinir configurações para o padrão",
+ "submenu.contextSubmenu.label": "Inserir aleatório",
+ "config.title": "Inserir texto aleatório",
+ "config.insertType.title": "Tipo de inserção",
+ "config.insertType.description": "Para onde vão os valores gerados.",
+ "config.insertType.enumDescriptions.0": "Preenche um valor novo em cada cursor.",
+ "config.insertType.enumDescriptions.1": "Insere um bloco na linha 1.",
+ "config.insertType.enumDescriptions.2": "Copia para a área de transferência em vez de inserir (não requer editor).",
+ "config.withQuote.title": "Envolver em aspas",
+ "config.withQuote.description": "Ative para envolver o texto aleatório em aspas.",
+ "config.withNewLine.title": "Incluir quebra de linha",
+ "config.withNewLine.description": "Ative para incluir uma quebra de linha ao final de cada inserção.",
+ "config.uniquePerCursor.title": "Valor único por cursor",
+ "config.uniquePerCursor.description": "Insere um valor aleatório diferente em cada cursor (preenchimento multicursor). Quando desativado, o mesmo valor é repetido em todos os cursores.",
+ "config.strictUnique.title": "Exclusividade estrita",
+ "config.strictUnique.description": "Sorteia novamente as duplicatas para que valores que devem diferir dentro de uma mesma inserção realmente difiram — os valores de um bloco em massa e os valores entre cursores quando “Valor único por cursor” está ativo. Limitado a 25 novos sorteios por valor; um conjunto pequeno (booleanos, dias da semana) que se esgote mantém sua duplicata em vez de travar. Aplica-se a inserções de um único tipo, não a registros.",
+ "config.seed.title": "Semente",
+ "config.seed.description": "Defina um número para uma saída reproduzível — a mesma semente produz os mesmos valores em cada execução. Deixe em branco para aleatório.",
+ "config.locale.title": "Localidade",
+ "config.locale.description": "Idioma/região de onde vêm os dados gerados — nomes, endereços, palavras e mais saem localizados. Um tipo sem dados localizados recorre ao inglês.",
+ "config.locale.enumDescriptions.0": "Inglês (padrão).",
+ "config.locale.enumDescriptions.1": "Alemão — Deutsch.",
+ "config.locale.enumDescriptions.2": "Francês — Français.",
+ "config.locale.enumDescriptions.3": "Espanhol — Español.",
+ "config.locale.enumDescriptions.4": "Português do Brasil.",
+ "config.locale.enumDescriptions.5": "Japonês — 日本語.",
+ "config.bulkCount.title": "Quantidade em massa",
+ "config.bulkCount.description": "Quantos valores inserir em cada cursor.",
+ "config.outputFormat.title": "Formato de saída",
+ "config.outputFormat.description": "Como vários valores (quantidade em massa > 1) são formatados em cada cursor.",
+ "config.outputFormat.enumDescriptions.0": "Um valor por linha.",
+ "config.outputFormat.enumDescriptions.1": "Um array JSON, por ex. [ \"a\", \"b\" ].",
+ "config.outputFormat.enumDescriptions.2": "Uma lista entre aspas separada por vírgulas, por ex. \"a\", \"b\".",
+ "config.dateFormat.title": "Formato de data",
+ "config.dateFormat.description": "Como os geradores de carimbo de data/hora (Data, Data passada/futura/recente/próxima, Data de nascimento, Data (entre…)) renderizam seu valor. Dia da semana e Mês não são afetados.",
+ "config.dateFormat.enumDescriptions.0": "Carimbo ISO 8601 completo, por ex. 2026-07-02T12:34:56.789Z.",
+ "config.dateFormat.enumDescriptions.1": "Somente data (YYYY-MM-DD), por ex. 2026-07-02.",
+ "config.dateFormat.enumDescriptions.2": "Somente hora (HH:mm:ss), por ex. 12:34:56.",
+ "config.dateFormat.enumDescriptions.3": "Tempo Unix em segundos, por ex. 1783082096.",
+ "config.dateFormat.enumDescriptions.4": "Tempo Unix em milissegundos, por ex. 1783082096123.",
+ "config.recordFormat.title": "Formato de registro",
+ "config.recordFormat.description": "Forma dos registros de vários campos (Inserir aleatório: Registro…): um objeto JSON, uma linha SQL INSERT ou uma linha CSV.",
+ "config.recordFormat.enumDescriptions.0": "Um objeto JSON, por ex. { \"name\": \"…\", \"email\": \"…\" }.",
+ "config.recordFormat.enumDescriptions.1": "Uma linha SQL INSERT, por ex. INSERT INTO table (…) VALUES (…);",
+ "config.recordFormat.enumDescriptions.2": "Uma linha CSV, por ex. value,value,…",
+ "config.recordSqlTable.title": "Tabela SQL de registros",
+ "config.recordSqlTable.description": "Nome da tabela usado pela forma SQL de registros.",
+ "config.templates.title": "Modelos salvos",
+ "config.templates.description": "Modelos faker nomeados, exibidos em um grupo Modelos no topo de Inserir aleatório: Escolher…. Cada valor é um modelo com espaços reservados {{module.method}}, por ex. { \"invoice\": \"INV-{{string.numeric(4)}}\", \"contact\": \"{{person.fullName}} <{{internet.email}}>\" }. Entradas que não sejam strings não vazias são ignoradas (registradas no console).",
+ "config.customLists.title": "Listas personalizadas",
+ "config.customLists.description": "Listas nomeadas com seus próprios valores, exibidas em um grupo Listas personalizadas no topo de Inserir aleatório: Escolher… e oferecidas como campos de Registro… (o nome vira a chave do campo). Cada inserção sorteia um item aleatório, por ex. { \"environment\": [ \"dev\", \"staging\", \"production\" ] }. Valores que não sejam strings são ignorados (registrados no console).",
+ "config.contextMenu.enabled.title": "Mostrar no menu de contexto do editor",
+ "config.contextMenu.enabled.description": "Adiciona um submenu “Inserir aleatório” ao menu de clique direito do editor."
+}
diff --git a/package.nls.ru.json b/package.nls.ru.json
new file mode 100644
index 0000000..61117e9
--- /dev/null
+++ b/package.nls.ru.json
@@ -0,0 +1,232 @@
+{
+ "displayName": "Генератор случайных, фейковых и тестовых данных",
+ "description": "Вставляйте 130+ типов случайных, фейковых и тестовых данных у каждого курсора — имена, адреса эл. почты, UUID, lorem ipsum, записи JSON/SQL/CSV и целые наборы данных, шаблоны, локали, анонимизация на месте. Пачками, с сидом, полностью офлайн. Единственный фейкер данных, который вам нужен.",
+ "command.animal.title": "Вставить случайное: Животное",
+ "command.person.title": "Вставить случайное: Человек",
+ "command.date.title": "Вставить случайное: Дата",
+ "command.country.title": "Вставить случайное: Страна",
+ "command.number.title": "Вставить случайное: Число",
+ "command.string.title": "Вставить случайное: Строка",
+ "command.lorem.title": "Вставить случайное: Lorem",
+ "command.loremSmall.title": "Вставить случайное: Lorem малый",
+ "command.loremMedium.title": "Вставить случайное: Lorem средний",
+ "command.loremLarge.title": "Вставить случайное: Lorem большой",
+ "command.hash.title": "Вставить случайное: Хеш",
+ "command.hashSmall.title": "Вставить случайное: Хеш малый",
+ "command.hashMedium.title": "Вставить случайное: Хеш средний",
+ "command.hashLarge.title": "Вставить случайное: Хеш большой",
+ "command.pick.title": "Вставить случайное: Выбрать…",
+ "command.record.title": "Вставить случайное: Запись…",
+ "command.generateDataset.title": "Вставить случайное: Создать набор данных…",
+ "command.randomizeSelection.title": "Вставить случайное: Рандомизировать выделение",
+ "command.numberRange.title": "Вставить случайное: Число (диапазон…)",
+ "command.floatRange.title": "Вставить случайное: Дробное число (диапазон…)",
+ "command.stringLength.title": "Вставить случайное: Строка (длина…)",
+ "command.dateBetween.title": "Вставить случайное: Дата (между…)",
+ "command.wordsCount.title": "Вставить случайное: Слова (количество…)",
+ "command.sentencesCount.title": "Вставить случайное: Предложения (количество…)",
+ "command.paragraphsCount.title": "Вставить случайное: Абзацы (количество…)",
+ "command.uuidFormat.title": "Вставить случайное: UUID (формат…)",
+ "command.passwordOptions.title": "Вставить случайное: Пароль (параметры…)",
+ "command.phoneFormat.title": "Вставить случайное: Телефон (формат…)",
+ "command.fromTemplate.title": "Вставить случайное: Из шаблона…",
+ "command.fromPattern.title": "Вставить случайное: Из паттерна…",
+ "command.sequence.title": "Вставить случайное: Последовательность (начало/шаг…)",
+ "command.uuid.title": "Вставить случайное: UUID",
+ "command.email.title": "Вставить случайное: Адрес эл. почты",
+ "command.username.title": "Вставить случайное: Имя пользователя",
+ "command.boolean.title": "Вставить случайное: Логическое значение",
+ "command.firstName.title": "Вставить случайное: Имя",
+ "command.lastName.title": "Вставить случайное: Фамилия",
+ "command.phone.title": "Вставить случайное: Номер телефона",
+ "command.city.title": "Вставить случайное: Город",
+ "command.address.title": "Вставить случайное: Адрес",
+ "command.ipv4.title": "Вставить случайное: IP-адрес",
+ "command.mac.title": "Вставить случайное: MAC-адрес",
+ "command.url.title": "Вставить случайное: URL",
+ "command.color.title": "Вставить случайное: Цвет (hex)",
+ "command.password.title": "Вставить случайное: Пароль",
+ "command.word.title": "Вставить случайное: Слово",
+ "command.sentence.title": "Вставить случайное: Предложение",
+ "command.middleName.title": "Вставить случайное: Второе имя",
+ "command.prefix.title": "Вставить случайное: Префикс имени",
+ "command.suffix.title": "Вставить случайное: Суффикс имени",
+ "command.sex.title": "Вставить случайное: Пол",
+ "command.gender.title": "Вставить случайное: Гендер",
+ "command.jobTitle.title": "Вставить случайное: Должность",
+ "command.jobType.title": "Вставить случайное: Тип занятости",
+ "command.jobArea.title": "Вставить случайное: Сфера деятельности",
+ "command.bio.title": "Вставить случайное: Биография",
+ "command.zodiac.title": "Вставить случайное: Знак зодиака",
+ "command.ipv6.title": "Вставить случайное: IPv6-адрес",
+ "command.port.title": "Вставить случайное: Порт",
+ "command.httpMethod.title": "Вставить случайное: HTTP-метод",
+ "command.httpStatus.title": "Вставить случайное: Код состояния HTTP",
+ "command.userAgent.title": "Вставить случайное: User-Agent",
+ "command.domainName.title": "Вставить случайное: Доменное имя",
+ "command.emoji.title": "Вставить случайное: Эмодзи",
+ "command.protocol.title": "Вставить случайное: Протокол",
+ "command.jwt.title": "Вставить случайное: JWT",
+ "command.displayName.title": "Вставить случайное: Отображаемое имя",
+ "command.company.title": "Вставить случайное: Название компании",
+ "command.catchPhrase.title": "Вставить случайное: Слоган",
+ "command.buzzPhrase.title": "Вставить случайное: Корпоративная фраза",
+ "command.product.title": "Вставить случайное: Товар",
+ "command.productName.title": "Вставить случайное: Название товара",
+ "command.price.title": "Вставить случайное: Цена",
+ "command.department.title": "Вставить случайное: Отдел",
+ "command.productMaterial.title": "Вставить случайное: Материал товара",
+ "command.productDescription.title": "Вставить случайное: Описание товара",
+ "command.isbn.title": "Вставить случайное: ISBN",
+ "command.amount.title": "Вставить случайное: Сумма",
+ "command.currencyCode.title": "Вставить случайное: Код валюты",
+ "command.currencyName.title": "Вставить случайное: Название валюты",
+ "command.currencySymbol.title": "Вставить случайное: Символ валюты",
+ "command.creditCard.title": "Вставить случайное: Номер банковской карты",
+ "command.creditCardCVV.title": "Вставить случайное: CVV банковской карты",
+ "command.iban.title": "Вставить случайное: IBAN",
+ "command.bic.title": "Вставить случайное: BIC",
+ "command.accountNumber.title": "Вставить случайное: Номер счёта",
+ "command.routingNumber.title": "Вставить случайное: Банковский маршрутный номер",
+ "command.bitcoin.title": "Вставить случайное: Биткоин-адрес",
+ "command.ethereum.title": "Вставить случайное: Ethereum-адрес",
+ "command.pin.title": "Вставить случайное: PIN-код",
+ "command.zipCode.title": "Вставить случайное: Почтовый индекс",
+ "command.state.title": "Вставить случайное: Штат",
+ "command.stateAbbr.title": "Вставить случайное: Аббревиатура штата",
+ "command.countryCode.title": "Вставить случайное: Код страны",
+ "command.latitude.title": "Вставить случайное: Широта",
+ "command.longitude.title": "Вставить случайное: Долгота",
+ "command.timeZone.title": "Вставить случайное: Часовой пояс",
+ "command.county.title": "Вставить случайное: Округ",
+ "command.street.title": "Вставить случайное: Название улицы",
+ "command.secondaryAddress.title": "Вставить случайное: Дополнение к адресу",
+ "command.buildingNumber.title": "Вставить случайное: Номер дома",
+ "command.direction.title": "Вставить случайное: Сторона света",
+ "command.pastDate.title": "Вставить случайное: Прошедшая дата",
+ "command.futureDate.title": "Вставить случайное: Будущая дата",
+ "command.recentDate.title": "Вставить случайное: Недавняя дата",
+ "command.soonDate.title": "Вставить случайное: Ближайшая дата",
+ "command.birthdate.title": "Вставить случайное: Дата рождения",
+ "command.weekday.title": "Вставить случайное: День недели",
+ "command.month.title": "Вставить случайное: Месяц",
+ "command.float.title": "Вставить случайное: Дробное число",
+ "command.hexNumber.title": "Вставить случайное: Шестнадцатеричное число",
+ "command.binary.title": "Вставить случайное: Двоичное число",
+ "command.octal.title": "Вставить случайное: Восьмеричное число",
+ "command.nanoid.title": "Вставить случайное: Nano ID",
+ "command.ulid.title": "Вставить случайное: ULID",
+ "command.alpha.title": "Вставить случайное: Буквенная строка",
+ "command.numeric.title": "Вставить случайное: Цифровая строка",
+ "command.hackerPhrase.title": "Вставить случайное: Хакерская фраза",
+ "command.slug.title": "Вставить случайное: Слаг",
+ "command.words.title": "Вставить случайное: Слова",
+ "command.bookTitle.title": "Вставить случайное: Название книги",
+ "command.bookAuthor.title": "Вставить случайное: Автор книги",
+ "command.gitBranch.title": "Вставить случайное: Ветка Git",
+ "command.gitCommitSha.title": "Вставить случайное: SHA коммита Git",
+ "command.gitCommitMessage.title": "Вставить случайное: Сообщение коммита Git",
+ "command.fileName.title": "Вставить случайное: Имя файла",
+ "command.filePath.title": "Вставить случайное: Путь к файлу",
+ "command.fileExt.title": "Вставить случайное: Расширение файла",
+ "command.mimeType.title": "Вставить случайное: MIME-тип",
+ "command.semver.title": "Вставить случайное: Semver",
+ "command.cron.title": "Вставить случайное: Cron-выражение",
+ "command.rgb.title": "Вставить случайное: Цвет (rgb)",
+ "command.hsl.title": "Вставить случайное: Цвет (hsl)",
+ "command.colorName.title": "Вставить случайное: Название цвета",
+ "command.vehicle.title": "Вставить случайное: Автомобиль",
+ "command.vehicleManufacturer.title": "Вставить случайное: Производитель автомобилей",
+ "command.vehicleModel.title": "Вставить случайное: Модель автомобиля",
+ "command.vin.title": "Вставить случайное: VIN",
+ "command.vrm.title": "Вставить случайное: Номерной знак (VRM)",
+ "command.dish.title": "Вставить случайное: Блюдо",
+ "command.ingredient.title": "Вставить случайное: Ингредиент",
+ "command.fruit.title": "Вставить случайное: Фрукт",
+ "command.vegetable.title": "Вставить случайное: Овощ",
+ "command.cuisine.title": "Вставить случайное: Кухня",
+ "command.songName.title": "Вставить случайное: Название песни",
+ "command.musicGenre.title": "Вставить случайное: Музыкальный жанр",
+ "command.artist.title": "Вставить случайное: Исполнитель",
+ "command.album.title": "Вставить случайное: Альбом",
+ "command.dog.title": "Вставить случайное: Порода собак",
+ "command.cat.title": "Вставить случайное: Порода кошек",
+ "command.bird.title": "Вставить случайное: Вид птиц",
+ "command.fish.title": "Вставить случайное: Вид рыб",
+ "command.horse.title": "Вставить случайное: Порода лошадей",
+ "command.airline.title": "Вставить случайное: Авиакомпания",
+ "command.airport.title": "Вставить случайное: Аэропорт",
+ "command.flightNumber.title": "Вставить случайное: Номер рейса",
+ "command.seat.title": "Вставить случайное: Место",
+ "command.imageUrl.title": "Вставить случайное: URL изображения",
+ "command.avatarUrl.title": "Вставить случайное: URL аватара",
+ "command.mongodbObjectId.title": "Вставить случайное: ObjectId MongoDB",
+ "command.setInsertType.title": "Вставить случайное: Задать тип вставки",
+ "command.setOutputFormat.title": "Вставить случайное: Задать формат вывода",
+ "command.setDateFormat.title": "Вставить случайное: Задать формат даты",
+ "command.setRecordFormat.title": "Вставить случайное: Задать формат записи",
+ "command.setRecordSqlTable.title": "Вставить случайное: Задать SQL-таблицу записей",
+ "command.setBulkCount.title": "Вставить случайное: Задать количество в пачке",
+ "command.setSeed.title": "Вставить случайное: Задать сид",
+ "command.setLocale.title": "Вставить случайное: Задать локаль",
+ "command.toggleQuotes.title": "Вставить случайное: Переключить обрамление кавычками",
+ "command.toggleNewLine.title": "Вставить случайное: Переключить перевод строки в конце",
+ "command.toggleUniquePerCursor.title": "Вставить случайное: Переключить уникальное значение на курсор",
+ "command.toggleStrictUnique.title": "Вставить случайное: Переключить строгую уникальность",
+ "command.toggleContextMenu.title": "Вставить случайное: Переключить контекстное меню редактора",
+ "command.manageTemplates.title": "Вставить случайное: Управление шаблонами",
+ "command.manageCustomLists.title": "Вставить случайное: Управление пользовательскими списками",
+ "command.resetSettings.title": "Вставить случайное: Сбросить настройки по умолчанию",
+ "submenu.contextSubmenu.label": "Вставить случайное",
+ "config.title": "Вставка случайного текста",
+ "config.insertType.title": "Тип вставки",
+ "config.insertType.description": "Куда попадают сгенерированные значения.",
+ "config.insertType.enumDescriptions.0": "Подставляет новое значение у каждого курсора.",
+ "config.insertType.enumDescriptions.1": "Вставляет один блок в строке 1.",
+ "config.insertType.enumDescriptions.2": "Копирует в буфер обмена вместо вставки (редактор не нужен).",
+ "config.withQuote.title": "Обрамлять кавычками",
+ "config.withQuote.description": "Включите, чтобы обрамлять случайный текст кавычками.",
+ "config.withNewLine.title": "Добавлять перевод строки",
+ "config.withNewLine.description": "Включите, чтобы добавлять перевод строки в конце каждой вставки.",
+ "config.uniquePerCursor.title": "Уникальное значение на курсор",
+ "config.uniquePerCursor.description": "Вставляет разное случайное значение у каждого курсора (мультикурсорное заполнение). Если выключено, одно и то же значение повторяется у каждого курсора.",
+ "config.strictUnique.title": "Строгая уникальность",
+ "config.strictUnique.description": "Разыгрывает дубликаты заново, чтобы значения, которые должны различаться в пределах одной вставки, действительно различались — значения блока пачки и значения между курсорами, когда включено «Уникальное значение на курсор». Не более 25 повторных розыгрышей на значение; маленький пул (логические значения, дни недели) при исчерпании оставляет дубликат вместо зависания. Действует для вставок одного типа, но не для записей.",
+ "config.seed.title": "Сид",
+ "config.seed.description": "Укажите число для воспроизводимого вывода — одинаковый сид даёт одинаковые значения при каждом запуске. Оставьте пустым для случайности.",
+ "config.locale.title": "Локаль",
+ "config.locale.description": "Язык/регион, из которого берутся сгенерированные данные — имена, адреса, слова и другое выходят локализованными. Тип без локализованных данных откатывается на английский.",
+ "config.locale.enumDescriptions.0": "Английский (по умолчанию).",
+ "config.locale.enumDescriptions.1": "Немецкий — Deutsch.",
+ "config.locale.enumDescriptions.2": "Французский — Français.",
+ "config.locale.enumDescriptions.3": "Испанский — Español.",
+ "config.locale.enumDescriptions.4": "Бразильский португальский — Português (Brasil).",
+ "config.locale.enumDescriptions.5": "Японский — 日本語.",
+ "config.bulkCount.title": "Количество в пачке",
+ "config.bulkCount.description": "Сколько значений вставлять у каждого курсора.",
+ "config.outputFormat.title": "Формат вывода",
+ "config.outputFormat.description": "Как форматируются несколько значений (количество в пачке > 1) у каждого курсора.",
+ "config.outputFormat.enumDescriptions.0": "Одно значение на строку.",
+ "config.outputFormat.enumDescriptions.1": "JSON-массив, напр. [ \"a\", \"b\" ].",
+ "config.outputFormat.enumDescriptions.2": "Список в кавычках через запятую, напр. \"a\", \"b\".",
+ "config.dateFormat.title": "Формат даты",
+ "config.dateFormat.description": "Как генераторы отметок времени (Дата, Прошедшая/Будущая/Недавняя/Ближайшая дата, Дата рождения, Дата (между…)) выводят своё значение. День недели и Месяц не затрагиваются.",
+ "config.dateFormat.enumDescriptions.0": "Полная отметка времени ISO 8601, напр. 2026-07-02T12:34:56.789Z.",
+ "config.dateFormat.enumDescriptions.1": "Только дата (YYYY-MM-DD), напр. 2026-07-02.",
+ "config.dateFormat.enumDescriptions.2": "Только время (HH:mm:ss), напр. 12:34:56.",
+ "config.dateFormat.enumDescriptions.3": "Время Unix в секундах, напр. 1783082096.",
+ "config.dateFormat.enumDescriptions.4": "Время Unix в миллисекундах, напр. 1783082096123.",
+ "config.recordFormat.title": "Формат записи",
+ "config.recordFormat.description": "Форма многопольных записей (Вставить случайное: Запись…): JSON-объект, строка SQL INSERT или строка CSV.",
+ "config.recordFormat.enumDescriptions.0": "JSON-объект, напр. { \"name\": \"…\", \"email\": \"…\" }.",
+ "config.recordFormat.enumDescriptions.1": "Строка SQL INSERT, напр. INSERT INTO table (…) VALUES (…);",
+ "config.recordFormat.enumDescriptions.2": "Строка CSV, напр. value,value,…",
+ "config.recordSqlTable.title": "SQL-таблица записей",
+ "config.recordSqlTable.description": "Имя таблицы для SQL-формы записей.",
+ "config.templates.title": "Сохранённые шаблоны",
+ "config.templates.description": "Именованные шаблоны faker, отображаются в группе «Шаблоны» вверху Вставить случайное: Выбрать…. Каждое значение — шаблон с заполнителями {{module.method}}, напр. { \"invoice\": \"INV-{{string.numeric(4)}}\", \"contact\": \"{{person.fullName}} <{{internet.email}}>\" }. Элементы, не являющиеся непустыми строками, игнорируются (с записью в консоль).",
+ "config.customLists.title": "Пользовательские списки",
+ "config.customLists.description": "Именованные списки ваших значений, отображаются в группе «Пользовательские списки» вверху Вставить случайное: Выбрать… и предлагаются как поля Записи… (имя становится ключом поля). Каждая вставка берёт один случайный элемент, напр. { \"environment\": [ \"dev\", \"staging\", \"production\" ] }. Значения, не являющиеся строками, игнорируются (с записью в консоль).",
+ "config.contextMenu.enabled.title": "Показывать в контекстном меню редактора",
+ "config.contextMenu.enabled.description": "Добавляет подменю «Вставить случайное» в меню правой кнопки мыши редактора."
+}
diff --git a/package.nls.tr.json b/package.nls.tr.json
new file mode 100644
index 0000000..1f8d8b4
--- /dev/null
+++ b/package.nls.tr.json
@@ -0,0 +1,232 @@
+{
+ "displayName": "Rastgele, Sahte ve Örnek Veri Oluşturucu",
+ "description": "Her imlece 130’dan fazla türde rastgele, sahte ve örnek veri ekleyin — adlar, e-postalar, UUID’ler, lorem ipsum, JSON/SQL/CSV kayıtları ve eksiksiz veri kümeleri, şablonlar, yerel ayarlar, yerinde anonimleştirme. Toplu, tohum destekli, tamamen çevrimdışı. İhtiyacınız olan tek veri sahteleyici.",
+ "command.animal.title": "Rastgele Ekle: Hayvan",
+ "command.person.title": "Rastgele Ekle: Kişi",
+ "command.date.title": "Rastgele Ekle: Tarih",
+ "command.country.title": "Rastgele Ekle: Ülke",
+ "command.number.title": "Rastgele Ekle: Sayı",
+ "command.string.title": "Rastgele Ekle: Dize",
+ "command.lorem.title": "Rastgele Ekle: Lorem",
+ "command.loremSmall.title": "Rastgele Ekle: Lorem (Kısa)",
+ "command.loremMedium.title": "Rastgele Ekle: Lorem (Orta)",
+ "command.loremLarge.title": "Rastgele Ekle: Lorem (Uzun)",
+ "command.hash.title": "Rastgele Ekle: Hash",
+ "command.hashSmall.title": "Rastgele Ekle: Hash (Kısa)",
+ "command.hashMedium.title": "Rastgele Ekle: Hash (Orta)",
+ "command.hashLarge.title": "Rastgele Ekle: Hash (Uzun)",
+ "command.pick.title": "Rastgele Ekle: Seç…",
+ "command.record.title": "Rastgele Ekle: Kayıt…",
+ "command.generateDataset.title": "Rastgele Ekle: Veri Kümesi Oluştur…",
+ "command.randomizeSelection.title": "Rastgele Ekle: Seçimi Rastgeleleştir",
+ "command.numberRange.title": "Rastgele Ekle: Sayı (Aralık…)",
+ "command.floatRange.title": "Rastgele Ekle: Ondalıklı Sayı (Aralık…)",
+ "command.stringLength.title": "Rastgele Ekle: Dize (Uzunluk…)",
+ "command.dateBetween.title": "Rastgele Ekle: Tarih (Arasında…)",
+ "command.wordsCount.title": "Rastgele Ekle: Sözcükler (Adet…)",
+ "command.sentencesCount.title": "Rastgele Ekle: Cümleler (Adet…)",
+ "command.paragraphsCount.title": "Rastgele Ekle: Paragraflar (Adet…)",
+ "command.uuidFormat.title": "Rastgele Ekle: UUID (Biçim…)",
+ "command.passwordOptions.title": "Rastgele Ekle: Parola (Seçenekler…)",
+ "command.phoneFormat.title": "Rastgele Ekle: Telefon (Biçim…)",
+ "command.fromTemplate.title": "Rastgele Ekle: Şablondan…",
+ "command.fromPattern.title": "Rastgele Ekle: Desenden…",
+ "command.sequence.title": "Rastgele Ekle: Sıralı Sayı (Başlangıç/Adım…)",
+ "command.uuid.title": "Rastgele Ekle: UUID",
+ "command.email.title": "Rastgele Ekle: E-posta Adresi",
+ "command.username.title": "Rastgele Ekle: Kullanıcı Adı",
+ "command.boolean.title": "Rastgele Ekle: Boole Değeri",
+ "command.firstName.title": "Rastgele Ekle: Ad",
+ "command.lastName.title": "Rastgele Ekle: Soyadı",
+ "command.phone.title": "Rastgele Ekle: Telefon Numarası",
+ "command.city.title": "Rastgele Ekle: Şehir",
+ "command.address.title": "Rastgele Ekle: Sokak Adresi",
+ "command.ipv4.title": "Rastgele Ekle: IP Adresi",
+ "command.mac.title": "Rastgele Ekle: MAC Adresi",
+ "command.url.title": "Rastgele Ekle: URL",
+ "command.color.title": "Rastgele Ekle: Renk (hex)",
+ "command.password.title": "Rastgele Ekle: Parola",
+ "command.word.title": "Rastgele Ekle: Sözcük",
+ "command.sentence.title": "Rastgele Ekle: Cümle",
+ "command.middleName.title": "Rastgele Ekle: İkinci Ad",
+ "command.prefix.title": "Rastgele Ekle: Ad Öneki",
+ "command.suffix.title": "Rastgele Ekle: Ad Soneki",
+ "command.sex.title": "Rastgele Ekle: Cinsiyet",
+ "command.gender.title": "Rastgele Ekle: Cinsiyet Kimliği",
+ "command.jobTitle.title": "Rastgele Ekle: İş Unvanı",
+ "command.jobType.title": "Rastgele Ekle: İş Türü",
+ "command.jobArea.title": "Rastgele Ekle: İş Alanı",
+ "command.bio.title": "Rastgele Ekle: Biyografi",
+ "command.zodiac.title": "Rastgele Ekle: Burç",
+ "command.ipv6.title": "Rastgele Ekle: IPv6 Adresi",
+ "command.port.title": "Rastgele Ekle: Bağlantı Noktası",
+ "command.httpMethod.title": "Rastgele Ekle: HTTP Yöntemi",
+ "command.httpStatus.title": "Rastgele Ekle: HTTP Durum Kodu",
+ "command.userAgent.title": "Rastgele Ekle: Kullanıcı Aracısı",
+ "command.domainName.title": "Rastgele Ekle: Alan Adı",
+ "command.emoji.title": "Rastgele Ekle: Emoji",
+ "command.protocol.title": "Rastgele Ekle: Protokol",
+ "command.jwt.title": "Rastgele Ekle: JWT",
+ "command.displayName.title": "Rastgele Ekle: Görünen Ad",
+ "command.company.title": "Rastgele Ekle: Şirket Adı",
+ "command.catchPhrase.title": "Rastgele Ekle: Slogan",
+ "command.buzzPhrase.title": "Rastgele Ekle: Moda Deyiş",
+ "command.product.title": "Rastgele Ekle: Ürün",
+ "command.productName.title": "Rastgele Ekle: Ürün Adı",
+ "command.price.title": "Rastgele Ekle: Fiyat",
+ "command.department.title": "Rastgele Ekle: Reyon",
+ "command.productMaterial.title": "Rastgele Ekle: Ürün Malzemesi",
+ "command.productDescription.title": "Rastgele Ekle: Ürün Açıklaması",
+ "command.isbn.title": "Rastgele Ekle: ISBN",
+ "command.amount.title": "Rastgele Ekle: Tutar",
+ "command.currencyCode.title": "Rastgele Ekle: Para Birimi Kodu",
+ "command.currencyName.title": "Rastgele Ekle: Para Birimi Adı",
+ "command.currencySymbol.title": "Rastgele Ekle: Para Birimi Simgesi",
+ "command.creditCard.title": "Rastgele Ekle: Kredi Kartı Numarası",
+ "command.creditCardCVV.title": "Rastgele Ekle: Kredi Kartı CVV",
+ "command.iban.title": "Rastgele Ekle: IBAN",
+ "command.bic.title": "Rastgele Ekle: BIC",
+ "command.accountNumber.title": "Rastgele Ekle: Hesap Numarası",
+ "command.routingNumber.title": "Rastgele Ekle: Banka Yönlendirme Numarası",
+ "command.bitcoin.title": "Rastgele Ekle: Bitcoin Adresi",
+ "command.ethereum.title": "Rastgele Ekle: Ethereum Adresi",
+ "command.pin.title": "Rastgele Ekle: PIN",
+ "command.zipCode.title": "Rastgele Ekle: Posta Kodu",
+ "command.state.title": "Rastgele Ekle: Eyalet",
+ "command.stateAbbr.title": "Rastgele Ekle: Eyalet Kısaltması",
+ "command.countryCode.title": "Rastgele Ekle: Ülke Kodu",
+ "command.latitude.title": "Rastgele Ekle: Enlem",
+ "command.longitude.title": "Rastgele Ekle: Boylam",
+ "command.timeZone.title": "Rastgele Ekle: Saat Dilimi",
+ "command.county.title": "Rastgele Ekle: İlçe",
+ "command.street.title": "Rastgele Ekle: Sokak Adı",
+ "command.secondaryAddress.title": "Rastgele Ekle: İkincil Adres",
+ "command.buildingNumber.title": "Rastgele Ekle: Bina Numarası",
+ "command.direction.title": "Rastgele Ekle: Yön",
+ "command.pastDate.title": "Rastgele Ekle: Geçmiş Tarih",
+ "command.futureDate.title": "Rastgele Ekle: Gelecek Tarih",
+ "command.recentDate.title": "Rastgele Ekle: Yakın Geçmiş Tarihi",
+ "command.soonDate.title": "Rastgele Ekle: Yakın Gelecek Tarihi",
+ "command.birthdate.title": "Rastgele Ekle: Doğum Tarihi",
+ "command.weekday.title": "Rastgele Ekle: Haftanın Günü",
+ "command.month.title": "Rastgele Ekle: Ay",
+ "command.float.title": "Rastgele Ekle: Ondalıklı Sayı",
+ "command.hexNumber.title": "Rastgele Ekle: Onaltılık Sayı",
+ "command.binary.title": "Rastgele Ekle: İkilik Sayı",
+ "command.octal.title": "Rastgele Ekle: Sekizlik Sayı",
+ "command.nanoid.title": "Rastgele Ekle: Nano ID",
+ "command.ulid.title": "Rastgele Ekle: ULID",
+ "command.alpha.title": "Rastgele Ekle: Harf Dizesi",
+ "command.numeric.title": "Rastgele Ekle: Rakam Dizesi",
+ "command.hackerPhrase.title": "Rastgele Ekle: Hacker Deyişi",
+ "command.slug.title": "Rastgele Ekle: Slug",
+ "command.words.title": "Rastgele Ekle: Sözcükler",
+ "command.bookTitle.title": "Rastgele Ekle: Kitap Adı",
+ "command.bookAuthor.title": "Rastgele Ekle: Kitap Yazarı",
+ "command.gitBranch.title": "Rastgele Ekle: Git Dalı",
+ "command.gitCommitSha.title": "Rastgele Ekle: Git İşleme SHA’sı",
+ "command.gitCommitMessage.title": "Rastgele Ekle: Git İşleme İletisi",
+ "command.fileName.title": "Rastgele Ekle: Dosya Adı",
+ "command.filePath.title": "Rastgele Ekle: Dosya Yolu",
+ "command.fileExt.title": "Rastgele Ekle: Dosya Uzantısı",
+ "command.mimeType.title": "Rastgele Ekle: MIME Türü",
+ "command.semver.title": "Rastgele Ekle: Semver",
+ "command.cron.title": "Rastgele Ekle: Cron İfadesi",
+ "command.rgb.title": "Rastgele Ekle: Renk (rgb)",
+ "command.hsl.title": "Rastgele Ekle: Renk (hsl)",
+ "command.colorName.title": "Rastgele Ekle: Renk Adı",
+ "command.vehicle.title": "Rastgele Ekle: Araç",
+ "command.vehicleManufacturer.title": "Rastgele Ekle: Araç Üreticisi",
+ "command.vehicleModel.title": "Rastgele Ekle: Araç Modeli",
+ "command.vin.title": "Rastgele Ekle: VIN",
+ "command.vrm.title": "Rastgele Ekle: Plaka (VRM)",
+ "command.dish.title": "Rastgele Ekle: Yemek",
+ "command.ingredient.title": "Rastgele Ekle: Malzeme",
+ "command.fruit.title": "Rastgele Ekle: Meyve",
+ "command.vegetable.title": "Rastgele Ekle: Sebze",
+ "command.cuisine.title": "Rastgele Ekle: Mutfak",
+ "command.songName.title": "Rastgele Ekle: Şarkı Adı",
+ "command.musicGenre.title": "Rastgele Ekle: Müzik Türü",
+ "command.artist.title": "Rastgele Ekle: Sanatçı",
+ "command.album.title": "Rastgele Ekle: Albüm",
+ "command.dog.title": "Rastgele Ekle: Köpek Irkı",
+ "command.cat.title": "Rastgele Ekle: Kedi Irkı",
+ "command.bird.title": "Rastgele Ekle: Kuş Türü",
+ "command.fish.title": "Rastgele Ekle: Balık Türü",
+ "command.horse.title": "Rastgele Ekle: At Irkı",
+ "command.airline.title": "Rastgele Ekle: Havayolu",
+ "command.airport.title": "Rastgele Ekle: Havalimanı",
+ "command.flightNumber.title": "Rastgele Ekle: Uçuş Numarası",
+ "command.seat.title": "Rastgele Ekle: Koltuk",
+ "command.imageUrl.title": "Rastgele Ekle: Görsel URL’si",
+ "command.avatarUrl.title": "Rastgele Ekle: Avatar URL’si",
+ "command.mongodbObjectId.title": "Rastgele Ekle: MongoDB ObjectId",
+ "command.setInsertType.title": "Rastgele Ekle: Ekleme Türünü Ayarla",
+ "command.setOutputFormat.title": "Rastgele Ekle: Çıktı Biçimini Ayarla",
+ "command.setDateFormat.title": "Rastgele Ekle: Tarih Biçimini Ayarla",
+ "command.setRecordFormat.title": "Rastgele Ekle: Kayıt Biçimini Ayarla",
+ "command.setRecordSqlTable.title": "Rastgele Ekle: Kayıt SQL Tablosunu Ayarla",
+ "command.setBulkCount.title": "Rastgele Ekle: Toplu Adedi Ayarla",
+ "command.setSeed.title": "Rastgele Ekle: Tohum Değerini Ayarla",
+ "command.setLocale.title": "Rastgele Ekle: Yerel Ayarı Belirle",
+ "command.toggleQuotes.title": "Rastgele Ekle: Tırnak İçine Almayı Aç/Kapat",
+ "command.toggleNewLine.title": "Rastgele Ekle: Sondaki Satır Sonunu Aç/Kapat",
+ "command.toggleUniquePerCursor.title": "Rastgele Ekle: İmleç Başına Benzersiz Değeri Aç/Kapat",
+ "command.toggleStrictUnique.title": "Rastgele Ekle: Katı Benzersizliği Aç/Kapat",
+ "command.toggleContextMenu.title": "Rastgele Ekle: Düzenleyici Bağlam Menüsünü Aç/Kapat",
+ "command.manageTemplates.title": "Rastgele Ekle: Şablonları Yönet",
+ "command.manageCustomLists.title": "Rastgele Ekle: Özel Listeleri Yönet",
+ "command.resetSettings.title": "Rastgele Ekle: Ayarları Varsayılanlara Sıfırla",
+ "submenu.contextSubmenu.label": "Rastgele Ekle",
+ "config.title": "Rastgele Metin Ekle",
+ "config.insertType.title": "Ekleme türü",
+ "config.insertType.description": "Oluşturulan değerlerin nereye gideceği.",
+ "config.insertType.enumDescriptions.0": "Her imlece yeni bir değer doldurur.",
+ "config.insertType.enumDescriptions.1": "1. satıra tek bir blok ekler.",
+ "config.insertType.enumDescriptions.2": "Eklemek yerine panoya kopyalar (düzenleyici gerekmez).",
+ "config.withQuote.title": "Tırnak içine al",
+ "config.withQuote.description": "Rastgele metni tırnak içine almak için açın.",
+ "config.withNewLine.title": "Satır sonu ekle",
+ "config.withNewLine.description": "Her eklemenin sonuna satır sonu eklemek için açın.",
+ "config.uniquePerCursor.title": "İmleç başına benzersiz değer",
+ "config.uniquePerCursor.description": "Her imlece farklı bir rastgele değer ekler (çoklu imleç doldurma). Kapalıyken aynı değer her imleçte yinelenir.",
+ "config.strictUnique.title": "Katı benzersizlik",
+ "config.strictUnique.description": "Bir ekleme içinde farklı olması gereken değerlerin gerçekten farklı olması için yinelenenleri yeniden çeker — toplu bloğun değerleri ve “İmleç başına benzersiz değer” açıkken imleçler arasındaki değerler. Değer başına 25 yeniden çekimle sınırlıdır; tükenen küçük bir havuz (Boole değerleri, haftanın günleri) takılmak yerine yinelenen değeri korur. Tek türlü eklemeler için geçerlidir, kayıtlar için değil.",
+ "config.seed.title": "Tohum değeri",
+ "config.seed.description": "Yeniden üretilebilir çıktı için bir sayı belirleyin — aynı tohum değeri her çalıştırmada aynı değerleri üretir. Rastgelelik için boş bırakın.",
+ "config.locale.title": "Yerel ayar",
+ "config.locale.description": "Oluşturulan verilerin geldiği dil/bölge — adlar, adresler, sözcükler ve daha fazlası yerelleştirilmiş çıkar. Yerelleştirilmiş verisi olmayan bir tür İngilizceye döner.",
+ "config.locale.enumDescriptions.0": "İngilizce (varsayılan).",
+ "config.locale.enumDescriptions.1": "Almanca — Deutsch.",
+ "config.locale.enumDescriptions.2": "Fransızca — Français.",
+ "config.locale.enumDescriptions.3": "İspanyolca — Español.",
+ "config.locale.enumDescriptions.4": "Brezilya Portekizcesi — Português (Brasil).",
+ "config.locale.enumDescriptions.5": "Japonca — 日本語.",
+ "config.bulkCount.title": "Toplu adet",
+ "config.bulkCount.description": "Her imlece kaç değer ekleneceği.",
+ "config.outputFormat.title": "Çıktı biçimi",
+ "config.outputFormat.description": "Birden çok değerin (toplu adet > 1) her imleçte nasıl biçimlendirileceği.",
+ "config.outputFormat.enumDescriptions.0": "Satır başına bir değer.",
+ "config.outputFormat.enumDescriptions.1": "Bir JSON dizisi, örn. [ \"a\", \"b\" ].",
+ "config.outputFormat.enumDescriptions.2": "Tırnaklı, virgülle ayrılmış bir liste, örn. \"a\", \"b\".",
+ "config.dateFormat.title": "Tarih biçimi",
+ "config.dateFormat.description": "Zaman damgası oluşturucularının (Tarih, Geçmiş/Gelecek/Yakın Geçmiş/Yakın Gelecek Tarihi, Doğum Tarihi, Tarih (Arasında…)) değerlerini nasıl göstereceği. Haftanın Günü ve Ay etkilenmez.",
+ "config.dateFormat.enumDescriptions.0": "Tam ISO 8601 zaman damgası, örn. 2026-07-02T12:34:56.789Z.",
+ "config.dateFormat.enumDescriptions.1": "Yalnızca tarih (YYYY-MM-DD), örn. 2026-07-02.",
+ "config.dateFormat.enumDescriptions.2": "Yalnızca saat (HH:mm:ss), örn. 12:34:56.",
+ "config.dateFormat.enumDescriptions.3": "Saniye cinsinden Unix zamanı, örn. 1783082096.",
+ "config.dateFormat.enumDescriptions.4": "Milisaniye cinsinden Unix zamanı, örn. 1783082096123.",
+ "config.recordFormat.title": "Kayıt biçimi",
+ "config.recordFormat.description": "Çok alanlı kayıtların (Rastgele Ekle: Kayıt…) şekli: bir JSON nesnesi, bir SQL INSERT satırı veya bir CSV satırı.",
+ "config.recordFormat.enumDescriptions.0": "Bir JSON nesnesi, örn. { \"name\": \"…\", \"email\": \"…\" }.",
+ "config.recordFormat.enumDescriptions.1": "Bir SQL INSERT satırı, örn. INSERT INTO table (…) VALUES (…);",
+ "config.recordFormat.enumDescriptions.2": "Bir CSV satırı, örn. value,value,…",
+ "config.recordSqlTable.title": "Kayıt SQL tablosu",
+ "config.recordSqlTable.description": "SQL kayıt şeklinin kullandığı tablo adı.",
+ "config.templates.title": "Kayıtlı şablonlar",
+ "config.templates.description": "Adlandırılmış faker şablonları; Rastgele Ekle: Seç… penceresinin başındaki Şablonlar grubunda gösterilir. Her değer {{module.method}} yer tutucuları içeren bir şablondur, örn. { \"invoice\": \"INV-{{string.numeric(4)}}\", \"contact\": \"{{person.fullName}} <{{internet.email}}>\" }. Boş olmayan dize niteliği taşımayan girdiler yoksayılır (konsola kaydedilir).",
+ "config.customLists.title": "Özel listeler",
+ "config.customLists.description": "Kendi değerlerinizden oluşan adlandırılmış listeler; Rastgele Ekle: Seç… penceresinin başındaki Özel Listeler grubunda gösterilir ve Kayıt… alanları olarak sunulur (ad, alan anahtarı olur). Her ekleme rastgele bir öğe çeker, örn. { \"environment\": [ \"dev\", \"staging\", \"production\" ] }. Dize olmayan değerler yoksayılır (konsola kaydedilir).",
+ "config.contextMenu.enabled.title": "Düzenleyici bağlam menüsünde göster",
+ "config.contextMenu.enabled.description": "Düzenleyicinin sağ tıklama menüsüne bir “Rastgele Ekle” alt menüsü ekler."
+}
diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json
new file mode 100644
index 0000000..aed3a9d
--- /dev/null
+++ b/package.nls.zh-cn.json
@@ -0,0 +1,232 @@
+{
+ "displayName": "随机、伪造与模拟数据生成器",
+ "description": "在每个光标处插入 130 多种随机、伪造与模拟数据 — 姓名、电子邮件、UUID、lorem ipsum、JSON/SQL/CSV 记录与完整数据集、模板、多语言区域、就地匿名化。支持批量、种子、完全离线。你需要的唯一数据伪造工具。",
+ "command.animal.title": "随机插入: 动物",
+ "command.person.title": "随机插入: 姓名",
+ "command.date.title": "随机插入: 日期",
+ "command.country.title": "随机插入: 国家",
+ "command.number.title": "随机插入: 数字",
+ "command.string.title": "随机插入: 字符串",
+ "command.lorem.title": "随机插入: Lorem",
+ "command.loremSmall.title": "随机插入: Lorem (短)",
+ "command.loremMedium.title": "随机插入: Lorem (中)",
+ "command.loremLarge.title": "随机插入: Lorem (长)",
+ "command.hash.title": "随机插入: 哈希",
+ "command.hashSmall.title": "随机插入: 哈希 (短)",
+ "command.hashMedium.title": "随机插入: 哈希 (中)",
+ "command.hashLarge.title": "随机插入: 哈希 (长)",
+ "command.pick.title": "随机插入: 选择…",
+ "command.record.title": "随机插入: 记录…",
+ "command.generateDataset.title": "随机插入: 生成数据集…",
+ "command.randomizeSelection.title": "随机插入: 随机化所选内容",
+ "command.numberRange.title": "随机插入: 数字 (范围…)",
+ "command.floatRange.title": "随机插入: 浮点数 (范围…)",
+ "command.stringLength.title": "随机插入: 字符串 (长度…)",
+ "command.dateBetween.title": "随机插入: 日期 (介于…)",
+ "command.wordsCount.title": "随机插入: 单词 (数量…)",
+ "command.sentencesCount.title": "随机插入: 句子 (数量…)",
+ "command.paragraphsCount.title": "随机插入: 段落 (数量…)",
+ "command.uuidFormat.title": "随机插入: UUID (格式…)",
+ "command.passwordOptions.title": "随机插入: 密码 (选项…)",
+ "command.phoneFormat.title": "随机插入: 电话号码 (格式…)",
+ "command.fromTemplate.title": "随机插入: 从模板…",
+ "command.fromPattern.title": "随机插入: 从模式…",
+ "command.sequence.title": "随机插入: 序列 (起始/步长…)",
+ "command.uuid.title": "随机插入: UUID",
+ "command.email.title": "随机插入: 电子邮件地址",
+ "command.username.title": "随机插入: 用户名",
+ "command.boolean.title": "随机插入: 布尔值",
+ "command.firstName.title": "随机插入: 名字",
+ "command.lastName.title": "随机插入: 姓氏",
+ "command.phone.title": "随机插入: 电话号码",
+ "command.city.title": "随机插入: 城市",
+ "command.address.title": "随机插入: 街道地址",
+ "command.ipv4.title": "随机插入: IP 地址",
+ "command.mac.title": "随机插入: MAC 地址",
+ "command.url.title": "随机插入: URL",
+ "command.color.title": "随机插入: 颜色 (hex)",
+ "command.password.title": "随机插入: 密码",
+ "command.word.title": "随机插入: 单词",
+ "command.sentence.title": "随机插入: 句子",
+ "command.middleName.title": "随机插入: 中间名",
+ "command.prefix.title": "随机插入: 姓名前缀",
+ "command.suffix.title": "随机插入: 姓名后缀",
+ "command.sex.title": "随机插入: 性别",
+ "command.gender.title": "随机插入: 性别认同",
+ "command.jobTitle.title": "随机插入: 职位",
+ "command.jobType.title": "随机插入: 工作类型",
+ "command.jobArea.title": "随机插入: 职业领域",
+ "command.bio.title": "随机插入: 个人简介",
+ "command.zodiac.title": "随机插入: 星座",
+ "command.ipv6.title": "随机插入: IPv6 地址",
+ "command.port.title": "随机插入: 端口",
+ "command.httpMethod.title": "随机插入: HTTP 方法",
+ "command.httpStatus.title": "随机插入: HTTP 状态码",
+ "command.userAgent.title": "随机插入: 用户代理",
+ "command.domainName.title": "随机插入: 域名",
+ "command.emoji.title": "随机插入: 表情符号",
+ "command.protocol.title": "随机插入: 协议",
+ "command.jwt.title": "随机插入: JWT",
+ "command.displayName.title": "随机插入: 显示名称",
+ "command.company.title": "随机插入: 公司名称",
+ "command.catchPhrase.title": "随机插入: 宣传语",
+ "command.buzzPhrase.title": "随机插入: 商业流行语",
+ "command.product.title": "随机插入: 产品",
+ "command.productName.title": "随机插入: 产品名称",
+ "command.price.title": "随机插入: 价格",
+ "command.department.title": "随机插入: 部门",
+ "command.productMaterial.title": "随机插入: 产品材质",
+ "command.productDescription.title": "随机插入: 产品描述",
+ "command.isbn.title": "随机插入: ISBN",
+ "command.amount.title": "随机插入: 金额",
+ "command.currencyCode.title": "随机插入: 货币代码",
+ "command.currencyName.title": "随机插入: 货币名称",
+ "command.currencySymbol.title": "随机插入: 货币符号",
+ "command.creditCard.title": "随机插入: 信用卡号",
+ "command.creditCardCVV.title": "随机插入: 信用卡 CVV",
+ "command.iban.title": "随机插入: IBAN",
+ "command.bic.title": "随机插入: BIC",
+ "command.accountNumber.title": "随机插入: 银行账号",
+ "command.routingNumber.title": "随机插入: 银行路由号码",
+ "command.bitcoin.title": "随机插入: 比特币地址",
+ "command.ethereum.title": "随机插入: 以太坊地址",
+ "command.pin.title": "随机插入: PIN 码",
+ "command.zipCode.title": "随机插入: 邮政编码",
+ "command.state.title": "随机插入: 州",
+ "command.stateAbbr.title": "随机插入: 州缩写",
+ "command.countryCode.title": "随机插入: 国家代码",
+ "command.latitude.title": "随机插入: 纬度",
+ "command.longitude.title": "随机插入: 经度",
+ "command.timeZone.title": "随机插入: 时区",
+ "command.county.title": "随机插入: 县",
+ "command.street.title": "随机插入: 街道名称",
+ "command.secondaryAddress.title": "随机插入: 地址第二行",
+ "command.buildingNumber.title": "随机插入: 门牌号",
+ "command.direction.title": "随机插入: 方位",
+ "command.pastDate.title": "随机插入: 过去日期",
+ "command.futureDate.title": "随机插入: 未来日期",
+ "command.recentDate.title": "随机插入: 最近日期",
+ "command.soonDate.title": "随机插入: 近期日期",
+ "command.birthdate.title": "随机插入: 出生日期",
+ "command.weekday.title": "随机插入: 星期",
+ "command.month.title": "随机插入: 月份",
+ "command.float.title": "随机插入: 浮点数",
+ "command.hexNumber.title": "随机插入: 十六进制数",
+ "command.binary.title": "随机插入: 二进制数",
+ "command.octal.title": "随机插入: 八进制数",
+ "command.nanoid.title": "随机插入: Nano ID",
+ "command.ulid.title": "随机插入: ULID",
+ "command.alpha.title": "随机插入: 字母字符串",
+ "command.numeric.title": "随机插入: 数字字符串",
+ "command.hackerPhrase.title": "随机插入: 黑客短语",
+ "command.slug.title": "随机插入: Slug",
+ "command.words.title": "随机插入: 多个单词",
+ "command.bookTitle.title": "随机插入: 书名",
+ "command.bookAuthor.title": "随机插入: 图书作者",
+ "command.gitBranch.title": "随机插入: Git 分支",
+ "command.gitCommitSha.title": "随机插入: Git 提交 SHA",
+ "command.gitCommitMessage.title": "随机插入: Git 提交消息",
+ "command.fileName.title": "随机插入: 文件名",
+ "command.filePath.title": "随机插入: 文件路径",
+ "command.fileExt.title": "随机插入: 文件扩展名",
+ "command.mimeType.title": "随机插入: MIME 类型",
+ "command.semver.title": "随机插入: 语义化版本号",
+ "command.cron.title": "随机插入: Cron 表达式",
+ "command.rgb.title": "随机插入: 颜色 (rgb)",
+ "command.hsl.title": "随机插入: 颜色 (hsl)",
+ "command.colorName.title": "随机插入: 颜色名称",
+ "command.vehicle.title": "随机插入: 车辆",
+ "command.vehicleManufacturer.title": "随机插入: 汽车制造商",
+ "command.vehicleModel.title": "随机插入: 车型",
+ "command.vin.title": "随机插入: VIN",
+ "command.vrm.title": "随机插入: 车牌号 (VRM)",
+ "command.dish.title": "随机插入: 菜品",
+ "command.ingredient.title": "随机插入: 食材",
+ "command.fruit.title": "随机插入: 水果",
+ "command.vegetable.title": "随机插入: 蔬菜",
+ "command.cuisine.title": "随机插入: 菜系",
+ "command.songName.title": "随机插入: 歌曲名",
+ "command.musicGenre.title": "随机插入: 音乐流派",
+ "command.artist.title": "随机插入: 艺人",
+ "command.album.title": "随机插入: 专辑",
+ "command.dog.title": "随机插入: 狗的品种",
+ "command.cat.title": "随机插入: 猫的品种",
+ "command.bird.title": "随机插入: 鸟类",
+ "command.fish.title": "随机插入: 鱼类",
+ "command.horse.title": "随机插入: 马的品种",
+ "command.airline.title": "随机插入: 航空公司",
+ "command.airport.title": "随机插入: 机场",
+ "command.flightNumber.title": "随机插入: 航班号",
+ "command.seat.title": "随机插入: 座位",
+ "command.imageUrl.title": "随机插入: 图片 URL",
+ "command.avatarUrl.title": "随机插入: 头像 URL",
+ "command.mongodbObjectId.title": "随机插入: MongoDB ObjectId",
+ "command.setInsertType.title": "随机插入: 设置插入类型",
+ "command.setOutputFormat.title": "随机插入: 设置输出格式",
+ "command.setDateFormat.title": "随机插入: 设置日期格式",
+ "command.setRecordFormat.title": "随机插入: 设置记录格式",
+ "command.setRecordSqlTable.title": "随机插入: 设置记录 SQL 表",
+ "command.setBulkCount.title": "随机插入: 设置批量数量",
+ "command.setSeed.title": "随机插入: 设置种子",
+ "command.setLocale.title": "随机插入: 设置区域设置",
+ "command.toggleQuotes.title": "随机插入: 切换引号包裹",
+ "command.toggleNewLine.title": "随机插入: 切换末尾换行",
+ "command.toggleUniquePerCursor.title": "随机插入: 切换每光标唯一值",
+ "command.toggleStrictUnique.title": "随机插入: 切换严格唯一",
+ "command.toggleContextMenu.title": "随机插入: 切换编辑器上下文菜单",
+ "command.manageTemplates.title": "随机插入: 管理模板",
+ "command.manageCustomLists.title": "随机插入: 管理自定义列表",
+ "command.resetSettings.title": "随机插入: 重置设置为默认值",
+ "submenu.contextSubmenu.label": "随机插入",
+ "config.title": "随机文本插入",
+ "config.insertType.title": "插入类型",
+ "config.insertType.description": "生成的值插入到哪里。",
+ "config.insertType.enumDescriptions.0": "在每个光标处填入一个新值。",
+ "config.insertType.enumDescriptions.1": "在第 1 行插入一个块。",
+ "config.insertType.enumDescriptions.2": "复制到剪贴板而不插入 (无需编辑器)。",
+ "config.withQuote.title": "用引号包裹",
+ "config.withQuote.description": "开启后,随机文本会用引号包裹。",
+ "config.withNewLine.title": "包含换行符",
+ "config.withNewLine.description": "开启后,每次插入的末尾会加上换行符。",
+ "config.uniquePerCursor.title": "每光标唯一值",
+ "config.uniquePerCursor.description": "在每个光标处插入不同的随机值 (多光标填充)。关闭时,每个光标处重复同一个值。",
+ "config.strictUnique.title": "严格唯一",
+ "config.strictUnique.description": "对重复值重新抽取,确保同一次插入内应当不同的值真正不同 — 包括批量块内的值,以及开启“每光标唯一值”时跨光标的值。每个值最多重抽 25 次;小候选集 (布尔值、星期) 耗尽时保留重复值而不会卡住。仅适用于单类型插入,不适用于记录。",
+ "config.seed.title": "种子",
+ "config.seed.description": "设置一个数字以获得可复现的输出 — 相同的种子每次运行都生成相同的值。留空则为随机。",
+ "config.locale.title": "区域设置",
+ "config.locale.description": "生成数据所用的语言/地区 — 姓名、地址、单词等都会本地化输出。没有本地化数据的类型会回退到英语。",
+ "config.locale.enumDescriptions.0": "英语 (默认)。",
+ "config.locale.enumDescriptions.1": "德语 — Deutsch。",
+ "config.locale.enumDescriptions.2": "法语 — Français。",
+ "config.locale.enumDescriptions.3": "西班牙语 — Español。",
+ "config.locale.enumDescriptions.4": "巴西葡萄牙语 — Português (Brasil)。",
+ "config.locale.enumDescriptions.5": "日语 — 日本語。",
+ "config.bulkCount.title": "批量数量",
+ "config.bulkCount.description": "每个光标处插入多少个值。",
+ "config.outputFormat.title": "输出格式",
+ "config.outputFormat.description": "批量数量 > 1 时,多个值在每个光标处如何排版。",
+ "config.outputFormat.enumDescriptions.0": "每行一个值。",
+ "config.outputFormat.enumDescriptions.1": "JSON 数组,例如 [ \"a\", \"b\" ]。",
+ "config.outputFormat.enumDescriptions.2": "带引号的逗号分隔列表,例如 \"a\", \"b\"。",
+ "config.dateFormat.title": "日期格式",
+ "config.dateFormat.description": "时间戳类生成器 (日期、过去/未来/最近/近期日期、出生日期、日期 (介于…)) 如何呈现其值。星期和月份不受影响。",
+ "config.dateFormat.enumDescriptions.0": "完整 ISO 8601 时间戳,例如 2026-07-02T12:34:56.789Z。",
+ "config.dateFormat.enumDescriptions.1": "仅日期 (YYYY-MM-DD),例如 2026-07-02。",
+ "config.dateFormat.enumDescriptions.2": "仅时间 (HH:mm:ss),例如 12:34:56。",
+ "config.dateFormat.enumDescriptions.3": "Unix 时间 (秒),例如 1783082096。",
+ "config.dateFormat.enumDescriptions.4": "Unix 时间 (毫秒),例如 1783082096123。",
+ "config.recordFormat.title": "记录格式",
+ "config.recordFormat.description": "多字段记录 (随机插入: 记录…) 的形式: JSON 对象、SQL INSERT 行或 CSV 行。",
+ "config.recordFormat.enumDescriptions.0": "JSON 对象,例如 { \"name\": \"…\", \"email\": \"…\" }。",
+ "config.recordFormat.enumDescriptions.1": "SQL INSERT 行,例如 INSERT INTO table (…) VALUES (…);",
+ "config.recordFormat.enumDescriptions.2": "CSV 行,例如 value,value,…",
+ "config.recordSqlTable.title": "记录 SQL 表",
+ "config.recordSqlTable.description": "SQL 记录形式使用的表名。",
+ "config.templates.title": "已保存的模板",
+ "config.templates.description": "命名的 faker 模板,显示在 随机插入: 选择… 顶部的模板分组中。每个值都是带 {{module.method}} 占位符的模板,例如 { \"invoice\": \"INV-{{string.numeric(4)}}\", \"contact\": \"{{person.fullName}} <{{internet.email}}>\" }。不是非空字符串的条目会被忽略 (记录到控制台)。",
+ "config.customLists.title": "自定义列表",
+ "config.customLists.description": "命名的自定义值列表,显示在 随机插入: 选择… 顶部的自定义列表分组中,并作为 记录… 的字段提供 (名称即字段键)。每次插入随机抽取一项,例如 { \"environment\": [ \"dev\", \"staging\", \"production\" ] }。非字符串值会被忽略 (记录到控制台)。",
+ "config.contextMenu.enabled.title": "在编辑器上下文菜单中显示",
+ "config.contextMenu.enabled.description": "向编辑器右键菜单添加“随机插入”子菜单。"
+}
diff --git a/src/test/config/contributions.test.ts b/src/test/config/contributions.test.ts
index b9dfa70..109e469 100644
--- a/src/test/config/contributions.test.ts
+++ b/src/test/config/contributions.test.ts
@@ -12,11 +12,18 @@ const pkg = JSON.parse(fs.readFileSync(path.join(ROOT, 'package.json'), 'utf8'))
const commands: { command: string; title: string }[] = pkg.contributes.commands;
const declared = new Set(commands.map((c) => c.command));
+// Display strings in package.json are %key% placeholders since manifest localization (package.nls) —
+// what VS Code renders is the looked-up value, so the invariants below hold on the resolved ENGLISH
+// base (package.nls.json), the per-key fallback every unlocalized install sees. An unresolvable
+// placeholder stays as-is and fails the assertions, which is exactly the broken state to catch.
+const nls: Record = JSON.parse(fs.readFileSync(path.join(ROOT, 'package.nls.json'), 'utf8'));
+const resolveNls = (value: string): string => value.replace(/^%(.+)%$/, (raw, key: string) => nls[key] ?? raw);
+
const SUBMENU_ID = 'insertRandomText.contextSubmenu';
describe('package.json contributions — palette & keybindings', () => {
it("every command title carries the 'Insert Random: ' palette prefix", () => {
- const bare = commands.filter((c) => !c.title.startsWith('Insert Random: '));
+ const bare = commands.filter((c) => !resolveNls(c.title).startsWith('Insert Random: '));
assert.deepStrictEqual(bare.map((c) => c.command), [], 'commands missing the searchable prefix');
});
@@ -38,7 +45,7 @@ describe('package.json contributions — editor context menu', () => {
const submenus = pkg.contributes.submenus ?? [];
const entry = submenus.find((s: { id: string }) => s.id === SUBMENU_ID);
assert.ok(entry, `contributes.submenus is missing '${SUBMENU_ID}'`);
- assert.strictEqual(entry.label, 'Insert Random');
+ assert.strictEqual(resolveNls(entry.label), 'Insert Random');
});
it('the when clause gates on editor focus AND the real contextMenu setting key', () => {