@transi-store/cli 1.1.0 → 1.3.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 +2 -0
- package/dist/cli.js +22 -3
- package/dist/cli.js.map +1 -1
- package/dist/fetchTranslations.d.ts +3 -2
- package/dist/fetchTranslations.d.ts.map +1 -1
- package/dist/fetchTranslations.js +8 -3
- package/dist/fetchTranslations.js.map +1 -1
- package/dist/uploadTranslations.d.ts +4 -2
- package/dist/uploadTranslations.d.ts.map +1 -1
- package/dist/uploadTranslations.js +56 -1
- package/dist/uploadTranslations.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -23,6 +23,7 @@ transi-store --help
|
|
|
23
23
|
#### Options
|
|
24
24
|
|
|
25
25
|
- `--config <path>`: Path to the configuration file (default: `transi-store.config.json`).
|
|
26
|
+
- `--branch`: The branch to upload the translations to. Defaults to "main".
|
|
26
27
|
|
|
27
28
|
#### Configuration file example
|
|
28
29
|
|
|
@@ -78,6 +79,7 @@ Optional parameters:
|
|
|
78
79
|
|
|
79
80
|
- `--domain-root`: The root directory for the domain. This is used to determine the domain of the translations based on the input file path. Defaults to "https://transi-store.com".
|
|
80
81
|
- `--strategy`: eiher "overwrite" (default) or "skip". Determines how to handle existing translations. "overwrite" will replace existing translations with the new ones, while "skip" will keep existing translations and only add new ones.
|
|
82
|
+
- `--branch`: The branch to upload the translations to. Defaults to "main".
|
|
81
83
|
|
|
82
84
|
You must also provide the `TRANSI_STORE_API_KEY` environment variable with your Transi-Store API key to authenticate the requests.
|
|
83
85
|
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command, Option } from "@commander-js/extra-typings";
|
|
3
3
|
import { DEFAULT_DOMAIN_ROOT, fetchForConfig, fetchTranslations, } from "./fetchTranslations.js";
|
|
4
|
-
import { ImportStrategy, uploadTranslations, } from "./uploadTranslations.js";
|
|
4
|
+
import { ImportStrategy, uploadForConfig, uploadTranslations, } from "./uploadTranslations.js";
|
|
5
5
|
const program = new Command();
|
|
6
6
|
const apiKeyOption = new Option("-k, --api-key <apiKey>", "API key for authentication")
|
|
7
7
|
.env("TRANSI_STORE_API_KEY")
|
|
@@ -16,6 +16,7 @@ program
|
|
|
16
16
|
.requiredOption("-l, --locale <locale>", "Locale to export")
|
|
17
17
|
.requiredOption("-O, --output <output>", "Output file path")
|
|
18
18
|
.option("-f, --format <format>", "Export format (json, csv, etc.)", "json")
|
|
19
|
+
.option("-b, --branch <branch>", "Branch slug (exports main + branch keys)")
|
|
19
20
|
.action((options) => {
|
|
20
21
|
fetchTranslations(options);
|
|
21
22
|
});
|
|
@@ -30,6 +31,7 @@ program
|
|
|
30
31
|
.requiredOption("-I, --input <input>", "Input file path (JSON or XLIFF)")
|
|
31
32
|
.option("-s, --strategy <strategy>", `Import strategy: '${ImportStrategy.OVERWRITE}' or '${ImportStrategy.SKIP}' existing translations`, ImportStrategy.SKIP)
|
|
32
33
|
.option("-f, --format <format>", "File format (json or xliff). Auto-detected from extension if omitted")
|
|
34
|
+
.option("-b, --branch <branch>", "Branch slug (new keys will be created on this branch)")
|
|
33
35
|
.action((options) => {
|
|
34
36
|
const strategy = options.strategy;
|
|
35
37
|
if (strategy !== ImportStrategy.OVERWRITE &&
|
|
@@ -43,12 +45,29 @@ program
|
|
|
43
45
|
});
|
|
44
46
|
});
|
|
45
47
|
program
|
|
46
|
-
.command("config", { isDefault: true })
|
|
48
|
+
.command("download:config", { isDefault: true })
|
|
47
49
|
.description("Use configuration from config file")
|
|
48
50
|
.option("-c, --config <config>", "Path to config file", "transi-store.config.json")
|
|
51
|
+
.option("-b, --branch <branch>", "Branch slug (exports main + branch keys)")
|
|
49
52
|
.addOption(apiKeyOption)
|
|
50
53
|
.action((options) => {
|
|
51
|
-
fetchForConfig(options.config, options.apiKey);
|
|
54
|
+
fetchForConfig(options.config, options.apiKey, options.branch);
|
|
55
|
+
});
|
|
56
|
+
program
|
|
57
|
+
.command("upload:config")
|
|
58
|
+
.description("Upload translations using configuration from config file")
|
|
59
|
+
.option("-c, --config <config>", "Path to config file", "transi-store.config.json")
|
|
60
|
+
.option("-b, --branch <branch>", "Branch slug (new keys will be created on this branch)")
|
|
61
|
+
.option("-s, --strategy <strategy>", `Import strategy: '${ImportStrategy.OVERWRITE}' or '${ImportStrategy.SKIP}' existing translations`, ImportStrategy.SKIP)
|
|
62
|
+
.addOption(apiKeyOption)
|
|
63
|
+
.action((options) => {
|
|
64
|
+
const strategy = options.strategy;
|
|
65
|
+
if (strategy !== ImportStrategy.OVERWRITE &&
|
|
66
|
+
strategy !== ImportStrategy.SKIP) {
|
|
67
|
+
console.error(`Invalid strategy. Use '${ImportStrategy.OVERWRITE}' or '${ImportStrategy.SKIP}'.`);
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
uploadForConfig(options.config, options.apiKey, strategy, options.branch);
|
|
52
71
|
});
|
|
53
72
|
program.parse();
|
|
54
73
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,iBAAiB,GAElB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,cAAc,EACd,kBAAkB,GAEnB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,MAAM,YAAY,GAAG,IAAI,MAAM,CAC7B,wBAAwB,EACxB,4BAA4B,CAC7B;KACE,GAAG,CAAC,sBAAsB,CAAC;KAC3B,mBAAmB,EAAE,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,qCAAqC,CAAC;KAClD,SAAS,CAAC,YAAY,CAAC;KACvB,cAAc,CACb,gCAAgC,EAChC,iFAAiF,EACjF,mBAAmB,CACpB;KACA,cAAc,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;KACtD,cAAc,CAAC,yBAAyB,EAAE,cAAc,CAAC;KACzD,cAAc,CAAC,uBAAuB,EAAE,kBAAkB,CAAC;KAC3D,cAAc,CAAC,uBAAuB,EAAE,kBAAkB,CAAC;KAC3D,MAAM,CAAC,uBAAuB,EAAE,iCAAiC,EAAE,MAAM,CAAC;KAC1E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,iBAAiB,CAAC,OAAwB,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mCAAmC,CAAC;KAChD,SAAS,CAAC,YAAY,CAAC;KACvB,cAAc,CACb,gCAAgC,EAChC,6EAA6E,EAC7E,mBAAmB,CACpB;KACA,cAAc,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;KACtD,cAAc,CAAC,yBAAyB,EAAE,cAAc,CAAC;KACzD,cAAc,CAAC,uBAAuB,EAAE,eAAe,CAAC;KACxD,cAAc,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;KACxE,MAAM,CACL,2BAA2B,EAC3B,qBAAqB,cAAc,CAAC,SAAS,SAAS,cAAc,CAAC,IAAI,yBAAyB,EAClG,cAAc,CAAC,IAAI,CACpB;KACA,MAAM,CACL,uBAAuB,EACvB,sEAAsE,CACvE;KACA,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IACE,QAAQ,KAAK,cAAc,CAAC,SAAS;QACrC,QAAQ,KAAK,cAAc,CAAC,IAAI,EAChC,CAAC;QACD,OAAO,CAAC,KAAK,CACX,0BAA0B,cAAc,CAAC,SAAS,SAAS,cAAc,CAAC,IAAI,IAAI,CACnF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kBAAkB,CAAC;QACjB,GAAG,OAAO;QACV,QAAQ;KACc,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,8 @@ export type Config = {
|
|
|
7
7
|
format: string;
|
|
8
8
|
locale: string;
|
|
9
9
|
output: string;
|
|
10
|
+
branch?: string | undefined;
|
|
10
11
|
};
|
|
11
|
-
export declare function fetchTranslations({ domainRoot, apiKey, org, project, format, locale, output, }: Config): Promise<void>;
|
|
12
|
-
export declare function fetchForConfig(configPath: string, apiKey: string): Promise<void>;
|
|
12
|
+
export declare function fetchTranslations({ domainRoot, apiKey, org, project, format, locale, output, branch, }: Config): Promise<void>;
|
|
13
|
+
export declare function fetchForConfig(configPath: string, apiKey: string, branch?: string): Promise<void>;
|
|
13
14
|
//# sourceMappingURL=fetchTranslations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchTranslations.d.ts","sourceRoot":"","sources":["../src/fetchTranslations.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,mBAAmB,6BAA6B,CAAC;AAE9D,MAAM,MAAM,MAAM,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"fetchTranslations.d.ts","sourceRoot":"","sources":["../src/fetchTranslations.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,mBAAmB,6BAA6B,CAAC;AAE9D,MAAM,MAAM,MAAM,GAAG;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,EACtC,UAAU,EACV,MAAM,EACN,GAAG,EACH,OAAO,EACP,MAAM,EACN,MAAM,EACN,MAAM,EACN,MAAM,GACP,EAAE,MAAM,iBA+CR;AAED,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA8Cf"}
|
|
@@ -12,8 +12,12 @@ import { pathToFileURL } from "node:url";
|
|
|
12
12
|
import z from "zod";
|
|
13
13
|
import schema from "./schema.js";
|
|
14
14
|
export const DEFAULT_DOMAIN_ROOT = "https://transi-store.com";
|
|
15
|
-
export async function fetchTranslations({ domainRoot, apiKey, org, project, format, locale, output, }) {
|
|
16
|
-
const
|
|
15
|
+
export async function fetchTranslations({ domainRoot, apiKey, org, project, format, locale, output, branch, }) {
|
|
16
|
+
const params = new URLSearchParams({ format, locale });
|
|
17
|
+
if (branch) {
|
|
18
|
+
params.set("branch", branch);
|
|
19
|
+
}
|
|
20
|
+
const url = `${domainRoot}/api/orgs/${org}/projects/${project}/export?${params.toString()}`;
|
|
17
21
|
try {
|
|
18
22
|
const content = await fetch(url, {
|
|
19
23
|
headers: {
|
|
@@ -43,7 +47,7 @@ export async function fetchTranslations({ domainRoot, apiKey, org, project, form
|
|
|
43
47
|
process.exit(1);
|
|
44
48
|
}
|
|
45
49
|
}
|
|
46
|
-
export async function fetchForConfig(configPath, apiKey) {
|
|
50
|
+
export async function fetchForConfig(configPath, apiKey, branch) {
|
|
47
51
|
const cwd = process.cwd();
|
|
48
52
|
const fullPath = path.resolve(cwd, configPath);
|
|
49
53
|
if (!fs.existsSync(fullPath)) {
|
|
@@ -72,6 +76,7 @@ export async function fetchForConfig(configPath, apiKey) {
|
|
|
72
76
|
.replace("<lang>", locale)
|
|
73
77
|
.replace("<project>", configItem.project)
|
|
74
78
|
.replace("<format>", configItem.format),
|
|
79
|
+
branch,
|
|
75
80
|
};
|
|
76
81
|
fetchTranslations(options);
|
|
77
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchTranslations.js","sourceRoot":"","sources":["../src/fetchTranslations.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,CAAC,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"fetchTranslations.js","sourceRoot":"","sources":["../src/fetchTranslations.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,9 @@ export type UploadConfig = {
|
|
|
10
10
|
locale: string;
|
|
11
11
|
input: string;
|
|
12
12
|
strategy: ImportStrategy;
|
|
13
|
-
format?: string;
|
|
13
|
+
format?: string | undefined;
|
|
14
|
+
branch?: string | undefined;
|
|
14
15
|
};
|
|
15
|
-
export declare function uploadTranslations({ domainRoot, apiKey, org, project, locale, input, strategy, format, }: UploadConfig): Promise<void>;
|
|
16
|
+
export declare function uploadTranslations({ domainRoot, apiKey, org, project, locale, input, strategy, format, branch, }: UploadConfig): Promise<void>;
|
|
17
|
+
export declare function uploadForConfig(configPath: string, apiKey: string, strategy: ImportStrategy, branch?: string): Promise<void>;
|
|
16
18
|
//# sourceMappingURL=uploadTranslations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadTranslations.d.ts","sourceRoot":"","sources":["../src/uploadTranslations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"uploadTranslations.d.ts","sourceRoot":"","sources":["../src/uploadTranslations.ts"],"names":[],"mappings":"AAOA,oBAAY,cAAc;IACxB,SAAS,cAAc;IACvB,IAAI,SAAS;CACd;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,EACvC,UAAU,EACV,MAAM,EACN,GAAG,EACH,OAAO,EACP,MAAM,EACN,KAAK,EACL,QAAQ,EACR,MAAM,EACN,MAAM,GACP,EAAE,YAAY,iBA0Dd;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,EACxB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAsDf"}
|
|
@@ -1,11 +1,23 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
1
9
|
import fs from "node:fs";
|
|
2
10
|
import path from "node:path";
|
|
11
|
+
import { pathToFileURL } from "node:url";
|
|
12
|
+
import z from "zod";
|
|
13
|
+
import schema from "./schema.js";
|
|
14
|
+
import { DEFAULT_DOMAIN_ROOT } from "./fetchTranslations.js";
|
|
3
15
|
export var ImportStrategy;
|
|
4
16
|
(function (ImportStrategy) {
|
|
5
17
|
ImportStrategy["OVERWRITE"] = "overwrite";
|
|
6
18
|
ImportStrategy["SKIP"] = "skip";
|
|
7
19
|
})(ImportStrategy || (ImportStrategy = {}));
|
|
8
|
-
export async function uploadTranslations({ domainRoot, apiKey, org, project, locale, input, strategy, format, }) {
|
|
20
|
+
export async function uploadTranslations({ domainRoot, apiKey, org, project, locale, input, strategy, format, branch, }) {
|
|
9
21
|
const url = `${domainRoot}/api/orgs/${org}/projects/${project}/import`;
|
|
10
22
|
const filePath = path.resolve(input);
|
|
11
23
|
if (!fs.existsSync(filePath)) {
|
|
@@ -21,6 +33,9 @@ export async function uploadTranslations({ domainRoot, apiKey, org, project, loc
|
|
|
21
33
|
if (format) {
|
|
22
34
|
formData.append("format", format);
|
|
23
35
|
}
|
|
36
|
+
if (branch) {
|
|
37
|
+
formData.append("branch", branch);
|
|
38
|
+
}
|
|
24
39
|
try {
|
|
25
40
|
const response = await fetch(url, {
|
|
26
41
|
method: "POST",
|
|
@@ -46,4 +61,44 @@ export async function uploadTranslations({ domainRoot, apiKey, org, project, loc
|
|
|
46
61
|
process.exit(1);
|
|
47
62
|
}
|
|
48
63
|
}
|
|
64
|
+
export async function uploadForConfig(configPath, apiKey, strategy, branch) {
|
|
65
|
+
const cwd = process.cwd();
|
|
66
|
+
const fullPath = path.resolve(cwd, configPath);
|
|
67
|
+
if (!fs.existsSync(fullPath)) {
|
|
68
|
+
console.error(`Config file not found: ${configPath}`);
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
const config = (await import(__rewriteRelativeImportExtension(pathToFileURL(fullPath).href), { with: { type: "json" } })).default;
|
|
72
|
+
const result = schema.safeParse(config);
|
|
73
|
+
if (!result.success) {
|
|
74
|
+
const pretty = z.prettifyError(result.error);
|
|
75
|
+
console.error("Config validation error:", pretty);
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
const domainRoot = result.data.domainRoot ?? DEFAULT_DOMAIN_ROOT;
|
|
79
|
+
console.log(`Uploading translations to domain "${domainRoot}" for org "${result.data.org}"...`);
|
|
80
|
+
for (const configItem of result.data.projects) {
|
|
81
|
+
for (const locale of configItem.langs) {
|
|
82
|
+
const input = configItem.output
|
|
83
|
+
.replace("<lang>", locale)
|
|
84
|
+
.replace("<project>", configItem.project)
|
|
85
|
+
.replace("<format>", configItem.format);
|
|
86
|
+
if (!fs.existsSync(path.resolve(cwd, input))) {
|
|
87
|
+
console.log(`Skipping project "${configItem.project}" locale "${locale}": file not found "${input}"`);
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
await uploadTranslations({
|
|
91
|
+
domainRoot,
|
|
92
|
+
apiKey,
|
|
93
|
+
org: result.data.org,
|
|
94
|
+
project: configItem.project,
|
|
95
|
+
format: configItem.format,
|
|
96
|
+
locale,
|
|
97
|
+
input,
|
|
98
|
+
strategy,
|
|
99
|
+
branch,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
49
104
|
//# sourceMappingURL=uploadTranslations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadTranslations.js","sourceRoot":"","sources":["../src/uploadTranslations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"uploadTranslations.js","sourceRoot":"","sources":["../src/uploadTranslations.ts"],"names":[],"mappings":"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"}
|