@the-i18n-kit/cli 5.0.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +1 -1
- package/dist/{_shared-DFyy3sh8.js → _shared-CkMAydRl.js} +2 -2
- package/dist/{_shared-DFyy3sh8.js.map → _shared-CkMAydRl.js.map} +1 -1
- package/dist/{add-C-qs8iBa.js → add-BBoVUNEq.js} +4 -4
- package/dist/{add-C-qs8iBa.js.map → add-BBoVUNEq.js.map} +1 -1
- package/dist/bin.js +1 -6
- package/dist/bin.js.map +1 -1
- package/dist/{check-BI1orjXb.js → check-IosaN_EM.js} +4 -4
- package/dist/{check-BI1orjXb.js.map → check-IosaN_EM.js.map} +1 -1
- package/dist/cli-CnZNGUGu.js +70 -0
- package/dist/cli-CnZNGUGu.js.map +1 -0
- package/dist/config/framework/stubs/{next-intl-routing-Cwaa3f4R.d.ts → next-intl-routing-lExp4Q3r.d.ts} +1 -1
- package/dist/config/framework/stubs/{next-intl-routing-Cwaa3f4R.d.ts.map → next-intl-routing-lExp4Q3r.d.ts.map} +1 -1
- package/dist/config/framework/stubs/{unplugin-vue-i18n-1ud7-Ly8.d.ts → unplugin-vue-i18n-mH7YdYqA.d.ts} +1 -1
- package/dist/config/framework/stubs/{unplugin-vue-i18n-1ud7-Ly8.d.ts.map → unplugin-vue-i18n-mH7YdYqA.d.ts.map} +1 -1
- package/dist/{define-config-CLgKN-7N.d.ts → define-config-BeHvSYBP.d.ts} +1 -1
- package/dist/{define-config-BaZ1dZph.d.ts → define-config-DW-rgsU6.d.ts} +1 -1
- package/dist/{define-config-BaZ1dZph.d.ts.map → define-config-DW-rgsU6.d.ts.map} +1 -1
- package/dist/define-config.d.ts +1 -1
- package/dist/{detect-7cVfsNJP.js → detect-3jjcQJs1.js} +4 -4
- package/dist/{detect-7cVfsNJP.js.map → detect-3jjcQJs1.js.map} +1 -1
- package/dist/{empty-DB8Hl_8u.js → empty-D3La0enO.js} +4 -4
- package/dist/{empty-DB8Hl_8u.js.map → empty-D3La0enO.js.map} +1 -1
- package/dist/{find-duplicates-CmEqBfby.js → find-duplicates-BlQoJDgu.js} +4 -4
- package/dist/{find-duplicates-CmEqBfby.js.map → find-duplicates-BlQoJDgu.js.map} +1 -1
- package/dist/{get-BE21Iy6N.js → get-Cr5O5zJX.js} +4 -4
- package/dist/{get-BE21Iy6N.js.map → get-Cr5O5zJX.js.map} +1 -1
- package/dist/{index-DCG3dOdC.d.ts → index-w-EQZEZF.d.ts} +3 -22
- package/dist/index-w-EQZEZF.d.ts.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -4
- package/dist/{init-BtzmhsOM.js → init-BRBMkcI0.js} +4 -4
- package/dist/{init-BtzmhsOM.js.map → init-BRBMkcI0.js.map} +1 -1
- package/dist/{list-dirs-DUQbwvlE.js → list-dirs-BMuByyuX.js} +4 -4
- package/dist/{list-dirs-DUQbwvlE.js.map → list-dirs-BMuByyuX.js.map} +1 -1
- package/dist/{missing-CcYrgd54.js → missing-CBOk4ZgD.js} +4 -4
- package/dist/{missing-CcYrgd54.js.map → missing-CBOk4ZgD.js.map} +1 -1
- package/dist/{move-B2px6Ck-.js → move-DOdPKnOV.js} +4 -4
- package/dist/{move-B2px6Ck-.js.map → move-DOdPKnOV.js.map} +1 -1
- package/dist/{operations-CTo44gPu.js → operations-PfRSTepi.js} +3 -3
- package/dist/{operations-CTo44gPu.js.map → operations-PfRSTepi.js.map} +1 -1
- package/dist/{providers-CHE2ffi6.js → providers-CAsU_aV1.js} +6 -7
- package/dist/providers-CAsU_aV1.js.map +1 -0
- package/dist/{remove-DTbqM4bR.js → remove-CVBjJV9h.js} +4 -4
- package/dist/{remove-DTbqM4bR.js.map → remove-CVBjJV9h.js.map} +1 -1
- package/dist/{remove-orphans-Dfzu7hRz.js → remove-orphans-BaKEISxA.js} +4 -4
- package/dist/{remove-orphans-Dfzu7hRz.js.map → remove-orphans-BaKEISxA.js.map} +1 -1
- package/dist/{rename-C_rFKkU4.js → rename-CN2ajUeb.js} +4 -4
- package/dist/{rename-C_rFKkU4.js.map → rename-CN2ajUeb.js.map} +1 -1
- package/dist/{scaffold-CUimlNqR.js → scaffold-CUKUFuEy.js} +4 -4
- package/dist/{scaffold-CUimlNqR.js.map → scaffold-CUKUFuEy.js.map} +1 -1
- package/dist/{scan-BkOIYhjZ.js → scan-Bhv0Nmy3.js} +4 -4
- package/dist/{scan-BkOIYhjZ.js.map → scan-Bhv0Nmy3.js.map} +1 -1
- package/dist/{search-0io1BcsY.js → search-CrkLgz3m.js} +4 -4
- package/dist/{search-0io1BcsY.js.map → search-CrkLgz3m.js.map} +1 -1
- package/dist/{status-Bp-SzjTN.js → status-DprS-qDC.js} +4 -4
- package/dist/{status-Bp-SzjTN.js.map → status-DprS-qDC.js.map} +1 -1
- package/dist/{translate-cCb2Z57w.js → translate-Cs6EdbzA.js} +4 -4
- package/dist/{translate-cCb2Z57w.js.map → translate-Cs6EdbzA.js.map} +1 -1
- package/dist/{translate-key-DHLWEmrA.js → translate-key-BBZpYQjL.js} +4 -4
- package/dist/{translate-key-DHLWEmrA.js.map → translate-key-BBZpYQjL.js.map} +1 -1
- package/dist/{update-DV4ijRVB.js → update-BQuGxSSy.js} +4 -4
- package/dist/{update-DV4ijRVB.js.map → update-BQuGxSSy.js.map} +1 -1
- package/dist/{write-Czzm_Nb0.js → write-B8z6I5Vf.js} +4 -4
- package/dist/{write-Czzm_Nb0.js.map → write-B8z6I5Vf.js.map} +1 -1
- package/package.json +8 -8
- package/dist/cli-DsFuVJNP.js +0 -74
- package/dist/cli-DsFuVJNP.js.map +0 -1
- package/dist/index-DCG3dOdC.d.ts.map +0 -1
- package/dist/providers-CHE2ffi6.js.map +0 -1
- package/dist/rename-notice-BV8HNX3O.js +0 -25
- package/dist/rename-notice-BV8HNX3O.js.map +0 -1
- package/dist/rename-notice-Cx1vuTRz.js +0 -2
- /package/dist/{bin-DrKRgnr9.d.ts → bin-g05vSfAz.d.ts} +0 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Fabian Kirchhoff
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# @the-i18n-kit/cli
|
|
2
2
|
|
|
3
3
|
[](https://npmjs.com/package/@the-i18n-kit/cli)
|
|
4
|
-
[](https://github.com/fabkho/the-i18n-kit/blob/main/LICENSE)
|
|
5
5
|
|
|
6
6
|
Find missing translation keys, remove dead ones, and rename across every locale
|
|
7
7
|
and layer at once. Supports Nuxt, Laravel, Vue, React/Next.js, and any project
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as writeResult } from "./stdout-guard-sJHFWVem.js";
|
|
2
2
|
import { i as toErrorMessage } from "./errors-coI1dhw1.js";
|
|
3
|
-
import { a as resolveProviderBaseUrl, i as createTranslateFn, l as log, s as loadProjectConfig, t as BASE_URL_ENV } from "./providers-
|
|
3
|
+
import { a as resolveProviderBaseUrl, i as createTranslateFn, l as log, s as loadProjectConfig, t as BASE_URL_ENV } from "./providers-CAsU_aV1.js";
|
|
4
4
|
import { defineCommand } from "citty";
|
|
5
5
|
//#region src/commands/_shared.ts
|
|
6
6
|
/** Factory for commands that call an operation and output its result. */
|
|
@@ -257,4 +257,4 @@ function parseJsonArg(value, argName) {
|
|
|
257
257
|
//#endregion
|
|
258
258
|
export { resolveProviderTranslateFn as a, providerArgs as i, emitErrorResult as n, splitList as o, parseJsonArg as r, createCommand as t };
|
|
259
259
|
|
|
260
|
-
//# sourceMappingURL=_shared-
|
|
260
|
+
//# sourceMappingURL=_shared-CkMAydRl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_shared-DFyy3sh8.js","names":[],"sources":["../src/commands/_shared.ts"],"sourcesContent":["import { defineCommand } from 'citty'\nimport type { CommandDef } from 'citty'\nimport { log } from '../utils/logger.js'\nimport { toErrorMessage } from '../utils/errors.js'\nimport { writeResult } from '../utils/stdout-guard.js'\nimport { createTranslateFn, resolveProviderBaseUrl, BASE_URL_ENV } from '../llm/providers.js'\nimport type { LlmProvider } from '../llm/providers.js'\nimport type { TranslateFn } from '../core/types.js'\nimport { loadProjectConfig } from '../config/project-config.js'\n\n/** Factory for commands that call an operation and output its result. */\nexport function createCommand(opts: {\n name: string\n description: string\n args?: Record<string, unknown>\n /**\n * CI gates this command evaluates. The factory reads the requesting flag off\n * args and evaluates every gate uniformly, so no command grows bespoke exit\n * logic. Declaring a flagged gate does not add its flag — pair each spec\n * with an entry in `args`. A spec without a flag is always evaluated.\n */\n gates?: GateSpec[]\n /**\n * Receives citty's parsed args. `any` is deliberate: each command declares\n * its own `args` shape and citty does not thread that type through to the\n * handler, so narrowing here only moves the cast into all nineteen command\n * modules. The shape is validated by citty against the `args` above.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- see above\n run: (args: any) => Promise<unknown>\n}): CommandDef {\n // Retained on the definition, not only consumed here: the generated CLI\n // reference has to state which commands fail a build on findings, and a gate\n // with no flag leaves no trace in the arg descriptions to infer it from.\n return withGates(defineCommand({\n meta: { name: opts.name, description: opts.description },\n args: { ...sharedArgs, ...(opts.args ?? {}) },\n async run({ args }) {\n try {\n const result = await opts.run(args)\n const decision = resolveExitCode(result, requestedGates(opts.gates ?? [], args), isTotalFailure(result))\n outputResult(withGateReport(result, decision.tripped), args)\n // Assign only on a non-zero decision: a clean run must leave the exit\n // code exactly as it found it, as it did before gates existed.\n if (decision.code !== EXIT_SUCCESS) process.exitCode = decision.code\n } catch (error) {\n emitErrorResult(error, args)\n process.exitCode = EXIT_RUN_FAILED\n }\n },\n }) as CommandDef, opts.gates ?? [])\n}\n\n/**\n * A command definition carrying the gates its factory evaluates. Read\n * structurally by the reference generator rather than by importing this type,\n * which would make the docs build depend on the CLI's internals.\n */\ninterface GatedCommandDef extends CommandDef {\n gates: GateSpec[]\n}\n\nfunction withGates(def: CommandDef, gates: GateSpec[]): GatedCommandDef {\n return Object.assign(def, { gates })\n}\n\n/** The run succeeded and no gate tripped. */\nexport const EXIT_SUCCESS = 0\n/** The run itself failed — a bad API key, an unreadable project, a total translate failure. */\nexport const EXIT_RUN_FAILED = 1\n/** The run succeeded but a requested gate tripped — findings exist, the tool worked. */\nexport const EXIT_GATE_TRIPPED = 2\n\n/**\n * A CI gate a command evaluates. `counter` is the field of `result.summary`\n * carrying the observed value.\n *\n * The two shapes are a union rather than one type with optional halves so the\n * invariants hold at compile time: a flagged gate always has a flag to read\n * its name and threshold from, and a flagless one always carries both itself.\n * Stated as options, `{ counter, threshold }` type-checks and then has no name\n * to report the gate under.\n */\nexport type GateSpec = FlaggedGateSpec | AlwaysOnGateSpec\n\ninterface GateSpecBase {\n counter: string\n /** 'above' trips when observed > threshold (default); 'below' when observed < threshold. */\n direction?: 'above' | 'below'\n}\n\n/**\n * Requested by a flag, and evaluated only when that flag is passed. Omitting\n * `threshold` takes it from the flag's own value, so a boolean flag pairs with\n * `threshold: 0` and a numeric one (`--fail-under 90`) omits it.\n */\nexport interface FlaggedGateSpec extends GateSpecBase {\n flag: string\n name?: never\n threshold?: number\n}\n\n/**\n * Always evaluated, for findings that are a defect rather than a threshold — a\n * key that renders raw in production is not something you opt into caring\n * about. It still reports as a gate: the run succeeded, and what it found is\n * what you are being told about.\n */\nexport interface AlwaysOnGateSpec extends GateSpecBase {\n flag?: never\n name: string\n threshold: number\n}\n\n/** A gate the caller asked for, with its threshold already resolved. */\nexport interface RequestedGate {\n name: string\n counter: string\n direction: 'above' | 'below'\n threshold: number\n}\n\n/** A gate that tripped, as reported in the result. */\nexport interface TrippedGate extends RequestedGate {\n observed: number\n}\n\nexport interface ExitDecision {\n code: typeof EXIT_SUCCESS | typeof EXIT_RUN_FAILED | typeof EXIT_GATE_TRIPPED\n tripped: TrippedGate[]\n}\n\n/**\n * Pure decision from an operation result plus the gates the caller requested\n * to an exit code. A failed run outranks a tripped gate — exit 1 wins over\n * exit 2 — and gates are not even consulted in that case, because counters\n * from a run that fell over say nothing about the project.\n */\nexport function resolveExitCode(\n result: unknown,\n gates: RequestedGate[],\n runFailed = false,\n): ExitDecision {\n if (runFailed) return { code: EXIT_RUN_FAILED, tripped: [] }\n\n const tripped: TrippedGate[] = []\n for (const gate of gates) {\n const observed = observedValue(result, gate.counter)\n if (observed === undefined || !trips(gate, observed)) continue\n tripped.push({ ...gate, observed })\n }\n\n return {\n code: tripped.length > 0 ? EXIT_GATE_TRIPPED : EXIT_SUCCESS,\n tripped,\n }\n}\n\n/**\n * Read a gate's counter off result.summary. Works on inline results and on\n * the { reportFile, summary } shape alike, since both carry the summary.\n * A missing or non-numeric counter yields undefined and never trips a gate.\n */\nfunction observedValue(result: unknown, counter: string): number | undefined {\n if (result === null || typeof result !== 'object') return undefined\n const summary = (result as Record<string, unknown>).summary\n if (summary === null || typeof summary !== 'object') return undefined\n const value = (summary as Record<string, unknown>)[counter]\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction trips(gate: RequestedGate, observed: number): boolean {\n return gate.direction === 'below' ? observed < gate.threshold : observed > gate.threshold\n}\n\n/** Filter the declared gates down to the ones this invocation asked for. */\nfunction requestedGates(specs: GateSpec[], args: Record<string, unknown>): RequestedGate[] {\n const requested: RequestedGate[] = []\n for (const spec of specs) {\n const resolved = spec.flag === undefined\n ? { name: spec.name, threshold: spec.threshold }\n : { name: kebabCase(spec.flag), threshold: thresholdFromFlag(spec, args) }\n if (resolved.threshold === undefined || !Number.isFinite(resolved.threshold)) continue\n requested.push({\n name: resolved.name,\n counter: spec.counter,\n direction: spec.direction ?? 'above',\n threshold: resolved.threshold,\n })\n }\n return requested\n}\n\n/** The gate's threshold, or undefined when this invocation did not ask for it. */\nfunction thresholdFromFlag(spec: FlaggedGateSpec, args: Record<string, unknown>): number | undefined {\n const raw = args[spec.flag]\n if (raw === undefined || raw === null || raw === false || raw === '') return undefined\n return spec.threshold ?? Number(raw)\n}\n\n/**\n * Name a tripped gate by the flag that requested it, so the JSON says\n * \"fail-on-missing\" — what the user typed — rather than \"failOnMissing\".\n */\nfunction kebabCase(flag: string): string {\n return flag.replace(/[A-Z]/g, c => `-${c.toLowerCase()}`)\n}\n\n/**\n * Attach the gate report without disturbing the rest of the result: consumers\n * parsing today's shape keep working, and a run where nothing tripped is\n * byte-for-byte what it was before gates existed.\n */\nfunction withGateReport(result: unknown, tripped: TrippedGate[]): unknown {\n if (tripped.length === 0) return result\n if (result === null || typeof result !== 'object' || Array.isArray(result)) return result\n return { ...(result as Record<string, unknown>), gatesTripped: tripped }\n}\n\n/**\n * True when a run completed but achieved nothing: failures present and zero\n * successes. Covers translate-missing-style results (summary.totalFailed /\n * summary.totalTranslated) and translate-key-style results (top-level\n * failed[] / translated[]). Results without those fields are never a\n * total failure, so unrelated commands are unaffected.\n */\nexport function isTotalFailure(result: unknown): boolean {\n if (result === null || typeof result !== 'object') return false\n const r = result as Record<string, unknown>\n\n const summary = r.summary\n if (summary !== null && typeof summary === 'object') {\n const s = summary as Record<string, unknown>\n if (typeof s.totalFailed === 'number' && typeof s.totalTranslated === 'number') {\n return s.totalFailed > 0 && s.totalTranslated === 0\n }\n }\n\n if (Array.isArray(r.failed) && Array.isArray(r.translated)) {\n return r.failed.length > 0 && r.translated.length === 0\n }\n\n return false\n}\n\nconst sharedArgs = {\n projectDir: {\n type: 'string' as const,\n alias: 'd',\n description: 'Project directory (default: cwd)',\n },\n json: {\n type: 'boolean' as const,\n description: 'Output as JSON (default for non-TTY)',\n default: false,\n },\n}\n\n/** Output result — stdout always carries the result, machine-parseable when piped/--json */\nfunction outputResult(data: unknown, args: { json?: boolean }): void {\n const jsonMode = args.json || !process.stdout.isTTY\n if (\n !jsonMode &&\n data !== null &&\n typeof data === 'object' &&\n 'reportFile' in (data as Record<string, unknown>)\n ) {\n const { reportFile, ...rest } = data as Record<string, unknown>\n log.info(`Wrote report to: ${reportFile}`)\n writeResult(JSON.stringify(rest, null, 2) + '\\n')\n return\n }\n // JSON mode emits the full result (including reportFile when present) as pure JSON\n writeResult(JSON.stringify(data, null, 2) + '\\n')\n}\n\n/**\n * Failure output. In JSON mode stdout must still carry parseable JSON —\n * consumers pipe it into jq, and zero bytes is a parse error — so the\n * structured error object IS the result on stdout; the human-readable\n * message goes to stderr in every mode. Exit code stays non-zero (callers\n * set it).\n */\nexport function emitErrorResult(error: unknown, args: { json?: boolean }): void {\n log.error(toErrorMessage(error))\n const jsonMode = args.json || !process.stdout.isTTY\n if (!jsonMode) return\n const payload = { error: { code: errorCode(error), message: toErrorMessage(error) } }\n writeResult(JSON.stringify(payload, null, 2) + '\\n')\n}\n\n/** ToolError/FileIOError carry codes; Node errors expose e.g. ENOENT. */\nfunction errorCode(error: unknown): string {\n if (error instanceof Error) {\n const code = (error as { code?: unknown }).code\n if (typeof code === 'string') return code\n if (error.name === 'ConfigError') return 'CONFIG_ERROR'\n }\n return 'UNKNOWN_ERROR'\n}\n\n/** Provider selection flags shared by the translate commands. */\nexport const providerArgs = {\n provider: { type: 'string' as const, description: 'LLM provider: \"openai\", \"anthropic\", or \"google\". Required for automatic translation.', valueHint: 'openai|anthropic|google' },\n model: { type: 'string' as const, description: 'Model name (required when --provider is set)' },\n apiKey: { type: 'string' as const, description: 'API key (falls back to OPENAI_API_KEY / ANTHROPIC_API_KEY / GEMINI_API_KEY env).' },\n baseUrl: { type: 'string' as const, description: `Provider base URL for gateways, self-hosted models and proxies speaking the provider's protocol. Falls back to ${BASE_URL_ENV}, then providerBaseUrl in .i18n-mcp.json. Not supported by \"google\".` },\n}\n\n/**\n * Build a TranslateFn from the provider flags, or undefined when no provider\n * was given (agent mode). The base URL resolves flag > env > project config;\n * the config file is only read when neither of the first two is set, so a\n * fully-flagged invocation never depends on config discovery.\n */\nexport async function resolveProviderTranslateFn(args: {\n provider?: string\n model?: string\n apiKey?: string\n baseUrl?: string\n projectDir?: string\n}): Promise<TranslateFn | undefined> {\n if (!args.provider) return undefined\n if (!args.model) {\n throw new Error('--model is required when --provider is set')\n }\n\n let baseUrl = resolveProviderBaseUrl({ flag: args.baseUrl, env: process.env[BASE_URL_ENV] })\n if (!baseUrl) {\n const projectConfig = await loadProjectConfig(args.projectDir ?? process.cwd())\n baseUrl = resolveProviderBaseUrl({ config: projectConfig?.providerBaseUrl })\n }\n if (baseUrl) log.debug(`Provider base URL: ${redactBaseUrl(baseUrl)}`)\n\n return createTranslateFn({\n provider: args.provider as LlmProvider,\n model: args.model,\n apiKey: args.apiKey,\n baseUrl,\n })\n}\n\n/**\n * Strip anything secret-shaped from a base URL before it reaches a log.\n * Gateways are routinely addressed as https://user:pass@host or with the key\n * in a query parameter, so keep only origin and path.\n */\nexport function redactBaseUrl(raw: string): string {\n let url: URL\n try {\n url = new URL(raw)\n } catch {\n return '<unparseable base URL>'\n }\n const credentials = url.username || url.password ? '<redacted>@' : ''\n const query = url.search || url.hash ? ' (query redacted)' : ''\n return `${url.protocol}//${credentials}${url.host}${url.pathname}${query}`\n}\n\n/** Split a comma-separated string into a trimmed array, or return undefined */\nexport function splitList(val: string | undefined): string[] | undefined {\n if (!val) return undefined\n return val.split(',').map(s => s.trim()).filter(Boolean)\n}\n\n/** Parse a JSON string with a user-friendly error */\nexport function parseJsonArg<T = Record<string, Record<string, string>>>(\n value: string,\n argName: string,\n): T {\n try {\n return JSON.parse(value) as T\n } catch (err) {\n const detail = err instanceof SyntaxError ? err.message : String(err)\n throw new Error(`Invalid JSON in --${argName}: ${detail}`)\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"_shared-CkMAydRl.js","names":[],"sources":["../src/commands/_shared.ts"],"sourcesContent":["import { defineCommand } from 'citty'\nimport type { CommandDef } from 'citty'\nimport { log } from '../utils/logger.js'\nimport { toErrorMessage } from '../utils/errors.js'\nimport { writeResult } from '../utils/stdout-guard.js'\nimport { createTranslateFn, resolveProviderBaseUrl, BASE_URL_ENV } from '../llm/providers.js'\nimport type { LlmProvider } from '../llm/providers.js'\nimport type { TranslateFn } from '../core/types.js'\nimport { loadProjectConfig } from '../config/project-config.js'\n\n/** Factory for commands that call an operation and output its result. */\nexport function createCommand(opts: {\n name: string\n description: string\n args?: Record<string, unknown>\n /**\n * CI gates this command evaluates. The factory reads the requesting flag off\n * args and evaluates every gate uniformly, so no command grows bespoke exit\n * logic. Declaring a flagged gate does not add its flag — pair each spec\n * with an entry in `args`. A spec without a flag is always evaluated.\n */\n gates?: GateSpec[]\n /**\n * Receives citty's parsed args. `any` is deliberate: each command declares\n * its own `args` shape and citty does not thread that type through to the\n * handler, so narrowing here only moves the cast into all nineteen command\n * modules. The shape is validated by citty against the `args` above.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- see above\n run: (args: any) => Promise<unknown>\n}): CommandDef {\n // Retained on the definition, not only consumed here: the generated CLI\n // reference has to state which commands fail a build on findings, and a gate\n // with no flag leaves no trace in the arg descriptions to infer it from.\n return withGates(defineCommand({\n meta: { name: opts.name, description: opts.description },\n args: { ...sharedArgs, ...(opts.args ?? {}) },\n async run({ args }) {\n try {\n const result = await opts.run(args)\n const decision = resolveExitCode(result, requestedGates(opts.gates ?? [], args), isTotalFailure(result))\n outputResult(withGateReport(result, decision.tripped), args)\n // Assign only on a non-zero decision: a clean run must leave the exit\n // code exactly as it found it, as it did before gates existed.\n if (decision.code !== EXIT_SUCCESS) process.exitCode = decision.code\n } catch (error) {\n emitErrorResult(error, args)\n process.exitCode = EXIT_RUN_FAILED\n }\n },\n }) as CommandDef, opts.gates ?? [])\n}\n\n/**\n * A command definition carrying the gates its factory evaluates. Read\n * structurally by the reference generator rather than by importing this type,\n * which would make the docs build depend on the CLI's internals.\n */\ninterface GatedCommandDef extends CommandDef {\n gates: GateSpec[]\n}\n\nfunction withGates(def: CommandDef, gates: GateSpec[]): GatedCommandDef {\n return Object.assign(def, { gates })\n}\n\n/** The run succeeded and no gate tripped. */\nexport const EXIT_SUCCESS = 0\n/** The run itself failed — a bad API key, an unreadable project, a total translate failure. */\nexport const EXIT_RUN_FAILED = 1\n/** The run succeeded but a requested gate tripped — findings exist, the tool worked. */\nexport const EXIT_GATE_TRIPPED = 2\n\n/**\n * A CI gate a command evaluates. `counter` is the field of `result.summary`\n * carrying the observed value.\n *\n * The two shapes are a union rather than one type with optional halves so the\n * invariants hold at compile time: a flagged gate always has a flag to read\n * its name and threshold from, and a flagless one always carries both itself.\n * Stated as options, `{ counter, threshold }` type-checks and then has no name\n * to report the gate under.\n */\nexport type GateSpec = FlaggedGateSpec | AlwaysOnGateSpec\n\ninterface GateSpecBase {\n counter: string\n /** 'above' trips when observed > threshold (default); 'below' when observed < threshold. */\n direction?: 'above' | 'below'\n}\n\n/**\n * Requested by a flag, and evaluated only when that flag is passed. Omitting\n * `threshold` takes it from the flag's own value, so a boolean flag pairs with\n * `threshold: 0` and a numeric one (`--fail-under 90`) omits it.\n */\nexport interface FlaggedGateSpec extends GateSpecBase {\n flag: string\n name?: never\n threshold?: number\n}\n\n/**\n * Always evaluated, for findings that are a defect rather than a threshold — a\n * key that renders raw in production is not something you opt into caring\n * about. It still reports as a gate: the run succeeded, and what it found is\n * what you are being told about.\n */\nexport interface AlwaysOnGateSpec extends GateSpecBase {\n flag?: never\n name: string\n threshold: number\n}\n\n/** A gate the caller asked for, with its threshold already resolved. */\nexport interface RequestedGate {\n name: string\n counter: string\n direction: 'above' | 'below'\n threshold: number\n}\n\n/** A gate that tripped, as reported in the result. */\nexport interface TrippedGate extends RequestedGate {\n observed: number\n}\n\nexport interface ExitDecision {\n code: typeof EXIT_SUCCESS | typeof EXIT_RUN_FAILED | typeof EXIT_GATE_TRIPPED\n tripped: TrippedGate[]\n}\n\n/**\n * Pure decision from an operation result plus the gates the caller requested\n * to an exit code. A failed run outranks a tripped gate — exit 1 wins over\n * exit 2 — and gates are not even consulted in that case, because counters\n * from a run that fell over say nothing about the project.\n */\nexport function resolveExitCode(\n result: unknown,\n gates: RequestedGate[],\n runFailed = false,\n): ExitDecision {\n if (runFailed) return { code: EXIT_RUN_FAILED, tripped: [] }\n\n const tripped: TrippedGate[] = []\n for (const gate of gates) {\n const observed = observedValue(result, gate.counter)\n if (observed === undefined || !trips(gate, observed)) continue\n tripped.push({ ...gate, observed })\n }\n\n return {\n code: tripped.length > 0 ? EXIT_GATE_TRIPPED : EXIT_SUCCESS,\n tripped,\n }\n}\n\n/**\n * Read a gate's counter off result.summary. Works on inline results and on\n * the { reportFile, summary } shape alike, since both carry the summary.\n * A missing or non-numeric counter yields undefined and never trips a gate.\n */\nfunction observedValue(result: unknown, counter: string): number | undefined {\n if (result === null || typeof result !== 'object') return undefined\n const summary = (result as Record<string, unknown>).summary\n if (summary === null || typeof summary !== 'object') return undefined\n const value = (summary as Record<string, unknown>)[counter]\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction trips(gate: RequestedGate, observed: number): boolean {\n return gate.direction === 'below' ? observed < gate.threshold : observed > gate.threshold\n}\n\n/** Filter the declared gates down to the ones this invocation asked for. */\nfunction requestedGates(specs: GateSpec[], args: Record<string, unknown>): RequestedGate[] {\n const requested: RequestedGate[] = []\n for (const spec of specs) {\n const resolved = spec.flag === undefined\n ? { name: spec.name, threshold: spec.threshold }\n : { name: kebabCase(spec.flag), threshold: thresholdFromFlag(spec, args) }\n if (resolved.threshold === undefined || !Number.isFinite(resolved.threshold)) continue\n requested.push({\n name: resolved.name,\n counter: spec.counter,\n direction: spec.direction ?? 'above',\n threshold: resolved.threshold,\n })\n }\n return requested\n}\n\n/** The gate's threshold, or undefined when this invocation did not ask for it. */\nfunction thresholdFromFlag(spec: FlaggedGateSpec, args: Record<string, unknown>): number | undefined {\n const raw = args[spec.flag]\n if (raw === undefined || raw === null || raw === false || raw === '') return undefined\n return spec.threshold ?? Number(raw)\n}\n\n/**\n * Name a tripped gate by the flag that requested it, so the JSON says\n * \"fail-on-missing\" — what the user typed — rather than \"failOnMissing\".\n */\nfunction kebabCase(flag: string): string {\n return flag.replace(/[A-Z]/g, c => `-${c.toLowerCase()}`)\n}\n\n/**\n * Attach the gate report without disturbing the rest of the result: consumers\n * parsing today's shape keep working, and a run where nothing tripped is\n * byte-for-byte what it was before gates existed.\n */\nfunction withGateReport(result: unknown, tripped: TrippedGate[]): unknown {\n if (tripped.length === 0) return result\n if (result === null || typeof result !== 'object' || Array.isArray(result)) return result\n return { ...(result as Record<string, unknown>), gatesTripped: tripped }\n}\n\n/**\n * True when a run completed but achieved nothing: failures present and zero\n * successes. Covers translate-missing-style results (summary.totalFailed /\n * summary.totalTranslated) and translate-key-style results (top-level\n * failed[] / translated[]). Results without those fields are never a\n * total failure, so unrelated commands are unaffected.\n */\nexport function isTotalFailure(result: unknown): boolean {\n if (result === null || typeof result !== 'object') return false\n const r = result as Record<string, unknown>\n\n const summary = r.summary\n if (summary !== null && typeof summary === 'object') {\n const s = summary as Record<string, unknown>\n if (typeof s.totalFailed === 'number' && typeof s.totalTranslated === 'number') {\n return s.totalFailed > 0 && s.totalTranslated === 0\n }\n }\n\n if (Array.isArray(r.failed) && Array.isArray(r.translated)) {\n return r.failed.length > 0 && r.translated.length === 0\n }\n\n return false\n}\n\nconst sharedArgs = {\n projectDir: {\n type: 'string' as const,\n alias: 'd',\n description: 'Project directory (default: cwd)',\n },\n json: {\n type: 'boolean' as const,\n description: 'Output as JSON (default for non-TTY)',\n default: false,\n },\n}\n\n/** Output result — stdout always carries the result, machine-parseable when piped/--json */\nfunction outputResult(data: unknown, args: { json?: boolean }): void {\n const jsonMode = args.json || !process.stdout.isTTY\n if (\n !jsonMode &&\n data !== null &&\n typeof data === 'object' &&\n 'reportFile' in (data as Record<string, unknown>)\n ) {\n const { reportFile, ...rest } = data as Record<string, unknown>\n log.info(`Wrote report to: ${reportFile}`)\n writeResult(JSON.stringify(rest, null, 2) + '\\n')\n return\n }\n // JSON mode emits the full result (including reportFile when present) as pure JSON\n writeResult(JSON.stringify(data, null, 2) + '\\n')\n}\n\n/**\n * Failure output. In JSON mode stdout must still carry parseable JSON —\n * consumers pipe it into jq, and zero bytes is a parse error — so the\n * structured error object IS the result on stdout; the human-readable\n * message goes to stderr in every mode. Exit code stays non-zero (callers\n * set it).\n */\nexport function emitErrorResult(error: unknown, args: { json?: boolean }): void {\n log.error(toErrorMessage(error))\n const jsonMode = args.json || !process.stdout.isTTY\n if (!jsonMode) return\n const payload = { error: { code: errorCode(error), message: toErrorMessage(error) } }\n writeResult(JSON.stringify(payload, null, 2) + '\\n')\n}\n\n/** ToolError/FileIOError carry codes; Node errors expose e.g. ENOENT. */\nfunction errorCode(error: unknown): string {\n if (error instanceof Error) {\n const code = (error as { code?: unknown }).code\n if (typeof code === 'string') return code\n if (error.name === 'ConfigError') return 'CONFIG_ERROR'\n }\n return 'UNKNOWN_ERROR'\n}\n\n/** Provider selection flags shared by the translate commands. */\nexport const providerArgs = {\n provider: { type: 'string' as const, description: 'LLM provider: \"openai\", \"anthropic\", or \"google\". Required for automatic translation.', valueHint: 'openai|anthropic|google' },\n model: { type: 'string' as const, description: 'Model name (required when --provider is set)' },\n apiKey: { type: 'string' as const, description: 'API key (falls back to OPENAI_API_KEY / ANTHROPIC_API_KEY / GEMINI_API_KEY env).' },\n baseUrl: { type: 'string' as const, description: `Provider base URL for gateways, self-hosted models and proxies speaking the provider's protocol. Falls back to ${BASE_URL_ENV}, then providerBaseUrl in .i18n-mcp.json. Not supported by \"google\".` },\n}\n\n/**\n * Build a TranslateFn from the provider flags, or undefined when no provider\n * was given (agent mode). The base URL resolves flag > env > project config;\n * the config file is only read when neither of the first two is set, so a\n * fully-flagged invocation never depends on config discovery.\n */\nexport async function resolveProviderTranslateFn(args: {\n provider?: string\n model?: string\n apiKey?: string\n baseUrl?: string\n projectDir?: string\n}): Promise<TranslateFn | undefined> {\n if (!args.provider) return undefined\n if (!args.model) {\n throw new Error('--model is required when --provider is set')\n }\n\n let baseUrl = resolveProviderBaseUrl({ flag: args.baseUrl, env: process.env[BASE_URL_ENV] })\n if (!baseUrl) {\n const projectConfig = await loadProjectConfig(args.projectDir ?? process.cwd())\n baseUrl = resolveProviderBaseUrl({ config: projectConfig?.providerBaseUrl })\n }\n if (baseUrl) log.debug(`Provider base URL: ${redactBaseUrl(baseUrl)}`)\n\n return createTranslateFn({\n provider: args.provider as LlmProvider,\n model: args.model,\n apiKey: args.apiKey,\n baseUrl,\n })\n}\n\n/**\n * Strip anything secret-shaped from a base URL before it reaches a log.\n * Gateways are routinely addressed as https://user:pass@host or with the key\n * in a query parameter, so keep only origin and path.\n */\nexport function redactBaseUrl(raw: string): string {\n let url: URL\n try {\n url = new URL(raw)\n } catch {\n return '<unparseable base URL>'\n }\n const credentials = url.username || url.password ? '<redacted>@' : ''\n const query = url.search || url.hash ? ' (query redacted)' : ''\n return `${url.protocol}//${credentials}${url.host}${url.pathname}${query}`\n}\n\n/** Split a comma-separated string into a trimmed array, or return undefined */\nexport function splitList(val: string | undefined): string[] | undefined {\n if (!val) return undefined\n return val.split(',').map(s => s.trim()).filter(Boolean)\n}\n\n/** Parse a JSON string with a user-friendly error */\nexport function parseJsonArg<T = Record<string, Record<string, string>>>(\n value: string,\n argName: string,\n): T {\n try {\n return JSON.parse(value) as T\n } catch (err) {\n const detail = err instanceof SyntaxError ? err.message : String(err)\n throw new Error(`Invalid JSON in --${argName}: ${detail}`)\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./stdout-guard-sJHFWVem.js";
|
|
2
|
-
import { c as addTranslations } from "./operations-
|
|
3
|
-
import "./providers-
|
|
2
|
+
import { c as addTranslations } from "./operations-PfRSTepi.js";
|
|
3
|
+
import "./providers-CAsU_aV1.js";
|
|
4
4
|
import "./php-reader-3Fgw80zK.js";
|
|
5
|
-
import { r as parseJsonArg, t as createCommand } from "./_shared-
|
|
5
|
+
import { r as parseJsonArg, t as createCommand } from "./_shared-CkMAydRl.js";
|
|
6
6
|
//#region src/commands/add.ts
|
|
7
7
|
var add_default = createCommand({
|
|
8
8
|
name: "add",
|
|
@@ -37,4 +37,4 @@ var add_default = createCommand({
|
|
|
37
37
|
//#endregion
|
|
38
38
|
export { add_default as default };
|
|
39
39
|
|
|
40
|
-
//# sourceMappingURL=add-
|
|
40
|
+
//# sourceMappingURL=add-BBoVUNEq.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-
|
|
1
|
+
{"version":3,"file":"add-BBoVUNEq.js","names":[],"sources":["../src/commands/add.ts"],"sourcesContent":["import { createCommand, parseJsonArg } from './_shared.js'\nimport { addTranslations } from '../core/operations.js'\n\nexport default createCommand({\n name: 'add',\n description: 'Add new translation keys (skips keys that already exist)',\n args: {\n layer: { type: 'string', description: 'Layer name', required: true },\n translations: { type: 'string', description: 'JSON: { \"key\": { \"en\": \"val\", \"de\": \"val\" } }', required: true },\n dryRun: { type: 'boolean', description: 'Preview changes without writing', default: false },\n },\n async run(args) {\n const translations = parseJsonArg<Record<string, Record<string, string>>>(args.translations, 'translations')\n return addTranslations({ layer: args.layer, translations, dryRun: args.dryRun, projectDir: args.projectDir })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,cAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,OAAO;GAAE,MAAM;GAAU,aAAa;GAAc,UAAU;GAAM;EACpE,cAAc;GAAE,MAAM;GAAU,aAAa;GAAiD,UAAU;GAAM;EAC9G,QAAQ;GAAE,MAAM;GAAW,aAAa;GAAmC,SAAS;GAAO;EAC5F;CACD,MAAM,IAAI,MAAM;EACd,MAAM,eAAe,aAAqD,KAAK,cAAc,eAAe;AAC5G,SAAO,gBAAgB;GAAE,OAAO,KAAK;GAAO;GAAc,QAAQ,KAAK;GAAQ,YAAY,KAAK;GAAY,CAAC;;CAEhH,CAAC"}
|
package/dist/bin.js
CHANGED
|
@@ -3,12 +3,7 @@ import { t as guardStdout } from "./stdout-guard-sJHFWVem.js";
|
|
|
3
3
|
//#region src/bin.ts
|
|
4
4
|
const args = process.argv.slice(2);
|
|
5
5
|
if (!(args.includes("--help") || args.includes("-h") || args.includes("--version") || args.includes("-v"))) guardStdout();
|
|
6
|
-
const {
|
|
7
|
-
const { createRequire } = await import("node:module");
|
|
8
|
-
const { name } = createRequire(import.meta.url)("../package.json");
|
|
9
|
-
const notice = renameNotice(name);
|
|
10
|
-
if (notice) process.stderr.write(`[the-i18n-cli] ${notice}\n`);
|
|
11
|
-
const { runCli } = await import("./cli-DsFuVJNP.js");
|
|
6
|
+
const { runCli } = await import("./cli-CnZNGUGu.js");
|
|
12
7
|
await runCli();
|
|
13
8
|
//#endregion
|
|
14
9
|
export {};
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","names":[],"sources":["../src/bin.ts"],"sourcesContent":["#!/usr/bin/env node\n// Install the stdout guard before anything else loads, so third-party logs\n// (e.g. Nuxt modules during config detection) can never pollute the\n// machine-readable output on stdout. Help/version invocations skip the guard:\n// they never load third-party code and their output belongs on stdout\n// (mirrors the flag check in cli.ts, which cannot be imported before the\n// guard decision).\nimport { guardStdout } from './utils/stdout-guard.js'\n\nconst args = process.argv.slice(2)\nconst isHelpOrVersion = args.includes('--help') || args.includes('-h')\n || args.includes('--version') || args.includes('-v')\nif (!isHelpOrVersion) {\n guardStdout()\n}\
|
|
1
|
+
{"version":3,"file":"bin.js","names":[],"sources":["../src/bin.ts"],"sourcesContent":["#!/usr/bin/env node\n// Install the stdout guard before anything else loads, so third-party logs\n// (e.g. Nuxt modules during config detection) can never pollute the\n// machine-readable output on stdout. Help/version invocations skip the guard:\n// they never load third-party code and their output belongs on stdout\n// (mirrors the flag check in cli.ts, which cannot be imported before the\n// guard decision).\nimport { guardStdout } from './utils/stdout-guard.js'\n\nconst args = process.argv.slice(2)\nconst isHelpOrVersion = args.includes('--help') || args.includes('-h')\n || args.includes('--version') || args.includes('-v')\nif (!isHelpOrVersion) {\n guardStdout()\n}\nconst { runCli } = await import('./cli.js')\nawait runCli()\n"],"mappings":";;;AASA,MAAM,OAAO,QAAQ,KAAK,MAAM,EAAE;AAGlC,IAAI,EAFoB,KAAK,SAAS,SAAS,IAAI,KAAK,SAAS,KAAK,IACjE,KAAK,SAAS,YAAY,IAAI,KAAK,SAAS,KAAK,EAEpD,cAAa;AAEf,MAAM,EAAE,WAAW,MAAM,OAAO;AAChC,MAAM,QAAQ"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./stdout-guard-sJHFWVem.js";
|
|
2
|
-
import { t as checkUndefinedKeys } from "./operations-
|
|
3
|
-
import "./providers-
|
|
2
|
+
import { t as checkUndefinedKeys } from "./operations-PfRSTepi.js";
|
|
3
|
+
import "./providers-CAsU_aV1.js";
|
|
4
4
|
import "./php-reader-3Fgw80zK.js";
|
|
5
|
-
import { t as createCommand } from "./_shared-
|
|
5
|
+
import { t as createCommand } from "./_shared-CkMAydRl.js";
|
|
6
6
|
//#region src/commands/check.ts
|
|
7
7
|
var check_default = createCommand({
|
|
8
8
|
name: "check",
|
|
@@ -38,4 +38,4 @@ var check_default = createCommand({
|
|
|
38
38
|
//#endregion
|
|
39
39
|
export { check_default as default };
|
|
40
40
|
|
|
41
|
-
//# sourceMappingURL=check-
|
|
41
|
+
//# sourceMappingURL=check-IosaN_EM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-
|
|
1
|
+
{"version":3,"file":"check-IosaN_EM.js","names":[],"sources":["../src/commands/check.ts"],"sourcesContent":["import { createCommand } from './_shared.js'\nimport { checkUndefinedKeys } from '../core/operations.js'\n\nexport default createCommand({\n name: 'check',\n description: 'Find keys referenced in code but defined in no consumed locale layer (they render as raw keys); findings trip an always-on gate and exit 2, distinct from exit 1 for a run that failed',\n args: {\n locale: { type: 'string', description: 'Reference locale to resolve definitions in (default: project default)' },\n outputFile: { type: 'string', description: 'Write full output to this file path and return only a summary (useful for large outputs)' },\n codequalityOutput: { type: 'string', description: 'Also write the findings as a GitLab Code Quality (CodeClimate) JSON report to this file path' },\n },\n /**\n * Always on, and a gate rather than a run failure. A key that renders raw in\n * production is a defect, so there is no flag to opt into caring about it —\n * but it is still a finding, and reporting it as exit 1 left the caller\n * unable to tell an undefined key from a scan that fell over (#369).\n *\n * Reads summary.undefinedCount, so it trips on inline results and on the\n * { reportFile, summary } shape alike. Uncertain findings never trip it.\n */\n gates: [{ name: 'undefined-keys', counter: 'undefinedCount', threshold: 0 }],\n async run(args) {\n return checkUndefinedKeys({\n locale: args.locale,\n projectDir: args.projectDir,\n outputFile: args.outputFile,\n codequalityOutput: args.codequalityOutput,\n })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,gBAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,QAAQ;GAAE,MAAM;GAAU,aAAa;GAAyE;EAChH,YAAY;GAAE,MAAM;GAAU,aAAa;GAA4F;EACvI,mBAAmB;GAAE,MAAM;GAAU,aAAa;GAAgG;EACnJ;CAUD,OAAO,CAAC;EAAE,MAAM;EAAkB,SAAS;EAAkB,WAAW;EAAG,CAAC;CAC5E,MAAM,IAAI,MAAM;AACd,SAAO,mBAAmB;GACxB,QAAQ,KAAK;GACb,YAAY,KAAK;GACjB,YAAY,KAAK;GACjB,mBAAmB,KAAK;GACzB,CAAC;;CAEL,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import "./stdout-guard-sJHFWVem.js";
|
|
2
|
+
import "./providers-CAsU_aV1.js";
|
|
3
|
+
import { n as emitErrorResult } from "./_shared-CkMAydRl.js";
|
|
4
|
+
import { createRequire } from "node:module";
|
|
5
|
+
import { defineCommand, runCommand, runMain } from "citty";
|
|
6
|
+
//#region src/commands/index.ts
|
|
7
|
+
const command = (load) => ({ load: () => load().then((m) => m.default) });
|
|
8
|
+
const commands$1 = {
|
|
9
|
+
"init": command(() => import("./init-BRBMkcI0.js")),
|
|
10
|
+
"detect": command(() => import("./detect-3jjcQJs1.js")),
|
|
11
|
+
"list-dirs": command(() => import("./list-dirs-BMuByyuX.js")),
|
|
12
|
+
"get": command(() => import("./get-Cr5O5zJX.js")),
|
|
13
|
+
"write": command(() => import("./write-B8z6I5Vf.js")),
|
|
14
|
+
"add": command(() => import("./add-BBoVUNEq.js")),
|
|
15
|
+
"update": command(() => import("./update-BQuGxSSy.js")),
|
|
16
|
+
"missing": command(() => import("./missing-CBOk4ZgD.js")),
|
|
17
|
+
"status": command(() => import("./status-DprS-qDC.js")),
|
|
18
|
+
"empty": command(() => import("./empty-D3La0enO.js")),
|
|
19
|
+
"search": command(() => import("./search-CrkLgz3m.js")),
|
|
20
|
+
"remove": command(() => import("./remove-CVBjJV9h.js")),
|
|
21
|
+
"rename": command(() => import("./rename-CN2ajUeb.js")),
|
|
22
|
+
"move": command(() => import("./move-DOdPKnOV.js")),
|
|
23
|
+
"translate": command(() => import("./translate-Cs6EdbzA.js")),
|
|
24
|
+
"translate-missing": { load: () => import("./translate-Cs6EdbzA.js").then((m) => {
|
|
25
|
+
const def = m.default;
|
|
26
|
+
return {
|
|
27
|
+
...def,
|
|
28
|
+
meta: {
|
|
29
|
+
...def.meta,
|
|
30
|
+
name: "translate-missing",
|
|
31
|
+
description: "Alias of \"translate\" — matches the MCP tool translate_missing."
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}) },
|
|
35
|
+
"translate-key": command(() => import("./translate-key-BBZpYQjL.js")),
|
|
36
|
+
"scan": command(() => import("./scan-Bhv0Nmy3.js")),
|
|
37
|
+
"check": command(() => import("./check-IosaN_EM.js")),
|
|
38
|
+
"find-duplicates": command(() => import("./find-duplicates-BlQoJDgu.js")),
|
|
39
|
+
"remove-orphans": command(() => import("./remove-orphans-BaKEISxA.js")),
|
|
40
|
+
"scaffold": command(() => import("./scaffold-CUKUFuEy.js"))
|
|
41
|
+
};
|
|
42
|
+
//#endregion
|
|
43
|
+
//#region src/cli.ts
|
|
44
|
+
const commands = Object.fromEntries(Object.entries(commands$1).filter(([, entry]) => !entry.hidden).map(([name, entry]) => [name, entry.load]));
|
|
45
|
+
const { version, description } = createRequire(import.meta.url)("../package.json");
|
|
46
|
+
const main = defineCommand({
|
|
47
|
+
meta: {
|
|
48
|
+
name: "the-i18n-cli",
|
|
49
|
+
version,
|
|
50
|
+
description
|
|
51
|
+
},
|
|
52
|
+
subCommands: commands
|
|
53
|
+
});
|
|
54
|
+
async function runCli() {
|
|
55
|
+
const rawArgs = process.argv.slice(2);
|
|
56
|
+
if (rawArgs.includes("--help") || rawArgs.includes("-h") || rawArgs.includes("--version") || rawArgs.includes("-v")) {
|
|
57
|
+
await runMain(main);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
await runCommand(main, { rawArgs });
|
|
62
|
+
} catch (error) {
|
|
63
|
+
emitErrorResult(error, { json: rawArgs.includes("--json") });
|
|
64
|
+
process.exitCode = 1;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//#endregion
|
|
68
|
+
export { runCli };
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=cli-CnZNGUGu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-CnZNGUGu.js","names":["commands","allCommands"],"sources":["../src/commands/index.ts","../src/cli.ts"],"sourcesContent":["import type { CommandDef } from 'citty'\n\n/**\n * A registered command: its lazy loader, and whether the CLI exposes it.\n *\n * `hidden` sits on the entry rather than in a separate set so that adding a\n * command is one edit and the default is to be reachable. The set it replaced\n * lived in `cli.ts`, out of sight of anyone adding a command here, and the one\n * time it and the registry disagreed a documented command became uninvokable\n * (#307).\n */\nexport interface CommandEntry {\n load: () => Promise<CommandDef>\n /**\n * Kept out of the executed map, not merely out of `--help`: a hidden name\n * cannot be invoked at all. Nothing is hidden today; every command an MCP\n * tool pairs with must be invocable from the terminal, or the docs describe\n * a command that does not exist.\n */\n hidden?: true\n}\n\nconst command = (load: () => Promise<{ default: unknown }>): CommandEntry => ({\n load: () => load().then(m => m.default as CommandDef),\n})\n\nexport const commands = {\n 'init': command(() => import('./init.js')),\n 'detect': command(() => import('./detect.js')),\n 'list-dirs': command(() => import('./list-dirs.js')),\n 'get': command(() => import('./get.js')),\n 'write': command(() => import('./write.js')),\n 'add': command(() => import('./add.js')),\n 'update': command(() => import('./update.js')),\n 'missing': command(() => import('./missing.js')),\n 'status': command(() => import('./status.js')),\n 'empty': command(() => import('./empty.js')),\n 'search': command(() => import('./search.js')),\n 'remove': command(() => import('./remove.js')),\n 'rename': command(() => import('./rename.js')),\n 'move': command(() => import('./move.js')),\n 'translate': command(() => import('./translate.js')),\n // Alias: same operation as `translate`, named to match the MCP tool\n // translate_missing so docs can use one name across both surfaces.\n 'translate-missing': {\n load: () => import('./translate.js').then((m) => {\n const def = m.default as CommandDef\n return {\n ...def,\n meta: { ...(def.meta as object), name: 'translate-missing', description: 'Alias of \"translate\" — matches the MCP tool translate_missing.' },\n } as CommandDef\n }),\n },\n 'translate-key': command(() => import('./translate-key.js')),\n // Deliberately exposed: key-usage scanning has no other route on either\n // surface, so hiding it made a documented command unreachable (#307).\n 'scan': command(() => import('./scan.js')),\n 'check': command(() => import('./check.js')),\n 'find-duplicates': command(() => import('./find-duplicates.js')),\n 'remove-orphans': command(() => import('./remove-orphans.js')),\n 'scaffold': command(() => import('./scaffold.js')),\n} as const satisfies Record<string, CommandEntry>\n\n/** The names the CLI wires into citty — everything not marked hidden. */\nexport function exposedCommandNames(): string[] {\n return Object.entries(commands)\n .filter(([, entry]) => !(entry as CommandEntry).hidden)\n .map(([name]) => name)\n}\n","import { createRequire } from 'node:module'\nimport { defineCommand, runCommand, runMain } from 'citty'\nimport { commands as allCommands } from './commands/index.js'\nimport type { CommandEntry } from './commands/index.js'\nimport { emitErrorResult } from './commands/_shared.js'\n\n// Which commands are hidden is declared on the registry entries themselves, so\n// there is no second list here to fall out of step with it (#370).\nconst commands = Object.fromEntries(\n Object.entries(allCommands as Record<string, CommandEntry>)\n .filter(([, entry]) => !entry.hidden)\n .map(([name, entry]) => [name, entry.load]),\n)\n\nconst require = createRequire(import.meta.url)\nconst { version, description } = require('../package.json') as { version: string; description: string }\n\nconst main = defineCommand({\n meta: {\n name: 'the-i18n-cli',\n version,\n description,\n },\n subCommands: commands,\n})\n\nexport async function runCli(): Promise<void> {\n const rawArgs = process.argv.slice(2)\n\n // Let citty handle --help and --version natively (pretty-printed usage)\n if (rawArgs.includes('--help') || rawArgs.includes('-h')\n || rawArgs.includes('--version') || rawArgs.includes('-v')) {\n await runMain(main)\n return\n }\n\n // For normal execution, use runCommand so we control error output.\n // Command run() errors are handled inside createCommand; this catch only\n // sees pre-run failures (unknown command, argument parsing) — those must\n // also keep stdout parseable in JSON mode.\n try {\n await runCommand(main, { rawArgs })\n } catch (error: unknown) {\n emitErrorResult(error, { json: rawArgs.includes('--json') })\n process.exitCode = 1\n }\n}\n"],"mappings":";;;;;;AAsBA,MAAM,WAAW,UAA6D,EAC5E,YAAY,MAAM,CAAC,MAAK,MAAK,EAAE,QAAsB,EACtD;AAED,MAAaA,aAAW;CACtB,QAAQ,cAAc,OAAO,sBAAa;CAC1C,UAAU,cAAc,OAAO,wBAAe;CAC9C,aAAa,cAAc,OAAO,2BAAkB;CACpD,OAAO,cAAc,OAAO,qBAAY;CACxC,SAAS,cAAc,OAAO,uBAAc;CAC5C,OAAO,cAAc,OAAO,qBAAY;CACxC,UAAU,cAAc,OAAO,wBAAe;CAC9C,WAAW,cAAc,OAAO,yBAAgB;CAChD,UAAU,cAAc,OAAO,wBAAe;CAC9C,SAAS,cAAc,OAAO,uBAAc;CAC5C,UAAU,cAAc,OAAO,wBAAe;CAC9C,UAAU,cAAc,OAAO,wBAAe;CAC9C,UAAU,cAAc,OAAO,wBAAe;CAC9C,QAAQ,cAAc,OAAO,sBAAa;CAC1C,aAAa,cAAc,OAAO,2BAAkB;CAGpD,qBAAqB,EACnB,YAAY,OAAO,2BAAkB,MAAM,MAAM;EAC/C,MAAM,MAAM,EAAE;AACd,SAAO;GACL,GAAG;GACH,MAAM;IAAE,GAAI,IAAI;IAAiB,MAAM;IAAqB,aAAa;IAAkE;GAC5I;GACD,EACH;CACD,iBAAiB,cAAc,OAAO,+BAAsB;CAG5D,QAAQ,cAAc,OAAO,sBAAa;CAC1C,SAAS,cAAc,OAAO,uBAAc;CAC5C,mBAAmB,cAAc,OAAO,iCAAwB;CAChE,kBAAkB,cAAc,OAAO,gCAAuB;CAC9D,YAAY,cAAc,OAAO,0BAAiB;CACnD;;;ACrDD,MAAM,WAAW,OAAO,YACtB,OAAO,QAAQC,WAA4C,CACxD,QAAQ,GAAG,WAAW,CAAC,MAAM,OAAO,CACpC,KAAK,CAAC,MAAM,WAAW,CAAC,MAAM,MAAM,KAAK,CAAC,CAC9C;AAGD,MAAM,EAAE,SAAS,gBADD,cAAc,OAAO,KAAK,IAAI,CACL,kBAAkB;AAE3D,MAAM,OAAO,cAAc;CACzB,MAAM;EACJ,MAAM;EACN;EACA;EACD;CACD,aAAa;CACd,CAAC;AAEF,eAAsB,SAAwB;CAC5C,MAAM,UAAU,QAAQ,KAAK,MAAM,EAAE;AAGrC,KAAI,QAAQ,SAAS,SAAS,IAAI,QAAQ,SAAS,KAAK,IACnD,QAAQ,SAAS,YAAY,IAAI,QAAQ,SAAS,KAAK,EAAE;AAC5D,QAAM,QAAQ,KAAK;AACnB;;AAOF,KAAI;AACF,QAAM,WAAW,MAAM,EAAE,SAAS,CAAC;UAC5B,OAAgB;AACvB,kBAAgB,OAAO,EAAE,MAAM,QAAQ,SAAS,SAAS,EAAE,CAAC;AAC5D,UAAQ,WAAW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-intl-routing-
|
|
1
|
+
{"version":3,"file":"next-intl-routing-lExp4Q3r.d.ts","names":[],"sources":["../../../../src/config/framework/stubs/next-intl-routing.ts"],"sourcesContent":[],"mappings":";;AAcA;;;;;;;;;;;;;iBAAgB,yBAAyB,IAAI"}
|
|
@@ -22,4 +22,4 @@ declare const unpluginVueI18n: typeof record;
|
|
|
22
22
|
//# sourceMappingURL=unplugin-vue-i18n.d.ts.map
|
|
23
23
|
//#endregion
|
|
24
24
|
export { RECORDED, record as default, unpluginVueI18n, vueI18n };
|
|
25
|
-
//# sourceMappingURL=unplugin-vue-i18n-
|
|
25
|
+
//# sourceMappingURL=unplugin-vue-i18n-mH7YdYqA.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unplugin-vue-i18n-
|
|
1
|
+
{"version":3,"file":"unplugin-vue-i18n-mH7YdYqA.d.ts","names":[],"sources":["../../../../src/config/framework/stubs/unplugin-vue-i18n.ts"],"sourcesContent":[],"mappings":";;AAcA;AAA4E;AAQ5E;AACA;;;;;;;;;;cATa;iBAEJ,MAAA;;;cAMI,gBAAO;cACP,wBAAe"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as LocaleDir, i as LocaleDefinition, n as defineI18nKitConfig, o as ProjectConfig, r as I18nConfig, t as I18nKitConfig } from "./define-config-
|
|
1
|
+
import { a as LocaleDir, i as LocaleDefinition, n as defineI18nKitConfig, o as ProjectConfig, r as I18nConfig, t as I18nKitConfig } from "./define-config-DW-rgsU6.js";
|
|
2
2
|
export { I18nConfig, I18nKitConfig, LocaleDefinition, LocaleDir, ProjectConfig, defineI18nKitConfig };
|
|
@@ -146,4 +146,4 @@ type I18nKitConfig = ProjectConfig;
|
|
|
146
146
|
declare function defineI18nKitConfig(config: I18nKitConfig): I18nKitConfig;
|
|
147
147
|
//#endregion
|
|
148
148
|
export { LocaleDir as a, LocaleDefinition as i, defineI18nKitConfig as n, ProjectConfig as o, I18nConfig as r, LocaleFileFormat as s, I18nKitConfig as t };
|
|
149
|
-
//# sourceMappingURL=define-config-
|
|
149
|
+
//# sourceMappingURL=define-config-DW-rgsU6.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-config-
|
|
1
|
+
{"version":3,"file":"define-config-DW-rgsU6.d.ts","names":[],"sources":["../src/adapters/types.ts","../src/config/types.ts","../src/define-config.ts"],"sourcesContent":[],"mappings":";AAEY,KAAA,gBAAA,GAAgB,MAAA,GAAA,WAAA;;;AAA5B;;;UCGiB,gBAAA;EAAA;EAcA,IAAA,EAAA,MAAS;EAWT;EAaA,QAAA,EAAA,MAAa;EAAA;MAMf,CAAA,EAAA,MAAA;;MAUC,CAAA,EAAA,MAAA;;;;;AAiCK,UAzEJ,SAAA,CAyEI;EAAgB;EAapB,IAAA,EAAA,MAAA;EAAU;OAQT,EAAA,MAAA;;cAIJ,EAAA,MAAA;;SAMO,CAAA,EAAA,MAAA;;AAEN,UA/FE,OAAA,CA+FF;;;;ECzGH,OAAA,EAAA,MAAA;EAQI;EAAmB,MAAA,EAAA,MAAA,EAAA;;;;;;UDelB,aAAA;;;;;;eAMF;;;;;;aAMF;;;;gBAIG;;;;;;aAMH;;;MAAuC;;eAErC;;;;;;;;;;;eAWA;;;;;;;;;;;;;;;;;qBAcM;;;;;;;;;;;;UAaJ,UAAA;;;;;;;;kBAQC;;WAEP;;cAEG;;;;kBAII;;qBAEG;;QAEb;;;;;;;;;AApBS,KCrFL,aAAA,GAAgB,aDqFD;;;;;;;AAoBnB,iBCjGQ,mBAAA,CDiGR,MAAA,ECjGoC,aDiGpC,CAAA,ECjGoD,aDiGpD"}
|
package/dist/define-config.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './define-config-
|
|
1
|
+
export * from './define-config-BeHvSYBP.d.ts';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./stdout-guard-sJHFWVem.js";
|
|
2
|
-
import { C as detectConfig } from "./operations-
|
|
3
|
-
import "./providers-
|
|
2
|
+
import { C as detectConfig } from "./operations-PfRSTepi.js";
|
|
3
|
+
import "./providers-CAsU_aV1.js";
|
|
4
4
|
import "./php-reader-3Fgw80zK.js";
|
|
5
|
-
import { t as createCommand } from "./_shared-
|
|
5
|
+
import { t as createCommand } from "./_shared-CkMAydRl.js";
|
|
6
6
|
//#region src/commands/detect.ts
|
|
7
7
|
var detect_default = createCommand({
|
|
8
8
|
name: "detect",
|
|
@@ -14,4 +14,4 @@ var detect_default = createCommand({
|
|
|
14
14
|
//#endregion
|
|
15
15
|
export { detect_default as default };
|
|
16
16
|
|
|
17
|
-
//# sourceMappingURL=detect-
|
|
17
|
+
//# sourceMappingURL=detect-3jjcQJs1.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect-
|
|
1
|
+
{"version":3,"file":"detect-3jjcQJs1.js","names":[],"sources":["../src/commands/detect.ts"],"sourcesContent":["import { createCommand } from './_shared.js'\nimport { detectConfig } from '../core/operations.js'\n\nexport default createCommand({\n name: 'detect',\n description: 'Detect i18n configuration from the project',\n async run(args) {\n return detectConfig(args.projectDir)\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,iBAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM,IAAI,MAAM;AACd,SAAO,aAAa,KAAK,WAAW;;CAEvC,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./stdout-guard-sJHFWVem.js";
|
|
2
|
-
import { w as findEmptyTranslations } from "./operations-
|
|
3
|
-
import "./providers-
|
|
2
|
+
import { w as findEmptyTranslations } from "./operations-PfRSTepi.js";
|
|
3
|
+
import "./providers-CAsU_aV1.js";
|
|
4
4
|
import "./php-reader-3Fgw80zK.js";
|
|
5
|
-
import { t as createCommand } from "./_shared-
|
|
5
|
+
import { t as createCommand } from "./_shared-CkMAydRl.js";
|
|
6
6
|
//#region src/commands/empty.ts
|
|
7
7
|
var empty_default = createCommand({
|
|
8
8
|
name: "empty",
|
|
@@ -33,4 +33,4 @@ var empty_default = createCommand({
|
|
|
33
33
|
//#endregion
|
|
34
34
|
export { empty_default as default };
|
|
35
35
|
|
|
36
|
-
//# sourceMappingURL=empty-
|
|
36
|
+
//# sourceMappingURL=empty-D3La0enO.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty-
|
|
1
|
+
{"version":3,"file":"empty-D3La0enO.js","names":[],"sources":["../src/commands/empty.ts"],"sourcesContent":["import { createCommand } from './_shared.js'\nimport { findEmptyTranslations } from '../core/operations.js'\n\nexport default createCommand({\n name: 'empty',\n description: 'Find translation keys with empty string values',\n args: {\n layer: { type: 'string', description: 'Filter to a specific layer' },\n locale: { type: 'string', description: 'Filter to a specific locale' },\n outputFile: { type: 'string', description: 'Write full output to this file path and return only a summary (useful for large outputs)' },\n },\n async run(args) {\n return findEmptyTranslations({\n layer: args.layer,\n locale: args.locale,\n projectDir: args.projectDir,\n outputFile: args.outputFile,\n })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,gBAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,OAAO;GAAE,MAAM;GAAU,aAAa;GAA8B;EACpE,QAAQ;GAAE,MAAM;GAAU,aAAa;GAA+B;EACtE,YAAY;GAAE,MAAM;GAAU,aAAa;GAA4F;EACxI;CACD,MAAM,IAAI,MAAM;AACd,SAAO,sBAAsB;GAC3B,OAAO,KAAK;GACZ,QAAQ,KAAK;GACb,YAAY,KAAK;GACjB,YAAY,KAAK;GAClB,CAAC;;CAEL,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./stdout-guard-sJHFWVem.js";
|
|
2
|
-
import { n as findDuplicateKeys } from "./operations-
|
|
3
|
-
import "./providers-
|
|
2
|
+
import { n as findDuplicateKeys } from "./operations-PfRSTepi.js";
|
|
3
|
+
import "./providers-CAsU_aV1.js";
|
|
4
4
|
import "./php-reader-3Fgw80zK.js";
|
|
5
|
-
import { t as createCommand } from "./_shared-
|
|
5
|
+
import { t as createCommand } from "./_shared-CkMAydRl.js";
|
|
6
6
|
//#region src/commands/find-duplicates.ts
|
|
7
7
|
var find_duplicates_default = createCommand({
|
|
8
8
|
name: "find-duplicates",
|
|
@@ -39,4 +39,4 @@ var find_duplicates_default = createCommand({
|
|
|
39
39
|
//#endregion
|
|
40
40
|
export { find_duplicates_default as default };
|
|
41
41
|
|
|
42
|
-
//# sourceMappingURL=find-duplicates-
|
|
42
|
+
//# sourceMappingURL=find-duplicates-BlQoJDgu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-duplicates-
|
|
1
|
+
{"version":3,"file":"find-duplicates-BlQoJDgu.js","names":[],"sources":["../src/commands/find-duplicates.ts"],"sourcesContent":["import { createCommand } from './_shared.js'\nimport { findDuplicateKeys } from '../core/operations.js'\n\nexport default createCommand({\n name: 'find-duplicates',\n description: 'Find keys defined in both a shared layer and a consuming child layer (with divergence detection); --byValue also finds different keys carrying the same value',\n args: {\n locale: { type: 'string', description: 'Locale to compare values in (default: project default)' },\n byValue: { type: 'boolean', description: 'Also group different keys carrying the same value, ranked by what to do about each group', default: false },\n minValueLength: { type: 'string', description: 'Shortest value worth grouping with --byValue (default: 4) — below it, repetition is usually legitimate' },\n outputFile: { type: 'string', description: 'Write full output to this file path and return only a summary (useful for large outputs)' },\n },\n async run(args) {\n return findDuplicateKeys({\n locale: args.locale,\n projectDir: args.projectDir,\n outputFile: args.outputFile,\n byValue: args.byValue,\n ...(args.minValueLength ? { minValueLength: Number(args.minValueLength) } : {}),\n })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,0BAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,QAAQ;GAAE,MAAM;GAAU,aAAa;GAA0D;EACjG,SAAS;GAAE,MAAM;GAAW,aAAa;GAA4F,SAAS;GAAO;EACrJ,gBAAgB;GAAE,MAAM;GAAU,aAAa;GAA0G;EACzJ,YAAY;GAAE,MAAM;GAAU,aAAa;GAA4F;EACxI;CACD,MAAM,IAAI,MAAM;AACd,SAAO,kBAAkB;GACvB,QAAQ,KAAK;GACb,YAAY,KAAK;GACjB,YAAY,KAAK;GACjB,SAAS,KAAK;GACd,GAAI,KAAK,iBAAiB,EAAE,gBAAgB,OAAO,KAAK,eAAe,EAAE,GAAG,EAAE;GAC/E,CAAC;;CAEL,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./stdout-guard-sJHFWVem.js";
|
|
2
|
-
import { E as getTranslations } from "./operations-
|
|
3
|
-
import "./providers-
|
|
2
|
+
import { E as getTranslations } from "./operations-PfRSTepi.js";
|
|
3
|
+
import "./providers-CAsU_aV1.js";
|
|
4
4
|
import "./php-reader-3Fgw80zK.js";
|
|
5
|
-
import { o as splitList, t as createCommand } from "./_shared-
|
|
5
|
+
import { o as splitList, t as createCommand } from "./_shared-CkMAydRl.js";
|
|
6
6
|
//#region src/commands/get.ts
|
|
7
7
|
var get_default = createCommand({
|
|
8
8
|
name: "get",
|
|
@@ -38,4 +38,4 @@ var get_default = createCommand({
|
|
|
38
38
|
//#endregion
|
|
39
39
|
export { get_default as default };
|
|
40
40
|
|
|
41
|
-
//# sourceMappingURL=get-
|
|
41
|
+
//# sourceMappingURL=get-Cr5O5zJX.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-
|
|
1
|
+
{"version":3,"file":"get-Cr5O5zJX.js","names":[],"sources":["../src/commands/get.ts"],"sourcesContent":["import { createCommand, splitList } from './_shared.js'\nimport { getTranslations } from '../core/operations.js'\n\nexport default createCommand({\n name: 'get',\n description: 'Get translation values for specific keys',\n args: {\n layer: { type: 'string', description: 'Layer name', required: true },\n locale: { type: 'string', description: 'Locale code, or \"*\" for all', required: true },\n keys: { type: 'string', description: 'Comma-separated key paths', required: true },\n },\n async run(args) {\n const keys = splitList(args.keys) ?? []\n if (keys.length === 0) {\n throw new Error('No keys provided. Pass comma-separated key paths via --keys')\n }\n return getTranslations({ layer: args.layer, locale: args.locale, keys, projectDir: args.projectDir })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,cAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,OAAO;GAAE,MAAM;GAAU,aAAa;GAAc,UAAU;GAAM;EACpE,QAAQ;GAAE,MAAM;GAAU,aAAa;GAA+B,UAAU;GAAM;EACtF,MAAM;GAAE,MAAM;GAAU,aAAa;GAA6B,UAAU;GAAM;EACnF;CACD,MAAM,IAAI,MAAM;EACd,MAAM,OAAO,UAAU,KAAK,KAAK,IAAI,EAAE;AACvC,MAAI,KAAK,WAAW,EAClB,OAAM,IAAI,MAAM,8DAA8D;AAEhF,SAAO,gBAAgB;GAAE,OAAO,KAAK;GAAO,QAAQ,KAAK;GAAQ;GAAM,YAAY,KAAK;GAAY,CAAC;;CAExG,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as LocaleDir, i as LocaleDefinition, n as defineI18nKitConfig, o as ProjectConfig, r as I18nConfig, s as LocaleFileFormat, t as I18nKitConfig } from "./define-config-
|
|
1
|
+
import { a as LocaleDir, i as LocaleDefinition, n as defineI18nKitConfig, o as ProjectConfig, r as I18nConfig, s as LocaleFileFormat, t as I18nKitConfig } from "./define-config-DW-rgsU6.js";
|
|
2
2
|
|
|
3
3
|
//#region src/core/types.d.ts
|
|
4
4
|
|
|
@@ -1382,25 +1382,6 @@ declare class ToolError extends Error {
|
|
|
1382
1382
|
}
|
|
1383
1383
|
//# sourceMappingURL=errors.d.ts.map
|
|
1384
1384
|
//#endregion
|
|
1385
|
-
//#region src/utils/rename-notice.d.ts
|
|
1386
|
-
/**
|
|
1387
|
-
* The kit is renaming to the `@the-i18n-kit` scope (#315). During the window
|
|
1388
|
-
* both names publish from one source at matching versions, so nothing breaks —
|
|
1389
|
-
* but a user on the old name has no way of learning that unless the package
|
|
1390
|
-
* tells them.
|
|
1391
|
-
*
|
|
1392
|
-
* A package finds out it is the old one by reading its own `name` at runtime,
|
|
1393
|
-
* which is why this takes the name rather than deciding for itself: the same
|
|
1394
|
-
* code ships under both names, and only the manifest differs.
|
|
1395
|
-
*/
|
|
1396
|
-
/**
|
|
1397
|
-
* The notice for a package running under a legacy name, or null when it is
|
|
1398
|
-
* already running under its new one — which is the case that must stay silent,
|
|
1399
|
-
* since a notice there would be telling people to do what they have done.
|
|
1400
|
-
*/
|
|
1401
|
-
declare function renameNotice(packageName: string): string | null;
|
|
1402
|
-
//# sourceMappingURL=rename-notice.d.ts.map
|
|
1403
|
-
//#endregion
|
|
1404
1385
|
//#region src/llm/providers.d.ts
|
|
1405
1386
|
type LlmProvider = 'openai' | 'anthropic' | 'google';
|
|
1406
1387
|
/** How a provider failure should be handled by the caller. */
|
|
@@ -1474,5 +1455,5 @@ declare function loadProjectConfig(projectDir: string): Promise<ProjectConfig |
|
|
|
1474
1455
|
//# sourceMappingURL=project-config.d.ts.map
|
|
1475
1456
|
|
|
1476
1457
|
//#endregion
|
|
1477
|
-
export { AddTranslationsResult, BASE_URL_ENV, type CallArgument, type CallSite, type CheckUndefinedKeysResult, type CheckUndefinedKeysSummary, CodeUsageRef, CodeUsageResult, type DuplicateKeyCollision, DynamicKeyRef, EmptyTranslationsResult, type FileEvidence, type FindDuplicateKeysResult, type FindDuplicateKeysSummary, FindOrphanKeysResult, GeneratedProjectConfig, type I18nConfig, type I18nKitConfig, InitProjectConfigResult, type KeyUsageLocation, LARAVEL_PATTERNS, type LanguageFrontend, type LayerGraph, LayerStatus, type LlmProvider, type LlmProviderConfig, type LocaleDefinition, type LocaleDir, LocaleDirInfo, type LocaleRefAmbiguity, LocaleRefInfo, LocaleStatus, MisplacedUsageRef, MissingTranslationsResult, MoveTranslationKeyPlanEntry, MoveTranslationKeyResult, MutationPreview, MutationResult, PlaceholderValidationIssue, PlaceholderValidationResult, ProgressFn, type ProjectConfig, RemoveOrphanKeysResult, RemoveTranslationsPreview, RemoveTranslationsResult, RenameTranslationKeyPreview, RenameTranslationKeyResult, ScaffoldLocaleFileInfo, ScaffoldLocaleResult, ScanCodeUsageResult, type ScanResult, SearchMatch, SearchTranslationsResult, type SerializedLayerGraph, ToolError, TranslateAllLayersResult, TranslateAllLayersSummary, TranslateFailReason, TranslateFn, TranslateKeyLocaleIssue, TranslateKeyResult, TranslateLayerTotals, TranslateMissingCompactEntry, TranslateMissingLocaleResult, TranslateMissingOutcome, TranslateMissingResult, TranslateMode, TranslateProviderError, type TranslateProviderErrorKind, TranslateRequest, TranslateResponse, TranslateSkipReason, TranslationStatusResult, TranslationStatusSummary, type UncertainKeyFinding, type UndefinedKeyFinding, UnresolvedKeyWarningRef, UnresolvedLocaleRef, UpdateTranslationsResult, VUE_NUXT_PATTERNS, WriteTranslationsResult, addTranslations, buildLayerGraph, checkUndefinedKeys, classifyProviderError, clearConfigCache, createBladeFrontend, createOxcFrontend, createPatternsFrontend, createPhpFrontend, createTranslateFn, defineI18nKitConfig, detectConfig, detectI18nConfig, findDuplicateKeys, findEmptyTranslations, findLocaleImpl, findOrphanKeys, getCachedConfig, getMissingTranslations, getPatternSet, getTranslationStatus, getTranslations, listLocaleDirs, listNamespaces, loadProjectConfig, moveTranslationKey, readLocaleData, removeOrphanKeys, removeTranslations,
|
|
1478
|
-
//# sourceMappingURL=index-
|
|
1458
|
+
export { AddTranslationsResult, BASE_URL_ENV, type CallArgument, type CallSite, type CheckUndefinedKeysResult, type CheckUndefinedKeysSummary, CodeUsageRef, CodeUsageResult, type DuplicateKeyCollision, DynamicKeyRef, EmptyTranslationsResult, type FileEvidence, type FindDuplicateKeysResult, type FindDuplicateKeysSummary, FindOrphanKeysResult, GeneratedProjectConfig, type I18nConfig, type I18nKitConfig, InitProjectConfigResult, type KeyUsageLocation, LARAVEL_PATTERNS, type LanguageFrontend, type LayerGraph, LayerStatus, type LlmProvider, type LlmProviderConfig, type LocaleDefinition, type LocaleDir, LocaleDirInfo, type LocaleRefAmbiguity, LocaleRefInfo, LocaleStatus, MisplacedUsageRef, MissingTranslationsResult, MoveTranslationKeyPlanEntry, MoveTranslationKeyResult, MutationPreview, MutationResult, PlaceholderValidationIssue, PlaceholderValidationResult, ProgressFn, type ProjectConfig, RemoveOrphanKeysResult, RemoveTranslationsPreview, RemoveTranslationsResult, RenameTranslationKeyPreview, RenameTranslationKeyResult, ScaffoldLocaleFileInfo, ScaffoldLocaleResult, ScanCodeUsageResult, type ScanResult, SearchMatch, SearchTranslationsResult, type SerializedLayerGraph, ToolError, TranslateAllLayersResult, TranslateAllLayersSummary, TranslateFailReason, TranslateFn, TranslateKeyLocaleIssue, TranslateKeyResult, TranslateLayerTotals, TranslateMissingCompactEntry, TranslateMissingLocaleResult, TranslateMissingOutcome, TranslateMissingResult, TranslateMode, TranslateProviderError, type TranslateProviderErrorKind, TranslateRequest, TranslateResponse, TranslateSkipReason, TranslationStatusResult, TranslationStatusSummary, type UncertainKeyFinding, type UndefinedKeyFinding, UnresolvedKeyWarningRef, UnresolvedLocaleRef, UpdateTranslationsResult, VUE_NUXT_PATTERNS, WriteTranslationsResult, addTranslations, buildLayerGraph, checkUndefinedKeys, classifyProviderError, clearConfigCache, createBladeFrontend, createOxcFrontend, createPatternsFrontend, createPhpFrontend, createTranslateFn, defineI18nKitConfig, detectConfig, detectI18nConfig, findDuplicateKeys, findEmptyTranslations, findLocaleImpl, findOrphanKeys, getCachedConfig, getMissingTranslations, getPatternSet, getTranslationStatus, getTranslations, listLocaleDirs, listNamespaces, loadProjectConfig, moveTranslationKey, readLocaleData, removeOrphanKeys, removeTranslations, renameTranslationKey, resolveProtectedLocales, resolveProviderBaseUrl, scaffoldLocaleFiles, scanCodeUsage, scanSourceFiles, searchTranslations, serializeLayerGraph, toErrorMessage, translateKey, translateMissing, updateTranslations, writeTranslations };
|
|
1459
|
+
//# sourceMappingURL=index-w-EQZEZF.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-w-EQZEZF.d.ts","names":[],"sources":["../src/core/types.ts","../src/core/shared.ts","../src/core/ops-translate.ts","../src/core/ops-read.ts","../src/core/ops-write.ts","../src/core/ops-status.ts","../src/scanner/frontends/types.ts","../src/scanner/frontends/php/patterns.ts","../src/scanner/patterns.ts","../src/scanner/code-scanner.ts","../src/core/ops-orphans.ts","../src/core/ops-duplicates.ts","../src/core/ops-check.ts","../src/config/detector.ts","../src/config/layer-graph.ts","../src/scanner/frontends/oxc.ts","../src/scanner/frontends/patterns.ts","../src/scanner/frontends/php/index.ts","../src/scanner/frontends/php/blade.ts","../src/io/locale-data.ts","../src/utils/errors.ts","../src/llm/providers.ts","../src/config/project-config.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './index-
|
|
1
|
+
export * from './index-w-EQZEZF.d.ts';
|