cc-translate 0.5.0 → 0.5.2
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/index.d.ts.map +1 -1
- package/index.js +3 -6
- package/lib/cache/index.d.ts +1 -1
- package/lib/cache/index.d.ts.map +1 -1
- package/lib/cache/index.js +26 -12
- package/lib/utils.d.ts +1 -0
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +23 -0
- package/package.json +1 -1
- package/src/index.ts +3 -9
- package/src/lib/cache/index.ts +36 -13
- package/src/lib/utils.ts +23 -0
- package/src/types/index.ts +7 -0
- package/test.mjs +11 -9
- package/types/index.d.ts +6 -0
- package/types/index.d.ts.map +1 -1
package/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,uBAAuB,EACvB,KAAK,EACL,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAgBjB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAMvE,qBAAa,gBAAgB;IAC3B,uBAAuB;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,MAAM;IACN,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB;IACjB,eAAe,EAAE,mBAAmB,CAAC;IACrC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC7B,2BAA2B;IAC3B,YAAY,EAAE,aAAa,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;gBAEP,MAAM,EAAE,uBAAuB;IAY3C,IAAI,gBAAgB,kCAOnB;IAED,IAAI,UAAU,WAEb;IAED,cAAc,CAAC,IAAI,EAAE,mBAAmB;IAIxC,kBAAkB,aAOhB;IACF;;OAEG;IACH,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,uBAAuB,EACvB,KAAK,EACL,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAgBjB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAMvE,qBAAa,gBAAgB;IAC3B,uBAAuB;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,MAAM;IACN,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB;IACjB,eAAe,EAAE,mBAAmB,CAAC;IACrC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC7B,2BAA2B;IAC3B,YAAY,EAAE,aAAa,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;gBAEP,MAAM,EAAE,uBAAuB;IAY3C,IAAI,gBAAgB,kCAOnB;IAED,IAAI,UAAU,WAEb;IAED,cAAc,CAAC,IAAI,EAAE,mBAAmB;IAIxC,kBAAkB,aAOhB;IACF;;OAEG;IACH,SAAS,sBAoDP;IACF;;;;OAIG;IACH,eAAe,WAAkB,gBAAgB,mBAoD/C;IAEF;;;;;;;OAOG;IACH,aAAa,WAAY,cAAc,KAAG,OAAO,CAAC,sBAAsB,CAAC,CA2DvE;IACF;;;;;OAKG;IACH,mBAAmB,aACP,mBAAmB,YACnB,MAAM,KACf,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,CA6B3B;IAEF;;;OAGG;IACH,kBAAkB,WAAkB,mBAAmB,mBAsCrD;CACH"}
|
package/index.js
CHANGED
|
@@ -12,7 +12,7 @@ import fs from "fs";
|
|
|
12
12
|
import colors from "ansi-colors";
|
|
13
13
|
import { OpenAI } from "openai";
|
|
14
14
|
import cliProgress from "cli-progress";
|
|
15
|
-
import {
|
|
15
|
+
import { dequeue, getRandomNumber, notExistsToCreateFile, readFileOfDirSync, readJsonFileSync, } from "./lib/utils.js";
|
|
16
16
|
import { getCacheFileSync, registerLanguageCacheFile, translateJSONDiffToJson, } from "./lib/cache/index.js";
|
|
17
17
|
import { logErrorToFile } from "./lib/log/index.js";
|
|
18
18
|
import { SUPPORT_LANGUAGE_MAP } from "./lib/support.js";
|
|
@@ -70,10 +70,7 @@ export class CwalletTranslate {
|
|
|
70
70
|
}));
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
-
|
|
74
|
-
for (const chunk of promises) {
|
|
75
|
-
yield Promise.all(chunk.map((fn) => fn()));
|
|
76
|
-
}
|
|
73
|
+
yield dequeue(arr);
|
|
77
74
|
multiBar.stop();
|
|
78
75
|
console.log("🚀 翻译完毕");
|
|
79
76
|
});
|
|
@@ -174,7 +171,7 @@ export class CwalletTranslate {
|
|
|
174
171
|
value: (_c = (_b = chatCompletion === null || chatCompletion === void 0 ? void 0 : chatCompletion.choices[0]) === null || _b === void 0 ? void 0 : _b.message.content) !== null && _c !== void 0 ? _c : value,
|
|
175
172
|
index,
|
|
176
173
|
});
|
|
177
|
-
}), getRandomNumber(
|
|
174
|
+
}), getRandomNumber(120, 130));
|
|
178
175
|
}
|
|
179
176
|
catch (error) {
|
|
180
177
|
logErrorToFile({ error: error, key, fileName, language });
|
package/lib/cache/index.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export declare const getCacheFileSync: (filePath: string) => Promise<IJson>;
|
|
|
18
18
|
*/
|
|
19
19
|
export declare const registerLanguageCacheFile: (params: IRegisterLanguageCacheFile) => Promise<void>;
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
21
|
+
* 根据已翻译文件生成缓存
|
|
22
22
|
*/
|
|
23
23
|
export declare const generateCache: (params: IGenerateCacheParams) => Promise<void>;
|
|
24
24
|
/**
|
package/lib/cache/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/cache/index.ts"],"names":[],"mappings":"AAOA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/cache/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,wBAAwB,EACxB,oBAAoB,EACpB,KAAK,EACL,0BAA0B,EAC3B,MAAM,aAAa,CAAC;AAErB;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,gBACrB,KAAK,mBACD,KAAK,UAiBvB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,aAAoB,MAAM,KAAG,OAAO,CAAC,KAAK,CAMtE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,WAC5B,0BAA0B,kBAmBnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,WAAkB,oBAAoB,kBAwC/D,CAAC;AAwCF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,WAAY,wBAAwB,SA8BhE,CAAC"}
|
package/lib/cache/index.js
CHANGED
|
@@ -65,21 +65,32 @@ export const registerLanguageCacheFile = (params) => __awaiter(void 0, void 0, v
|
|
|
65
65
|
yield fs.writeFileSync(cacheFilePath, JSON.stringify(cacheObject, null, 2), "utf8");
|
|
66
66
|
});
|
|
67
67
|
/**
|
|
68
|
-
*
|
|
68
|
+
* 根据已翻译文件生成缓存
|
|
69
69
|
*/
|
|
70
70
|
export const generateCache = (params) => __awaiter(void 0, void 0, void 0, function* () {
|
|
71
|
-
|
|
72
|
-
// 读取文件夹下的所有文件
|
|
73
|
-
// 复制文件中的所有内容
|
|
74
|
-
// 遍历需要翻译的语言 生成缓存文件
|
|
75
|
-
const { sourceFolderPath, languages, exportFolderPath } = params;
|
|
71
|
+
const { sourceFolderPath, languages, exportFolderPath, sourceLanguage } = params;
|
|
76
72
|
if (!languages || !Array.isArray(languages) || languages.length === 0)
|
|
77
73
|
return;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
74
|
+
// 读取源文件夹下的所有文件
|
|
75
|
+
const sourceFileData = readAllFilesOfFolder(path.resolve(sourceFolderPath, sourceLanguage));
|
|
76
|
+
// 源文件数据map
|
|
77
|
+
const sourceFileMap = {};
|
|
78
|
+
sourceFileData.forEach((item) => {
|
|
79
|
+
sourceFileMap[item.fileName] = item;
|
|
80
|
+
});
|
|
81
|
+
languages.forEach((language) => {
|
|
82
|
+
// 获取当前语言的文件数据
|
|
83
|
+
const currentFileData = readAllFilesOfFolder(path.join(sourceFolderPath, language));
|
|
84
|
+
currentFileData.forEach(({ data, fileName }) => {
|
|
85
|
+
const translated = {};
|
|
86
|
+
// 遍历文件中的已经翻译的内容
|
|
87
|
+
Object.entries(data).forEach(([key, value]) => {
|
|
88
|
+
if (value) {
|
|
89
|
+
translated[key] = sourceFileMap[fileName].data[key];
|
|
90
|
+
}
|
|
91
|
+
});
|
|
81
92
|
notExistsToCreateFile(path.resolve(exportFolderPath, language));
|
|
82
|
-
fs.writeFileSync(path.resolve(exportFolderPath, language, fileName),
|
|
93
|
+
fs.writeFileSync(path.resolve(exportFolderPath, language, fileName), JSON.stringify(translated, null, 2), "utf-8");
|
|
83
94
|
});
|
|
84
95
|
});
|
|
85
96
|
});
|
|
@@ -90,6 +101,8 @@ export const generateCache = (params) => __awaiter(void 0, void 0, void 0, funct
|
|
|
90
101
|
*/
|
|
91
102
|
const readAllFilesOfFolder = (sourceFolderPath) => {
|
|
92
103
|
try {
|
|
104
|
+
if (!fs.existsSync(sourceFolderPath))
|
|
105
|
+
return [];
|
|
93
106
|
const sourceFiles = fs.readdirSync(sourceFolderPath);
|
|
94
107
|
return sourceFiles.map((fileName) => {
|
|
95
108
|
return readFile(sourceFolderPath, fileName);
|
|
@@ -104,10 +117,11 @@ const readFile = (sourceFolderPath, fileName) => {
|
|
|
104
117
|
const filePath = path.resolve(sourceFolderPath, fileName);
|
|
105
118
|
try {
|
|
106
119
|
const jsonData = fs.readFileSync(filePath, "utf-8");
|
|
120
|
+
const data = JSON.parse(jsonData);
|
|
107
121
|
return {
|
|
108
122
|
fileName,
|
|
109
123
|
filePath,
|
|
110
|
-
data
|
|
124
|
+
data,
|
|
111
125
|
};
|
|
112
126
|
}
|
|
113
127
|
catch (error) {
|
|
@@ -115,7 +129,7 @@ const readFile = (sourceFolderPath, fileName) => {
|
|
|
115
129
|
return {
|
|
116
130
|
fileName,
|
|
117
131
|
filePath,
|
|
118
|
-
data:
|
|
132
|
+
data: {},
|
|
119
133
|
};
|
|
120
134
|
}
|
|
121
135
|
};
|
package/lib/utils.d.ts
CHANGED
|
@@ -23,4 +23,5 @@ export declare const isDirectoryPath: (path: string) => boolean;
|
|
|
23
23
|
export declare const readFileOfDirSync: (dirPath: string) => string[];
|
|
24
24
|
export declare function chunkArray<T extends object>(array: T[], chunkSize: number): T[][];
|
|
25
25
|
export declare function intersection<T>(arr1: T[], arr2: T[]): T[];
|
|
26
|
+
export declare const dequeue: (queue: (() => Promise<void>)[]) => Promise<void>;
|
|
26
27
|
//# sourceMappingURL=utils.d.ts.map
|
package/lib/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/lib/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/lib/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGjD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,SAAU,MAAM,SAGjD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,SAAgB,MAAM,iBAUlD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,WAAY,qBAAqB,SAS3D,CAAC;AAEF,eAAO,MAAM,eAAe,QAAS,MAAM,OAAO,MAAM,WAEvD,CAAC;AAEF,eAAO,MAAM,eAAe,SAAU,MAAM,YAG3C,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAAa,MAAM,aAKhD,CAAC;AAEF,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,SASzE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAczD;AAED,eAAO,MAAM,OAAO,UAAiB,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,kBAoB3D,CAAC"}
|
package/lib/utils.js
CHANGED
|
@@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import path from "path";
|
|
11
11
|
import fs from "fs";
|
|
12
|
+
import { logErrorToFile } from "./log/index.js";
|
|
12
13
|
/**
|
|
13
14
|
* 不存在的文件夹则创建
|
|
14
15
|
* @param {string} path
|
|
@@ -86,3 +87,25 @@ export function intersection(arr1, arr2) {
|
|
|
86
87
|
}
|
|
87
88
|
return [...intersectionSet];
|
|
88
89
|
}
|
|
90
|
+
export const dequeue = (queue) => __awaiter(void 0, void 0, void 0, function* () {
|
|
91
|
+
while (queue.length) {
|
|
92
|
+
const requestPromiseFactory = queue.shift(); // 出列
|
|
93
|
+
if (!requestPromiseFactory) {
|
|
94
|
+
dequeue(queue);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
yield requestPromiseFactory();
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
logErrorToFile({
|
|
102
|
+
error: err,
|
|
103
|
+
language: "ar",
|
|
104
|
+
fileName: "",
|
|
105
|
+
key: "",
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
});
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
SupportLanguageType,
|
|
15
15
|
} from "./types";
|
|
16
16
|
import {
|
|
17
|
-
|
|
17
|
+
dequeue,
|
|
18
18
|
getRandomNumber,
|
|
19
19
|
notExistsToCreateFile,
|
|
20
20
|
readFileOfDirSync,
|
|
@@ -139,13 +139,7 @@ export class CwalletTranslate {
|
|
|
139
139
|
);
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
|
-
|
|
143
|
-
promises = chunkArray(arr, 8);
|
|
144
|
-
|
|
145
|
-
for (const chunk of promises) {
|
|
146
|
-
await Promise.all(chunk.map((fn) => fn()));
|
|
147
|
-
}
|
|
148
|
-
|
|
142
|
+
await dequeue(arr);
|
|
149
143
|
multiBar.stop();
|
|
150
144
|
console.log("🚀 翻译完毕");
|
|
151
145
|
};
|
|
@@ -264,7 +258,7 @@ export class CwalletTranslate {
|
|
|
264
258
|
value: chatCompletion?.choices[0]?.message.content ?? value,
|
|
265
259
|
index,
|
|
266
260
|
});
|
|
267
|
-
}, getRandomNumber(
|
|
261
|
+
}, getRandomNumber(120, 130));
|
|
268
262
|
} catch (error) {
|
|
269
263
|
logErrorToFile({ error: error as Error, key, fileName, language });
|
|
270
264
|
resolve({
|
package/src/lib/cache/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
readJsonFileSync,
|
|
7
7
|
} from "../utils.js";
|
|
8
8
|
import {
|
|
9
|
+
ICacheFile,
|
|
9
10
|
IDeleteSingleCacheParams,
|
|
10
11
|
IGenerateCacheParams,
|
|
11
12
|
IJson,
|
|
@@ -79,24 +80,44 @@ export const registerLanguageCacheFile = async (
|
|
|
79
80
|
};
|
|
80
81
|
|
|
81
82
|
/**
|
|
82
|
-
*
|
|
83
|
+
* 根据已翻译文件生成缓存
|
|
83
84
|
*/
|
|
84
85
|
export const generateCache = async (params: IGenerateCacheParams) => {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
// 复制文件中的所有内容
|
|
88
|
-
// 遍历需要翻译的语言 生成缓存文件
|
|
89
|
-
const { sourceFolderPath, languages, exportFolderPath } = params;
|
|
86
|
+
const { sourceFolderPath, languages, exportFolderPath, sourceLanguage } =
|
|
87
|
+
params;
|
|
90
88
|
|
|
91
89
|
if (!languages || !Array.isArray(languages) || languages.length === 0) return;
|
|
92
90
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
91
|
+
// 读取源文件夹下的所有文件
|
|
92
|
+
const sourceFileData = readAllFilesOfFolder(
|
|
93
|
+
path.resolve(sourceFolderPath, sourceLanguage)
|
|
94
|
+
);
|
|
95
|
+
// 源文件数据map
|
|
96
|
+
const sourceFileMap: Record<string, ICacheFile> = {};
|
|
97
|
+
|
|
98
|
+
sourceFileData.forEach((item) => {
|
|
99
|
+
sourceFileMap[item.fileName] = item;
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
languages.forEach((language) => {
|
|
103
|
+
// 获取当前语言的文件数据
|
|
104
|
+
const currentFileData = readAllFilesOfFolder(
|
|
105
|
+
path.join(sourceFolderPath, language)
|
|
106
|
+
);
|
|
107
|
+
|
|
108
|
+
currentFileData.forEach(({ data, fileName }) => {
|
|
109
|
+
const translated: Record<string, string> = {};
|
|
110
|
+
// 遍历文件中的已经翻译的内容
|
|
111
|
+
Object.entries(data).forEach(([key, value]) => {
|
|
112
|
+
if (value) {
|
|
113
|
+
translated[key] = sourceFileMap[fileName].data[key];
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
|
|
96
117
|
notExistsToCreateFile(path.resolve(exportFolderPath, language));
|
|
97
118
|
fs.writeFileSync(
|
|
98
119
|
path.resolve(exportFolderPath, language, fileName),
|
|
99
|
-
|
|
120
|
+
JSON.stringify(translated, null, 2),
|
|
100
121
|
"utf-8"
|
|
101
122
|
);
|
|
102
123
|
});
|
|
@@ -109,6 +130,7 @@ export const generateCache = async (params: IGenerateCacheParams) => {
|
|
|
109
130
|
*/
|
|
110
131
|
const readAllFilesOfFolder = (sourceFolderPath: string) => {
|
|
111
132
|
try {
|
|
133
|
+
if (!fs.existsSync(sourceFolderPath)) return [];
|
|
112
134
|
const sourceFiles = fs.readdirSync(sourceFolderPath);
|
|
113
135
|
return sourceFiles.map((fileName) => {
|
|
114
136
|
return readFile(sourceFolderPath, fileName);
|
|
@@ -119,15 +141,16 @@ const readAllFilesOfFolder = (sourceFolderPath: string) => {
|
|
|
119
141
|
}
|
|
120
142
|
};
|
|
121
143
|
|
|
122
|
-
const readFile = (sourceFolderPath: string, fileName: string) => {
|
|
144
|
+
const readFile = (sourceFolderPath: string, fileName: string): ICacheFile => {
|
|
123
145
|
const filePath = path.resolve(sourceFolderPath, fileName);
|
|
124
146
|
|
|
125
147
|
try {
|
|
126
148
|
const jsonData = fs.readFileSync(filePath, "utf-8");
|
|
149
|
+
const data = JSON.parse(jsonData) as Record<string, string>;
|
|
127
150
|
return {
|
|
128
151
|
fileName,
|
|
129
152
|
filePath,
|
|
130
|
-
data
|
|
153
|
+
data,
|
|
131
154
|
};
|
|
132
155
|
} catch (error) {
|
|
133
156
|
console.error("read file error:", error);
|
|
@@ -135,7 +158,7 @@ const readFile = (sourceFolderPath: string, fileName: string) => {
|
|
|
135
158
|
return {
|
|
136
159
|
fileName,
|
|
137
160
|
filePath,
|
|
138
|
-
data:
|
|
161
|
+
data: {},
|
|
139
162
|
};
|
|
140
163
|
}
|
|
141
164
|
};
|
package/src/lib/utils.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import fs from "fs";
|
|
3
3
|
import { ICreateJsonFileParams } from "../types";
|
|
4
|
+
import { logErrorToFile } from "./log/index.js";
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* 不存在的文件夹则创建
|
|
@@ -88,3 +89,25 @@ export function intersection<T>(arr1: T[], arr2: T[]): T[] {
|
|
|
88
89
|
|
|
89
90
|
return [...intersectionSet];
|
|
90
91
|
}
|
|
92
|
+
|
|
93
|
+
export const dequeue = async (queue: (() => Promise<void>)[]) => {
|
|
94
|
+
while (queue.length) {
|
|
95
|
+
const requestPromiseFactory = queue.shift(); // 出列
|
|
96
|
+
if (!requestPromiseFactory) {
|
|
97
|
+
dequeue(queue);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
try {
|
|
102
|
+
await requestPromiseFactory();
|
|
103
|
+
} catch (err) {
|
|
104
|
+
logErrorToFile({
|
|
105
|
+
error: err as Error,
|
|
106
|
+
language: "ar",
|
|
107
|
+
fileName: "",
|
|
108
|
+
key: "",
|
|
109
|
+
});
|
|
110
|
+
} finally {
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
};
|
package/src/types/index.ts
CHANGED
|
@@ -123,6 +123,7 @@ export interface ITestParams {
|
|
|
123
123
|
|
|
124
124
|
export interface IGenerateCacheParams {
|
|
125
125
|
sourceFolderPath: string;
|
|
126
|
+
sourceLanguage: SupportLanguageType;
|
|
126
127
|
languages: SupportLanguageType[];
|
|
127
128
|
exportFolderPath: string;
|
|
128
129
|
}
|
|
@@ -134,3 +135,9 @@ export interface IDeleteSingleCacheParams {
|
|
|
134
135
|
/** 不传默认删除所有 */
|
|
135
136
|
languages?: SupportLanguageType[];
|
|
136
137
|
}
|
|
138
|
+
|
|
139
|
+
export interface ICacheFile {
|
|
140
|
+
fileName: string;
|
|
141
|
+
filePath: string;
|
|
142
|
+
data: Record<string, string>;
|
|
143
|
+
}
|
package/test.mjs
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import path from "path";
|
|
2
|
-
import { deleteBatchCache, generateCache } from "./index.js";
|
|
2
|
+
import { deleteBatchCache, generateCache, CwalletTranslate } from "./index.js";
|
|
3
3
|
|
|
4
|
-
// deleteBatchCache({
|
|
5
|
-
// keys: ["10001", "10002"],
|
|
6
|
-
// cacheFolderPath: path.resolve("./src/cache"),
|
|
7
|
-
// cacheFileName: "common.json",
|
|
8
|
-
// languages: [],
|
|
9
|
-
// });
|
|
4
|
+
// // deleteBatchCache({
|
|
5
|
+
// // keys: ["10001", "10002"],
|
|
6
|
+
// // cacheFolderPath: path.resolve("./src/cache"),
|
|
7
|
+
// // cacheFileName: "common.json",
|
|
8
|
+
// // languages: [],
|
|
9
|
+
// // });
|
|
10
10
|
|
|
11
11
|
// generateCache({
|
|
12
|
-
// sourceFolderPath: path.resolve("./src/langs
|
|
12
|
+
// sourceFolderPath: path.resolve("./src/langs"),
|
|
13
|
+
// sourceLanguage: "en",
|
|
13
14
|
// exportFolderPath: path.resolve("./src/cache"),
|
|
14
|
-
// languages: ["ja", "
|
|
15
|
+
// languages: ["ja", "zh-CN"],
|
|
15
16
|
// });
|
|
17
|
+
|
package/types/index.d.ts
CHANGED
|
@@ -80,6 +80,7 @@ export interface ITestParams {
|
|
|
80
80
|
}
|
|
81
81
|
export interface IGenerateCacheParams {
|
|
82
82
|
sourceFolderPath: string;
|
|
83
|
+
sourceLanguage: SupportLanguageType;
|
|
83
84
|
languages: SupportLanguageType[];
|
|
84
85
|
exportFolderPath: string;
|
|
85
86
|
}
|
|
@@ -90,4 +91,9 @@ export interface IDeleteSingleCacheParams {
|
|
|
90
91
|
/** 不传默认删除所有 */
|
|
91
92
|
languages?: SupportLanguageType[];
|
|
92
93
|
}
|
|
94
|
+
export interface ICacheFile {
|
|
95
|
+
fileName: string;
|
|
96
|
+
filePath: string;
|
|
97
|
+
data: Record<string, string>;
|
|
98
|
+
}
|
|
93
99
|
//# sourceMappingURL=index.d.ts.map
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/types/index.ts"],"names":[],"mappings":"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"}
|