@dune2/cli 0.3.3 → 0.3.4
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-5FXMC2FS.js → chunk-5DY6NAWS.js} +2 -2
- package/dist/{chunk-T2XO6ALS.js → chunk-XQ6ITMHY.js} +10 -6
- package/dist/chunk-XQ6ITMHY.js.map +1 -0
- package/dist/cli.js +3 -3
- package/dist/index.js +2 -2
- package/dist/normalizeConfig.d.ts +5 -1
- package/dist/normalizeConfig.js +3 -1
- package/dist/prettier.cjs +51 -0
- package/dist/prettier.cjs.map +1 -0
- package/dist/prettier.d.ts +12 -0
- package/dist/prettier.js +51 -0
- package/dist/prettier.js.map +1 -0
- package/package.json +7 -3
- package/dist/chunk-T2XO6ALS.js.map +0 -1
- /package/dist/{chunk-5FXMC2FS.js.map → chunk-5DY6NAWS.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
normalizeConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XQ6ITMHY.js";
|
|
4
4
|
|
|
5
5
|
// src/shared/index.ts
|
|
6
6
|
import cac from "cac";
|
|
@@ -248,4 +248,4 @@ export {
|
|
|
248
248
|
configName,
|
|
249
249
|
getConfig
|
|
250
250
|
};
|
|
251
|
-
//# sourceMappingURL=chunk-
|
|
251
|
+
//# sourceMappingURL=chunk-5DY6NAWS.js.map
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
// src/shared/config/normalizeConfig.ts
|
|
2
|
+
import path from "path";
|
|
3
|
+
|
|
1
4
|
// src/shared/resolveSheetId.ts
|
|
2
5
|
import { match } from "path-to-regexp";
|
|
3
6
|
function resolveSheetId(str) {
|
|
@@ -13,7 +16,6 @@ function resolveSheetId(str) {
|
|
|
13
16
|
}
|
|
14
17
|
|
|
15
18
|
// src/shared/config/normalizeConfig.ts
|
|
16
|
-
import path from "path";
|
|
17
19
|
function normalizeConfig(config) {
|
|
18
20
|
var _a;
|
|
19
21
|
const defaultI18nConfig = {
|
|
@@ -32,9 +34,7 @@ function normalizeConfig(config) {
|
|
|
32
34
|
item.cwd ??= config.cwd;
|
|
33
35
|
item.locales = Object.keys(item.position).filter((item2) => item2 !== "key");
|
|
34
36
|
item.sheetId = resolveSheetId(item.sheetId);
|
|
35
|
-
item.keySorter =
|
|
36
|
-
return a.localeCompare(b);
|
|
37
|
-
};
|
|
37
|
+
item.keySorter = defaultKeySorter;
|
|
38
38
|
item.enabled ??= true;
|
|
39
39
|
item.namespaceSeparator ??= ".";
|
|
40
40
|
return item;
|
|
@@ -58,10 +58,14 @@ function apiConfigNormalizer(item) {
|
|
|
58
58
|
};
|
|
59
59
|
return item;
|
|
60
60
|
}
|
|
61
|
+
var defaultKeySorter = (a, b) => {
|
|
62
|
+
return a.localeCompare(b, "en");
|
|
63
|
+
};
|
|
61
64
|
|
|
62
65
|
export {
|
|
63
66
|
resolveSheetId,
|
|
64
67
|
normalizeConfig,
|
|
65
|
-
apiConfigNormalizer
|
|
68
|
+
apiConfigNormalizer,
|
|
69
|
+
defaultKeySorter
|
|
66
70
|
};
|
|
67
|
-
//# sourceMappingURL=chunk-
|
|
71
|
+
//# sourceMappingURL=chunk-XQ6ITMHY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/shared/config/normalizeConfig.ts","../src/shared/resolveSheetId.ts"],"sourcesContent":["import path from \"path\";\nimport { resolveSheetId } from \"../resolveSheetId\";\nimport { ApiConfig, Config, I18nConfig } from \"./types\";\nexport function normalizeConfig(config: Config): Config {\n const defaultI18nConfig: I18nConfig = {\n i18nDir: \"./src/i18n\",\n i18nFileName: \"{locale}.i18n.json\",\n position: { key: \"B\", zh: \"C\", en: \"D\", in: \"E\" },\n parseStartIndex: 2,\n };\n config.cwd ??= process.cwd();\n config.cacheDir ??= path.join(config.cwd, \"node_modules/.cache/dune-cli\");\n\n //#region i18n 配置标准化\n if (!config.i18n || !config.i18n?.length) {\n config.i18n = [defaultI18nConfig];\n }\n\n // 格式化 i18n 配置\n config.i18n = config.i18n.map((item) => {\n item = Object.assign({}, defaultI18nConfig, item);\n item.cwd ??= config.cwd;\n item.locales = Object.keys(item.position!).filter((item) => item !== \"key\");\n item.sheetId = resolveSheetId(item.sheetId);\n item.keySorter = defaultKeySorter;\n item.enabled ??= true;\n\n //#region namespace\n item.namespaceSeparator ??= \".\";\n //#endregion\n return item;\n });\n //#endregion\n\n //#region api 配置标准化\n config.api ??= [];\n config.api = config.api.map(apiConfigNormalizer);\n //#endregion\n return config;\n}\nexport function apiConfigNormalizer(item: ApiConfig) {\n item.output ??= \"./src/apis\";\n // 没有配置 urlTransformer 时,给 requestFnImportPath 赋默认值\n // 优先使用 urlTransformer\n if (!item.urlTransformer) {\n item.requestFnImportPath ??= `import requestFn from '@/utils/request';`;\n }\n item.RequestBuilderImportPath ??= `import { RequestBuilder } from '@dune2/tools';`;\n item.enableTs ??= true;\n item.enabled ??= true;\n item.format ??= true;\n item.responseSchemaTransformer ??= (schema) =>\n schema.properties?.data ?? schema;\n return item;\n}\n\n/**\n * 默认的 key 排序函数\n */\nexport const defaultKeySorter = (a: string, b: string) => {\n return a.localeCompare(b, \"en\");\n};\n","/**\n * input:\n * \"https://docs.google.com/spreadsheets/d/1C9-Dol3oO20W9_FhiVlxNsDhOaaejJIgAZYRkonGmfk/edit#gid=1740568548\"\n * output:\n * \"1C9-Dol3oO20W9_FhiVlxNsDhOaaejJIgAZYRkonGmfk\"\n * --\n * input: \"1C9-Dol3oO20W9_FhiVlxNsDhOaaejJIgAZYRkonGmfk\"\n * output: \"1C9-Dol3oO20W9_FhiVlxNsDhOaaejJIgAZYRkonGmfk\"\n */\nimport { match } from \"path-to-regexp\";\n\nexport function resolveSheetId(str?: string) {\n if (!str || !str?.startsWith(\"http\")) {\n return str;\n }\n const url = new URL(str);\n const matched = match<{ id: string[] }>(\"/spreadsheets/d/:id*\", {\n decode: decodeURIComponent,\n })(url.pathname);\n return matched ? matched.params.id?.[0] : str;\n}\n"],"mappings":";AAAA,OAAO,UAAU;;;ACSjB,SAAS,aAAa;AAEf,SAAS,eAAe,KAAc;AAX7C;AAYE,MAAI,CAAC,OAAO,EAAC,2BAAK,WAAW,UAAS;AACpC,WAAO;AAAA,EACT;AACA,QAAM,MAAM,IAAI,IAAI,GAAG;AACvB,QAAM,UAAU,MAAwB,wBAAwB;AAAA,IAC9D,QAAQ;AAAA,EACV,CAAC,EAAE,IAAI,QAAQ;AACf,SAAO,WAAU,aAAQ,OAAO,OAAf,mBAAoB,KAAK;AAC5C;;;ADjBO,SAAS,gBAAgB,QAAwB;AAHxD;AAIE,QAAM,oBAAgC;AAAA,IACpC,SAAS;AAAA,IACT,cAAc;AAAA,IACd,UAAU,EAAE,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI;AAAA,IAChD,iBAAiB;AAAA,EACnB;AACA,SAAO,QAAQ,QAAQ,IAAI;AAC3B,SAAO,aAAa,KAAK,KAAK,OAAO,KAAK,8BAA8B;AAGxE,MAAI,CAAC,OAAO,QAAQ,GAAC,YAAO,SAAP,mBAAa,SAAQ;AACxC,WAAO,OAAO,CAAC,iBAAiB;AAAA,EAClC;AAGA,SAAO,OAAO,OAAO,KAAK,IAAI,CAAC,SAAS;AACtC,WAAO,OAAO,OAAO,CAAC,GAAG,mBAAmB,IAAI;AAChD,SAAK,QAAQ,OAAO;AACpB,SAAK,UAAU,OAAO,KAAK,KAAK,QAAS,EAAE,OAAO,CAACA,UAASA,UAAS,KAAK;AAC1E,SAAK,UAAU,eAAe,KAAK,OAAO;AAC1C,SAAK,YAAY;AACjB,SAAK,YAAY;AAGjB,SAAK,uBAAuB;AAE5B,WAAO;AAAA,EACT,CAAC;AAID,SAAO,QAAQ,CAAC;AAChB,SAAO,MAAM,OAAO,IAAI,IAAI,mBAAmB;AAE/C,SAAO;AACT;AACO,SAAS,oBAAoB,MAAiB;AACnD,OAAK,WAAW;AAGhB,MAAI,CAAC,KAAK,gBAAgB;AACxB,SAAK,wBAAwB;AAAA,EAC/B;AACA,OAAK,6BAA6B;AAClC,OAAK,aAAa;AAClB,OAAK,YAAY;AACjB,OAAK,WAAW;AAChB,OAAK,8BAA8B,CAAC,WAAQ;AAnD9C;AAoDI,yBAAO,eAAP,mBAAmB,SAAQ;AAAA;AAC7B,SAAO;AACT;AAKO,IAAM,mBAAmB,CAAC,GAAW,MAAc;AACxD,SAAO,EAAE,cAAc,GAAG,IAAI;AAChC;","names":["item"]}
|
package/dist/cli.js
CHANGED
|
@@ -6,8 +6,8 @@ import {
|
|
|
6
6
|
getConfig,
|
|
7
7
|
googleSheet,
|
|
8
8
|
letterToNumber
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-5DY6NAWS.js";
|
|
10
|
+
import "./chunk-XQ6ITMHY.js";
|
|
11
11
|
|
|
12
12
|
// src/commands/extract.ts
|
|
13
13
|
import fs2 from "fs-extra";
|
|
@@ -811,7 +811,7 @@ async function upload() {
|
|
|
811
811
|
}
|
|
812
812
|
|
|
813
813
|
// package.json
|
|
814
|
-
var version = "0.3.
|
|
814
|
+
var version = "0.3.3";
|
|
815
815
|
|
|
816
816
|
// src/commands/interactive.ts
|
|
817
817
|
import enquirer2 from "enquirer";
|
package/dist/index.js
CHANGED
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
googleSheet,
|
|
6
6
|
letterToNumber,
|
|
7
7
|
numberToLetter
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-5DY6NAWS.js";
|
|
9
9
|
import {
|
|
10
10
|
resolveSheetId
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-XQ6ITMHY.js";
|
|
12
12
|
export {
|
|
13
13
|
configName,
|
|
14
14
|
defineConfig,
|
|
@@ -3,5 +3,9 @@ import 'openapi-types';
|
|
|
3
3
|
|
|
4
4
|
declare function normalizeConfig(config: Config): Config;
|
|
5
5
|
declare function apiConfigNormalizer(item: ApiConfig): ApiConfig;
|
|
6
|
+
/**
|
|
7
|
+
* 默认的 key 排序函数
|
|
8
|
+
*/
|
|
9
|
+
declare const defaultKeySorter: (a: string, b: string) => number;
|
|
6
10
|
|
|
7
|
-
export { apiConfigNormalizer, normalizeConfig };
|
|
11
|
+
export { apiConfigNormalizer, defaultKeySorter, normalizeConfig };
|
package/dist/normalizeConfig.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
apiConfigNormalizer,
|
|
3
|
+
defaultKeySorter,
|
|
3
4
|
normalizeConfig
|
|
4
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-XQ6ITMHY.js";
|
|
5
6
|
export {
|
|
6
7
|
apiConfigNormalizer,
|
|
8
|
+
defaultKeySorter,
|
|
7
9
|
normalizeConfig
|
|
8
10
|
};
|
|
9
11
|
//# sourceMappingURL=normalizeConfig.js.map
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/prettier.ts
|
|
2
|
+
var _parserbabel = require('prettier/parser-babel');
|
|
3
|
+
|
|
4
|
+
// src/shared/resolveSheetId.ts
|
|
5
|
+
var _pathtoregexp = require('path-to-regexp');
|
|
6
|
+
|
|
7
|
+
// src/shared/config/normalizeConfig.ts
|
|
8
|
+
var defaultKeySorter = (a, b) => {
|
|
9
|
+
return a.localeCompare(b, "en");
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
// src/prettier.ts
|
|
13
|
+
var i18nJsonExt = ".i18n.json";
|
|
14
|
+
var jsonParser = _parserbabel.parsers.json;
|
|
15
|
+
var languages = [
|
|
16
|
+
{
|
|
17
|
+
name: "dune-i18n-json",
|
|
18
|
+
parsers: ["json"],
|
|
19
|
+
extensions: [i18nJsonExt]
|
|
20
|
+
}
|
|
21
|
+
];
|
|
22
|
+
var parsers = {
|
|
23
|
+
json: {
|
|
24
|
+
...jsonParser,
|
|
25
|
+
preprocess(text, options) {
|
|
26
|
+
if (jsonParser.preprocess) {
|
|
27
|
+
text = jsonParser.preprocess(text, options);
|
|
28
|
+
}
|
|
29
|
+
const isI18nJson = options.filepath.endsWith(i18nJsonExt);
|
|
30
|
+
if (isI18nJson) {
|
|
31
|
+
try {
|
|
32
|
+
let obj = JSON.parse(text);
|
|
33
|
+
let keys = Object.keys(obj).sort(defaultKeySorter);
|
|
34
|
+
let newObj = {};
|
|
35
|
+
keys.forEach((key) => {
|
|
36
|
+
newObj[key] = obj[key];
|
|
37
|
+
});
|
|
38
|
+
text = JSON.stringify(newObj, null, 2);
|
|
39
|
+
} catch (error) {
|
|
40
|
+
console.log(`JSON \u683C\u5F0F\u9519\u8BEF\uFF1A${error}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return text;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
exports.languages = languages; exports.parsers = parsers;
|
|
51
|
+
//# sourceMappingURL=prettier.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/prettier.ts","../src/shared/resolveSheetId.ts","../src/shared/config/normalizeConfig.ts"],"names":[],"mappings":";AACA,SAAS,WAAW,uBAAuB;;;ACQ3C,SAAS,aAAa;;;ACkDf,IAAM,mBAAmB,CAAC,GAAW,MAAc;AACxD,SAAO,EAAE,cAAc,GAAG,IAAI;AAChC;;;AFzDA,IAAM,cAAc;AAEpB,IAAM,aAAa,gBAAgB;AAG5B,IAAM,YAAiC;AAAA,EAC5C;AAAA,IACE,MAAM;AAAA,IACN,SAAS,CAAC,MAAM;AAAA,IAChB,YAAY,CAAC,WAAW;AAAA,EAC1B;AACF;AAQO,IAAM,UAA6B;AAAA,EACxC,MAAM;AAAA,IACJ,GAAG;AAAA,IACH,WAAW,MAAM,SAAS;AACxB,UAAI,WAAW,YAAY;AACzB,eAAO,WAAW,WAAW,MAAM,OAAO;AAAA,MAC5C;AAEA,YAAM,aAAa,QAAQ,SAAS,SAAS,WAAW;AACxD,UAAI,YAAY;AACd,YAAI;AACF,cAAI,MAAM,KAAK,MAAM,IAAI;AACzB,cAAI,OAAO,OAAO,KAAK,GAAG,EAAE,KAAK,gBAAgB;AACjD,cAAI,SAAS,CAAC;AACd,eAAK,QAAQ,CAAC,QAAQ;AACpB,mBAAO,OAAO,IAAI;AAAA,UACpB,CAAC;AACD,iBAAO,KAAK,UAAU,QAAQ,MAAM,CAAC;AAAA,QACvC,SAAS,OAAP;AACA,kBAAQ,IAAI,sCAAa,OAAO;AAAA,QAClC;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACF","sourcesContent":["import { Plugin } from \"prettier\";\nimport { parsers as prettierParsers } from \"prettier/parser-babel\";\nimport { defaultKeySorter } from \"./shared/config/normalizeConfig\";\n\nconst i18nJsonExt = \".i18n.json\";\n\nconst jsonParser = prettierParsers.json;\n\n// 配置 i18n.json\nexport const languages: Plugin[\"languages\"] = [\n {\n name: \"dune-i18n-json\",\n parsers: [\"json\"],\n extensions: [i18nJsonExt],\n },\n];\n\n/**\n * 格式化 *.i18n.json 文件\n * 按照 key 排序\n * 对齐 cli 生成的 i18n.json 文件顺序\n * 方便查看和比较\n */\nexport const parsers: Plugin[\"parsers\"] = {\n json: {\n ...jsonParser,\n preprocess(text, options) {\n if (jsonParser.preprocess) {\n text = jsonParser.preprocess(text, options);\n }\n\n const isI18nJson = options.filepath.endsWith(i18nJsonExt);\n if (isI18nJson) {\n try {\n let obj = JSON.parse(text);\n let keys = Object.keys(obj).sort(defaultKeySorter);\n let newObj = {};\n keys.forEach((key) => {\n newObj[key] = obj[key];\n });\n text = JSON.stringify(newObj, null, 2);\n } catch (error) {\n console.log(`JSON 格式错误:${error}`);\n }\n }\n return text;\n },\n },\n};\n","/**\n * input:\n * \"https://docs.google.com/spreadsheets/d/1C9-Dol3oO20W9_FhiVlxNsDhOaaejJIgAZYRkonGmfk/edit#gid=1740568548\"\n * output:\n * \"1C9-Dol3oO20W9_FhiVlxNsDhOaaejJIgAZYRkonGmfk\"\n * --\n * input: \"1C9-Dol3oO20W9_FhiVlxNsDhOaaejJIgAZYRkonGmfk\"\n * output: \"1C9-Dol3oO20W9_FhiVlxNsDhOaaejJIgAZYRkonGmfk\"\n */\nimport { match } from \"path-to-regexp\";\n\nexport function resolveSheetId(str?: string) {\n if (!str || !str?.startsWith(\"http\")) {\n return str;\n }\n const url = new URL(str);\n const matched = match<{ id: string[] }>(\"/spreadsheets/d/:id*\", {\n decode: decodeURIComponent,\n })(url.pathname);\n return matched ? matched.params.id?.[0] : str;\n}\n","import path from \"path\";\nimport { resolveSheetId } from \"../resolveSheetId\";\nimport { ApiConfig, Config, I18nConfig } from \"./types\";\nexport function normalizeConfig(config: Config): Config {\n const defaultI18nConfig: I18nConfig = {\n i18nDir: \"./src/i18n\",\n i18nFileName: \"{locale}.i18n.json\",\n position: { key: \"B\", zh: \"C\", en: \"D\", in: \"E\" },\n parseStartIndex: 2,\n };\n config.cwd ??= process.cwd();\n config.cacheDir ??= path.join(config.cwd, \"node_modules/.cache/dune-cli\");\n\n //#region i18n 配置标准化\n if (!config.i18n || !config.i18n?.length) {\n config.i18n = [defaultI18nConfig];\n }\n\n // 格式化 i18n 配置\n config.i18n = config.i18n.map((item) => {\n item = Object.assign({}, defaultI18nConfig, item);\n item.cwd ??= config.cwd;\n item.locales = Object.keys(item.position!).filter((item) => item !== \"key\");\n item.sheetId = resolveSheetId(item.sheetId);\n item.keySorter = defaultKeySorter;\n item.enabled ??= true;\n\n //#region namespace\n item.namespaceSeparator ??= \".\";\n //#endregion\n return item;\n });\n //#endregion\n\n //#region api 配置标准化\n config.api ??= [];\n config.api = config.api.map(apiConfigNormalizer);\n //#endregion\n return config;\n}\nexport function apiConfigNormalizer(item: ApiConfig) {\n item.output ??= \"./src/apis\";\n // 没有配置 urlTransformer 时,给 requestFnImportPath 赋默认值\n // 优先使用 urlTransformer\n if (!item.urlTransformer) {\n item.requestFnImportPath ??= `import requestFn from '@/utils/request';`;\n }\n item.RequestBuilderImportPath ??= `import { RequestBuilder } from '@dune2/tools';`;\n item.enableTs ??= true;\n item.enabled ??= true;\n item.format ??= true;\n item.responseSchemaTransformer ??= (schema) =>\n schema.properties?.data ?? schema;\n return item;\n}\n\n/**\n * 默认的 key 排序函数\n */\nexport const defaultKeySorter = (a: string, b: string) => {\n return a.localeCompare(b, \"en\");\n};\n"]}
|
package/dist/prettier.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// src/prettier.ts
|
|
2
|
+
import { parsers as prettierParsers } from "prettier/parser-babel";
|
|
3
|
+
|
|
4
|
+
// src/shared/resolveSheetId.ts
|
|
5
|
+
import { match } from "path-to-regexp";
|
|
6
|
+
|
|
7
|
+
// src/shared/config/normalizeConfig.ts
|
|
8
|
+
var defaultKeySorter = (a, b) => {
|
|
9
|
+
return a.localeCompare(b, "en");
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
// src/prettier.ts
|
|
13
|
+
var i18nJsonExt = ".i18n.json";
|
|
14
|
+
var jsonParser = prettierParsers.json;
|
|
15
|
+
var languages = [
|
|
16
|
+
{
|
|
17
|
+
name: "dune-i18n-json",
|
|
18
|
+
parsers: ["json"],
|
|
19
|
+
extensions: [i18nJsonExt]
|
|
20
|
+
}
|
|
21
|
+
];
|
|
22
|
+
var parsers = {
|
|
23
|
+
json: {
|
|
24
|
+
...jsonParser,
|
|
25
|
+
preprocess(text, options) {
|
|
26
|
+
if (jsonParser.preprocess) {
|
|
27
|
+
text = jsonParser.preprocess(text, options);
|
|
28
|
+
}
|
|
29
|
+
const isI18nJson = options.filepath.endsWith(i18nJsonExt);
|
|
30
|
+
if (isI18nJson) {
|
|
31
|
+
try {
|
|
32
|
+
let obj = JSON.parse(text);
|
|
33
|
+
let keys = Object.keys(obj).sort(defaultKeySorter);
|
|
34
|
+
let newObj = {};
|
|
35
|
+
keys.forEach((key) => {
|
|
36
|
+
newObj[key] = obj[key];
|
|
37
|
+
});
|
|
38
|
+
text = JSON.stringify(newObj, null, 2);
|
|
39
|
+
} catch (error) {
|
|
40
|
+
console.log(`JSON \u683C\u5F0F\u9519\u8BEF\uFF1A${error}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return text;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
export {
|
|
48
|
+
languages,
|
|
49
|
+
parsers
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=prettier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/prettier.ts","../src/shared/resolveSheetId.ts","../src/shared/config/normalizeConfig.ts"],"sourcesContent":["import { Plugin } from \"prettier\";\nimport { parsers as prettierParsers } from \"prettier/parser-babel\";\nimport { defaultKeySorter } from \"./shared/config/normalizeConfig\";\n\nconst i18nJsonExt = \".i18n.json\";\n\nconst jsonParser = prettierParsers.json;\n\n// 配置 i18n.json\nexport const languages: Plugin[\"languages\"] = [\n {\n name: \"dune-i18n-json\",\n parsers: [\"json\"],\n extensions: [i18nJsonExt],\n },\n];\n\n/**\n * 格式化 *.i18n.json 文件\n * 按照 key 排序\n * 对齐 cli 生成的 i18n.json 文件顺序\n * 方便查看和比较\n */\nexport const parsers: Plugin[\"parsers\"] = {\n json: {\n ...jsonParser,\n preprocess(text, options) {\n if (jsonParser.preprocess) {\n text = jsonParser.preprocess(text, options);\n }\n\n const isI18nJson = options.filepath.endsWith(i18nJsonExt);\n if (isI18nJson) {\n try {\n let obj = JSON.parse(text);\n let keys = Object.keys(obj).sort(defaultKeySorter);\n let newObj = {};\n keys.forEach((key) => {\n newObj[key] = obj[key];\n });\n text = JSON.stringify(newObj, null, 2);\n } catch (error) {\n console.log(`JSON 格式错误:${error}`);\n }\n }\n return text;\n },\n },\n};\n","/**\n * input:\n * \"https://docs.google.com/spreadsheets/d/1C9-Dol3oO20W9_FhiVlxNsDhOaaejJIgAZYRkonGmfk/edit#gid=1740568548\"\n * output:\n * \"1C9-Dol3oO20W9_FhiVlxNsDhOaaejJIgAZYRkonGmfk\"\n * --\n * input: \"1C9-Dol3oO20W9_FhiVlxNsDhOaaejJIgAZYRkonGmfk\"\n * output: \"1C9-Dol3oO20W9_FhiVlxNsDhOaaejJIgAZYRkonGmfk\"\n */\nimport { match } from \"path-to-regexp\";\n\nexport function resolveSheetId(str?: string) {\n if (!str || !str?.startsWith(\"http\")) {\n return str;\n }\n const url = new URL(str);\n const matched = match<{ id: string[] }>(\"/spreadsheets/d/:id*\", {\n decode: decodeURIComponent,\n })(url.pathname);\n return matched ? matched.params.id?.[0] : str;\n}\n","import path from \"path\";\nimport { resolveSheetId } from \"../resolveSheetId\";\nimport { ApiConfig, Config, I18nConfig } from \"./types\";\nexport function normalizeConfig(config: Config): Config {\n const defaultI18nConfig: I18nConfig = {\n i18nDir: \"./src/i18n\",\n i18nFileName: \"{locale}.i18n.json\",\n position: { key: \"B\", zh: \"C\", en: \"D\", in: \"E\" },\n parseStartIndex: 2,\n };\n config.cwd ??= process.cwd();\n config.cacheDir ??= path.join(config.cwd, \"node_modules/.cache/dune-cli\");\n\n //#region i18n 配置标准化\n if (!config.i18n || !config.i18n?.length) {\n config.i18n = [defaultI18nConfig];\n }\n\n // 格式化 i18n 配置\n config.i18n = config.i18n.map((item) => {\n item = Object.assign({}, defaultI18nConfig, item);\n item.cwd ??= config.cwd;\n item.locales = Object.keys(item.position!).filter((item) => item !== \"key\");\n item.sheetId = resolveSheetId(item.sheetId);\n item.keySorter = defaultKeySorter;\n item.enabled ??= true;\n\n //#region namespace\n item.namespaceSeparator ??= \".\";\n //#endregion\n return item;\n });\n //#endregion\n\n //#region api 配置标准化\n config.api ??= [];\n config.api = config.api.map(apiConfigNormalizer);\n //#endregion\n return config;\n}\nexport function apiConfigNormalizer(item: ApiConfig) {\n item.output ??= \"./src/apis\";\n // 没有配置 urlTransformer 时,给 requestFnImportPath 赋默认值\n // 优先使用 urlTransformer\n if (!item.urlTransformer) {\n item.requestFnImportPath ??= `import requestFn from '@/utils/request';`;\n }\n item.RequestBuilderImportPath ??= `import { RequestBuilder } from '@dune2/tools';`;\n item.enableTs ??= true;\n item.enabled ??= true;\n item.format ??= true;\n item.responseSchemaTransformer ??= (schema) =>\n schema.properties?.data ?? schema;\n return item;\n}\n\n/**\n * 默认的 key 排序函数\n */\nexport const defaultKeySorter = (a: string, b: string) => {\n return a.localeCompare(b, \"en\");\n};\n"],"mappings":";AACA,SAAS,WAAW,uBAAuB;;;ACQ3C,SAAS,aAAa;;;ACkDf,IAAM,mBAAmB,CAAC,GAAW,MAAc;AACxD,SAAO,EAAE,cAAc,GAAG,IAAI;AAChC;;;AFzDA,IAAM,cAAc;AAEpB,IAAM,aAAa,gBAAgB;AAG5B,IAAM,YAAiC;AAAA,EAC5C;AAAA,IACE,MAAM;AAAA,IACN,SAAS,CAAC,MAAM;AAAA,IAChB,YAAY,CAAC,WAAW;AAAA,EAC1B;AACF;AAQO,IAAM,UAA6B;AAAA,EACxC,MAAM;AAAA,IACJ,GAAG;AAAA,IACH,WAAW,MAAM,SAAS;AACxB,UAAI,WAAW,YAAY;AACzB,eAAO,WAAW,WAAW,MAAM,OAAO;AAAA,MAC5C;AAEA,YAAM,aAAa,QAAQ,SAAS,SAAS,WAAW;AACxD,UAAI,YAAY;AACd,YAAI;AACF,cAAI,MAAM,KAAK,MAAM,IAAI;AACzB,cAAI,OAAO,OAAO,KAAK,GAAG,EAAE,KAAK,gBAAgB;AACjD,cAAI,SAAS,CAAC;AACd,eAAK,QAAQ,CAAC,QAAQ;AACpB,mBAAO,OAAO,IAAI;AAAA,UACpB,CAAC;AACD,iBAAO,KAAK,UAAU,QAAQ,MAAM,CAAC;AAAA,QACvC,SAAS,OAAP;AACA,kBAAQ,IAAI,sCAAa,OAAO;AAAA,QAClC;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACF;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dune2/cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
"./normalizeConfig": {
|
|
13
13
|
"import": "./dist/normalizeConfig.js"
|
|
14
14
|
},
|
|
15
|
+
"./prettier": {
|
|
16
|
+
"import": "./dist/prettier.js",
|
|
17
|
+
"require": "./dist/prettier.cjs"
|
|
18
|
+
},
|
|
15
19
|
"./package.json": "./package.json"
|
|
16
20
|
},
|
|
17
21
|
"types": "dist/index.d.ts",
|
|
@@ -23,7 +27,7 @@
|
|
|
23
27
|
],
|
|
24
28
|
"dependencies": {
|
|
25
29
|
"@apidevtools/swagger-parser": "^10.1.0",
|
|
26
|
-
"@dune2/wasm": "0.3.
|
|
30
|
+
"@dune2/wasm": "0.3.3",
|
|
27
31
|
"cac": "^6.7.14",
|
|
28
32
|
"cli-table3": "^0.6.3",
|
|
29
33
|
"connect": "^3.7.0",
|
|
@@ -52,7 +56,7 @@
|
|
|
52
56
|
"access": "public"
|
|
53
57
|
},
|
|
54
58
|
"scripts": {
|
|
55
|
-
"build": "tsup --
|
|
59
|
+
"build": "shx rm -rf ./dist && tsup --splitting",
|
|
56
60
|
"dev": "pnpm run build --watch",
|
|
57
61
|
"lint": "tsc --diagnostics --noEmit",
|
|
58
62
|
"test": "vitest run",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/shared/resolveSheetId.ts","../src/shared/config/normalizeConfig.ts"],"sourcesContent":["/**\n * input:\n * \"https://docs.google.com/spreadsheets/d/1C9-Dol3oO20W9_FhiVlxNsDhOaaejJIgAZYRkonGmfk/edit#gid=1740568548\"\n * output:\n * \"1C9-Dol3oO20W9_FhiVlxNsDhOaaejJIgAZYRkonGmfk\"\n * --\n * input: \"1C9-Dol3oO20W9_FhiVlxNsDhOaaejJIgAZYRkonGmfk\"\n * output: \"1C9-Dol3oO20W9_FhiVlxNsDhOaaejJIgAZYRkonGmfk\"\n */\nimport { match } from \"path-to-regexp\";\n\nexport function resolveSheetId(str?: string) {\n if (!str || !str?.startsWith(\"http\")) {\n return str;\n }\n const url = new URL(str);\n const matched = match<{ id: string[] }>(\"/spreadsheets/d/:id*\", {\n decode: decodeURIComponent,\n })(url.pathname);\n return matched ? matched.params.id?.[0] : str;\n}\n","import { ApiConfig, Config, I18nConfig } from \"./types\";\nimport { resolveSheetId } from \"../resolveSheetId\";\nimport path from \"path\";\nexport function normalizeConfig(config: Config): Config {\n const defaultI18nConfig: I18nConfig = {\n i18nDir: \"./src/i18n\",\n i18nFileName: \"{locale}.i18n.json\",\n position: { key: \"B\", zh: \"C\", en: \"D\", in: \"E\" },\n parseStartIndex: 2,\n };\n config.cwd ??= process.cwd();\n config.cacheDir ??= path.join(config.cwd, \"node_modules/.cache/dune-cli\");\n\n //#region i18n 配置标准化\n if (!config.i18n || !config.i18n?.length) {\n config.i18n = [defaultI18nConfig];\n }\n\n // 格式化 i18n 配置\n config.i18n = config.i18n.map((item) => {\n item = Object.assign({}, defaultI18nConfig, item);\n item.cwd ??= config.cwd;\n item.locales = Object.keys(item.position!).filter((item) => item !== \"key\");\n item.sheetId = resolveSheetId(item.sheetId);\n item.keySorter = (a, b) => {\n return a.localeCompare(b);\n };\n item.enabled ??= true;\n\n //#region namespace\n item.namespaceSeparator ??= \".\";\n //#endregion\n return item;\n });\n //#endregion\n\n //#region api 配置标准化\n config.api ??= [];\n config.api = config.api.map(apiConfigNormalizer);\n //#endregion\n return config;\n}\nexport function apiConfigNormalizer(item: ApiConfig) {\n item.output ??= \"./src/apis\";\n // 没有配置 urlTransformer 时,给 requestFnImportPath 赋默认值\n // 优先使用 urlTransformer\n if (!item.urlTransformer) {\n item.requestFnImportPath ??= `import requestFn from '@/utils/request';`;\n }\n item.RequestBuilderImportPath ??= `import { RequestBuilder } from '@dune2/tools';`;\n item.enableTs ??= true;\n item.enabled ??= true;\n item.format ??= true;\n item.responseSchemaTransformer ??= (schema) =>\n schema.properties?.data ?? schema;\n return item;\n}\n"],"mappings":";AASA,SAAS,aAAa;AAEf,SAAS,eAAe,KAAc;AAX7C;AAYE,MAAI,CAAC,OAAO,EAAC,2BAAK,WAAW,UAAS;AACpC,WAAO;AAAA,EACT;AACA,QAAM,MAAM,IAAI,IAAI,GAAG;AACvB,QAAM,UAAU,MAAwB,wBAAwB;AAAA,IAC9D,QAAQ;AAAA,EACV,CAAC,EAAE,IAAI,QAAQ;AACf,SAAO,WAAU,aAAQ,OAAO,OAAf,mBAAoB,KAAK;AAC5C;;;AClBA,OAAO,UAAU;AACV,SAAS,gBAAgB,QAAwB;AAHxD;AAIE,QAAM,oBAAgC;AAAA,IACpC,SAAS;AAAA,IACT,cAAc;AAAA,IACd,UAAU,EAAE,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI;AAAA,IAChD,iBAAiB;AAAA,EACnB;AACA,SAAO,QAAQ,QAAQ,IAAI;AAC3B,SAAO,aAAa,KAAK,KAAK,OAAO,KAAK,8BAA8B;AAGxE,MAAI,CAAC,OAAO,QAAQ,GAAC,YAAO,SAAP,mBAAa,SAAQ;AACxC,WAAO,OAAO,CAAC,iBAAiB;AAAA,EAClC;AAGA,SAAO,OAAO,OAAO,KAAK,IAAI,CAAC,SAAS;AACtC,WAAO,OAAO,OAAO,CAAC,GAAG,mBAAmB,IAAI;AAChD,SAAK,QAAQ,OAAO;AACpB,SAAK,UAAU,OAAO,KAAK,KAAK,QAAS,EAAE,OAAO,CAACA,UAASA,UAAS,KAAK;AAC1E,SAAK,UAAU,eAAe,KAAK,OAAO;AAC1C,SAAK,YAAY,CAAC,GAAG,MAAM;AACzB,aAAO,EAAE,cAAc,CAAC;AAAA,IAC1B;AACA,SAAK,YAAY;AAGjB,SAAK,uBAAuB;AAE5B,WAAO;AAAA,EACT,CAAC;AAID,SAAO,QAAQ,CAAC;AAChB,SAAO,MAAM,OAAO,IAAI,IAAI,mBAAmB;AAE/C,SAAO;AACT;AACO,SAAS,oBAAoB,MAAiB;AACnD,OAAK,WAAW;AAGhB,MAAI,CAAC,KAAK,gBAAgB;AACxB,SAAK,wBAAwB;AAAA,EAC/B;AACA,OAAK,6BAA6B;AAClC,OAAK,aAAa;AAClB,OAAK,YAAY;AACjB,OAAK,WAAW;AAChB,OAAK,8BAA8B,CAAC,WAAQ;AArD9C;AAsDI,yBAAO,eAAP,mBAAmB,SAAQ;AAAA;AAC7B,SAAO;AACT;","names":["item"]}
|
|
File without changes
|