glotto 2.8.0 → 3.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/README.md +86 -55
- package/esm/cli.js +49 -41
- package/esm/deno.d.ts +1 -1
- package/esm/deno.js +7 -7
- package/esm/deps/jsr.io/@std/cli/1.0.29/_data.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/_run_length.d.ts.map +1 -1
- package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/mod.d.ts.map +1 -1
- package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/parse_args.d.ts.map +1 -1
- package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/parse_args.js +17 -3
- package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/prompt_secret.d.ts.map +1 -1
- package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/prompt_secret.js +1 -1
- package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/unicode_width.d.ts.map +1 -1
- package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/unstable_spinner.d.ts.map +1 -1
- package/esm/deps/jsr.io/@std/internal/1.0.13/_os.d.ts.map +1 -0
- package/esm/deps/jsr.io/@std/internal/{1.0.12 → 1.0.13}/_os.js +1 -1
- package/esm/deps/jsr.io/@std/internal/{1.0.12 → 1.0.13}/os.d.ts.map +1 -1
- package/esm/deps/jsr.io/@std/internal/{1.0.12 → 1.0.13}/os.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/basename.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/constants.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/dirname.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/extname.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/format.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/from_file_url.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/glob_to_regexp.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/is_absolute.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/join.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/join_globs.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/normalize.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/normalize_glob.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/parse.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/relative.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/resolve.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/to_file_url.js +1 -1
- package/esm/deps/jsr.io/@std/path/1.1.4/to_namespaced_path.js +1 -1
- package/esm/src/contants.d.ts +2 -3
- package/esm/src/contants.d.ts.map +1 -1
- package/esm/src/contants.js +22 -13
- package/esm/src/file.d.ts +2 -7
- package/esm/src/file.d.ts.map +1 -1
- package/esm/src/file.js +1 -93
- package/esm/src/providers/anthropic.d.ts +6 -11
- package/esm/src/providers/anthropic.d.ts.map +1 -1
- package/esm/src/providers/anthropic.js +14 -103
- package/esm/src/providers/gemini.d.ts +6 -11
- package/esm/src/providers/gemini.d.ts.map +1 -1
- package/esm/src/providers/gemini.js +13 -109
- package/esm/src/providers/openai.d.ts +6 -11
- package/esm/src/providers/openai.d.ts.map +1 -1
- package/esm/src/providers/openai.js +10 -104
- package/esm/src/translator.d.ts +8 -0
- package/esm/src/translator.d.ts.map +1 -0
- package/esm/src/translator.js +200 -0
- package/esm/src/types.d.ts +28 -11
- package/esm/src/types.d.ts.map +1 -1
- package/esm/src/utilites.d.ts +1 -6
- package/esm/src/utilites.d.ts.map +1 -1
- package/esm/src/utilites.js +18 -77
- package/package.json +4 -4
- package/script/cli.js +47 -39
- package/script/deno.d.ts +1 -1
- package/script/deno.js +7 -7
- package/script/deps/jsr.io/@std/cli/1.0.29/_data.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/_run_length.d.ts.map +1 -1
- package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/mod.d.ts.map +1 -1
- package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/parse_args.d.ts.map +1 -1
- package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/parse_args.js +17 -3
- package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/prompt_secret.d.ts.map +1 -1
- package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/prompt_secret.js +1 -1
- package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/unicode_width.d.ts.map +1 -1
- package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/unstable_spinner.d.ts.map +1 -1
- package/script/deps/jsr.io/@std/internal/1.0.13/_os.d.ts.map +1 -0
- package/script/deps/jsr.io/@std/internal/{1.0.12 → 1.0.13}/_os.js +1 -1
- package/script/deps/jsr.io/@std/internal/{1.0.12 → 1.0.13}/os.d.ts.map +1 -1
- package/script/deps/jsr.io/@std/internal/{1.0.12 → 1.0.13}/os.js +1 -1
- package/script/deps/jsr.io/@std/path/1.1.4/basename.js +1 -1
- package/script/deps/jsr.io/@std/path/1.1.4/constants.js +1 -1
- package/script/deps/jsr.io/@std/path/1.1.4/dirname.js +1 -1
- package/script/deps/jsr.io/@std/path/1.1.4/extname.js +1 -1
- package/script/deps/jsr.io/@std/path/1.1.4/format.js +1 -1
- package/script/deps/jsr.io/@std/path/1.1.4/from_file_url.js +1 -1
- package/script/deps/jsr.io/@std/path/1.1.4/glob_to_regexp.js +1 -1
- package/script/deps/jsr.io/@std/path/1.1.4/is_absolute.js +1 -1
- package/script/deps/jsr.io/@std/path/1.1.4/join.js +1 -1
- package/script/deps/jsr.io/@std/path/1.1.4/join_globs.js +1 -1
- package/script/deps/jsr.io/@std/path/1.1.4/normalize.js +1 -1
- package/script/deps/jsr.io/@std/path/1.1.4/normalize_glob.js +1 -1
- package/script/deps/jsr.io/@std/path/1.1.4/parse.js +1 -1
- package/script/deps/jsr.io/@std/path/1.1.4/relative.js +1 -1
- package/script/deps/jsr.io/@std/path/1.1.4/resolve.js +1 -1
- package/script/deps/jsr.io/@std/path/1.1.4/to_file_url.js +1 -1
- package/script/deps/jsr.io/@std/path/1.1.4/to_namespaced_path.js +1 -1
- package/script/src/contants.d.ts +2 -3
- package/script/src/contants.d.ts.map +1 -1
- package/script/src/contants.js +23 -14
- package/script/src/file.d.ts +2 -7
- package/script/src/file.d.ts.map +1 -1
- package/script/src/file.js +2 -99
- package/script/src/providers/anthropic.d.ts +6 -11
- package/script/src/providers/anthropic.d.ts.map +1 -1
- package/script/src/providers/anthropic.js +13 -102
- package/script/src/providers/gemini.d.ts +6 -11
- package/script/src/providers/gemini.d.ts.map +1 -1
- package/script/src/providers/gemini.js +12 -108
- package/script/src/providers/openai.d.ts +6 -11
- package/script/src/providers/openai.d.ts.map +1 -1
- package/script/src/providers/openai.js +9 -103
- package/script/src/translator.d.ts +8 -0
- package/script/src/translator.d.ts.map +1 -0
- package/script/src/translator.js +209 -0
- package/script/src/types.d.ts +28 -11
- package/script/src/types.d.ts.map +1 -1
- package/script/src/utilites.d.ts +1 -6
- package/script/src/utilites.d.ts.map +1 -1
- package/script/src/utilites.js +19 -80
- package/esm/deps/jsr.io/@std/cli/1.0.27/_data.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts +0 -23
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common16.js +0 -51
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common32.d.ts +0 -35
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common32.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common32.js +0 -192
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common64.d.ts +0 -35
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common64.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common64.js +0 -113
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts +0 -4
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_common_detach.js +0 -13
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts +0 -9
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_types.js +0 -2
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_validate_binary_like.d.ts +0 -2
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_validate_binary_like.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/_validate_binary_like.js +0 -26
- package/esm/deps/jsr.io/@std/encoding/1.0.10/ascii85.d.ts +0 -61
- package/esm/deps/jsr.io/@std/encoding/1.0.10/ascii85.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/ascii85.js +0 -152
- package/esm/deps/jsr.io/@std/encoding/1.0.10/base32.d.ts +0 -40
- package/esm/deps/jsr.io/@std/encoding/1.0.10/base32.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/base32.js +0 -87
- package/esm/deps/jsr.io/@std/encoding/1.0.10/base58.d.ts +0 -40
- package/esm/deps/jsr.io/@std/encoding/1.0.10/base58.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/base58.js +0 -131
- package/esm/deps/jsr.io/@std/encoding/1.0.10/base64.d.ts +0 -40
- package/esm/deps/jsr.io/@std/encoding/1.0.10/base64.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/base64.js +0 -82
- package/esm/deps/jsr.io/@std/encoding/1.0.10/base64url.d.ts +0 -40
- package/esm/deps/jsr.io/@std/encoding/1.0.10/base64url.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/base64url.js +0 -72
- package/esm/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts +0 -39
- package/esm/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/hex.js +0 -87
- package/esm/deps/jsr.io/@std/encoding/1.0.10/mod.d.ts +0 -98
- package/esm/deps/jsr.io/@std/encoding/1.0.10/mod.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/mod.js +0 -99
- package/esm/deps/jsr.io/@std/encoding/1.0.10/varint.d.ts +0 -120
- package/esm/deps/jsr.io/@std/encoding/1.0.10/varint.d.ts.map +0 -1
- package/esm/deps/jsr.io/@std/encoding/1.0.10/varint.js +0 -205
- package/esm/deps/jsr.io/@std/internal/1.0.12/_os.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/cli/1.0.27/_data.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts +0 -23
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common16.js +0 -57
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common32.d.ts +0 -35
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common32.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common32.js +0 -198
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common64.d.ts +0 -35
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common64.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common64.js +0 -119
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts +0 -4
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/_common_detach.js +0 -16
- package/script/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts +0 -9
- package/script/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/_types.js +0 -3
- package/script/deps/jsr.io/@std/encoding/1.0.10/_validate_binary_like.d.ts +0 -2
- package/script/deps/jsr.io/@std/encoding/1.0.10/_validate_binary_like.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/_validate_binary_like.js +0 -29
- package/script/deps/jsr.io/@std/encoding/1.0.10/ascii85.d.ts +0 -61
- package/script/deps/jsr.io/@std/encoding/1.0.10/ascii85.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/ascii85.js +0 -156
- package/script/deps/jsr.io/@std/encoding/1.0.10/base32.d.ts +0 -40
- package/script/deps/jsr.io/@std/encoding/1.0.10/base32.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/base32.js +0 -91
- package/script/deps/jsr.io/@std/encoding/1.0.10/base58.d.ts +0 -40
- package/script/deps/jsr.io/@std/encoding/1.0.10/base58.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/base58.js +0 -135
- package/script/deps/jsr.io/@std/encoding/1.0.10/base64.d.ts +0 -40
- package/script/deps/jsr.io/@std/encoding/1.0.10/base64.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/base64.js +0 -86
- package/script/deps/jsr.io/@std/encoding/1.0.10/base64url.d.ts +0 -40
- package/script/deps/jsr.io/@std/encoding/1.0.10/base64url.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/base64url.js +0 -76
- package/script/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts +0 -39
- package/script/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/hex.js +0 -91
- package/script/deps/jsr.io/@std/encoding/1.0.10/mod.d.ts +0 -98
- package/script/deps/jsr.io/@std/encoding/1.0.10/mod.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/mod.js +0 -115
- package/script/deps/jsr.io/@std/encoding/1.0.10/varint.d.ts +0 -120
- package/script/deps/jsr.io/@std/encoding/1.0.10/varint.d.ts.map +0 -1
- package/script/deps/jsr.io/@std/encoding/1.0.10/varint.js +0 -211
- package/script/deps/jsr.io/@std/internal/1.0.12/_os.d.ts.map +0 -1
- /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/_data.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/_data.js +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/_run_length.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/_run_length.js +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/mod.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/mod.js +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/parse_args.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/prompt_secret.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/unicode_width.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/unicode_width.js +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/unstable_spinner.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/unstable_spinner.js +0 -0
- /package/esm/deps/jsr.io/@std/internal/{1.0.12 → 1.0.13}/_os.d.ts +0 -0
- /package/esm/deps/jsr.io/@std/internal/{1.0.12 → 1.0.13}/os.d.ts +0 -0
- /package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/_data.d.ts +0 -0
- /package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/_data.js +0 -0
- /package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/_run_length.d.ts +0 -0
- /package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/_run_length.js +0 -0
- /package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/mod.d.ts +0 -0
- /package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/mod.js +0 -0
- /package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/parse_args.d.ts +0 -0
- /package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/prompt_secret.d.ts +0 -0
- /package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/unicode_width.d.ts +0 -0
- /package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/unicode_width.js +0 -0
- /package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/unstable_spinner.d.ts +0 -0
- /package/script/deps/jsr.io/@std/cli/{1.0.27 → 1.0.29}/unstable_spinner.js +0 -0
- /package/script/deps/jsr.io/@std/internal/{1.0.12 → 1.0.13}/_os.d.ts +0 -0
- /package/script/deps/jsr.io/@std/internal/{1.0.12 → 1.0.13}/os.d.ts +0 -0
package/README.md
CHANGED
|
@@ -1,32 +1,42 @@
|
|
|
1
1
|
# Glotto AI Translator
|
|
2
2
|
|
|
3
|
-
Glotto
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
-
|
|
3
|
+
Glotto translates i18n JSON files (i18next, react-intl, vue-i18n, etc.) using AI providers without forcing the model to produce JSON. It walks the input JSON,
|
|
4
|
+
extracts every string leaf with its path, sends them to the model as plain-text tagged batches, and reconstructs the JSON from the responses. The original
|
|
5
|
+
structure, keys, arrays, variables and HTML tags are preserved by Glotto itself — the model only sees and produces text.
|
|
6
|
+
|
|
7
|
+
## Why this approach
|
|
8
|
+
|
|
9
|
+
- **Provider-agnostic**: works with Gemini, OpenAI/OpenAI-compatible (Ollama, vLLM, TogetherAI, etc.) and Anthropic. Every provider implements the same
|
|
10
|
+
`TextTranslator` contract: text in, text out.
|
|
11
|
+
- **No JSON deadlock**: the model is never asked to emit valid JSON, so grammar-constrained sampling, broken responses and infinite loops on local models are
|
|
12
|
+
eliminated.
|
|
13
|
+
- **Structure-safe**: keys, nesting, arrays and non-string leaves (numbers, booleans, null, empty objects/arrays) are preserved by reconstruction, not by the
|
|
14
|
+
model.
|
|
15
|
+
- **Token efficient**: source size per request is bounded; failed entries are retried individually instead of re-sending the whole batch.
|
|
16
|
+
- **Variable preservation**: the prompt instructs the model to keep `{{name}}`, `__VAR__`, `$t(...)`, `%s`, `%d`, HTML tags and markdown intact.
|
|
17
|
+
|
|
18
|
+
## How it works
|
|
19
|
+
|
|
20
|
+
1. **Extract** — recursively walk the JSON and collect every leaf as `{ id, path, value, translatable }`. Empty objects/arrays are kept as non-translatable
|
|
21
|
+
leaves so the structure is rebuildable.
|
|
22
|
+
2. **Batch** — group translatable leaves into batches by source byte size (`--max-batch-size`, default 12 KB).
|
|
23
|
+
3. **Encode** — wrap each entry as `≪id≫value≪/id≫` and send a single prompt per batch.
|
|
24
|
+
4. **Translate** — call `provider.translate(prompt) → string`. No JSON mode is requested.
|
|
25
|
+
5. **Decode** — parse the response with the same tag regex, mapping `id → translation`.
|
|
26
|
+
6. **Reconstruct** — walk all leaves, place translated values (or original values for non-translatable leaves) back into a fresh object/array tree following the
|
|
27
|
+
recorded path, then write the resulting JSON.
|
|
28
|
+
|
|
29
|
+
If a batch response is missing some IDs, only the missing entries are retried (with exponential backoff) — the successful ones are kept.
|
|
12
30
|
|
|
13
31
|
## Installation
|
|
14
32
|
|
|
15
|
-
Glotto can be installed and used through either JSR (Deno) or npm. Choose the method that best suits your development environment.
|
|
16
|
-
|
|
17
33
|
### [JSR (Deno)](https://jsr.io/@ibodev/glotto)
|
|
18
34
|
|
|
19
|
-
#### Global Installation
|
|
20
|
-
|
|
21
|
-
Install Glotto globally to use it as a CLI tool from anywhere:
|
|
22
|
-
|
|
23
35
|
```bash
|
|
24
36
|
deno install --global --name glotto -A jsr:@ibodev/glotto
|
|
25
37
|
```
|
|
26
38
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
Alternatively, run Glotto directly without installation:
|
|
39
|
+
Or run without installing:
|
|
30
40
|
|
|
31
41
|
```bash
|
|
32
42
|
deno run -A jsr:@ibodev/glotto
|
|
@@ -34,19 +44,11 @@ deno run -A jsr:@ibodev/glotto
|
|
|
34
44
|
|
|
35
45
|
### [npm (Node)](https://www.npmjs.com/package/glotto)
|
|
36
46
|
|
|
37
|
-
#### Global Installation
|
|
38
|
-
|
|
39
|
-
Install Glotto globally via npm to use it as a CLI tool:
|
|
40
|
-
|
|
41
47
|
```bash
|
|
42
48
|
npm install --global glotto
|
|
43
49
|
```
|
|
44
50
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
#### Direct Execution
|
|
48
|
-
|
|
49
|
-
Run Glotto directly using npx without installation:
|
|
51
|
+
Or via npx:
|
|
50
52
|
|
|
51
53
|
```bash
|
|
52
54
|
npx glotto
|
|
@@ -54,73 +56,102 @@ npx glotto
|
|
|
54
56
|
|
|
55
57
|
## Usage
|
|
56
58
|
|
|
57
|
-
### Basic
|
|
59
|
+
### Basic (default Gemini)
|
|
58
60
|
|
|
59
61
|
```bash
|
|
60
62
|
glotto --key <gemini-api-key> -i en.json -o ar.json -f English -t Arabic
|
|
61
63
|
```
|
|
62
64
|
|
|
63
|
-
###
|
|
65
|
+
### OpenAI / OpenAI-compatible (Ollama, vLLM, etc.)
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
glotto --key <openai-api-key> -i en.json -o tr.json -f English -t Turkish -p openai
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Custom base URL (e.g. local Ollama):
|
|
64
72
|
|
|
65
73
|
```bash
|
|
66
|
-
glotto --key
|
|
74
|
+
glotto --key any-string -i en.json -o tr.json -f English -t Turkish \
|
|
75
|
+
-p openai -m qwen2.5:32b --url http://localhost:11434/v1
|
|
67
76
|
```
|
|
68
77
|
|
|
69
|
-
|
|
78
|
+
### Anthropic (Claude)
|
|
70
79
|
|
|
71
80
|
```bash
|
|
72
|
-
glotto --key <
|
|
81
|
+
glotto --key <anthropic-api-key> -i en.json -o tr.json -f English -t Turkish -p anthropic
|
|
73
82
|
```
|
|
74
83
|
|
|
75
|
-
###
|
|
84
|
+
### Override the model
|
|
76
85
|
|
|
77
86
|
```bash
|
|
78
|
-
glotto --key <
|
|
87
|
+
glotto --key <openai-api-key> -i en.json -o tr.json -f English -t Turkish -p openai -m gpt-4.1
|
|
79
88
|
```
|
|
80
89
|
|
|
81
|
-
|
|
90
|
+
### Disable rate-limit delay and request timeout
|
|
82
91
|
|
|
83
92
|
```bash
|
|
84
|
-
glotto --key <
|
|
93
|
+
glotto --key <key> -i en.json -o tr.json -f English -t Turkish --no-limit --no-timeout
|
|
85
94
|
```
|
|
86
95
|
|
|
87
|
-
|
|
96
|
+
### Tune batch size
|
|
97
|
+
|
|
98
|
+
`--max-batch-size` is the maximum source bytes per batch, in KB. Smaller batches mean more requests but lower per-request token cost; larger batches mean fewer
|
|
99
|
+
requests.
|
|
88
100
|
|
|
89
101
|
```bash
|
|
90
|
-
glotto --key <
|
|
102
|
+
glotto --key <key> -i en.json -o tr.json -f English -t Turkish --max-batch-size 8
|
|
91
103
|
```
|
|
92
104
|
|
|
93
|
-
|
|
105
|
+
## Parameters
|
|
106
|
+
|
|
107
|
+
| Flag | Description |
|
|
108
|
+
| ------------------ | ------------------------------------------------------------------------------------ |
|
|
109
|
+
| `--key` | API key for the chosen provider (required) |
|
|
110
|
+
| `-p`, `--provider` | `gemini` \| `openai` \| `anthropic` (default `gemini`) |
|
|
111
|
+
| `-m`, `--model` | Model name (defaults: `gemini-2.5-flash`, `gpt-4.1-mini`, `claude-3-5-haiku-latest`) |
|
|
112
|
+
| `-i`, `--input` | Source JSON file (required) |
|
|
113
|
+
| `-o`, `--output` | Target JSON file (required) |
|
|
114
|
+
| `-f`, `--from` | Source language |
|
|
115
|
+
| `-t`, `--to` | Target language |
|
|
116
|
+
| `--url` | Custom base URL for OpenAI/Anthropic |
|
|
117
|
+
| `--no-limit` | Skip the inter-batch rate-limit delay |
|
|
118
|
+
| `--no-timeout` | Disable request timeout |
|
|
119
|
+
| `--max-batch-size` | Max source bytes per batch in KB (default 12) |
|
|
120
|
+
| `-h`, `--help` | Help |
|
|
121
|
+
| `-v`, `--version` | Version |
|
|
122
|
+
|
|
123
|
+
## Recommended models
|
|
94
124
|
|
|
95
|
-
-
|
|
96
|
-
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
100
|
-
-
|
|
101
|
-
|
|
102
|
-
-
|
|
125
|
+
For high-quality multilingual output via OpenAI-compatible endpoints (Ollama, vLLM):
|
|
126
|
+
|
|
127
|
+
- `aya-expanse:32b` — Cohere multilingual specialist, strong Turkish/Arabic/EU languages
|
|
128
|
+
- `qwen2.5:32b` / `qwen2.5:14b` — strong general multilingual + instruction-following
|
|
129
|
+
- `mistral-small3:24b` — lighter, ~13 GB at q4
|
|
130
|
+
- `gemma3:27b-it` — Google instruction-tuned
|
|
131
|
+
|
|
132
|
+
Pure translation-only models (e.g. translategemma) are not ideal here: the prompt asks the model to preserve tags and follow per-entry instructions, which
|
|
133
|
+
requires instruction-following rather than a sentence-translation fine-tune.
|
|
103
134
|
|
|
104
135
|
## Development
|
|
105
136
|
|
|
106
|
-
|
|
137
|
+
Run from source:
|
|
107
138
|
|
|
108
139
|
```bash
|
|
109
|
-
deno task cli --key <
|
|
140
|
+
deno task cli --key <key> -i en.json -o tr.json -f English -t Turkish -p gemini
|
|
110
141
|
```
|
|
111
142
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
To create a production build:
|
|
143
|
+
Build a single-file binary:
|
|
115
144
|
|
|
116
145
|
```bash
|
|
117
146
|
deno task build
|
|
118
147
|
```
|
|
119
148
|
|
|
120
|
-
|
|
149
|
+
Build npm package:
|
|
121
150
|
|
|
122
|
-
|
|
151
|
+
```bash
|
|
152
|
+
deno task build:npm
|
|
153
|
+
```
|
|
123
154
|
|
|
124
155
|
## License
|
|
125
156
|
|
|
126
|
-
MIT
|
|
157
|
+
MIT © 2026
|
package/esm/cli.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import "./_dnt.polyfills.js";
|
|
3
3
|
import * as dntShim from "./_dnt.shims.js";
|
|
4
|
-
import { Spinner } from './deps/jsr.io/@std/cli/1.0.
|
|
5
|
-
import { parseArgs } from './deps/jsr.io/@std/cli/1.0.
|
|
6
|
-
import { getImportJson, resolvePath,
|
|
7
|
-
import {
|
|
4
|
+
import { Spinner } from './deps/jsr.io/@std/cli/1.0.29/unstable_spinner.js';
|
|
5
|
+
import { parseArgs } from './deps/jsr.io/@std/cli/1.0.29/mod.js';
|
|
6
|
+
import { getImportJson, resolvePath, writeOutput } from './src/file.js';
|
|
7
|
+
import { extractLeaves, groupIntoBatches, reconstruct, runBatches } from './src/translator.js';
|
|
8
|
+
import { DEFAULT_MAX_BATCH_BYTES, DEFAULT_PROVIDER, HELP_TEXT } from './src/contants.js';
|
|
8
9
|
import { formatBytes, validateArgs } from './src/utilites.js';
|
|
9
10
|
import { logger } from './src/logger.js';
|
|
10
11
|
import denoJson from './deno.js';
|
|
@@ -12,11 +13,23 @@ import Gemini from './src/providers/gemini.js';
|
|
|
12
13
|
import OpenAIModel from './src/providers/openai.js';
|
|
13
14
|
import AnthropicModel from './src/providers/anthropic.js';
|
|
14
15
|
const spinner = new Spinner({ message: 'AI Thinks...', color: 'cyan' });
|
|
16
|
+
const createTranslator = (args, options) => {
|
|
17
|
+
switch (args.provider) {
|
|
18
|
+
case 'gemini':
|
|
19
|
+
return new Gemini(args.key, args.model, options);
|
|
20
|
+
case 'openai':
|
|
21
|
+
return new OpenAIModel(args.key, args.url, args.model, options);
|
|
22
|
+
case 'anthropic':
|
|
23
|
+
return new AnthropicModel(args.key, args.url, args.model, options);
|
|
24
|
+
default:
|
|
25
|
+
throw new Error(`Unknown provider: ${args.provider}`);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
15
28
|
async function main() {
|
|
16
29
|
try {
|
|
17
30
|
const args = parseArgs(dntShim.Deno.args, {
|
|
18
|
-
string: ['key', 'provider', 'model', 'input', 'output', 'from', 'to', 'url'],
|
|
19
|
-
boolean: ['help', 'version'],
|
|
31
|
+
string: ['key', 'provider', 'model', 'input', 'output', 'from', 'to', 'url', 'max-batch-size'],
|
|
32
|
+
boolean: ['help', 'version', 'no-limit', 'no-timeout'],
|
|
20
33
|
alias: {
|
|
21
34
|
provider: 'p',
|
|
22
35
|
model: 'm',
|
|
@@ -33,8 +46,7 @@ async function main() {
|
|
|
33
46
|
const help = args.help || dntShim.Deno.args.length === 0;
|
|
34
47
|
const version = args.version;
|
|
35
48
|
if (version) {
|
|
36
|
-
|
|
37
|
-
logger.info('Glotto version: ' + VERSION);
|
|
49
|
+
logger.info('Glotto version: ' + denoJson.version);
|
|
38
50
|
dntShim.Deno.exit(0);
|
|
39
51
|
}
|
|
40
52
|
if (help) {
|
|
@@ -43,49 +55,45 @@ async function main() {
|
|
|
43
55
|
}
|
|
44
56
|
const validatedArgs = validateArgs(args);
|
|
45
57
|
const fileContent = await getImportJson(validatedArgs.input);
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
-
const
|
|
58
|
+
const allLeaves = extractLeaves(fileContent);
|
|
59
|
+
const translatableLeaves = allLeaves.filter((leaf) => leaf.translatable);
|
|
60
|
+
const batches = groupIntoBatches(allLeaves, validatedArgs.maxBatchBytes);
|
|
61
|
+
const totalBytes = batches.reduce((sum, b) => sum + b.byteSize, 0);
|
|
50
62
|
logger.info('Provider: ', validatedArgs.provider);
|
|
51
63
|
logger.info('Input: ', validatedArgs.input);
|
|
52
64
|
logger.info('Output: ', validatedArgs.output);
|
|
53
65
|
logger.info('From: ', validatedArgs.from);
|
|
54
66
|
logger.info('To: ', validatedArgs.to);
|
|
55
|
-
if (validatedArgs.model)
|
|
67
|
+
if (validatedArgs.model)
|
|
56
68
|
logger.info('Model: ', validatedArgs.model);
|
|
57
|
-
|
|
58
|
-
if (validatedArgs.url) {
|
|
69
|
+
if (validatedArgs.url)
|
|
59
70
|
logger.info('URL: ', validatedArgs.url);
|
|
71
|
+
if (validatedArgs.noLimit)
|
|
72
|
+
logger.info('Rate limit protection: disabled (--no-limit)');
|
|
73
|
+
if (validatedArgs.noTimeout)
|
|
74
|
+
logger.info('Request timeout: disabled (--no-timeout)');
|
|
75
|
+
if (validatedArgs.maxBatchBytes !== DEFAULT_MAX_BATCH_BYTES) {
|
|
76
|
+
logger.info(`Max batch size: ${formatBytes(validatedArgs.maxBatchBytes)}`);
|
|
60
77
|
}
|
|
61
|
-
logger.info(`Total: ${
|
|
62
|
-
for (const
|
|
63
|
-
logger.info(`
|
|
78
|
+
logger.info(`Total: ${translatableLeaves.length} translatable entries (of ${allLeaves.length} leaves), ${formatBytes(totalBytes)}, split into ${batches.length} batch(es)`);
|
|
79
|
+
for (const batch of batches) {
|
|
80
|
+
logger.info(` Batch ${batch.index + 1}: ${batch.leaves.length} entries, ${formatBytes(batch.byteSize)}`);
|
|
64
81
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const gemini = new Gemini(validatedArgs.key, chunks, validatedArgs.from, validatedArgs.to, validatedArgs.model);
|
|
70
|
-
result = await gemini.translate();
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
case 'openai': {
|
|
74
|
-
const openai = new OpenAIModel(validatedArgs.key, chunks, validatedArgs.from, validatedArgs.to, validatedArgs.url, validatedArgs.model);
|
|
75
|
-
result = await openai.translate();
|
|
76
|
-
break;
|
|
77
|
-
}
|
|
78
|
-
case 'anthropic': {
|
|
79
|
-
const anthropic = new AnthropicModel(validatedArgs.key, chunks, validatedArgs.from, validatedArgs.to, validatedArgs.url, validatedArgs.model);
|
|
80
|
-
result = await anthropic.translate();
|
|
81
|
-
break;
|
|
82
|
-
}
|
|
83
|
-
default: {
|
|
84
|
-
logger.warn('Provider not found');
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
82
|
+
if (batches.length === 0) {
|
|
83
|
+
logger.warn('No translatable entries found, copying input to output');
|
|
84
|
+
await writeOutput(resolvePath(validatedArgs.output), JSON.stringify(fileContent, null, 2));
|
|
85
|
+
dntShim.Deno.exit(0);
|
|
87
86
|
}
|
|
88
|
-
|
|
87
|
+
const translateOptions = {
|
|
88
|
+
noLimit: validatedArgs.noLimit,
|
|
89
|
+
noTimeout: validatedArgs.noTimeout,
|
|
90
|
+
};
|
|
91
|
+
const translator = createTranslator(validatedArgs, translateOptions);
|
|
92
|
+
spinner.start();
|
|
93
|
+
const translations = await runBatches(batches, translator, validatedArgs.from, validatedArgs.to, translateOptions);
|
|
94
|
+
const result = reconstruct(allLeaves, translations);
|
|
95
|
+
const outputPath = resolvePath(validatedArgs.output);
|
|
96
|
+
await writeOutput(outputPath, JSON.stringify(result, null, 2));
|
|
89
97
|
spinner.stop();
|
|
90
98
|
logger.success('Translation completed');
|
|
91
99
|
}
|
package/esm/deno.d.ts
CHANGED
|
@@ -23,10 +23,10 @@ declare namespace _default {
|
|
|
23
23
|
"@google/genai": string;
|
|
24
24
|
"@openai/openai": string;
|
|
25
25
|
"@std/cli": string;
|
|
26
|
-
"@std/encoding": string;
|
|
27
26
|
"@std/path": string;
|
|
28
27
|
consola: string;
|
|
29
28
|
};
|
|
29
|
+
let allowScripts: string[];
|
|
30
30
|
}
|
|
31
31
|
export default _default;
|
|
32
32
|
//# sourceMappingURL=deno.d.ts.map
|
package/esm/deno.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export default {
|
|
2
2
|
"name": "@ibodev/glotto",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"exports": "./cli.ts",
|
|
5
5
|
"lock": false,
|
|
6
6
|
"nodeModulesDir": "auto",
|
|
@@ -18,13 +18,13 @@ export default {
|
|
|
18
18
|
"lineWidth": 160
|
|
19
19
|
},
|
|
20
20
|
"imports": {
|
|
21
|
-
"@anthropic-ai/sdk": "npm:@anthropic-ai/sdk@^0.
|
|
21
|
+
"@anthropic-ai/sdk": "npm:@anthropic-ai/sdk@^0.95.0",
|
|
22
22
|
"@deno/dnt": "jsr:@deno/dnt@^0.42.3",
|
|
23
|
-
"@google/genai": "npm:@google/genai@^1.
|
|
24
|
-
"@openai/openai": "npm:openai@^
|
|
25
|
-
"@std/cli": "jsr:@std/cli@^1.0.
|
|
26
|
-
"@std/encoding": "jsr:@std/encoding@^1.0.10",
|
|
23
|
+
"@google/genai": "npm:@google/genai@^1.52.0",
|
|
24
|
+
"@openai/openai": "npm:openai@^6.36.0",
|
|
25
|
+
"@std/cli": "jsr:@std/cli@^1.0.29",
|
|
27
26
|
"@std/path": "jsr:@std/path@^1.1.4",
|
|
28
27
|
"consola": "npm:consola@^3.4.2"
|
|
29
|
-
}
|
|
28
|
+
},
|
|
29
|
+
"allowScripts": ["npm:@google/genai@1.52.0", "npm:protobufjs@7.5.6"]
|
|
30
30
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_data.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.29/_data.js"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_run_length.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.
|
|
1
|
+
{"version":3,"file":"_run_length.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.29/_run_length.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE;;;EA0B5C;AAED,wBAAgB,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,2BAUjE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.29/mod.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse_args.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.
|
|
1
|
+
{"version":3,"file":"parse_args.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.29/parse_args.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright 2018-2026 the Deno authors. MIT license.
|
|
2
2
|
// This module is browser compatible.
|
|
3
|
-
const FLAG_REGEXP = /^(?:-(?:(?<doubleDash>-)(?<negated>no-)?)?)(?<key>.+?)(?:=(?<value
|
|
3
|
+
const FLAG_REGEXP = /^(?:-(?:(?<doubleDash>-)(?<negated>no-)?)?)(?<key>.+?)(?:=(?<value>.*))?$/s;
|
|
4
4
|
const LETTER_REGEXP = /[A-Za-z]/;
|
|
5
5
|
const NUMBER_REGEXP = /-?\d+(\.\d*)?(e-?\d+)?$/;
|
|
6
6
|
const HYPHEN_REGEXP = /^(-|--)[^-]/;
|
|
@@ -11,10 +11,20 @@ const NON_WHITESPACE_REGEXP = /\S/;
|
|
|
11
11
|
function isNumber(string) {
|
|
12
12
|
return NON_WHITESPACE_REGEXP.test(string) && Number.isFinite(Number(string));
|
|
13
13
|
}
|
|
14
|
+
function isConstructorOrProto(obj, key) {
|
|
15
|
+
return (key === "constructor" && typeof obj[key] === "function") ||
|
|
16
|
+
key === "__proto__";
|
|
17
|
+
}
|
|
14
18
|
function setNested(object, keys, value, collect = false) {
|
|
15
19
|
keys = [...keys];
|
|
16
20
|
const key = keys.pop();
|
|
17
|
-
|
|
21
|
+
for (const k of keys) {
|
|
22
|
+
if (isConstructorOrProto(object, k))
|
|
23
|
+
return;
|
|
24
|
+
object = (object[k] ??= {});
|
|
25
|
+
}
|
|
26
|
+
if (isConstructorOrProto(object, key))
|
|
27
|
+
return;
|
|
18
28
|
if (collect) {
|
|
19
29
|
const v = object[key];
|
|
20
30
|
if (Array.isArray(v)) {
|
|
@@ -239,7 +249,7 @@ export function parseArgs(args, options) {
|
|
|
239
249
|
let key = groups.key;
|
|
240
250
|
let value = groups.value;
|
|
241
251
|
if (doubleDash) {
|
|
242
|
-
if (value) {
|
|
252
|
+
if (value != null) {
|
|
243
253
|
if (booleanSet.has(key))
|
|
244
254
|
value = parseBooleanString(value);
|
|
245
255
|
setArgument(key, value, arg, true);
|
|
@@ -281,6 +291,10 @@ export function parseArgs(args, options) {
|
|
|
281
291
|
setArgument(letter, next, arg, true);
|
|
282
292
|
continue;
|
|
283
293
|
}
|
|
294
|
+
if (next === "=") {
|
|
295
|
+
setArgument(letter, "", arg, true);
|
|
296
|
+
continue argsLoop;
|
|
297
|
+
}
|
|
284
298
|
if (LETTER_REGEXP.test(letter)) {
|
|
285
299
|
const groups = VALUE_REGEXP.exec(next)?.groups;
|
|
286
300
|
if (groups) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt_secret.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.
|
|
1
|
+
{"version":3,"file":"prompt_secret.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.29/prompt_secret.ts"],"names":[],"mappings":"AAiBA,4CAA4C;AAC5C,MAAM,MAAM,mBAAmB,GAAG;IAChC,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAC1B,OAAO,SAAW,EAClB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,MAAM,GAAG,IAAI,CAyDf"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright 2018-2026 the Deno authors. MIT license.
|
|
2
2
|
import * as dntShim from "../../../../../_dnt.shims.js";
|
|
3
|
-
import { isWindows } from "../../internal/1.0.
|
|
3
|
+
import { isWindows } from "../../internal/1.0.13/os.js";
|
|
4
4
|
const encoder = new TextEncoder();
|
|
5
5
|
const decoder = new TextDecoder();
|
|
6
6
|
const LF = "\n".charCodeAt(0); // ^J - Enter on Linux
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unicode_width.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.
|
|
1
|
+
{"version":3,"file":"unicode_width.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.29/unicode_width.ts"],"names":[],"mappings":"AAsCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unstable_spinner.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.
|
|
1
|
+
{"version":3,"file":"unstable_spinner.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/cli/1.0.29/unstable_spinner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAC;AAUxD;;;;;;;GAOG;AAEH,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC;AAE/B;;;;GAIG;AACH,MAAM,MAAM,KAAK,GACb,OAAO,GACP,KAAK,GACL,OAAO,GACP,QAAQ,GACR,MAAM,GACN,SAAS,GACT,MAAM,GACN,OAAO,GACP,MAAM,GACN,IAAI,CAAC;AAcT;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;CAClE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,OAAO;;IAGlB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,EAAE,MAAM,CAAC;IAOhB;;;;OAIG;gBACS,OAAO,CAAC,EAAE,cAAc;IAcpC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,EAEjC;IAED;;;;;;;;;;;;OAYG;IACH,IAAI,KAAK,IAAI,KAAK,GAAG,SAAS,CAE7B;IAED;;;;;;;;;;OAUG;IACH,KAAK;IA4BL;;;;;;;;;;;;;;;OAeG;IACH,IAAI;CAML"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_os.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.13/_os.ts"],"names":[],"mappings":"AAIA,wBAAgB,YAAY,IAAI,OAAO,CAUtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"os.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.
|
|
1
|
+
{"version":3,"file":"os.d.ts","sourceRoot":"","sources":["../../../../../../src/deps/jsr.io/@std/internal/1.0.13/os.ts"],"names":[],"mappings":"AAKA,8CAA8C;AAC9C,eAAO,MAAM,SAAS,EAAE,OAAwB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
2
2
|
// This module is browser compatible.
|
|
3
|
-
import { isWindows } from "../../internal/1.0.
|
|
3
|
+
import { isWindows } from "../../internal/1.0.13/os.js";
|
|
4
4
|
import { basename as posixBasename } from "./posix/basename.js";
|
|
5
5
|
import { basename as windowsBasename } from "./windows/basename.js";
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
2
2
|
// This module is browser compatible.
|
|
3
|
-
import { isWindows } from "../../internal/1.0.
|
|
3
|
+
import { isWindows } from "../../internal/1.0.13/os.js";
|
|
4
4
|
/**
|
|
5
5
|
* The character used to separate entries in the PATH environment variable.
|
|
6
6
|
* On Windows, this is `;`. On all other platforms, this is `:`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
2
2
|
// This module is browser compatible.
|
|
3
|
-
import { isWindows } from "../../internal/1.0.
|
|
3
|
+
import { isWindows } from "../../internal/1.0.13/os.js";
|
|
4
4
|
import { dirname as posixDirname } from "./posix/dirname.js";
|
|
5
5
|
import { dirname as windowsDirname } from "./windows/dirname.js";
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
2
2
|
// This module is browser compatible.
|
|
3
|
-
import { isWindows } from "../../internal/1.0.
|
|
3
|
+
import { isWindows } from "../../internal/1.0.13/os.js";
|
|
4
4
|
import { extname as posixExtname } from "./posix/extname.js";
|
|
5
5
|
import { extname as windowsExtname } from "./windows/extname.js";
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
2
2
|
// This module is browser compatible.
|
|
3
|
-
import { isWindows } from "../../internal/1.0.
|
|
3
|
+
import { isWindows } from "../../internal/1.0.13/os.js";
|
|
4
4
|
import { format as posixFormat } from "./posix/format.js";
|
|
5
5
|
import { format as windowsFormat } from "./windows/format.js";
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
2
2
|
// This module is browser compatible.
|
|
3
|
-
import { isWindows } from "../../internal/1.0.
|
|
3
|
+
import { isWindows } from "../../internal/1.0.13/os.js";
|
|
4
4
|
import { fromFileUrl as posixFromFileUrl } from "./posix/from_file_url.js";
|
|
5
5
|
import { fromFileUrl as windowsFromFileUrl } from "./windows/from_file_url.js";
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
2
2
|
// This module is browser compatible.
|
|
3
|
-
import { isWindows } from "../../internal/1.0.
|
|
3
|
+
import { isWindows } from "../../internal/1.0.13/os.js";
|
|
4
4
|
import { globToRegExp as posixGlobToRegExp } from "./posix/glob_to_regexp.js";
|
|
5
5
|
import { globToRegExp as windowsGlobToRegExp, } from "./windows/glob_to_regexp.js";
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
2
2
|
// This module is browser compatible.
|
|
3
|
-
import { isWindows } from "../../internal/1.0.
|
|
3
|
+
import { isWindows } from "../../internal/1.0.13/os.js";
|
|
4
4
|
import { isAbsolute as posixIsAbsolute } from "./posix/is_absolute.js";
|
|
5
5
|
import { isAbsolute as windowsIsAbsolute } from "./windows/is_absolute.js";
|
|
6
6
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
2
2
|
// This module is browser compatible.
|
|
3
|
-
import { isWindows } from "../../internal/1.0.
|
|
3
|
+
import { isWindows } from "../../internal/1.0.13/os.js";
|
|
4
4
|
import { join as posixJoin } from "./posix/join.js";
|
|
5
5
|
import { join as windowsJoin } from "./windows/join.js";
|
|
6
6
|
/**
|