ai-i18n-tools 1.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.
Files changed (260) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +157 -0
  3. package/dist/api/openrouter.d.ts +115 -0
  4. package/dist/api/openrouter.d.ts.map +1 -0
  5. package/dist/api/openrouter.js +399 -0
  6. package/dist/api/openrouter.js.map +1 -0
  7. package/dist/cli/doc-translate.d.ts +90 -0
  8. package/dist/cli/doc-translate.d.ts.map +1 -0
  9. package/dist/cli/doc-translate.js +1153 -0
  10. package/dist/cli/doc-translate.js.map +1 -0
  11. package/dist/cli/export-ui-xliff.d.ts +32 -0
  12. package/dist/cli/export-ui-xliff.d.ts.map +1 -0
  13. package/dist/cli/export-ui-xliff.js +153 -0
  14. package/dist/cli/export-ui-xliff.js.map +1 -0
  15. package/dist/cli/extract-strings.d.ts +12 -0
  16. package/dist/cli/extract-strings.d.ts.map +1 -0
  17. package/dist/cli/extract-strings.js +80 -0
  18. package/dist/cli/extract-strings.js.map +1 -0
  19. package/dist/cli/file-utils.d.ts +10 -0
  20. package/dist/cli/file-utils.d.ts.map +1 -0
  21. package/dist/cli/file-utils.js +77 -0
  22. package/dist/cli/file-utils.js.map +1 -0
  23. package/dist/cli/format.d.ts +21 -0
  24. package/dist/cli/format.d.ts.map +1 -0
  25. package/dist/cli/format.js +75 -0
  26. package/dist/cli/format.js.map +1 -0
  27. package/dist/cli/helpers.d.ts +27 -0
  28. package/dist/cli/helpers.d.ts.map +1 -0
  29. package/dist/cli/helpers.js +84 -0
  30. package/dist/cli/helpers.js.map +1 -0
  31. package/dist/cli/index.d.ts +3 -0
  32. package/dist/cli/index.d.ts.map +1 -0
  33. package/dist/cli/index.js +772 -0
  34. package/dist/cli/index.js.map +1 -0
  35. package/dist/cli/log-output.d.ts +13 -0
  36. package/dist/cli/log-output.d.ts.map +1 -0
  37. package/dist/cli/log-output.js +75 -0
  38. package/dist/cli/log-output.js.map +1 -0
  39. package/dist/cli/translate-svg.d.ts +7 -0
  40. package/dist/cli/translate-svg.d.ts.map +1 -0
  41. package/dist/cli/translate-svg.js +167 -0
  42. package/dist/cli/translate-svg.js.map +1 -0
  43. package/dist/cli/translate-ui-strings.d.ts +27 -0
  44. package/dist/cli/translate-ui-strings.d.ts.map +1 -0
  45. package/dist/cli/translate-ui-strings.js +357 -0
  46. package/dist/cli/translate-ui-strings.js.map +1 -0
  47. package/dist/core/cache-tracking-keys.d.ts +12 -0
  48. package/dist/core/cache-tracking-keys.d.ts.map +1 -0
  49. package/dist/core/cache-tracking-keys.js +20 -0
  50. package/dist/core/cache-tracking-keys.js.map +1 -0
  51. package/dist/core/cache.d.ts +153 -0
  52. package/dist/core/cache.d.ts.map +1 -0
  53. package/dist/core/cache.js +546 -0
  54. package/dist/core/cache.js.map +1 -0
  55. package/dist/core/config.d.ts +58 -0
  56. package/dist/core/config.d.ts.map +1 -0
  57. package/dist/core/config.js +392 -0
  58. package/dist/core/config.js.map +1 -0
  59. package/dist/core/doc-file-tracking.d.ts +8 -0
  60. package/dist/core/doc-file-tracking.d.ts.map +1 -0
  61. package/dist/core/doc-file-tracking.js +27 -0
  62. package/dist/core/doc-file-tracking.js.map +1 -0
  63. package/dist/core/errors.d.ts +19 -0
  64. package/dist/core/errors.d.ts.map +1 -0
  65. package/dist/core/errors.js +23 -0
  66. package/dist/core/errors.js.map +1 -0
  67. package/dist/core/locale-utils.d.ts +20 -0
  68. package/dist/core/locale-utils.d.ts.map +1 -0
  69. package/dist/core/locale-utils.js +75 -0
  70. package/dist/core/locale-utils.js.map +1 -0
  71. package/dist/core/output-paths.d.ts +22 -0
  72. package/dist/core/output-paths.d.ts.map +1 -0
  73. package/dist/core/output-paths.js +130 -0
  74. package/dist/core/output-paths.js.map +1 -0
  75. package/dist/core/prompt-builder.d.ts +62 -0
  76. package/dist/core/prompt-builder.d.ts.map +1 -0
  77. package/dist/core/prompt-builder.js +232 -0
  78. package/dist/core/prompt-builder.js.map +1 -0
  79. package/dist/core/prompts.d.ts +27 -0
  80. package/dist/core/prompts.d.ts.map +1 -0
  81. package/dist/core/prompts.js +57 -0
  82. package/dist/core/prompts.js.map +1 -0
  83. package/dist/core/svg-asset-paths.d.ts +40 -0
  84. package/dist/core/svg-asset-paths.d.ts.map +1 -0
  85. package/dist/core/svg-asset-paths.js +107 -0
  86. package/dist/core/svg-asset-paths.js.map +1 -0
  87. package/dist/core/types.d.ts +388 -0
  88. package/dist/core/types.d.ts.map +1 -0
  89. package/dist/core/types.js +265 -0
  90. package/dist/core/types.js.map +1 -0
  91. package/dist/core/ui-languages.d.ts +66 -0
  92. package/dist/core/ui-languages.d.ts.map +1 -0
  93. package/dist/core/ui-languages.js +277 -0
  94. package/dist/core/ui-languages.js.map +1 -0
  95. package/dist/core/user-edited-model.d.ts +3 -0
  96. package/dist/core/user-edited-model.d.ts.map +1 -0
  97. package/dist/core/user-edited-model.js +3 -0
  98. package/dist/core/user-edited-model.js.map +1 -0
  99. package/dist/edit-cache-app/app.js +1326 -0
  100. package/dist/edit-cache-app/index.html +287 -0
  101. package/dist/edit-cache-app/styles.css +664 -0
  102. package/dist/extractors/base-extractor.d.ts +15 -0
  103. package/dist/extractors/base-extractor.d.ts.map +1 -0
  104. package/dist/extractors/base-extractor.js +23 -0
  105. package/dist/extractors/base-extractor.js.map +1 -0
  106. package/dist/extractors/classify-segment.d.ts +6 -0
  107. package/dist/extractors/classify-segment.d.ts.map +1 -0
  108. package/dist/extractors/classify-segment.js +20 -0
  109. package/dist/extractors/classify-segment.js.map +1 -0
  110. package/dist/extractors/json-extractor.d.ts +16 -0
  111. package/dist/extractors/json-extractor.d.ts.map +1 -0
  112. package/dist/extractors/json-extractor.js +128 -0
  113. package/dist/extractors/json-extractor.js.map +1 -0
  114. package/dist/extractors/markdown-extractor.d.ts +15 -0
  115. package/dist/extractors/markdown-extractor.d.ts.map +1 -0
  116. package/dist/extractors/markdown-extractor.js +205 -0
  117. package/dist/extractors/markdown-extractor.js.map +1 -0
  118. package/dist/extractors/svg-extractor.d.ts +19 -0
  119. package/dist/extractors/svg-extractor.d.ts.map +1 -0
  120. package/dist/extractors/svg-extractor.js +132 -0
  121. package/dist/extractors/svg-extractor.js.map +1 -0
  122. package/dist/extractors/ui-string-extractor.d.ts +40 -0
  123. package/dist/extractors/ui-string-extractor.d.ts.map +1 -0
  124. package/dist/extractors/ui-string-extractor.js +146 -0
  125. package/dist/extractors/ui-string-extractor.js.map +1 -0
  126. package/dist/extractors/ui-string-locations.d.ts +23 -0
  127. package/dist/extractors/ui-string-locations.d.ts.map +1 -0
  128. package/dist/extractors/ui-string-locations.js +138 -0
  129. package/dist/extractors/ui-string-locations.js.map +1 -0
  130. package/dist/glossary/glossary.d.ts +34 -0
  131. package/dist/glossary/glossary.d.ts.map +1 -0
  132. package/dist/glossary/glossary.js +260 -0
  133. package/dist/glossary/glossary.js.map +1 -0
  134. package/dist/glossary/matcher.d.ts +10 -0
  135. package/dist/glossary/matcher.d.ts.map +1 -0
  136. package/dist/glossary/matcher.js +12 -0
  137. package/dist/glossary/matcher.js.map +1 -0
  138. package/dist/index.d.ts +44 -0
  139. package/dist/index.d.ts.map +1 -0
  140. package/dist/index.js +44 -0
  141. package/dist/index.js.map +1 -0
  142. package/dist/processors/admonition-placeholders.d.ts +8 -0
  143. package/dist/processors/admonition-placeholders.d.ts.map +1 -0
  144. package/dist/processors/admonition-placeholders.js +59 -0
  145. package/dist/processors/admonition-placeholders.js.map +1 -0
  146. package/dist/processors/anchor-placeholders.d.ts +8 -0
  147. package/dist/processors/anchor-placeholders.d.ts.map +1 -0
  148. package/dist/processors/anchor-placeholders.js +37 -0
  149. package/dist/processors/anchor-placeholders.js.map +1 -0
  150. package/dist/processors/batch-processor.d.ts +10 -0
  151. package/dist/processors/batch-processor.d.ts.map +1 -0
  152. package/dist/processors/batch-processor.js +33 -0
  153. package/dist/processors/batch-processor.js.map +1 -0
  154. package/dist/processors/bold-code-placeholders.d.ts +14 -0
  155. package/dist/processors/bold-code-placeholders.d.ts.map +1 -0
  156. package/dist/processors/bold-code-placeholders.js +116 -0
  157. package/dist/processors/bold-code-placeholders.js.map +1 -0
  158. package/dist/processors/doc-postprocess.d.ts +51 -0
  159. package/dist/processors/doc-postprocess.d.ts.map +1 -0
  160. package/dist/processors/doc-postprocess.js +215 -0
  161. package/dist/processors/doc-postprocess.js.map +1 -0
  162. package/dist/processors/emphasis-placeholders.d.ts +6 -0
  163. package/dist/processors/emphasis-placeholders.d.ts.map +1 -0
  164. package/dist/processors/emphasis-placeholders.js +262 -0
  165. package/dist/processors/emphasis-placeholders.js.map +1 -0
  166. package/dist/processors/flat-link-rewrite.d.ts +32 -0
  167. package/dist/processors/flat-link-rewrite.d.ts.map +1 -0
  168. package/dist/processors/flat-link-rewrite.js +90 -0
  169. package/dist/processors/flat-link-rewrite.js.map +1 -0
  170. package/dist/processors/glossary-force-placeholders.d.ts +12 -0
  171. package/dist/processors/glossary-force-placeholders.d.ts.map +1 -0
  172. package/dist/processors/glossary-force-placeholders.js +58 -0
  173. package/dist/processors/glossary-force-placeholders.js.map +1 -0
  174. package/dist/processors/inline-code-placeholders.d.ts +11 -0
  175. package/dist/processors/inline-code-placeholders.d.ts.map +1 -0
  176. package/dist/processors/inline-code-placeholders.js +87 -0
  177. package/dist/processors/inline-code-placeholders.js.map +1 -0
  178. package/dist/processors/placeholder-handler.d.ts +38 -0
  179. package/dist/processors/placeholder-handler.d.ts.map +1 -0
  180. package/dist/processors/placeholder-handler.js +55 -0
  181. package/dist/processors/placeholder-handler.js.map +1 -0
  182. package/dist/processors/translation-placeholder-leaks.d.ts +2 -0
  183. package/dist/processors/translation-placeholder-leaks.d.ts.map +1 -0
  184. package/dist/processors/translation-placeholder-leaks.js +9 -0
  185. package/dist/processors/translation-placeholder-leaks.js.map +1 -0
  186. package/dist/processors/url-placeholders.d.ts +10 -0
  187. package/dist/processors/url-placeholders.d.ts.map +1 -0
  188. package/dist/processors/url-placeholders.js +29 -0
  189. package/dist/processors/url-placeholders.js.map +1 -0
  190. package/dist/processors/validator.d.ts +23 -0
  191. package/dist/processors/validator.d.ts.map +1 -0
  192. package/dist/processors/validator.js +186 -0
  193. package/dist/processors/validator.js.map +1 -0
  194. package/dist/runtime/i18next-helpers.d.ts +146 -0
  195. package/dist/runtime/i18next-helpers.d.ts.map +1 -0
  196. package/dist/runtime/i18next-helpers.js +192 -0
  197. package/dist/runtime/i18next-helpers.js.map +1 -0
  198. package/dist/runtime/index.d.ts +4 -0
  199. package/dist/runtime/index.d.ts.map +1 -0
  200. package/dist/runtime/index.js +4 -0
  201. package/dist/runtime/index.js.map +1 -0
  202. package/dist/runtime/template.d.ts +21 -0
  203. package/dist/runtime/template.d.ts.map +1 -0
  204. package/dist/runtime/template.js +28 -0
  205. package/dist/runtime/template.js.map +1 -0
  206. package/dist/runtime/ui-language-display.d.ts +16 -0
  207. package/dist/runtime/ui-language-display.d.ts.map +1 -0
  208. package/dist/runtime/ui-language-display.js +26 -0
  209. package/dist/runtime/ui-language-display.js.map +1 -0
  210. package/dist/server/translation-editor.d.ts +25 -0
  211. package/dist/server/translation-editor.d.ts.map +1 -0
  212. package/dist/server/translation-editor.js +583 -0
  213. package/dist/server/translation-editor.js.map +1 -0
  214. package/dist/utils/concurrency.d.ts +31 -0
  215. package/dist/utils/concurrency.d.ts.map +1 -0
  216. package/dist/utils/concurrency.js +103 -0
  217. package/dist/utils/concurrency.js.map +1 -0
  218. package/dist/utils/hash.d.ts +5 -0
  219. package/dist/utils/hash.d.ts.map +1 -0
  220. package/dist/utils/hash.js +9 -0
  221. package/dist/utils/hash.js.map +1 -0
  222. package/dist/utils/ignore-parser.d.ts +7 -0
  223. package/dist/utils/ignore-parser.d.ts.map +1 -0
  224. package/dist/utils/ignore-parser.js +26 -0
  225. package/dist/utils/ignore-parser.js.map +1 -0
  226. package/dist/utils/logger.d.ts +45 -0
  227. package/dist/utils/logger.d.ts.map +1 -0
  228. package/dist/utils/logger.js +158 -0
  229. package/dist/utils/logger.js.map +1 -0
  230. package/docs/GETTING_STARTED.md +697 -0
  231. package/docs/PACKAGE_OVERVIEW.md +427 -0
  232. package/docs/ai-i18n-tools-context.md +481 -0
  233. package/package.json +117 -0
  234. package/translated-docs/README.de.md +157 -0
  235. package/translated-docs/README.es.md +157 -0
  236. package/translated-docs/README.fr.md +157 -0
  237. package/translated-docs/README.hi.md +157 -0
  238. package/translated-docs/README.ja.md +157 -0
  239. package/translated-docs/README.ko.md +157 -0
  240. package/translated-docs/README.pt-BR.md +157 -0
  241. package/translated-docs/README.zh-CN.md +157 -0
  242. package/translated-docs/README.zh-TW.md +157 -0
  243. package/translated-docs/docs/GETTING_STARTED.de.md +682 -0
  244. package/translated-docs/docs/GETTING_STARTED.es.md +682 -0
  245. package/translated-docs/docs/GETTING_STARTED.fr.md +682 -0
  246. package/translated-docs/docs/GETTING_STARTED.hi.md +682 -0
  247. package/translated-docs/docs/GETTING_STARTED.ja.md +682 -0
  248. package/translated-docs/docs/GETTING_STARTED.ko.md +682 -0
  249. package/translated-docs/docs/GETTING_STARTED.pt-BR.md +682 -0
  250. package/translated-docs/docs/GETTING_STARTED.zh-CN.md +682 -0
  251. package/translated-docs/docs/GETTING_STARTED.zh-TW.md +682 -0
  252. package/translated-docs/docs/PACKAGE_OVERVIEW.de.md +428 -0
  253. package/translated-docs/docs/PACKAGE_OVERVIEW.es.md +428 -0
  254. package/translated-docs/docs/PACKAGE_OVERVIEW.fr.md +428 -0
  255. package/translated-docs/docs/PACKAGE_OVERVIEW.hi.md +428 -0
  256. package/translated-docs/docs/PACKAGE_OVERVIEW.ja.md +428 -0
  257. package/translated-docs/docs/PACKAGE_OVERVIEW.ko.md +428 -0
  258. package/translated-docs/docs/PACKAGE_OVERVIEW.pt-BR.md +428 -0
  259. package/translated-docs/docs/PACKAGE_OVERVIEW.zh-CN.md +428 -0
  260. package/translated-docs/docs/PACKAGE_OVERVIEW.zh-TW.md +428 -0
@@ -0,0 +1,107 @@
1
+ import path from "path";
2
+ import { toPosix } from "./output-paths.js";
3
+ function assertSvgOutputWithinRoot(absFile, rootDir) {
4
+ const abs = path.resolve(absFile);
5
+ const root = path.resolve(rootDir);
6
+ const rel = path.relative(root, abs);
7
+ if (rel.startsWith("..") || path.isAbsolute(rel)) {
8
+ throw new Error(`Resolved SVG output path escapes svg.outputDir: ${absFile} (root: ${root})`);
9
+ }
10
+ }
11
+ /**
12
+ * Expand `{outputDir}`, `{locale}`, `{LOCALE}`, `{relPath}`, `{stem}`, `{basename}`, `{extension}`,
13
+ * `{relativeToSourceRoot}` (same as path under `svg.sourcePath`).
14
+ */
15
+ export function expandSvgPathTemplate(template, ctx) {
16
+ const posixRel = toPosix(ctx.relPath);
17
+ const parsed = path.posix.parse(posixRel);
18
+ const stem = parsed.name;
19
+ const extension = parsed.ext;
20
+ const basename = parsed.base;
21
+ const relSrc = toPosix(ctx.relativeToSourceRoot);
22
+ let out = template;
23
+ const pairs = [
24
+ ["{outputDir}", ctx.outputDir],
25
+ ["{locale}", ctx.locale],
26
+ ["{LOCALE}", ctx.locale.toUpperCase()],
27
+ ["{relPath}", posixRel],
28
+ ["{stem}", stem],
29
+ ["{basename}", basename],
30
+ ["{extension}", extension],
31
+ ["{relativeToSourceRoot}", relSrc],
32
+ ];
33
+ for (const [key, val] of pairs) {
34
+ out = out.split(key).join(val);
35
+ }
36
+ return out;
37
+ }
38
+ /**
39
+ * Absolute path for a translated SVG asset (`translate-svg` command).
40
+ *
41
+ * - With `svg.pathTemplate`: expanded path (relative to cwd or absolute), constrained under `svg.outputDir`.
42
+ * - Else `flat`: `{outputDir}/{stem}.{locale}.svg`
43
+ * - Else `nested`: `{outputDir}/{locale}/{relPathFromSourceRoot}`
44
+ */
45
+ export function resolveSvgAssetOutputPath(config, cwd, locale,
46
+ /** Path relative to cwd (posix), e.g. `images/foo.svg` */
47
+ relPathFromCwd,
48
+ /** Path relative to the `sourcePath` root that contained this file (posix), e.g. `foo.svg` or `icons/a.svg` */
49
+ relPathFromSourceRoot) {
50
+ const svg = config.svg;
51
+ if (!svg) {
52
+ throw new Error("resolveSvgAssetOutputPath: config.svg is required");
53
+ }
54
+ const outRoot = path.resolve(cwd, svg.outputDir);
55
+ const posixRel = toPosix(relPathFromCwd);
56
+ const parsed = path.posix.parse(posixRel);
57
+ const stem = parsed.name;
58
+ const tmpl = svg.pathTemplate?.trim();
59
+ let abs;
60
+ if (tmpl && tmpl.length > 0) {
61
+ const expanded = expandSvgPathTemplate(tmpl, {
62
+ outputDir: outRoot,
63
+ locale,
64
+ relPath: relPathFromCwd,
65
+ relativeToSourceRoot: relPathFromSourceRoot,
66
+ });
67
+ abs = path.isAbsolute(expanded) ? path.normalize(expanded) : path.resolve(cwd, expanded);
68
+ }
69
+ else if (svg.style === "flat") {
70
+ abs = path.join(outRoot, `${stem}.${locale}.svg`);
71
+ }
72
+ else {
73
+ abs = path.join(outRoot, locale, relPathFromSourceRoot);
74
+ }
75
+ assertSvgOutputWithinRoot(abs, outRoot);
76
+ return abs;
77
+ }
78
+ /**
79
+ * Namespaced key for `file_tracking` (and file-level cache skip) for standalone SVG assets.
80
+ * Do not use for `translations.filepath` — use {@link svgTranslationFilepathMetadata} instead.
81
+ */
82
+ export function svgAssetCacheFilepath(relPathFromCwdPosix) {
83
+ return `svg-assets:${toPosix(relPathFromCwdPosix)}`;
84
+ }
85
+ /** Cwd-relative posix path for `translations.filepath` metadata (no `svg-assets:` prefix). */
86
+ export function svgTranslationFilepathMetadata(relPathFromCwd) {
87
+ return toPosix(relPathFromCwd.replace(/\\/g, "/"));
88
+ }
89
+ /**
90
+ * Path under a configured `svg.sourcePath` root (posix), for nested output layout.
91
+ * Returns `null` if `fileRelCwd` is not under any root.
92
+ */
93
+ export function relPathUnderSvgSource(fileRelCwd, sourceRoots) {
94
+ const posix = toPosix(fileRelCwd.replace(/\\/g, "/"));
95
+ const sorted = [...sourceRoots].sort((a, b) => b.length - a.length);
96
+ for (const root of sorted) {
97
+ const r = toPosix(root.replace(/\\/g, "/")).replace(/\/$/, "");
98
+ if (posix === r) {
99
+ return path.posix.basename(posix);
100
+ }
101
+ if (posix.startsWith(`${r}/`)) {
102
+ return posix.slice(r.length + 1);
103
+ }
104
+ }
105
+ return null;
106
+ }
107
+ //# sourceMappingURL=svg-asset-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-asset-paths.js","sourceRoot":"","sources":["../../src/core/svg-asset-paths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,388 @@
1
+ import { z } from "zod";
2
+ /** Markdown / JSON / UI / SVG segment classification. */
3
+ export type SegmentType = "ui-string" | "frontmatter" | "heading" | "paragraph" | "code" | "admonition" | "json" | "svg-text" | "other";
4
+ /** SVG reassembly metadata (regex-extracted elements). */
5
+ export interface SvgSegmentMeta {
6
+ element: "text" | "title" | "desc";
7
+ fullMatch: string;
8
+ openingTag: string;
9
+ }
10
+ export interface Segment {
11
+ id: string;
12
+ type: SegmentType;
13
+ content: string;
14
+ hash: string;
15
+ translatable: boolean;
16
+ startLine?: number;
17
+ jsonKey?: string;
18
+ jsonDescription?: string;
19
+ svg?: SvgSegmentMeta;
20
+ }
21
+ /**
22
+ * Per-segment translation with optional model metadata. `modelUsed` is set when the text was produced by the API this run
23
+ * (the model that actually succeeded). Omitted for cache hits so callers do not overwrite a stored model.
24
+ * Plain `string` remains supported for tests and simple pipelines.
25
+ */
26
+ export type DocSegmentTranslation = {
27
+ text: string;
28
+ modelUsed?: string;
29
+ };
30
+ /** Values accepted by {@link ContentExtractor.reassemble}. */
31
+ export type SegmentTranslationMapValue = string | DocSegmentTranslation;
32
+ export declare function segmentTranslationText(v: SegmentTranslationMapValue | undefined): string | undefined;
33
+ /** Coerce a map to plain `Map<string, string>` (e.g. legacy callers or JSON serialization). */
34
+ export declare function translationTextMap(m: Map<string, SegmentTranslationMapValue>): Map<string, string>;
35
+ export interface TranslationResult {
36
+ content: string;
37
+ model: string;
38
+ usage: {
39
+ inputTokens: number;
40
+ outputTokens: number;
41
+ totalTokens: number;
42
+ };
43
+ cost?: number;
44
+ /** When the API succeeded; used for translation failure debug logs. */
45
+ debugPrompt?: {
46
+ systemPrompt: string;
47
+ userContent: string;
48
+ };
49
+ /** Raw assistant text before `<translate>` stripping (single-segment). */
50
+ rawAssistantContent?: string;
51
+ }
52
+ /** Row shape for file_tracking and status queries. */
53
+ export interface FileTracking {
54
+ filepath: string;
55
+ locale: string;
56
+ sourceHash: string;
57
+ lastTranslated: string | null;
58
+ }
59
+ /** Arguments for {@link import("./cache.js").TranslationCache.setSegment}. */
60
+ export interface CacheEntry {
61
+ sourceHash: string;
62
+ locale: string;
63
+ sourceText: string;
64
+ translatedText: string;
65
+ model: string;
66
+ filepath?: string;
67
+ startLine?: number | null;
68
+ }
69
+ export interface TranslationRow {
70
+ source_hash: string;
71
+ locale: string;
72
+ source_text: string;
73
+ translated_text: string;
74
+ model: string | null;
75
+ filepath: string | null;
76
+ created_at: string | null;
77
+ last_hit_at: string | null;
78
+ start_line: number | null;
79
+ }
80
+ export interface CleanupStats {
81
+ staleTranslationsRemoved: number;
82
+ deletedRows: Array<{
83
+ source_hash: string;
84
+ locale: string;
85
+ filepath: string | null;
86
+ }>;
87
+ }
88
+ export interface ContentExtractor {
89
+ readonly name: string;
90
+ canHandle(filepath: string): boolean;
91
+ extract(content: string, filepath: string): Segment[];
92
+ reassemble(segments: Segment[], translations: Map<string, SegmentTranslationMapValue>): string;
93
+ }
94
+ export interface GlossaryTerm {
95
+ english: string;
96
+ translations: Record<string, string>;
97
+ partOfSpeech: string;
98
+ /** From user glossary CSV `force` column (per locale after * / exact merge). */
99
+ forcedByLocale?: Record<string, boolean>;
100
+ }
101
+ /** Result from batch translation (index → translated text). */
102
+ export interface BatchTranslationResult {
103
+ translations: Map<number, string>;
104
+ model: string;
105
+ usage: {
106
+ inputTokens: number;
107
+ outputTokens: number;
108
+ totalTokens: number;
109
+ };
110
+ cost?: number;
111
+ /** When the API succeeded; used for translation failure debug logs. */
112
+ debugPrompt?: {
113
+ systemPrompt: string;
114
+ userContent: string;
115
+ };
116
+ rawAssistantContent?: string;
117
+ }
118
+ export declare class BatchTranslationError extends Error {
119
+ readonly expected: number;
120
+ readonly received: number;
121
+ readonly rawResponse: string;
122
+ constructor(expected: number, received: number, rawResponse: string);
123
+ }
124
+ export interface ChatMessage {
125
+ role: "system" | "user" | "assistant";
126
+ content: string;
127
+ }
128
+ export interface ChatResponse {
129
+ content: string;
130
+ model: string;
131
+ usage: {
132
+ inputTokens: number;
133
+ outputTokens: number;
134
+ totalTokens: number;
135
+ };
136
+ cost?: number;
137
+ }
138
+ declare const openRouterConfigSchema: z.ZodObject<{
139
+ baseUrl: z.ZodDefault<z.ZodString>;
140
+ translationModels: z.ZodOptional<z.ZodArray<z.ZodString>>;
141
+ defaultModel: z.ZodOptional<z.ZodString>;
142
+ fallbackModel: z.ZodOptional<z.ZodString>;
143
+ maxTokens: z.ZodDefault<z.ZodNumber>;
144
+ temperature: z.ZodDefault<z.ZodNumber>;
145
+ }, z.core.$strip>;
146
+ declare const featuresSchema: z.ZodObject<{
147
+ extractUIStrings: z.ZodDefault<z.ZodBoolean>;
148
+ translateUIStrings: z.ZodDefault<z.ZodBoolean>;
149
+ translateMarkdown: z.ZodDefault<z.ZodBoolean>;
150
+ translateJSON: z.ZodDefault<z.ZodBoolean>;
151
+ translateSVG: z.ZodDefault<z.ZodBoolean>;
152
+ }, z.core.$strip>;
153
+ declare const glossarySchema: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
154
+ uiGlossary: z.ZodOptional<z.ZodString>;
155
+ userGlossary: z.ZodOptional<z.ZodString>;
156
+ autoAddUserEditedToGlossary: z.ZodDefault<z.ZodBoolean>;
157
+ }, z.core.$strict>>;
158
+ declare const reactExtractorSchema: z.ZodObject<{
159
+ extensions: z.ZodDefault<z.ZodArray<z.ZodString>>;
160
+ funcNames: z.ZodDefault<z.ZodArray<z.ZodString>>;
161
+ includePackageDescription: z.ZodDefault<z.ZodBoolean>;
162
+ packageJsonPath: z.ZodOptional<z.ZodString>;
163
+ }, z.core.$strict>;
164
+ declare const svgExtractorSchema: z.ZodObject<{
165
+ forceLowercase: z.ZodDefault<z.ZodBoolean>;
166
+ }, z.core.$strict>;
167
+ declare const languageListBlockSchema: z.ZodObject<{
168
+ start: z.ZodString;
169
+ end: z.ZodString;
170
+ separator: z.ZodString;
171
+ }, z.core.$strict>;
172
+ declare const regexAdjustmentSchema: z.ZodObject<{
173
+ description: z.ZodOptional<z.ZodString>;
174
+ search: z.ZodString;
175
+ replace: z.ZodString;
176
+ }, z.core.$strict>;
177
+ declare const markdownPostProcessingSchema: z.ZodObject<{
178
+ languageListBlock: z.ZodOptional<z.ZodObject<{
179
+ start: z.ZodString;
180
+ end: z.ZodString;
181
+ separator: z.ZodString;
182
+ }, z.core.$strict>>;
183
+ regexAdjustments: z.ZodDefault<z.ZodArray<z.ZodObject<{
184
+ description: z.ZodOptional<z.ZodString>;
185
+ search: z.ZodString;
186
+ replace: z.ZodString;
187
+ }, z.core.$strict>>>;
188
+ }, z.core.$strict>;
189
+ declare const markdownOutputSchema: z.ZodObject<{
190
+ style: z.ZodDefault<z.ZodEnum<{
191
+ flat: "flat";
192
+ nested: "nested";
193
+ docusaurus: "docusaurus";
194
+ }>>;
195
+ docsRoot: z.ZodOptional<z.ZodString>;
196
+ pathTemplate: z.ZodOptional<z.ZodString>;
197
+ jsonPathTemplate: z.ZodOptional<z.ZodString>;
198
+ flatPreserveRelativeDir: z.ZodDefault<z.ZodBoolean>;
199
+ rewriteRelativeLinks: z.ZodOptional<z.ZodBoolean>;
200
+ linkRewriteDocsRoot: z.ZodOptional<z.ZodString>;
201
+ postProcessing: z.ZodOptional<z.ZodObject<{
202
+ languageListBlock: z.ZodOptional<z.ZodObject<{
203
+ start: z.ZodString;
204
+ end: z.ZodString;
205
+ separator: z.ZodString;
206
+ }, z.core.$strict>>;
207
+ regexAdjustments: z.ZodDefault<z.ZodArray<z.ZodObject<{
208
+ description: z.ZodOptional<z.ZodString>;
209
+ search: z.ZodString;
210
+ replace: z.ZodString;
211
+ }, z.core.$strict>>>;
212
+ }, z.core.$strict>>;
213
+ }, z.core.$strict>;
214
+ declare const uiConfigSchema: z.ZodObject<{
215
+ sourceRoots: z.ZodDefault<z.ZodArray<z.ZodString>>;
216
+ stringsJson: z.ZodDefault<z.ZodString>;
217
+ flatOutputDir: z.ZodDefault<z.ZodString>;
218
+ preferredModel: z.ZodOptional<z.ZodString>;
219
+ reactExtractor: z.ZodOptional<z.ZodObject<{
220
+ extensions: z.ZodDefault<z.ZodArray<z.ZodString>>;
221
+ funcNames: z.ZodDefault<z.ZodArray<z.ZodString>>;
222
+ includePackageDescription: z.ZodDefault<z.ZodBoolean>;
223
+ packageJsonPath: z.ZodOptional<z.ZodString>;
224
+ }, z.core.$strict>>;
225
+ }, z.core.$strict>;
226
+ declare const svgAssetsConfigSchema: z.ZodObject<{
227
+ sourcePath: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodArray<z.ZodString>>;
228
+ outputDir: z.ZodString;
229
+ pathTemplate: z.ZodOptional<z.ZodString>;
230
+ style: z.ZodEnum<{
231
+ flat: "flat";
232
+ nested: "nested";
233
+ }>;
234
+ svgExtractor: z.ZodOptional<z.ZodObject<{
235
+ forceLowercase: z.ZodDefault<z.ZodBoolean>;
236
+ }, z.core.$strict>>;
237
+ }, z.core.$strict>;
238
+ /** One documentation pipeline (markdown/JSON layout under `outputDir`, optional Docusaurus `jsonSource`). */
239
+ declare const documentationBlockSchema: z.ZodObject<{
240
+ description: z.ZodOptional<z.ZodString>;
241
+ contentPaths: z.ZodDefault<z.ZodArray<z.ZodString>>;
242
+ sourceFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
243
+ targetLocales: z.ZodOptional<z.ZodPipe<z.ZodTransform<string[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>>;
244
+ outputDir: z.ZodDefault<z.ZodString>;
245
+ jsonSource: z.ZodOptional<z.ZodString>;
246
+ markdownOutput: z.ZodDefault<z.ZodObject<{
247
+ style: z.ZodDefault<z.ZodEnum<{
248
+ flat: "flat";
249
+ nested: "nested";
250
+ docusaurus: "docusaurus";
251
+ }>>;
252
+ docsRoot: z.ZodOptional<z.ZodString>;
253
+ pathTemplate: z.ZodOptional<z.ZodString>;
254
+ jsonPathTemplate: z.ZodOptional<z.ZodString>;
255
+ flatPreserveRelativeDir: z.ZodDefault<z.ZodBoolean>;
256
+ rewriteRelativeLinks: z.ZodOptional<z.ZodBoolean>;
257
+ linkRewriteDocsRoot: z.ZodOptional<z.ZodString>;
258
+ postProcessing: z.ZodOptional<z.ZodObject<{
259
+ languageListBlock: z.ZodOptional<z.ZodObject<{
260
+ start: z.ZodString;
261
+ end: z.ZodString;
262
+ separator: z.ZodString;
263
+ }, z.core.$strict>>;
264
+ regexAdjustments: z.ZodDefault<z.ZodArray<z.ZodObject<{
265
+ description: z.ZodOptional<z.ZodString>;
266
+ search: z.ZodString;
267
+ replace: z.ZodString;
268
+ }, z.core.$strict>>>;
269
+ }, z.core.$strict>>;
270
+ }, z.core.$strict>>;
271
+ addFrontmatter: z.ZodOptional<z.ZodBoolean>;
272
+ }, z.core.$strict>;
273
+ /** Unified package config: shared root + `ui` + `documentations` pipelines. */
274
+ export declare const i18nConfigSchema: z.ZodObject<{
275
+ sourceLocale: z.ZodString;
276
+ cacheDir: z.ZodDefault<z.ZodString>;
277
+ targetLocales: z.ZodPipe<z.ZodTransform<string[], unknown>, z.ZodDefault<z.ZodArray<z.ZodString>>>;
278
+ openrouter: z.ZodObject<{
279
+ baseUrl: z.ZodDefault<z.ZodString>;
280
+ translationModels: z.ZodOptional<z.ZodArray<z.ZodString>>;
281
+ defaultModel: z.ZodOptional<z.ZodString>;
282
+ fallbackModel: z.ZodOptional<z.ZodString>;
283
+ maxTokens: z.ZodDefault<z.ZodNumber>;
284
+ temperature: z.ZodDefault<z.ZodNumber>;
285
+ }, z.core.$strip>;
286
+ features: z.ZodDefault<z.ZodObject<{
287
+ extractUIStrings: z.ZodDefault<z.ZodBoolean>;
288
+ translateUIStrings: z.ZodDefault<z.ZodBoolean>;
289
+ translateMarkdown: z.ZodDefault<z.ZodBoolean>;
290
+ translateJSON: z.ZodDefault<z.ZodBoolean>;
291
+ translateSVG: z.ZodDefault<z.ZodBoolean>;
292
+ }, z.core.$strip>>;
293
+ glossary: z.ZodDefault<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
294
+ uiGlossary: z.ZodOptional<z.ZodString>;
295
+ userGlossary: z.ZodOptional<z.ZodString>;
296
+ autoAddUserEditedToGlossary: z.ZodDefault<z.ZodBoolean>;
297
+ }, z.core.$strict>>>;
298
+ ui: z.ZodDefault<z.ZodObject<{
299
+ sourceRoots: z.ZodDefault<z.ZodArray<z.ZodString>>;
300
+ stringsJson: z.ZodDefault<z.ZodString>;
301
+ flatOutputDir: z.ZodDefault<z.ZodString>;
302
+ preferredModel: z.ZodOptional<z.ZodString>;
303
+ reactExtractor: z.ZodOptional<z.ZodObject<{
304
+ extensions: z.ZodDefault<z.ZodArray<z.ZodString>>;
305
+ funcNames: z.ZodDefault<z.ZodArray<z.ZodString>>;
306
+ includePackageDescription: z.ZodDefault<z.ZodBoolean>;
307
+ packageJsonPath: z.ZodOptional<z.ZodString>;
308
+ }, z.core.$strict>>;
309
+ }, z.core.$strict>>;
310
+ documentations: z.ZodDefault<z.ZodArray<z.ZodObject<{
311
+ description: z.ZodOptional<z.ZodString>;
312
+ contentPaths: z.ZodDefault<z.ZodArray<z.ZodString>>;
313
+ sourceFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
314
+ targetLocales: z.ZodOptional<z.ZodPipe<z.ZodTransform<string[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>>;
315
+ outputDir: z.ZodDefault<z.ZodString>;
316
+ jsonSource: z.ZodOptional<z.ZodString>;
317
+ markdownOutput: z.ZodDefault<z.ZodObject<{
318
+ style: z.ZodDefault<z.ZodEnum<{
319
+ flat: "flat";
320
+ nested: "nested";
321
+ docusaurus: "docusaurus";
322
+ }>>;
323
+ docsRoot: z.ZodOptional<z.ZodString>;
324
+ pathTemplate: z.ZodOptional<z.ZodString>;
325
+ jsonPathTemplate: z.ZodOptional<z.ZodString>;
326
+ flatPreserveRelativeDir: z.ZodDefault<z.ZodBoolean>;
327
+ rewriteRelativeLinks: z.ZodOptional<z.ZodBoolean>;
328
+ linkRewriteDocsRoot: z.ZodOptional<z.ZodString>;
329
+ postProcessing: z.ZodOptional<z.ZodObject<{
330
+ languageListBlock: z.ZodOptional<z.ZodObject<{
331
+ start: z.ZodString;
332
+ end: z.ZodString;
333
+ separator: z.ZodString;
334
+ }, z.core.$strict>>;
335
+ regexAdjustments: z.ZodDefault<z.ZodArray<z.ZodObject<{
336
+ description: z.ZodOptional<z.ZodString>;
337
+ search: z.ZodString;
338
+ replace: z.ZodString;
339
+ }, z.core.$strict>>>;
340
+ }, z.core.$strict>>;
341
+ }, z.core.$strict>>;
342
+ addFrontmatter: z.ZodOptional<z.ZodBoolean>;
343
+ }, z.core.$strict>>>;
344
+ rtlLocales: z.ZodOptional<z.ZodArray<z.ZodString>>;
345
+ localeDisplayNames: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
346
+ uiLanguagesPath: z.ZodOptional<z.ZodString>;
347
+ svg: z.ZodOptional<z.ZodObject<{
348
+ sourcePath: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodArray<z.ZodString>>;
349
+ outputDir: z.ZodString;
350
+ pathTemplate: z.ZodOptional<z.ZodString>;
351
+ style: z.ZodEnum<{
352
+ flat: "flat";
353
+ nested: "nested";
354
+ }>;
355
+ svgExtractor: z.ZodOptional<z.ZodObject<{
356
+ forceLowercase: z.ZodDefault<z.ZodBoolean>;
357
+ }, z.core.$strict>>;
358
+ }, z.core.$strict>>;
359
+ batchSize: z.ZodOptional<z.ZodNumber>;
360
+ maxBatchChars: z.ZodOptional<z.ZodNumber>;
361
+ concurrency: z.ZodOptional<z.ZodNumber>;
362
+ batchConcurrency: z.ZodOptional<z.ZodNumber>;
363
+ }, z.core.$strict>;
364
+ export type I18nConfig = z.infer<typeof i18nConfigSchema>;
365
+ export type OpenRouterConfig = z.infer<typeof openRouterConfigSchema>;
366
+ export type FeaturesConfig = z.infer<typeof featuresSchema>;
367
+ export type GlossaryConfig = z.infer<typeof glossarySchema>;
368
+ export type UIStringExtractorConfig = z.infer<typeof reactExtractorSchema>;
369
+ /** @deprecated Use {@link UIStringExtractorConfig} */
370
+ export type ReactExtractorConfig = UIStringExtractorConfig;
371
+ export type SvgExtractorConfig = z.infer<typeof svgExtractorSchema>;
372
+ export type LanguageListBlockConfig = z.infer<typeof languageListBlockSchema>;
373
+ export type RegexAdjustmentConfig = z.infer<typeof regexAdjustmentSchema>;
374
+ export type MarkdownPostProcessingConfig = z.infer<typeof markdownPostProcessingSchema>;
375
+ export type MarkdownOutputConfig = z.infer<typeof markdownOutputSchema>;
376
+ export type UiConfig = z.infer<typeof uiConfigSchema>;
377
+ export type DocumentationBlock = z.infer<typeof documentationBlockSchema>;
378
+ export type SvgAssetsConfig = z.infer<typeof svgAssetsConfigSchema>;
379
+ /**
380
+ * View passed to translate-docs internals: one active `documentation` block plus root fields.
381
+ * Built from root config via {@link toDocTranslateConfig}.
382
+ */
383
+ export type I18nDocTranslateConfig = Omit<I18nConfig, "documentations"> & {
384
+ documentation: DocumentationBlock;
385
+ };
386
+ export type RawI18nConfigInput = z.input<typeof i18nConfigSchema>;
387
+ export {};
388
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}