@better-translate/cli 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 (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/dist/ai-sdk-generator-WPQCTPGA.js +37 -0
  4. package/dist/ai-sdk-generator.d.ts +3 -0
  5. package/dist/ai-sdk-generator.d.ts.map +1 -0
  6. package/dist/bin.d.ts +3 -0
  7. package/dist/bin.d.ts.map +1 -0
  8. package/dist/bin.js +174 -0
  9. package/dist/chunk-JFSWNLL6.js +854 -0
  10. package/dist/chunk-WMIZO3GE.js +19 -0
  11. package/dist/cli.d.ts +6 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/config-loader.d.ts +6 -0
  14. package/dist/config-loader.d.ts.map +1 -0
  15. package/dist/config.d.ts +4 -0
  16. package/dist/config.d.ts.map +1 -0
  17. package/dist/config.js +8 -0
  18. package/dist/define-config.d.ts +3 -0
  19. package/dist/define-config.d.ts.map +1 -0
  20. package/dist/env.d.ts +3 -0
  21. package/dist/env.d.ts.map +1 -0
  22. package/dist/generate.d.ts +3 -0
  23. package/dist/generate.d.ts.map +1 -0
  24. package/dist/index.d.ts +6 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +14 -0
  27. package/dist/logger.d.ts +3 -0
  28. package/dist/logger.d.ts.map +1 -0
  29. package/dist/markdown.d.ts +18 -0
  30. package/dist/markdown.d.ts.map +1 -0
  31. package/dist/messages.d.ts +13 -0
  32. package/dist/messages.d.ts.map +1 -0
  33. package/dist/module-loader.d.ts +2 -0
  34. package/dist/module-loader.d.ts.map +1 -0
  35. package/dist/prompts.d.ts +24 -0
  36. package/dist/prompts.d.ts.map +1 -0
  37. package/dist/provider-models.d.ts +5 -0
  38. package/dist/provider-models.d.ts.map +1 -0
  39. package/dist/types.d.ts +90 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/validation.d.ts +12 -0
  42. package/dist/validation.d.ts.map +1 -0
  43. package/package.json +58 -0
@@ -0,0 +1,19 @@
1
+ // src/define-config.ts
2
+ function defineConfig(config) {
3
+ return config;
4
+ }
5
+
6
+ // src/provider-models.ts
7
+ function openai(modelId, options) {
8
+ return {
9
+ apiKey: options.apiKey,
10
+ kind: "provider-model",
11
+ modelId,
12
+ provider: "openai"
13
+ };
14
+ }
15
+
16
+ export {
17
+ defineConfig,
18
+ openai
19
+ };
package/dist/cli.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export declare function runCli(argv?: string[], options?: {
2
+ cwd?: string;
3
+ stderr?: (message: string) => void;
4
+ stdout?: (message: string) => void;
5
+ }): Promise<number>;
6
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAgDA,wBAAsB,MAAM,CAC1B,IAAI,WAAwB,EAC5B,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B,GACL,OAAO,CAAC,MAAM,CAAC,CAoCjB"}
@@ -0,0 +1,6 @@
1
+ import type { LoadedBetterTranslateCliConfig } from "./types.js";
2
+ export declare function loadCliConfig(options?: {
3
+ configPath?: string;
4
+ cwd?: string;
5
+ }): Promise<LoadedBetterTranslateCliConfig>;
6
+ //# sourceMappingURL=config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../src/config-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,8BAA8B,EAG/B,MAAM,YAAY,CAAC;AAuJpB,wBAAsB,aAAa,CACjC,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACT,GACL,OAAO,CAAC,8BAA8B,CAAC,CAyBzC"}
@@ -0,0 +1,4 @@
1
+ export { defineConfig } from "./define-config.js";
2
+ export { openai } from "./provider-models.js";
3
+ export type { BetterTranslateCliConfig, MarkdownExtension, OpenAIProviderModelSpec, } from "./types.js";
4
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,YAAY,CAAC"}
package/dist/config.js ADDED
@@ -0,0 +1,8 @@
1
+ import {
2
+ defineConfig,
3
+ openai
4
+ } from "./chunk-WMIZO3GE.js";
5
+ export {
6
+ defineConfig,
7
+ openai
8
+ };
@@ -0,0 +1,3 @@
1
+ import type { BetterTranslateCliConfig } from "./types.js";
2
+ export declare function defineConfig<TConfig extends BetterTranslateCliConfig>(config: TConfig): TConfig;
3
+ //# sourceMappingURL=define-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-config.d.ts","sourceRoot":"","sources":["../src/define-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,wBAAgB,YAAY,CAAC,OAAO,SAAS,wBAAwB,EACnE,MAAM,EAAE,OAAO,GACd,OAAO,CAET"}
package/dist/env.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export declare function loadEnvFiles(cwd: string): string[];
2
+ export declare function loadEnvFilesFromDirectories(directories: readonly string[]): string[];
3
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAKA,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CA0BlD;AAED,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,MAAM,EAAE,CAUV"}
@@ -0,0 +1,3 @@
1
+ import type { GenerateProjectOptions, GenerateProjectResult } from "./types.js";
2
+ export declare function generateProject(options?: GenerateProjectOptions): Promise<GenerateProjectResult>;
3
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAGV,sBAAsB,EACtB,qBAAqB,EAGtB,MAAM,YAAY,CAAC;AAgHpB,wBAAsB,eAAe,CACnC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CA6KhC"}
@@ -0,0 +1,6 @@
1
+ export { loadCliConfig } from "./config-loader.js";
2
+ export { defineConfig } from "./define-config.js";
3
+ export { generateProject } from "./generate.js";
4
+ export { openai } from "./provider-models.js";
5
+ export type { BetterTranslateCliConfig, BetterTranslateCliGatewayConfig, BetterTranslateCliOpenAIConfig, CliLogger, CliWriteOperation, GenerateProjectOptions, GenerateProjectResult, LoadedBetterTranslateCliConfig, MarkdownExtension, OpenAIProviderModelSpec, ResolvedBetterTranslateCliConfig, ResolvedBetterTranslateCliGatewayConfig, ResolvedBetterTranslateCliOpenAIConfig, StructuredGenerationRequest, StructuredGenerator, } from "./types.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,YAAY,EACV,wBAAwB,EACxB,+BAA+B,EAC/B,8BAA8B,EAC9B,SAAS,EACT,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,8BAA8B,EAC9B,iBAAiB,EACjB,uBAAuB,EACvB,gCAAgC,EAChC,uCAAuC,EACvC,sCAAsC,EACtC,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,14 @@
1
+ import {
2
+ generateProject,
3
+ loadCliConfig
4
+ } from "./chunk-JFSWNLL6.js";
5
+ import {
6
+ defineConfig,
7
+ openai
8
+ } from "./chunk-WMIZO3GE.js";
9
+ export {
10
+ defineConfig,
11
+ generateProject,
12
+ loadCliConfig,
13
+ openai
14
+ };
@@ -0,0 +1,3 @@
1
+ import type { CliLogger } from "./types.js";
2
+ export declare function createSpinnerLogger(): CliLogger;
3
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAgB,mBAAmB,IAAI,SAAS,CAuI/C"}
@@ -0,0 +1,18 @@
1
+ import type { TranslationMessages } from "@better-translate/core";
2
+ import type { MarkdownExtension } from "./types.js";
3
+ export interface LoadedMarkdownDocument {
4
+ body: string;
5
+ frontmatter: Record<string, unknown>;
6
+ frontmatterStrings: TranslationMessages;
7
+ relativePath: string;
8
+ schema: object;
9
+ sourceText: string;
10
+ sourcePath: string;
11
+ }
12
+ export declare function createMarkdownOutputSchema(frontmatterStrings: TranslationMessages): object;
13
+ export declare function applyMarkdownTranslation(sourceFrontmatter: Record<string, unknown>, translatedStrings: TranslationMessages, body: string): string;
14
+ export declare function listMarkdownSourceFiles(rootDir: string, extensions: readonly MarkdownExtension[]): Promise<string[]>;
15
+ export declare function loadMarkdownDocument(rootDir: string, sourcePath: string): Promise<LoadedMarkdownDocument>;
16
+ export declare function deriveTargetMarkdownRoot(rootDir: string, sourceLocale: string, targetLocale: string): string;
17
+ export declare function deriveTargetMarkdownPath(rootDir: string, sourceLocale: string, targetLocale: string, relativePath: string): string;
18
+ //# sourceMappingURL=markdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGpD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,kBAAkB,EAAE,mBAAmB,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAoED,wBAAgB,0BAA0B,CACxC,kBAAkB,EAAE,mBAAmB,GACtC,MAAM,CAYR;AA6BD,wBAAgB,wBAAwB,CACtC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,iBAAiB,EAAE,mBAAmB,EACtC,IAAI,EAAE,MAAM,GACX,MAAM,CAKR;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,SAAS,iBAAiB,EAAE,GACvC,OAAO,CAAC,MAAM,EAAE,CAAC,CAQnB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,sBAAsB,CAAC,CAmBjC;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,CASR;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,CAKR"}
@@ -0,0 +1,13 @@
1
+ import { type TranslationMessages } from "@better-translate/core";
2
+ export interface LoadedSourceMessages {
3
+ format: "json" | "ts";
4
+ keyPaths: readonly string[];
5
+ messages: TranslationMessages;
6
+ schema: object;
7
+ sourceText: string;
8
+ sourcePath: string;
9
+ }
10
+ export declare function loadSourceMessages(sourcePath: string, sourceLocale: string): Promise<LoadedSourceMessages>;
11
+ export declare function deriveTargetMessagesPath(sourcePath: string, sourceLocale: string, targetLocale: string): string;
12
+ export declare function serializeMessages(messages: TranslationMessages, format: "json" | "ts", locale: string): string;
13
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAUhC,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAoBD,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAsC/B;AAyBD,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,CAWR;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,mBAAmB,EAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,MAAM,EAAE,MAAM,GACb,MAAM,CASR"}
@@ -0,0 +1,2 @@
1
+ export declare function importModule(modulePath: string): Promise<Record<string, unknown>>;
2
+ //# sourceMappingURL=module-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-loader.d.ts","sourceRoot":"","sources":["../src/module-loader.ts"],"names":[],"mappings":"AA6CA,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAMlC"}
@@ -0,0 +1,24 @@
1
+ import type { TranslationMessages } from "@better-translate/core";
2
+ export declare function createMessagesPrompt(options: {
3
+ keyPaths: readonly string[];
4
+ sourceLocale: string;
5
+ sourceMessages: TranslationMessages;
6
+ sourceText: string;
7
+ sourcePath: string;
8
+ targetLocale: string;
9
+ }): {
10
+ prompt: string;
11
+ system: string;
12
+ };
13
+ export declare function createMarkdownPrompt(options: {
14
+ body: string;
15
+ frontmatterStrings: Record<string, unknown>;
16
+ relativePath: string;
17
+ sourceLocale: string;
18
+ sourceText: string;
19
+ targetLocale: string;
20
+ }): {
21
+ prompt: string;
22
+ system: string;
23
+ };
24
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAgClE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,mBAAmB,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG;IACF,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAwBA;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG;IACF,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAwBA"}
@@ -0,0 +1,5 @@
1
+ import type { OpenAIProviderModelSpec } from "./types.js";
2
+ export declare function openai(modelId: string, options: {
3
+ apiKey: string;
4
+ }): OpenAIProviderModelSpec;
5
+ //# sourceMappingURL=provider-models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-models.d.ts","sourceRoot":"","sources":["../src/provider-models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,wBAAgB,MAAM,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,MAAM,EAAE,MAAM,CAAC;CAChB,GACA,uBAAuB,CAOzB"}
@@ -0,0 +1,90 @@
1
+ export type MarkdownExtension = ".md" | ".mdx";
2
+ interface BetterTranslateCliConfigBase {
3
+ locales: string[];
4
+ markdown?: {
5
+ extensions?: readonly MarkdownExtension[];
6
+ rootDir: string;
7
+ };
8
+ messages: {
9
+ entry: string;
10
+ };
11
+ sourceLocale: string;
12
+ }
13
+ export interface OpenAIProviderModelSpec {
14
+ apiKey: string;
15
+ kind: "provider-model";
16
+ modelId: string;
17
+ provider: "openai";
18
+ }
19
+ export interface BetterTranslateCliGatewayConfig extends BetterTranslateCliConfigBase {
20
+ gateway: {
21
+ apiKey: string;
22
+ };
23
+ model: string;
24
+ }
25
+ export interface BetterTranslateCliOpenAIConfig extends BetterTranslateCliConfigBase {
26
+ gateway?: never;
27
+ model: OpenAIProviderModelSpec;
28
+ }
29
+ export type BetterTranslateCliConfig = BetterTranslateCliGatewayConfig | BetterTranslateCliOpenAIConfig;
30
+ interface ResolvedBetterTranslateCliConfigBase {
31
+ locales: readonly string[];
32
+ markdown?: {
33
+ extensions: readonly MarkdownExtension[];
34
+ rootDir: string;
35
+ };
36
+ messages: {
37
+ entry: string;
38
+ };
39
+ sourceLocale: string;
40
+ }
41
+ export interface ResolvedBetterTranslateCliGatewayConfig extends ResolvedBetterTranslateCliConfigBase {
42
+ gateway: {
43
+ apiKey: string;
44
+ };
45
+ model: string;
46
+ }
47
+ export interface ResolvedBetterTranslateCliOpenAIConfig extends ResolvedBetterTranslateCliConfigBase {
48
+ model: OpenAIProviderModelSpec;
49
+ }
50
+ export type ResolvedBetterTranslateCliConfig = ResolvedBetterTranslateCliGatewayConfig | ResolvedBetterTranslateCliOpenAIConfig;
51
+ export interface LoadedBetterTranslateCliConfig {
52
+ config: ResolvedBetterTranslateCliConfig;
53
+ directory: string;
54
+ path: string;
55
+ }
56
+ export interface CliWriteOperation {
57
+ content: string;
58
+ kind: "markdown" | "messages";
59
+ locale: string;
60
+ sourcePath: string;
61
+ targetPath: string;
62
+ }
63
+ export interface CliLogger {
64
+ error(message: string): void;
65
+ info(message: string): void;
66
+ }
67
+ export interface StructuredGenerationRequest<TOutput> {
68
+ kind: "markdown" | "messages";
69
+ prompt: string;
70
+ schema: object;
71
+ sourcePath: string;
72
+ system: string;
73
+ targetLocale: string;
74
+ validate?: (value: unknown) => TOutput;
75
+ }
76
+ export type StructuredGenerator = <TOutput>(request: StructuredGenerationRequest<TOutput>) => Promise<TOutput>;
77
+ export interface GenerateProjectOptions {
78
+ configPath?: string;
79
+ cwd?: string;
80
+ dryRun?: boolean;
81
+ generator?: StructuredGenerator;
82
+ logger?: CliLogger;
83
+ }
84
+ export interface GenerateProjectResult {
85
+ dryRun: boolean;
86
+ loadedConfig: LoadedBetterTranslateCliConfig;
87
+ writes: CliWriteOperation[];
88
+ }
89
+ export {};
90
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { MarkdownExtension } from "./types.js";
2
+ type UnknownRecord = Record<string, unknown>;
3
+ export declare function isRecord(value: unknown): value is UnknownRecord;
4
+ export declare function assert(condition: unknown, message: string): asserts condition;
5
+ export declare function isTranslationMessages(value: unknown): value is UnknownRecord;
6
+ export declare function assertTranslationMessages(value: unknown, message: string): asserts value is UnknownRecord;
7
+ export declare function flattenTranslationKeys(messages: UnknownRecord, prefix?: string): string[];
8
+ export declare function assertExactMessageShape(reference: UnknownRecord, candidate: unknown, pathParts?: string[]): asserts candidate is UnknownRecord;
9
+ export declare function normalizeMarkdownExtensions(value: unknown): readonly MarkdownExtension[];
10
+ export declare function toJavaScriptIdentifier(value: string): string;
11
+ export {};
12
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAE/D;AAED,wBAAgB,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAI7E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAY5E;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,KAAK,IAAI,aAAa,CAEhC;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,aAAa,EACvB,MAAM,SAAK,GACV,MAAM,EAAE,CAeV;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,OAAO,EAClB,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,SAAS,IAAI,aAAa,CAoCpC;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,GACb,SAAS,iBAAiB,EAAE,CAwB9B;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgB5D"}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@better-translate/cli",
3
+ "version": "1.0.0",
4
+ "description": "AI-powered translation generation CLI for Better Translate.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "module": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "bin": {
11
+ "bt": "./dist/bin.js"
12
+ },
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "import": "./dist/index.js"
17
+ },
18
+ "./config": {
19
+ "types": "./dist/config.d.ts",
20
+ "import": "./dist/config.js"
21
+ },
22
+ "./package.json": "./package.json"
23
+ },
24
+ "files": ["dist", "LICENSE", "README.md"],
25
+ "scripts": {
26
+ "build": "tsup src/index.ts src/config.ts src/bin.ts --format esm --clean && tsc -p tsconfig.build.json",
27
+ "check-types": "tsc --noEmit",
28
+ "test": "bun test tests/runtime",
29
+ "test:types": "tsc -p tests/types/tsconfig.json --noEmit"
30
+ },
31
+ "publishConfig": {
32
+ "access": "public"
33
+ },
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "git+https://github.com/jralvarenga/better-translate.git",
37
+ "directory": "packages/cli"
38
+ },
39
+ "homepage": "https://github.com/jralvarenga/better-translate/tree/main/packages/cli#readme",
40
+ "bugs": {
41
+ "url": "https://github.com/jralvarenga/better-translate/issues"
42
+ },
43
+ "dependencies": {
44
+ "@ai-sdk/openai": "^3.0.41",
45
+ "ai": "^6.0.116",
46
+ "@better-translate/core": "workspace:^",
47
+ "dotenv": "^17.2.3",
48
+ "gray-matter": "^4.0.3",
49
+ "ora": "^8.2.0",
50
+ "picocolors": "^1.1.1",
51
+ "typescript": "5.9.2"
52
+ },
53
+ "devDependencies": {
54
+ "@repo/typescript-config": "*",
55
+ "@types/node": "^24.5.2"
56
+ },
57
+ "keywords": ["ai", "cli", "i18n", "l10n", "translations", "typescript"]
58
+ }