@localheroai/cli 0.0.82-rc.0 → 0.0.82
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/dist/api/auth.d.ts +2 -0
- package/dist/api/client.d.ts +3 -0
- package/dist/api/imports.d.ts +5 -0
- package/dist/api/projects.d.ts +2 -0
- package/dist/api/translation-jobs.js +28 -0
- package/dist/api/translation-jobs.js.map +1 -0
- package/dist/api/translations.d.ts +15 -0
- package/dist/cli.d.ts +2 -0
- package/dist/commands/_sync.js +22 -0
- package/dist/commands/_sync.js.map +1 -0
- package/dist/commands/_translate.js +3 -0
- package/dist/commands/_translate.js.map +1 -0
- package/dist/commands/ci.js +14 -1
- package/dist/commands/ci.js.map +1 -1
- package/dist/commands/github-action.js +111 -0
- package/dist/commands/github-action.js.map +1 -0
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/login.d.ts +16 -0
- package/dist/commands/sync.d.ts +20 -0
- package/dist/commands/sync.js +22 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/translate.d.ts +14 -0
- package/dist/document-formats/markdown.js +519 -0
- package/dist/document-formats/markdown.js.map +1 -0
- package/dist/document-formats/types.js +11 -0
- package/dist/document-formats/types.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/types/index.d.ts +75 -0
- package/dist/types/translate/index.js +2 -0
- package/dist/types/translate/index.js.map +1 -0
- package/dist/utils/auth.d.ts +2 -0
- package/dist/utils/chunked-json-processor.js +52 -0
- package/dist/utils/chunked-json-processor.js.map +1 -0
- package/dist/utils/common.js +9 -0
- package/dist/utils/common.js.map +1 -0
- package/dist/utils/config.d.ts +23 -0
- package/dist/utils/errors.js +37 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/files.d.ts +32 -0
- package/dist/utils/git-diff.js +251 -0
- package/dist/utils/git-diff.js.map +1 -0
- package/dist/utils/git.d.ts +21 -0
- package/dist/utils/github.d.ts +241 -0
- package/dist/utils/import-service.d.ts +4 -0
- package/dist/utils/import-service.js +23 -5
- package/dist/utils/import-service.js.map +1 -1
- package/dist/utils/po-utils-fallback.js +254 -0
- package/dist/utils/po-utils-fallback.js.map +1 -0
- package/dist/utils/prompt-service.d.ts +44 -0
- package/dist/utils/streaming-json-processor.js +125 -0
- package/dist/utils/streaming-json-processor.js.map +1 -0
- package/dist/utils/sync-service.d.ts +58 -0
- package/dist/utils/sync-service.js +7 -2
- package/dist/utils/sync-service.js.map +1 -1
- package/dist/utils/translation-processor.js +25 -7
- package/dist/utils/translation-processor.js.map +1 -1
- package/dist/utils/translation-updater/common.d.ts +6 -0
- package/dist/utils/translation-updater/index.d.ts +5 -0
- package/dist/utils/translation-updater/index.js +1 -1
- package/dist/utils/translation-updater/index.js.map +1 -1
- package/dist/utils/translation-updater/json-handler.d.ts +5 -0
- package/dist/utils/translation-updater/yaml-handler.d.ts +5 -0
- package/dist/utils/translation-updater/yaml-handler.js +82 -14
- package/dist/utils/translation-updater/yaml-handler.js.map +1 -1
- package/dist/utils/translation-utils.d.ts +30 -0
- package/dist/utils/translation-utils.js +29 -0
- package/dist/utils/translation-utils.js.map +1 -1
- package/dist/utils/updater.js +38 -0
- package/dist/utils/updater.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { apiRequest } from './client.js';
|
|
2
|
+
/**
|
|
3
|
+
* Create translation jobs
|
|
4
|
+
* @param params Translation job parameters
|
|
5
|
+
* @returns The created translation jobs
|
|
6
|
+
*/
|
|
7
|
+
export async function createTranslationJob(params) {
|
|
8
|
+
return await apiRequest(`/api/v1/projects/${params.projectId}/translation_jobs`, {
|
|
9
|
+
method: 'POST',
|
|
10
|
+
body: JSON.stringify({
|
|
11
|
+
target_languages: params.target_languages,
|
|
12
|
+
files: params.files,
|
|
13
|
+
branch: params.branch
|
|
14
|
+
})
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get translation job status
|
|
19
|
+
* @param projectId Project ID
|
|
20
|
+
* @param jobId Job ID
|
|
21
|
+
* @returns Translation job details
|
|
22
|
+
*/
|
|
23
|
+
export async function getTranslationJob(projectId, jobId) {
|
|
24
|
+
return await apiRequest(`/api/v1/projects/${projectId}/translation_jobs/${jobId}`, {
|
|
25
|
+
method: 'GET'
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=translation-jobs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translation-jobs.js","sourceRoot":"","sources":["../../src/api/translation-jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAqDzC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAkC;IAC3E,OAAO,MAAM,UAAU,CAAC,oBAAoB,MAAM,CAAC,SAAS,mBAAmB,EAAE;QAC/E,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAiB,EAAE,KAAa;IACtE,OAAO,MAAM,UAAU,CAAC,oBAAoB,SAAS,qBAAqB,KAAK,EAAE,EAAE;QACjF,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function createTranslationJob({ sourceFiles, targetLocales, projectId, targetPaths }: {
|
|
2
|
+
sourceFiles: any;
|
|
3
|
+
targetLocales: any;
|
|
4
|
+
projectId: any;
|
|
5
|
+
targetPaths: any;
|
|
6
|
+
}): Promise<{
|
|
7
|
+
jobs: any;
|
|
8
|
+
totalJobs: any;
|
|
9
|
+
}>;
|
|
10
|
+
export function checkJobStatus(jobId: any, includeTranslations?: boolean): Promise<any>;
|
|
11
|
+
export function getTranslations(jobId: any): Promise<any>;
|
|
12
|
+
export function getUpdates(projectId: any, { since, page }: {
|
|
13
|
+
since: any;
|
|
14
|
+
page?: number | undefined;
|
|
15
|
+
}): Promise<any>;
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { syncService as defaultSyncService } from '../utils/sync-service.js';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
export async function sync({ verbose = false } = {}, deps = { syncService: defaultSyncService }) {
|
|
4
|
+
const { syncService } = deps;
|
|
5
|
+
const { hasUpdates, updates } = await syncService.checkForUpdates({ verbose });
|
|
6
|
+
if (!hasUpdates) {
|
|
7
|
+
console.log(chalk.green('✓ All translations are up to date'));
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const result = await syncService.applyUpdates(updates, { verbose });
|
|
11
|
+
const { totalUpdates = 0, totalDeleted = 0 } = result;
|
|
12
|
+
if (!verbose) {
|
|
13
|
+
if (totalUpdates > 0) {
|
|
14
|
+
console.log(chalk.green(`✓ Updated ${totalUpdates} translations`));
|
|
15
|
+
}
|
|
16
|
+
if (totalDeleted > 0) {
|
|
17
|
+
console.log(chalk.green(`✓ Deleted ${totalDeleted} keys`));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=_sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_sync.js","sourceRoot":"","sources":["../../src/commands/_sync.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,WAAW,EAAE,kBAAkB,EAAE;IAC7F,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE/E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAEpE,MAAM,EAAE,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC;IAEtD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,YAAY,eAAe,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,YAAY,OAAO,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_translate.js","sourceRoot":"","sources":["../../src/commands/_translate.js"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/commands/ci.js
CHANGED
|
@@ -7,6 +7,8 @@ import { githubService } from '../utils/github.js';
|
|
|
7
7
|
import { getSyncTranslations, completeSyncUpdate } from '../api/sync.js';
|
|
8
8
|
import { updateTranslationFile } from '../utils/translation-updater/index.js';
|
|
9
9
|
import { toConfigLocale } from '../utils/translation-processor.js';
|
|
10
|
+
import { findTranslationFiles } from '../utils/files.js';
|
|
11
|
+
import { findSourceFileForTarget } from '../utils/translation-utils.js';
|
|
10
12
|
const defaultDeps = {
|
|
11
13
|
console,
|
|
12
14
|
configUtils: configService,
|
|
@@ -43,6 +45,15 @@ function getBranchContext(env, config) {
|
|
|
43
45
|
: branch === 'main' || branch === 'master';
|
|
44
46
|
return { branch, useChangedOnly: !isOnDefaultBranch };
|
|
45
47
|
}
|
|
48
|
+
async function findSourceFiles(config) {
|
|
49
|
+
const result = await findTranslationFiles(config, {
|
|
50
|
+
parseContent: false,
|
|
51
|
+
includeContent: false,
|
|
52
|
+
extractKeys: false,
|
|
53
|
+
returnFullResult: true
|
|
54
|
+
});
|
|
55
|
+
return result.sourceFiles;
|
|
56
|
+
}
|
|
46
57
|
/**
|
|
47
58
|
* Run translation mode with defaults for CI/CD
|
|
48
59
|
*/
|
|
@@ -128,6 +139,7 @@ async function runSyncMode(syncId, projectId, deps, options) {
|
|
|
128
139
|
let filesUpdated = 0;
|
|
129
140
|
const uniqueKeys = new Set();
|
|
130
141
|
const projectRoot = process.cwd();
|
|
142
|
+
const sourceFiles = await findSourceFiles(config);
|
|
131
143
|
for (const file of allFiles) {
|
|
132
144
|
const absolutePath = path.resolve(file.path);
|
|
133
145
|
const relativePath = path.relative(projectRoot, absolutePath);
|
|
@@ -147,7 +159,8 @@ async function runSyncMode(syncId, projectId, deps, options) {
|
|
|
147
159
|
...(t.file_references?.length && { metadata: { source_references: t.file_references } })
|
|
148
160
|
}))
|
|
149
161
|
: file.translations;
|
|
150
|
-
|
|
162
|
+
const locale = toConfigLocale(file.language, config);
|
|
163
|
+
await updateTranslationFile(file.path, translations, locale, findSourceFileForTarget(file.path, locale, sourceFiles, config.sourceLocale)?.path, config.sourceLocale, config);
|
|
151
164
|
filesUpdated++;
|
|
152
165
|
file.translations.forEach(t => uniqueKeys.add(t.key));
|
|
153
166
|
modifiedFiles.push(file.path);
|
package/dist/commands/ci.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/commands/ci.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAA2B,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAsB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAiB,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/commands/ci.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { translate } from './translate.js';
|
|
3
|
+
import { configService } from '../utils/config.js';
|
|
4
|
+
import { checkAuth } from '../utils/auth.js';
|
|
5
|
+
import { githubService } from '../utils/github.js';
|
|
6
|
+
const defaultDeps = {
|
|
7
|
+
console,
|
|
8
|
+
configUtils: configService,
|
|
9
|
+
authUtils: { checkAuth },
|
|
10
|
+
githubUtils: githubService,
|
|
11
|
+
env: process.env,
|
|
12
|
+
translateCommand: translate
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Detects if running in a PR context (feature branch)
|
|
16
|
+
* @param env Environment variables
|
|
17
|
+
* @returns true if in PR context (should use --changed-only), false otherwise
|
|
18
|
+
*/
|
|
19
|
+
function detectPRContext(env) {
|
|
20
|
+
const baseRef = env.GITHUB_BASE_REF;
|
|
21
|
+
// If no base ref, assume main context (full translation)
|
|
22
|
+
if (!baseRef) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
// If base ref is main or master, do full translation
|
|
26
|
+
if (baseRef === 'main' || baseRef === 'master') {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
// Otherwise, it's a feature branch PR - use changed-only
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Run translation mode with smart defaults for GitHub Actions
|
|
34
|
+
*/
|
|
35
|
+
async function runTranslateMode(options, deps) {
|
|
36
|
+
const { verbose, forceChangedOnly, forceFull } = options;
|
|
37
|
+
const { console, env, translateCommand } = deps;
|
|
38
|
+
// Determine if we should use --changed-only
|
|
39
|
+
let shouldUseChangedOnly;
|
|
40
|
+
if (forceFull) {
|
|
41
|
+
// User explicitly requested full translation
|
|
42
|
+
shouldUseChangedOnly = false;
|
|
43
|
+
if (verbose) {
|
|
44
|
+
console.log(chalk.blue('ℹ Using full translation mode (--force-full)'));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (forceChangedOnly) {
|
|
48
|
+
// User explicitly requested changed-only
|
|
49
|
+
shouldUseChangedOnly = true;
|
|
50
|
+
if (verbose) {
|
|
51
|
+
console.log(chalk.blue('ℹ Using changed-only mode (--force-changed-only)'));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// Auto-detect based on context
|
|
56
|
+
shouldUseChangedOnly = detectPRContext(env);
|
|
57
|
+
if (verbose) {
|
|
58
|
+
const baseRef = env.GITHUB_BASE_REF || 'unknown';
|
|
59
|
+
if (shouldUseChangedOnly) {
|
|
60
|
+
console.log(chalk.blue(`ℹ Auto-detected PR context (base: ${baseRef}) - using --changed-only`));
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
console.log(chalk.blue(`ℹ Auto-detected main branch context (base: ${baseRef}) - using full translation`));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Run translate with computed options
|
|
68
|
+
const translateOptions = {
|
|
69
|
+
...options,
|
|
70
|
+
changedOnly: shouldUseChangedOnly,
|
|
71
|
+
// translate command already handles auto-commit in GitHub Actions
|
|
72
|
+
};
|
|
73
|
+
await translateCommand(translateOptions);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* GitHub Actions command - runs translations optimized for CI/CD
|
|
77
|
+
* Auto-detects PR vs main branch context and adjusts behavior accordingly
|
|
78
|
+
*
|
|
79
|
+
* In Phase 5, this will also support sync mode by checking for sync-trigger-id in config
|
|
80
|
+
*/
|
|
81
|
+
export async function githubAction(options = {}, deps = defaultDeps) {
|
|
82
|
+
const { console, configUtils, authUtils, githubUtils } = deps;
|
|
83
|
+
// Verify we're running in GitHub Actions
|
|
84
|
+
if (!githubUtils.isGitHubAction()) {
|
|
85
|
+
console.error(chalk.yellow('\n⚠ Warning: This command is designed to run in GitHub Actions.'));
|
|
86
|
+
console.error(chalk.yellow(' For local development, use `npx @localheroai/cli translate` instead.\n'));
|
|
87
|
+
// Continue anyway - useful for testing
|
|
88
|
+
}
|
|
89
|
+
// Check authentication
|
|
90
|
+
const isAuthenticated = await authUtils.checkAuth();
|
|
91
|
+
if (!isAuthenticated) {
|
|
92
|
+
console.error(chalk.red('\n✖ Your API key is invalid. Please check LOCALHERO_API_KEY secret.\n'));
|
|
93
|
+
process.exit(1);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
// Load configuration
|
|
97
|
+
const config = await configUtils.getProjectConfig();
|
|
98
|
+
if (!config) {
|
|
99
|
+
console.error(chalk.red('\n✖ No configuration found. localhero.json is missing.\n'));
|
|
100
|
+
process.exit(1);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
// Phase 5 addition point: Check for sync-trigger-id here
|
|
104
|
+
// Example for future implementation:
|
|
105
|
+
// if (config['sync-trigger-id']) {
|
|
106
|
+
// return runSyncMode(config['sync-trigger-id'], options, deps);
|
|
107
|
+
// }
|
|
108
|
+
// Phase 1: Run translate mode with smart defaults
|
|
109
|
+
await runTranslateMode(options, deps);
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=github-action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-action.js","sourceRoot":"","sources":["../../src/commands/github-action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAA2B,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAsB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAuBnD,MAAM,WAAW,GAA6B;IAC5C,OAAO;IACP,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,EAAE,SAAS,EAAE;IACxB,WAAW,EAAE,aAAa;IAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;IAChB,gBAAgB,EAAE,SAAS;CAC5B,CAAC;AAEF;;;;GAIG;AACH,SAAS,eAAe,CAAC,GAAsB;IAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC;IAEpC,yDAAyD;IACzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qDAAqD;IACrD,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yDAAyD;IACzD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAC7B,OAA4B,EAC5B,IAA8B;IAE9B,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IACzD,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAEhD,4CAA4C;IAC5C,IAAI,oBAA6B,CAAC;IAElC,IAAI,SAAS,EAAE,CAAC;QACd,6CAA6C;QAC7C,oBAAoB,GAAG,KAAK,CAAC;QAC7B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;SAAM,IAAI,gBAAgB,EAAE,CAAC;QAC5B,yCAAyC;QACzC,oBAAoB,GAAG,IAAI,CAAC;QAC5B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;SAAM,CAAC;QACN,+BAA+B;QAC/B,oBAAoB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,IAAI,SAAS,CAAC;YACjD,IAAI,oBAAoB,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,OAAO,0BAA0B,CAAC,CAAC,CAAC;YAClG,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8CAA8C,OAAO,4BAA4B,CAAC,CAAC,CAAC;YAC7G,CAAC;QACH,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,MAAM,gBAAgB,GAAuB;QAC3C,GAAG,OAAO;QACV,WAAW,EAAE,oBAAoB;QACjC,kEAAkE;KACnE,CAAC;IAEF,MAAM,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAA+B,EAAE,EACjC,OAAiC,WAAW;IAE5C,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAE9D,yCAAyC;IACzC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,iEAAiE,CAAC,CAAC,CAAC;QAC/F,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,0EAA0E,CAAC,CAAC,CAAC;QACxG,uCAAuC;IACzC,CAAC;IAED,uBAAuB;IACvB,MAAM,eAAe,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC;IACpD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC,CAAC;QAClG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,qBAAqB;IACrB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,gBAAgB,EAAE,CAAC;IACpD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,yDAAyD;IACzD,qCAAqC;IACrC,mCAAmC;IACnC,kEAAkE;IAClE,IAAI;IAEJ,kDAAkD;IAClD,MAAM,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function init(deps?: {}): Promise<void>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createPromptService } from '../utils/prompt-service.js';
|
|
2
|
+
import { verifyApiKey as defaultVerifyApiKey } from '../api/auth.js';
|
|
3
|
+
import { configService } from '../utils/config.js';
|
|
4
|
+
interface LoginDependencies {
|
|
5
|
+
console?: Console;
|
|
6
|
+
basePath?: string;
|
|
7
|
+
promptService?: ReturnType<typeof createPromptService>;
|
|
8
|
+
verifyApiKey?: typeof defaultVerifyApiKey;
|
|
9
|
+
gitUtils?: {
|
|
10
|
+
updateGitignore: (path: string) => Promise<boolean>;
|
|
11
|
+
};
|
|
12
|
+
configUtils?: typeof configService;
|
|
13
|
+
isCalledFromInit?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function login(deps?: LoginDependencies): Promise<void>;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SyncOptions } from '../types/index.js';
|
|
2
|
+
interface SyncResult {
|
|
3
|
+
totalUpdates?: number;
|
|
4
|
+
totalDeleted?: number;
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
}
|
|
7
|
+
import type { CheckUpdatesResult, UpdatesContainer } from '../utils/sync-service.js';
|
|
8
|
+
interface SyncServiceInterface {
|
|
9
|
+
checkForUpdates: (options: {
|
|
10
|
+
verbose?: boolean;
|
|
11
|
+
}) => Promise<CheckUpdatesResult>;
|
|
12
|
+
applyUpdates: (updates: UpdatesContainer, options: {
|
|
13
|
+
verbose?: boolean;
|
|
14
|
+
}) => Promise<SyncResult>;
|
|
15
|
+
}
|
|
16
|
+
interface SyncDependencies {
|
|
17
|
+
syncService: SyncServiceInterface;
|
|
18
|
+
}
|
|
19
|
+
export declare function sync({ verbose }?: SyncOptions, deps?: SyncDependencies): Promise<SyncResult | void>;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { syncService as defaultSyncService } from '../utils/sync-service.js';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
export async function sync({ verbose = false } = {}, deps = { syncService: defaultSyncService }) {
|
|
4
|
+
const { syncService } = deps;
|
|
5
|
+
const { hasUpdates, updates } = await syncService.checkForUpdates(verbose);
|
|
6
|
+
if (!hasUpdates) {
|
|
7
|
+
console.log(chalk.green('✓ All translations are up to date'));
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const result = await syncService.applyUpdates(updates, verbose);
|
|
11
|
+
const { totalUpdates = 0, totalDeleted = 0 } = result;
|
|
12
|
+
if (!verbose) {
|
|
13
|
+
if (totalUpdates > 0) {
|
|
14
|
+
console.log(chalk.green(`✓ Updated ${totalUpdates} translations`));
|
|
15
|
+
}
|
|
16
|
+
if (totalDeleted > 0) {
|
|
17
|
+
console.log(chalk.green(`✓ Deleted ${totalDeleted} keys`));
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,MAAM,OAAO,CAAC;AAuB1B,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,EAAE,OAAO,GAAG,KAAK,KAA4B,EAAE,EAC/C,OAAyB,EAAE,WAAW,EAAE,kBAAkB,EAAE;IAE5D,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAE3E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEhE,MAAM,EAAE,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC;IAEtD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,YAAY,eAAe,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,YAAY,OAAO,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TranslateOptions } from '../types/index.js';
|
|
2
|
+
import { configService } from '../utils/config.js';
|
|
3
|
+
interface TranslateDependencies {
|
|
4
|
+
console?: Console;
|
|
5
|
+
basePath?: string;
|
|
6
|
+
configUtils?: typeof configService;
|
|
7
|
+
}
|
|
8
|
+
interface TranslateResult {
|
|
9
|
+
totalTranslated: number;
|
|
10
|
+
skipped: number;
|
|
11
|
+
errors: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function translate({ verbose, commit }?: TranslateOptions, deps?: TranslateDependencies): Promise<TranslateResult>;
|
|
14
|
+
export {};
|