@dune2/cli 0.5.4 → 1.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/dist/{chunk-UGSBKD2I.js → chunk-DORNSRHQ.js} +2 -3
- package/dist/{chunk-555YTWSW.js → chunk-VS4LDXR3.js} +1 -4
- package/dist/chunk-VS4LDXR3.js.map +1 -0
- package/dist/chunk-YZLVO3MA.js +28 -0
- package/dist/chunk-YZLVO3MA.js.map +1 -0
- package/dist/cli.js +6 -46
- package/dist/cli.js.map +1 -1
- package/dist/{generateApi-B7OSZKPS.js → generateApi-S77LKSZT.js} +93 -33
- package/dist/generateApi-S77LKSZT.js.map +1 -0
- package/dist/index.d.ts +4 -36
- package/dist/index.js +30 -10
- package/dist/index.js.map +1 -1
- package/dist/{initConfig-QRYGDQR7.js → initConfig-NHHN2HCE.js} +10 -12
- package/dist/initConfig-NHHN2HCE.js.map +1 -0
- package/dist/{interactive-HNOHT33A.js → interactive-BVOA3VKY.js} +2 -2
- package/dist/normalizeConfig.d.ts +1 -1
- package/dist/normalizeConfig.js +1 -1
- package/dist/prettier.cjs.map +1 -1
- package/dist/{types-D01zR42f.d.ts → types-CqBxoc6L.d.ts} +0 -12
- package/package.json +3 -10
- package/dist/auth-777GVVSS.js +0 -8
- package/dist/auth-777GVVSS.js.map +0 -1
- package/dist/chunk-2DSIJDNZ.js +0 -22
- package/dist/chunk-2DSIJDNZ.js.map +0 -1
- package/dist/chunk-2SEEW5WZ.js +0 -67
- package/dist/chunk-2SEEW5WZ.js.map +0 -1
- package/dist/chunk-555YTWSW.js.map +0 -1
- package/dist/chunk-6UFZ6KLX.js +0 -124
- package/dist/chunk-6UFZ6KLX.js.map +0 -1
- package/dist/chunk-ADQ6JLT6.js +0 -196
- package/dist/chunk-ADQ6JLT6.js.map +0 -1
- package/dist/chunk-IKJLPHF7.js +0 -117
- package/dist/chunk-IKJLPHF7.js.map +0 -1
- package/dist/chunk-KNC7XY4Z.js +0 -130
- package/dist/chunk-KNC7XY4Z.js.map +0 -1
- package/dist/chunk-Q7UJ456X.js +0 -24
- package/dist/chunk-Q7UJ456X.js.map +0 -1
- package/dist/download-ZZKXRKW5.js +0 -49
- package/dist/download-ZZKXRKW5.js.map +0 -1
- package/dist/extract-DGQMSBR5.js +0 -113
- package/dist/extract-DGQMSBR5.js.map +0 -1
- package/dist/generateApi-B7OSZKPS.js.map +0 -1
- package/dist/initConfig-QRYGDQR7.js.map +0 -1
- package/dist/namespace-4FUD4GZ2.js +0 -137
- package/dist/namespace-4FUD4GZ2.js.map +0 -1
- package/dist/upload-OUXQZAW4.js +0 -92
- package/dist/upload-OUXQZAW4.js.map +0 -1
- /package/dist/{chunk-UGSBKD2I.js.map → chunk-DORNSRHQ.js.map} +0 -0
- /package/dist/{interactive-HNOHT33A.js.map → interactive-BVOA3VKY.js.map} +0 -0
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
formatFile
|
|
3
|
-
} from "./chunk-Q7UJ456X.js";
|
|
4
|
-
import {
|
|
5
|
-
getConfig
|
|
6
|
-
} from "./chunk-2DSIJDNZ.js";
|
|
7
|
-
import "./chunk-555YTWSW.js";
|
|
8
|
-
import {
|
|
9
|
-
createLogger
|
|
10
|
-
} from "./chunk-UGSBKD2I.js";
|
|
11
|
-
|
|
12
|
-
// src/commands/namespace.ts
|
|
13
|
-
import enquirer from "enquirer";
|
|
14
|
-
import fs from "fs-extra";
|
|
15
|
-
import { globby } from "globby";
|
|
16
|
-
import _ from "lodash";
|
|
17
|
-
import pMap from "p-map";
|
|
18
|
-
import pc from "picocolors";
|
|
19
|
-
|
|
20
|
-
// src/shared/autoNamespaceByReg.ts
|
|
21
|
-
function autoNamespaceByReg(code, namespace2) {
|
|
22
|
-
let hasChanged = false;
|
|
23
|
-
code = code.replace(/\Wt`(.+?)`/gm, (match, p1) => {
|
|
24
|
-
if (/\S\.\S/.test(p1)) {
|
|
25
|
-
return match;
|
|
26
|
-
}
|
|
27
|
-
hasChanged = true;
|
|
28
|
-
return match.replace(p1, `${namespace2}.${p1}`);
|
|
29
|
-
});
|
|
30
|
-
code = code.replace(/\Wt\(['"](.+?)['"][),]/gm, (match, p1) => {
|
|
31
|
-
if (/\S\.\S/.test(p1)) {
|
|
32
|
-
return match;
|
|
33
|
-
}
|
|
34
|
-
hasChanged = true;
|
|
35
|
-
return match.replace(p1, `${namespace2}.${p1}`);
|
|
36
|
-
});
|
|
37
|
-
if (hasChanged) {
|
|
38
|
-
return code;
|
|
39
|
-
}
|
|
40
|
-
return "";
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// src/commands/namespace.ts
|
|
44
|
-
var { prompt } = enquirer;
|
|
45
|
-
var log = createLogger("namespace");
|
|
46
|
-
async function namespace(params) {
|
|
47
|
-
var _a, _b;
|
|
48
|
-
const { mode = "swc" } = params;
|
|
49
|
-
const config = await getConfig();
|
|
50
|
-
let i18nConfigs = (_a = config.i18n) == null ? void 0 : _a.filter((item) => !item.disableExtract);
|
|
51
|
-
if (!i18nConfigs) {
|
|
52
|
-
log.info("\u6CA1\u6709\u914D\u7F6E i18n");
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
const { i18nDir } = await prompt({
|
|
56
|
-
type: "select",
|
|
57
|
-
name: "i18nDir",
|
|
58
|
-
message: "\u9009\u62E9\u8981\u751F\u6548\u7684\u914D\u7F6E\u9879",
|
|
59
|
-
choices: i18nConfigs.map((item) => {
|
|
60
|
-
return {
|
|
61
|
-
name: item.i18nDir,
|
|
62
|
-
hint: `sheetRange: ${item.sheetRange}`
|
|
63
|
-
};
|
|
64
|
-
})
|
|
65
|
-
});
|
|
66
|
-
let i18nConfig = i18nConfigs.find((item) => item.i18nDir === i18nDir);
|
|
67
|
-
if (!i18nConfig) {
|
|
68
|
-
log.info("\u6CA1\u6709\u627E\u5230\u5BF9\u5E94\u7684\u914D\u7F6E");
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
const { namespaces } = await prompt({
|
|
72
|
-
type: "multiselect",
|
|
73
|
-
message: "\u9009\u62E9\u8981\u751F\u6548\u7684\u914D\u7F6E\u9879",
|
|
74
|
-
//@ts-ignore
|
|
75
|
-
hint: "(\u7A7A\u683C\u9009\u4E2D\uFF0C\u56DE\u8F66\u786E\u8BA4)",
|
|
76
|
-
name: "namespaces",
|
|
77
|
-
validate(value) {
|
|
78
|
-
return value.length === 0 ? `\u81F3\u5C11\u9009\u62E9\u4E00\u9879` : true;
|
|
79
|
-
},
|
|
80
|
-
choices: _.map(i18nConfig.namespace, (v, k) => {
|
|
81
|
-
return {
|
|
82
|
-
name: k
|
|
83
|
-
};
|
|
84
|
-
})
|
|
85
|
-
});
|
|
86
|
-
const autoNamespace = await (() => {
|
|
87
|
-
if (mode === "swc") {
|
|
88
|
-
log.info("\u4F7F\u7528 swc \u6765\u5904\u7406");
|
|
89
|
-
return import("@dune2/wasm").then((m) => m.autoNamespace);
|
|
90
|
-
}
|
|
91
|
-
log.info("\u4F7F\u7528 reg \u6765\u5904\u7406");
|
|
92
|
-
return autoNamespaceByReg;
|
|
93
|
-
})();
|
|
94
|
-
for (const namespace2 of namespaces) {
|
|
95
|
-
const namespaceConfig = (_b = i18nConfig.namespace) == null ? void 0 : _b[namespace2];
|
|
96
|
-
const suffix = `**/**.{js,jsx,ts,tsx}`;
|
|
97
|
-
const combined = _.map(_.castArray(namespaceConfig), (v) => {
|
|
98
|
-
v = v.endsWith("/") ? v : v + "/";
|
|
99
|
-
return v + suffix;
|
|
100
|
-
});
|
|
101
|
-
log.info("\u6B63\u5728\u5904\u7406 namespace: %s", pc.green(namespace2));
|
|
102
|
-
log.info("\u9884\u8BA1\u5904\u7406\u7684\u6587\u4EF6\u8DEF\u5F84: %s", pc.green(combined.join("\n")));
|
|
103
|
-
const files = await globby(
|
|
104
|
-
[
|
|
105
|
-
"!**/node_modules/**",
|
|
106
|
-
"!**.d.ts",
|
|
107
|
-
"!**/.next/**",
|
|
108
|
-
"!**/out/**"
|
|
109
|
-
//
|
|
110
|
-
].concat(combined),
|
|
111
|
-
{ cwd: i18nConfig.cwd }
|
|
112
|
-
);
|
|
113
|
-
log.info("\u9884\u8BA1\u5171\u5904\u7406 %s \u4E2A\u6587\u4EF6", pc.green(files.length));
|
|
114
|
-
let transformedFileSet = /* @__PURE__ */ new Set();
|
|
115
|
-
await pMap(files, async (file) => {
|
|
116
|
-
const content = await fs.readFile(file, "utf-8");
|
|
117
|
-
const newContent = await autoNamespace(
|
|
118
|
-
content,
|
|
119
|
-
namespace2,
|
|
120
|
-
i18nConfig.namespaceSeparator
|
|
121
|
-
);
|
|
122
|
-
if (newContent) {
|
|
123
|
-
await fs.writeFile(file, newContent);
|
|
124
|
-
await formatFile(file);
|
|
125
|
-
transformedFileSet.add(file);
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
log.info(
|
|
129
|
-
"\u5DF2\u4E3A %s \u4E2A\u6587\u4EF6 \u81EA\u52A8\u6DFB\u52A0 namespace",
|
|
130
|
-
pc.green(transformedFileSet.size)
|
|
131
|
-
);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
export {
|
|
135
|
-
namespace
|
|
136
|
-
};
|
|
137
|
-
//# sourceMappingURL=namespace-4FUD4GZ2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/namespace.ts","../src/shared/autoNamespaceByReg.ts"],"sourcesContent":["import enquirer from \"enquirer\";\nimport fs from \"fs-extra\";\nimport { globby } from \"globby\";\nimport _ from \"lodash\";\nimport pMap from \"p-map\";\nimport pc from \"picocolors\";\nimport { createLogger } from \"../shared\";\nimport { autoNamespaceByReg } from \"../shared/autoNamespaceByReg\";\nimport { getConfig } from \"../shared/config\";\nimport { formatFile } from \"../shared/formatFile\";\n\nconst { prompt } = enquirer;\n\nconst log = createLogger(\"namespace\");\ninterface Params {\n /**\n * 生成模式\n *\n * - swc 指的是用swc 插件来添加 前缀\n *\n * swc 生成的代码更加规范,但是会有一些问题\n *\n * - reg 指的是用正则来添加 前缀\n *\n * reg 目前只能初始 t function 的调用,不能处理 Trans 组件的复杂\n * @default swc\n */\n mode?: \"swc\" | \"reg\";\n}\n\nexport async function namespace(params: Params) {\n const { mode = \"swc\" } = params;\n const config = await getConfig();\n\n // 不允许提取的 配置 不需要选择\n let i18nConfigs = config.i18n?.filter((item) => !item.disableExtract);\n if (!i18nConfigs) {\n log.info(\"没有配置 i18n\");\n return;\n }\n\n // 选择 生效的 i18n 配置\n const { i18nDir } = await prompt<{ i18nDir: string }>({\n type: \"select\",\n name: \"i18nDir\",\n message: \"选择要生效的配置项\",\n choices: i18nConfigs.map((item) => {\n return {\n name: item.i18nDir!,\n hint: `sheetRange: ${item.sheetRange}`,\n };\n }),\n });\n let i18nConfig = i18nConfigs.find((item) => item.i18nDir === i18nDir);\n if (!i18nConfig) {\n log.info(\"没有找到对应的配置\");\n return;\n }\n\n // 选择 生效的 namespace\n const { namespaces } = await prompt<{ namespaces: string[] }>({\n type: \"multiselect\",\n message: \"选择要生效的配置项\",\n //@ts-ignore\n hint: \"(空格选中,回车确认)\",\n name: \"namespaces\",\n validate(value) {\n return value.length === 0 ? `至少选择一项` : true;\n },\n choices: _.map(i18nConfig.namespace, (v, k) => {\n return {\n name: k,\n };\n }),\n });\n\n const autoNamespace = await (() => {\n if (mode === \"swc\") {\n log.info(\"使用 swc 来处理\");\n return import(\"@dune2/wasm\").then((m) => m.autoNamespace);\n }\n log.info(\"使用 reg 来处理\");\n return autoNamespaceByReg;\n })();\n\n for (const namespace of namespaces) {\n const namespaceConfig = i18nConfig.namespace?.[namespace];\n\n const suffix = `**/**.{js,jsx,ts,tsx}`;\n const combined = _.map(_.castArray(namespaceConfig), (v) => {\n v = v.endsWith(\"/\") ? v : v + \"/\";\n return v + suffix;\n });\n log.info(\"正在处理 namespace: %s\", pc.green(namespace));\n log.info(\"预计处理的文件路径: %s\", pc.green(combined.join(\"\\n\")));\n\n const files = await globby(\n [\n \"!**/node_modules/**\",\n \"!**.d.ts\",\n \"!**/.next/**\",\n \"!**/out/**\",\n //\n ].concat(combined),\n { cwd: i18nConfig.cwd }\n );\n\n log.info(\"预计共处理 %s 个文件\", pc.green(files.length));\n\n let transformedFileSet = new Set<string>();\n\n await pMap(files, async (file) => {\n const content = await fs.readFile(file, \"utf-8\");\n\n const newContent = await autoNamespace(\n content,\n namespace,\n i18nConfig!.namespaceSeparator!\n );\n\n if (newContent) {\n await fs.writeFile(file, newContent);\n await formatFile(file);\n transformedFileSet.add(file);\n }\n });\n log.info(\n \"已为 %s 个文件 自动添加 namespace\",\n pc.green(transformedFileSet.size)\n );\n }\n}\n","/**\n * 目前 支持 . 分割的 namespace\n */\nexport function autoNamespaceByReg(code: string, namespace: string) {\n let hasChanged = false;\n\n /**\n * replace case:\n * t`login` => t`Merchants.login`\n * t`hello ${name}` => t`Merchants.hello ${name}`\n */\n code = code.replace(/\\Wt`(.+?)`/gm, (match, p1) => {\n // 如果 当前 有 $b. 则不替换\n if (/\\S\\.\\S/.test(p1)) {\n return match;\n }\n hasChanged = true;\n return match.replace(p1, `${namespace}.${p1}`);\n });\n\n /**\n * replace case:\n * t('login') => t('Merchants.login')\n * t(\"login\") => t('Merchants.login')\n */\n code = code.replace(/\\Wt\\(['\"](.+?)['\"][),]/gm, (match, p1) => {\n // 如果 当前 有 $b. 则不替换\n if (/\\S\\.\\S/.test(p1)) {\n return match;\n }\n hasChanged = true;\n return match.replace(p1, `${namespace}.${p1}`);\n });\n\n /**\n * 第二个方法已经满足这种情况了,先注释掉\n * replace case:\n * t('login',{ id:'1' }) => t('Merchants.login',{ id:'1' })\n * t(\"login\",{ id:'1' }) => t('Merchants.login',{ id:'1' })\n */\n // code = code.replace(/\\Wt\\(([\"'])(.+?)\\1(,|.*\\))/gm, (match, p1, p2, p3) => {\n // // 如果 当前 有 $b. 则不替换\n // if (/\\S\\.\\S/.test(p2)) {\n // return match;\n // }\n // hasChanged = true;\n // return `t('${namespace}.${p2}'${p3}`;\n // });\n\n if (hasChanged) {\n return code;\n }\n return \"\";\n}\n"],"mappings":"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","names":["namespace","namespace"]}
|
package/dist/upload-OUXQZAW4.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
resolveSheetData
|
|
3
|
-
} from "./chunk-IKJLPHF7.js";
|
|
4
|
-
import {
|
|
5
|
-
googleSheet,
|
|
6
|
-
letterToNumber
|
|
7
|
-
} from "./chunk-6UFZ6KLX.js";
|
|
8
|
-
import "./chunk-KNC7XY4Z.js";
|
|
9
|
-
import {
|
|
10
|
-
I18nData,
|
|
11
|
-
sleep
|
|
12
|
-
} from "./chunk-ADQ6JLT6.js";
|
|
13
|
-
import {
|
|
14
|
-
promptI18nConfigEnable
|
|
15
|
-
} from "./chunk-2SEEW5WZ.js";
|
|
16
|
-
import {
|
|
17
|
-
getConfig
|
|
18
|
-
} from "./chunk-2DSIJDNZ.js";
|
|
19
|
-
import "./chunk-555YTWSW.js";
|
|
20
|
-
import {
|
|
21
|
-
createLogger
|
|
22
|
-
} from "./chunk-UGSBKD2I.js";
|
|
23
|
-
|
|
24
|
-
// src/commands/upload.ts
|
|
25
|
-
import _ from "lodash";
|
|
26
|
-
import pMap from "p-map";
|
|
27
|
-
var log = createLogger("upload");
|
|
28
|
-
async function batchUpdateKeys(config) {
|
|
29
|
-
let sheetData = await resolveSheetData(config);
|
|
30
|
-
const allKeys = [];
|
|
31
|
-
const i18nDataMap = /* @__PURE__ */ new Map();
|
|
32
|
-
await pMap(config.locales ?? [], async (locale) => {
|
|
33
|
-
const i18nData = new I18nData(locale, config);
|
|
34
|
-
i18nDataMap.set(locale, i18nData);
|
|
35
|
-
const data = await i18nData.loadData();
|
|
36
|
-
allKeys.push(...Object.keys(data));
|
|
37
|
-
});
|
|
38
|
-
let needSyncKeys = Array.from(new Set(allKeys)).filter((key) => {
|
|
39
|
-
return !sheetData.keySet.has(key);
|
|
40
|
-
});
|
|
41
|
-
needSyncKeys = _.sortBy(needSyncKeys);
|
|
42
|
-
if (needSyncKeys.length) {
|
|
43
|
-
log.info(`\u5373\u5C06\u540C\u6B65\u672C\u5730\u65B0\u589E\u52A0 ${needSyncKeys.length} \u4E2A i18nKey \u5230\u4E91\u7AEF`);
|
|
44
|
-
await googleSheet.updateColumn(
|
|
45
|
-
config.sheetId,
|
|
46
|
-
config.sheetRange,
|
|
47
|
-
letterToNumber(config.position.key),
|
|
48
|
-
sheetData.nextAppendRowIndex,
|
|
49
|
-
needSyncKeys
|
|
50
|
-
);
|
|
51
|
-
log.info("\u540C\u6B65\u65B0\u589E\u52A0i18nKey\u6210\u529F");
|
|
52
|
-
for (const lang of config.locales) {
|
|
53
|
-
const langFile = i18nDataMap.get(lang);
|
|
54
|
-
const needSyncValues = [];
|
|
55
|
-
needSyncKeys.forEach((k) => {
|
|
56
|
-
if (langFile) {
|
|
57
|
-
needSyncValues.push(langFile.data[k]);
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
log.info(
|
|
61
|
-
`\u5373\u5C06\u540C\u6B65\u672C\u5730 ${lang} \u65B0\u589E\u52A0 ${needSyncValues.length} \u4E2A\u503C\u5230\u4E91\u7AEF`
|
|
62
|
-
);
|
|
63
|
-
await googleSheet.updateColumn(
|
|
64
|
-
config.sheetId,
|
|
65
|
-
config.sheetRange,
|
|
66
|
-
letterToNumber(config.position[lang]),
|
|
67
|
-
sheetData.nextAppendRowIndex,
|
|
68
|
-
needSyncValues
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
await sleep(1e3);
|
|
72
|
-
sheetData = await resolveSheetData(config);
|
|
73
|
-
log.info(`\u5DF2\u91CD\u65B0\u83B7\u53D6 ${config.sheetRange} \u7684\u6570\u636E`);
|
|
74
|
-
}
|
|
75
|
-
return { sheetData, i18nDataMap };
|
|
76
|
-
}
|
|
77
|
-
async function upload() {
|
|
78
|
-
const config = await getConfig();
|
|
79
|
-
let i18nConfigs = await promptI18nConfigEnable(config.i18n);
|
|
80
|
-
for (const configItem of i18nConfigs) {
|
|
81
|
-
const { sheetData, i18nDataMap } = await batchUpdateKeys(configItem);
|
|
82
|
-
await pMap(configItem.locales ?? [], async (locale) => {
|
|
83
|
-
const i18nData = i18nDataMap.get(locale);
|
|
84
|
-
await i18nData.trySaveToGoogle(sheetData);
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
log.info("\u4E0A\u4F20\u6210\u529F");
|
|
88
|
-
}
|
|
89
|
-
export {
|
|
90
|
-
upload
|
|
91
|
-
};
|
|
92
|
-
//# sourceMappingURL=upload-OUXQZAW4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/upload.ts"],"sourcesContent":["import _ from \"lodash\";\nimport pMap from \"p-map\";\nimport { createLogger } from \"../shared\";\nimport { getConfig, I18nConfig } from \"../shared/config\";\nimport { googleSheet } from \"../shared/google/sheet\";\nimport { I18nData } from \"../shared/i18nData\";\nimport { letterToNumber } from \"../shared/letters\";\nimport { promptI18nConfigEnable } from \"../shared/promptConfigEnable\";\nimport { resolveSheetData } from \"../shared/resolveSheetData\";\nimport { sleep } from \"../shared/sleep\";\n\nconst log = createLogger(\"upload\");\n\n/**\n * 检测有本地有新增的key 则将新增的key更新到云端\n * 无则跳过\n */\nasync function batchUpdateKeys(config: I18nConfig) {\n let sheetData = await resolveSheetData(config);\n\n const allKeys: string[] = [];\n const i18nDataMap = new Map<string, I18nData>();\n await pMap(config.locales ?? [], async (locale) => {\n const i18nData = new I18nData(locale, config);\n i18nDataMap.set(locale, i18nData);\n const data = await i18nData.loadData();\n allKeys.push(...Object.keys(data));\n });\n\n let needSyncKeys = Array.from(new Set(allKeys)).filter((key) => {\n // 本地有新的key 服务器没有\n return !sheetData.keySet.has(key);\n });\n needSyncKeys = _.sortBy(needSyncKeys);\n\n if (needSyncKeys.length) {\n log.info(`即将同步本地新增加 ${needSyncKeys.length} 个 i18nKey 到云端`);\n await googleSheet.updateColumn(\n config.sheetId!,\n config.sheetRange!,\n letterToNumber(config.position!.key),\n sheetData.nextAppendRowIndex,\n needSyncKeys\n );\n log.info(\"同步新增加i18nKey成功\");\n\n // 批量同步新增的key的values到云端\n for (const lang of config.locales!) {\n const langFile = i18nDataMap.get(lang);\n const needSyncValues: string[] = [];\n needSyncKeys.forEach((k) => {\n if (langFile) {\n needSyncValues.push(langFile.data[k]);\n }\n });\n log.info(\n `即将同步本地 ${lang} 新增加 ${needSyncValues.length} 个值到云端`\n );\n await googleSheet.updateColumn(\n config.sheetId!,\n config.sheetRange!,\n letterToNumber(config.position![lang]),\n sheetData.nextAppendRowIndex,\n needSyncValues\n );\n }\n\n await sleep(1000);\n sheetData = await resolveSheetData(config);\n log.info(`已重新获取 ${config.sheetRange} 的数据`);\n }\n\n return { sheetData, i18nDataMap };\n}\n\nexport async function upload() {\n const config = await getConfig();\n let i18nConfigs = await promptI18nConfigEnable(config.i18n);\n\n for (const configItem of i18nConfigs) {\n const { sheetData, i18nDataMap } = await batchUpdateKeys(configItem);\n await pMap(configItem.locales ?? [], async (locale) => {\n const i18nData = i18nDataMap.get(locale)!;\n await i18nData.trySaveToGoogle(sheetData);\n });\n }\n\n log.info(\"上传成功\");\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,OAAO;AACd,OAAO,UAAU;AAUjB,IAAM,MAAM,aAAa,QAAQ;AAMjC,eAAe,gBAAgB,QAAoB;AACjD,MAAI,YAAY,MAAM,iBAAiB,MAAM;AAE7C,QAAM,UAAoB,CAAC;AAC3B,QAAM,cAAc,oBAAI,IAAsB;AAC9C,QAAM,KAAK,OAAO,WAAW,CAAC,GAAG,OAAO,WAAW;AACjD,UAAM,WAAW,IAAI,SAAS,QAAQ,MAAM;AAC5C,gBAAY,IAAI,QAAQ,QAAQ;AAChC,UAAM,OAAO,MAAM,SAAS,SAAS;AACrC,YAAQ,KAAK,GAAG,OAAO,KAAK,IAAI,CAAC;AAAA,EACnC,CAAC;AAED,MAAI,eAAe,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ;AAE9D,WAAO,CAAC,UAAU,OAAO,IAAI,GAAG;AAAA,EAClC,CAAC;AACD,iBAAe,EAAE,OAAO,YAAY;AAEpC,MAAI,aAAa,QAAQ;AACvB,QAAI,KAAK,0DAAa,aAAa,MAAM,oCAAgB;AACzD,UAAM,YAAY;AAAA,MAChB,OAAO;AAAA,MACP,OAAO;AAAA,MACP,eAAe,OAAO,SAAU,GAAG;AAAA,MACnC,UAAU;AAAA,MACV;AAAA,IACF;AACA,QAAI,KAAK,mDAAgB;AAGzB,eAAW,QAAQ,OAAO,SAAU;AAClC,YAAM,WAAW,YAAY,IAAI,IAAI;AACrC,YAAM,iBAA2B,CAAC;AAClC,mBAAa,QAAQ,CAAC,MAAM;AAC1B,YAAI,UAAU;AACZ,yBAAe,KAAK,SAAS,KAAK,CAAC,CAAC;AAAA,QACtC;AAAA,MACF,CAAC;AACD,UAAI;AAAA,QACF,wCAAU,IAAI,uBAAQ,eAAe,MAAM;AAAA,MAC7C;AACA,YAAM,YAAY;AAAA,QAChB,OAAO;AAAA,QACP,OAAO;AAAA,QACP,eAAe,OAAO,SAAU,IAAI,CAAC;AAAA,QACrC,UAAU;AAAA,QACV;AAAA,MACF;AAAA,IACF;AAEA,UAAM,MAAM,GAAI;AAChB,gBAAY,MAAM,iBAAiB,MAAM;AACzC,QAAI,KAAK,kCAAS,OAAO,UAAU,qBAAM;AAAA,EAC3C;AAEA,SAAO,EAAE,WAAW,YAAY;AAClC;AAEA,eAAsB,SAAS;AAC7B,QAAM,SAAS,MAAM,UAAU;AAC/B,MAAI,cAAc,MAAM,uBAAuB,OAAO,IAAI;AAE1D,aAAW,cAAc,aAAa;AACpC,UAAM,EAAE,WAAW,YAAY,IAAI,MAAM,gBAAgB,UAAU;AACnE,UAAM,KAAK,WAAW,WAAW,CAAC,GAAG,OAAO,WAAW;AACrD,YAAM,WAAW,YAAY,IAAI,MAAM;AACvC,YAAM,SAAS,gBAAgB,SAAS;AAAA,IAC1C,CAAC;AAAA,EACH;AAEA,MAAI,KAAK,0BAAM;AACjB;","names":[]}
|
|
File without changes
|
|
File without changes
|