@gringow/gringow 0.1.4 → 0.2.1
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 +31 -36
- package/dist/config.d.mts +4 -6
- package/dist/config.mjs +30 -20
- package/dist/config.test.mjs +42 -30
- package/dist/constants/default-config.mjs +3 -3
- package/dist/create-cache-id.test.mjs +5 -5
- package/dist/data/check-cache.mjs +31 -63
- package/dist/data/clear-cache.mjs +30 -20
- package/dist/data/create-cache-dir.mjs +30 -20
- package/dist/data/delete-cache-item.mjs +30 -20
- package/dist/data/get-cache.mjs +30 -20
- package/dist/data/get-or-create-cache.mjs +30 -20
- package/dist/data/md5.test.mjs +5 -5
- package/dist/data/save-cache.mjs +30 -20
- package/dist/data/write-cache-to-disk.mjs +30 -20
- package/dist/flat-template-string.test.mjs +5 -5
- package/dist/gringow.mjs +82 -491
- package/dist/index.mjs +82 -491
- package/dist/io/ask-llm.d.mts +3 -1
- package/dist/io/ask-llm.mjs +75 -449
- package/dist/logger.test.mjs +5 -5
- package/dist/schemas/config.shcema.d.mts +23 -35
- package/dist/schemas/config.shcema.mjs +25 -15
- package/dist/types/index.d.mts +3 -25
- package/gringow.config.js.example +2 -4
- package/gringow.config.json.example +4 -2
- package/package.json +2 -5
- package/dist/io/anthropic/ask.d.mts +0 -11
- package/dist/io/anthropic/ask.mjs +0 -192
- package/dist/io/anthropic/commit-response.d.mts +0 -21
- package/dist/io/anthropic/commit-response.mjs +0 -10
- package/dist/io/anthropic/index.d.mts +0 -14
- package/dist/io/anthropic/index.mjs +0 -210
- package/dist/io/anthropic/parse.d.mts +0 -20
- package/dist/io/anthropic/parse.mjs +0 -10
- package/dist/io/gemini/ask.d.mts +0 -11
- package/dist/io/gemini/ask.mjs +0 -234
- package/dist/io/gemini/commit-response.d.mts +0 -11
- package/dist/io/gemini/commit-response.mjs +0 -7
- package/dist/io/gemini/index.d.mts +0 -14
- package/dist/io/gemini/index.mjs +0 -250
- package/dist/io/gemini/parse.d.mts +0 -20
- package/dist/io/gemini/parse.mjs +0 -11
- package/dist/io/huggingface/ask.d.mts +0 -13
- package/dist/io/huggingface/ask.mjs +0 -407
- package/dist/io/huggingface/commit-response.d.mts +0 -39
- package/dist/io/huggingface/commit-response.mjs +0 -14
- package/dist/io/huggingface/index.d.mts +0 -13
- package/dist/io/huggingface/index.mjs +0 -428
- package/dist/io/huggingface/languages-map.d.mts +0 -191
- package/dist/io/huggingface/languages-map.mjs +0 -187
- package/dist/io/huggingface/parse.d.mts +0 -20
- package/dist/io/huggingface/parse.mjs +0 -9
package/dist/data/md5.test.mjs
CHANGED
|
@@ -13236,7 +13236,7 @@ function findTestFileStackTrace(error, each) {
|
|
|
13236
13236
|
globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;
|
|
13237
13237
|
globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;
|
|
13238
13238
|
|
|
13239
|
-
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.
|
|
13239
|
+
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.2_msw@2.12.8_@types+node@22.16.4_typescript@5.7.3__terser@5.44.1/node_modules/vitest/dist/chunks/utils.C8RiOc4B.js
|
|
13240
13240
|
var NAME_WORKER_STATE = "__vitest_worker__";
|
|
13241
13241
|
function getWorkerState() {
|
|
13242
13242
|
const workerState = globalThis[NAME_WORKER_STATE];
|
|
@@ -13296,7 +13296,7 @@ async function waitForImportsToResolve() {
|
|
|
13296
13296
|
await waitForImportsToResolve();
|
|
13297
13297
|
}
|
|
13298
13298
|
|
|
13299
|
-
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.
|
|
13299
|
+
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.2_msw@2.12.8_@types+node@22.16.4_typescript@5.7.3__terser@5.44.1/node_modules/vitest/dist/chunks/_commonjsHelpers.BFTU3MAI.js
|
|
13300
13300
|
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
|
|
13301
13301
|
function getDefaultExportFromCjs2(x2) {
|
|
13302
13302
|
return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2;
|
|
@@ -15330,7 +15330,7 @@ var SnapshotClient = class {
|
|
|
15330
15330
|
}
|
|
15331
15331
|
};
|
|
15332
15332
|
|
|
15333
|
-
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.
|
|
15333
|
+
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.2_msw@2.12.8_@types+node@22.16.4_typescript@5.7.3__terser@5.44.1/node_modules/vitest/dist/chunks/date.W2xKR2qe.js
|
|
15334
15334
|
var RealDate = Date;
|
|
15335
15335
|
var now2 = null;
|
|
15336
15336
|
var MockDate = class _MockDate extends RealDate {
|
|
@@ -15383,7 +15383,7 @@ function resetDate() {
|
|
|
15383
15383
|
globalThis.Date = RealDate;
|
|
15384
15384
|
}
|
|
15385
15385
|
|
|
15386
|
-
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.
|
|
15386
|
+
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.2_msw@2.12.8_@types+node@22.16.4_typescript@5.7.3__terser@5.44.1/node_modules/vitest/dist/chunks/vi.DgezovHB.js
|
|
15387
15387
|
var unsupported = [
|
|
15388
15388
|
// .poll is meant to retry matchers until they succeed, and
|
|
15389
15389
|
// snapshots will always succeed as long as the poll method doesn't thow an error
|
|
@@ -18115,7 +18115,7 @@ function getImporter(name) {
|
|
|
18115
18115
|
return stack?.file || "";
|
|
18116
18116
|
}
|
|
18117
18117
|
|
|
18118
|
-
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.
|
|
18118
|
+
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.2_msw@2.12.8_@types+node@22.16.4_typescript@5.7.3__terser@5.44.1/node_modules/vitest/dist/index.js
|
|
18119
18119
|
__toESM(require_dist(), 1);
|
|
18120
18120
|
|
|
18121
18121
|
// src/data/md5.ts
|
package/dist/data/save-cache.mjs
CHANGED
|
@@ -19,20 +19,34 @@ var defaultConfig = {
|
|
|
19
19
|
prefix: "grw",
|
|
20
20
|
write: true
|
|
21
21
|
},
|
|
22
|
-
keys: {},
|
|
23
22
|
sourceLanguage: "en-US",
|
|
24
23
|
defaultLanguage: "pt-BR",
|
|
25
24
|
languages: ["pt-BR", "fr-CA"],
|
|
26
25
|
llm: {
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
provider: "openai",
|
|
27
|
+
apiKey: void 0,
|
|
28
|
+
model: "gpt-4o-mini",
|
|
29
29
|
temperature: 1,
|
|
30
30
|
sleep: 0
|
|
31
31
|
},
|
|
32
32
|
globby: "./src/**/*.{js,jsx,ts,tsx}"
|
|
33
33
|
};
|
|
34
34
|
var languageSchema = z.string().regex(/^[a-z]{2,3}(-[A-Z]{2})?$/);
|
|
35
|
-
var
|
|
35
|
+
var llmProviderSchema = z.enum([
|
|
36
|
+
"anthropic",
|
|
37
|
+
"gemini",
|
|
38
|
+
"openai",
|
|
39
|
+
"groq",
|
|
40
|
+
"mistral",
|
|
41
|
+
"ollama",
|
|
42
|
+
"xai",
|
|
43
|
+
"deepseek",
|
|
44
|
+
"openrouter",
|
|
45
|
+
"cerebras",
|
|
46
|
+
"lmstudio",
|
|
47
|
+
"azure",
|
|
48
|
+
"meta"
|
|
49
|
+
]);
|
|
36
50
|
var configSchema = z.object({
|
|
37
51
|
debug: z.boolean().optional(),
|
|
38
52
|
log: z.object({
|
|
@@ -44,15 +58,13 @@ var configSchema = z.object({
|
|
|
44
58
|
prefix: z.string(),
|
|
45
59
|
write: z.boolean().optional()
|
|
46
60
|
}),
|
|
47
|
-
keys: z.object({
|
|
48
|
-
anthropicApiKey: z.string().optional(),
|
|
49
|
-
geminiApiKey: z.string().optional()
|
|
50
|
-
}),
|
|
51
61
|
sourceLanguage: languageSchema,
|
|
52
62
|
defaultLanguage: languageSchema,
|
|
53
63
|
languages: z.array(languageSchema),
|
|
54
64
|
llm: z.object({
|
|
55
|
-
|
|
65
|
+
provider: llmProviderSchema,
|
|
66
|
+
apiKey: z.string().optional(),
|
|
67
|
+
baseURL: z.string().optional(),
|
|
56
68
|
model: z.string().nullable(),
|
|
57
69
|
temperature: z.number().optional(),
|
|
58
70
|
sleep: z.number().optional(),
|
|
@@ -66,17 +78,15 @@ var configSchema = z.object({
|
|
|
66
78
|
globby: z.string().regex(/^\.\/.*/).optional()
|
|
67
79
|
}).refine(
|
|
68
80
|
(data) => {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
if (data.llm.choice === "anthropic" && !data.keys.anthropicApiKey) {
|
|
73
|
-
return false;
|
|
81
|
+
const noApiKeyRequired = ["ollama", "lmstudio"];
|
|
82
|
+
if (noApiKeyRequired.includes(data.llm.provider)) {
|
|
83
|
+
return true;
|
|
74
84
|
}
|
|
75
|
-
return
|
|
85
|
+
return !!data.llm.apiKey;
|
|
76
86
|
},
|
|
77
87
|
{
|
|
78
|
-
message: "The API key
|
|
79
|
-
path: ["
|
|
88
|
+
message: "The API key must be present in llm.apiKey for the chosen provider.",
|
|
89
|
+
path: ["llm", "apiKey"]
|
|
80
90
|
}
|
|
81
91
|
);
|
|
82
92
|
|
|
@@ -112,7 +122,7 @@ Your task is to translate a given text and output **only one valid JSON object**
|
|
|
112
122
|
|
|
113
123
|
Follow these rules strictly:
|
|
114
124
|
|
|
115
|
-
1. The original text is written in English.
|
|
125
|
+
1. The original text is written in English or Spanish.
|
|
116
126
|
2. You will receive additional user parameters under the variable 'extraInstructions'. These may specify tone, persona, style, context, or any relevant translation guideline.
|
|
117
127
|
- Examples: \u201Ctranslate as if you were a Shakespearean narrator\u201D or \u201Cuse a formal business tone suitable for a corporate presentation.\u201D
|
|
118
128
|
- Apply these creatively but **without altering the meaning or punctuation** of the original text.
|
|
@@ -145,10 +155,10 @@ Translate the following text faithfully:
|
|
|
145
155
|
function defaultPostPrompt(_config) {
|
|
146
156
|
return "";
|
|
147
157
|
}
|
|
148
|
-
function prePrompt(config,
|
|
158
|
+
function prePrompt(config, prepend, replace) {
|
|
149
159
|
return [
|
|
150
160
|
// ...(append ? ['[SPECIFIC_INPUTS]', String(append), '[/SPECIFIC_INPUTS]'] : []),
|
|
151
|
-
replace ? String(replace) : defaultPrePrompt(config,
|
|
161
|
+
replace ? String(replace) : defaultPrePrompt(config, prepend)
|
|
152
162
|
].join(" ").trim();
|
|
153
163
|
}
|
|
154
164
|
function postPrompt(config, prepend, replace) {
|
|
@@ -19,20 +19,34 @@ var defaultConfig = {
|
|
|
19
19
|
prefix: "grw",
|
|
20
20
|
write: true
|
|
21
21
|
},
|
|
22
|
-
keys: {},
|
|
23
22
|
sourceLanguage: "en-US",
|
|
24
23
|
defaultLanguage: "pt-BR",
|
|
25
24
|
languages: ["pt-BR", "fr-CA"],
|
|
26
25
|
llm: {
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
provider: "openai",
|
|
27
|
+
apiKey: void 0,
|
|
28
|
+
model: "gpt-4o-mini",
|
|
29
29
|
temperature: 1,
|
|
30
30
|
sleep: 0
|
|
31
31
|
},
|
|
32
32
|
globby: "./src/**/*.{js,jsx,ts,tsx}"
|
|
33
33
|
};
|
|
34
34
|
var languageSchema = z.string().regex(/^[a-z]{2,3}(-[A-Z]{2})?$/);
|
|
35
|
-
var
|
|
35
|
+
var llmProviderSchema = z.enum([
|
|
36
|
+
"anthropic",
|
|
37
|
+
"gemini",
|
|
38
|
+
"openai",
|
|
39
|
+
"groq",
|
|
40
|
+
"mistral",
|
|
41
|
+
"ollama",
|
|
42
|
+
"xai",
|
|
43
|
+
"deepseek",
|
|
44
|
+
"openrouter",
|
|
45
|
+
"cerebras",
|
|
46
|
+
"lmstudio",
|
|
47
|
+
"azure",
|
|
48
|
+
"meta"
|
|
49
|
+
]);
|
|
36
50
|
var configSchema = z.object({
|
|
37
51
|
debug: z.boolean().optional(),
|
|
38
52
|
log: z.object({
|
|
@@ -44,15 +58,13 @@ var configSchema = z.object({
|
|
|
44
58
|
prefix: z.string(),
|
|
45
59
|
write: z.boolean().optional()
|
|
46
60
|
}),
|
|
47
|
-
keys: z.object({
|
|
48
|
-
anthropicApiKey: z.string().optional(),
|
|
49
|
-
geminiApiKey: z.string().optional()
|
|
50
|
-
}),
|
|
51
61
|
sourceLanguage: languageSchema,
|
|
52
62
|
defaultLanguage: languageSchema,
|
|
53
63
|
languages: z.array(languageSchema),
|
|
54
64
|
llm: z.object({
|
|
55
|
-
|
|
65
|
+
provider: llmProviderSchema,
|
|
66
|
+
apiKey: z.string().optional(),
|
|
67
|
+
baseURL: z.string().optional(),
|
|
56
68
|
model: z.string().nullable(),
|
|
57
69
|
temperature: z.number().optional(),
|
|
58
70
|
sleep: z.number().optional(),
|
|
@@ -66,17 +78,15 @@ var configSchema = z.object({
|
|
|
66
78
|
globby: z.string().regex(/^\.\/.*/).optional()
|
|
67
79
|
}).refine(
|
|
68
80
|
(data) => {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
if (data.llm.choice === "anthropic" && !data.keys.anthropicApiKey) {
|
|
73
|
-
return false;
|
|
81
|
+
const noApiKeyRequired = ["ollama", "lmstudio"];
|
|
82
|
+
if (noApiKeyRequired.includes(data.llm.provider)) {
|
|
83
|
+
return true;
|
|
74
84
|
}
|
|
75
|
-
return
|
|
85
|
+
return !!data.llm.apiKey;
|
|
76
86
|
},
|
|
77
87
|
{
|
|
78
|
-
message: "The API key
|
|
79
|
-
path: ["
|
|
88
|
+
message: "The API key must be present in llm.apiKey for the chosen provider.",
|
|
89
|
+
path: ["llm", "apiKey"]
|
|
80
90
|
}
|
|
81
91
|
);
|
|
82
92
|
|
|
@@ -112,7 +122,7 @@ Your task is to translate a given text and output **only one valid JSON object**
|
|
|
112
122
|
|
|
113
123
|
Follow these rules strictly:
|
|
114
124
|
|
|
115
|
-
1. The original text is written in English.
|
|
125
|
+
1. The original text is written in English or Spanish.
|
|
116
126
|
2. You will receive additional user parameters under the variable 'extraInstructions'. These may specify tone, persona, style, context, or any relevant translation guideline.
|
|
117
127
|
- Examples: \u201Ctranslate as if you were a Shakespearean narrator\u201D or \u201Cuse a formal business tone suitable for a corporate presentation.\u201D
|
|
118
128
|
- Apply these creatively but **without altering the meaning or punctuation** of the original text.
|
|
@@ -145,10 +155,10 @@ Translate the following text faithfully:
|
|
|
145
155
|
function defaultPostPrompt(_config) {
|
|
146
156
|
return "";
|
|
147
157
|
}
|
|
148
|
-
function prePrompt(config,
|
|
158
|
+
function prePrompt(config, prepend, replace) {
|
|
149
159
|
return [
|
|
150
160
|
// ...(append ? ['[SPECIFIC_INPUTS]', String(append), '[/SPECIFIC_INPUTS]'] : []),
|
|
151
|
-
replace ? String(replace) : defaultPrePrompt(config,
|
|
161
|
+
replace ? String(replace) : defaultPrePrompt(config, prepend)
|
|
152
162
|
].join(" ").trim();
|
|
153
163
|
}
|
|
154
164
|
function postPrompt(config, prepend, replace) {
|
|
@@ -13236,7 +13236,7 @@ function findTestFileStackTrace(error, each) {
|
|
|
13236
13236
|
globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;
|
|
13237
13237
|
globalThis.performance ? globalThis.performance.now.bind(globalThis.performance) : Date.now;
|
|
13238
13238
|
|
|
13239
|
-
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.
|
|
13239
|
+
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.2_msw@2.12.8_@types+node@22.16.4_typescript@5.7.3__terser@5.44.1/node_modules/vitest/dist/chunks/utils.C8RiOc4B.js
|
|
13240
13240
|
var NAME_WORKER_STATE = "__vitest_worker__";
|
|
13241
13241
|
function getWorkerState() {
|
|
13242
13242
|
const workerState = globalThis[NAME_WORKER_STATE];
|
|
@@ -13296,7 +13296,7 @@ async function waitForImportsToResolve() {
|
|
|
13296
13296
|
await waitForImportsToResolve();
|
|
13297
13297
|
}
|
|
13298
13298
|
|
|
13299
|
-
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.
|
|
13299
|
+
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.2_msw@2.12.8_@types+node@22.16.4_typescript@5.7.3__terser@5.44.1/node_modules/vitest/dist/chunks/_commonjsHelpers.BFTU3MAI.js
|
|
13300
13300
|
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
|
|
13301
13301
|
function getDefaultExportFromCjs2(x2) {
|
|
13302
13302
|
return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2;
|
|
@@ -15330,7 +15330,7 @@ var SnapshotClient = class {
|
|
|
15330
15330
|
}
|
|
15331
15331
|
};
|
|
15332
15332
|
|
|
15333
|
-
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.
|
|
15333
|
+
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.2_msw@2.12.8_@types+node@22.16.4_typescript@5.7.3__terser@5.44.1/node_modules/vitest/dist/chunks/date.W2xKR2qe.js
|
|
15334
15334
|
var RealDate = Date;
|
|
15335
15335
|
var now2 = null;
|
|
15336
15336
|
var MockDate = class _MockDate extends RealDate {
|
|
@@ -15383,7 +15383,7 @@ function resetDate() {
|
|
|
15383
15383
|
globalThis.Date = RealDate;
|
|
15384
15384
|
}
|
|
15385
15385
|
|
|
15386
|
-
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.
|
|
15386
|
+
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.2_msw@2.12.8_@types+node@22.16.4_typescript@5.7.3__terser@5.44.1/node_modules/vitest/dist/chunks/vi.DgezovHB.js
|
|
15387
15387
|
var unsupported = [
|
|
15388
15388
|
// .poll is meant to retry matchers until they succeed, and
|
|
15389
15389
|
// snapshots will always succeed as long as the poll method doesn't thow an error
|
|
@@ -18115,7 +18115,7 @@ function getImporter(name) {
|
|
|
18115
18115
|
return stack?.file || "";
|
|
18116
18116
|
}
|
|
18117
18117
|
|
|
18118
|
-
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.
|
|
18118
|
+
// ../node_modules/.pnpm/vitest@2.1.9_@types+node@22.16.4_lightningcss@1.30.2_msw@2.12.8_@types+node@22.16.4_typescript@5.7.3__terser@5.44.1/node_modules/vitest/dist/index.js
|
|
18119
18119
|
__toESM(require_dist(), 1);
|
|
18120
18120
|
|
|
18121
18121
|
// src/flat-template-string.ts
|