@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.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  normalizeConfig
3
- } from "./chunk-T2XO6ALS.js";
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-5FXMC2FS.js.map
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 = (a, b) => {
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-T2XO6ALS.js.map
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-5FXMC2FS.js";
10
- import "./chunk-T2XO6ALS.js";
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.2";
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-5FXMC2FS.js";
8
+ } from "./chunk-5DY6NAWS.js";
9
9
  import {
10
10
  resolveSheetId
11
- } from "./chunk-T2XO6ALS.js";
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 };
@@ -1,9 +1,11 @@
1
1
  import {
2
2
  apiConfigNormalizer,
3
+ defaultKeySorter,
3
4
  normalizeConfig
4
- } from "./chunk-T2XO6ALS.js";
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"]}
@@ -0,0 +1,12 @@
1
+ import { Plugin } from 'prettier';
2
+
3
+ declare const languages: Plugin["languages"];
4
+ /**
5
+ * 格式化 *.i18n.json 文件
6
+ * 按照 key 排序
7
+ * 对齐 cli 生成的 i18n.json 文件顺序
8
+ * 方便查看和比较
9
+ */
10
+ declare const parsers: Plugin["parsers"];
11
+
12
+ export { languages, parsers };
@@ -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",
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.2",
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 --clean --splitting",
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"]}