@lsby/net-core 0.4.0-beta.2 → 0.4.0-beta.3

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.
Files changed (111) hide show
  1. package/dist/bin/gen-list/bin.cjs +15 -14
  2. package/dist/bin/gen-list/index.cjs +13 -12
  3. package/dist/bin/gen-table-list/bin.cjs +157 -0
  4. package/dist/bin/gen-table-list/bin.d.cts +1 -0
  5. package/dist/bin/gen-table-list/index.cjs +156 -0
  6. package/dist/bin/gen-table-list/index.d.cts +3 -0
  7. package/dist/bin/gen-table-type/addition.cjs +58 -0
  8. package/dist/bin/gen-table-type/addition.d.cts +3 -0
  9. package/dist/bin/gen-table-type/bin.cjs +208 -0
  10. package/dist/bin/gen-table-type/bin.d.cts +1 -0
  11. package/dist/bin/gen-table-type/index.cjs +207 -0
  12. package/dist/bin/gen-table-type/index.d.cts +3 -0
  13. package/dist/bin/gen-test/bin.cjs +16 -15
  14. package/dist/bin/gen-test/index.cjs +15 -14
  15. package/dist/bin/gen-type/bin.cjs +13 -12
  16. package/dist/bin/gen-type/index.cjs +12 -11
  17. package/dist/cjs/action/action.cjs +2 -2
  18. package/dist/cjs/bin/gen-list/bin.cjs +15 -14
  19. package/dist/cjs/bin/gen-list/index.cjs +13 -12
  20. package/dist/cjs/bin/gen-table-list/bin.cjs +157 -0
  21. package/dist/cjs/bin/gen-table-list/bin.d.cts +1 -0
  22. package/dist/cjs/bin/gen-table-list/index.cjs +156 -0
  23. package/dist/cjs/bin/gen-table-list/index.d.cts +3 -0
  24. package/dist/cjs/bin/gen-table-type/addition.cjs +58 -0
  25. package/dist/cjs/bin/gen-table-type/addition.d.cts +3 -0
  26. package/dist/cjs/bin/gen-table-type/bin.cjs +208 -0
  27. package/dist/cjs/bin/gen-table-type/bin.d.cts +1 -0
  28. package/dist/cjs/bin/gen-table-type/index.cjs +207 -0
  29. package/dist/cjs/bin/gen-table-type/index.d.cts +3 -0
  30. package/dist/cjs/bin/gen-test/bin.cjs +16 -15
  31. package/dist/cjs/bin/gen-test/index.cjs +15 -14
  32. package/dist/cjs/bin/gen-type/bin.cjs +13 -12
  33. package/dist/cjs/bin/gen-type/index.cjs +12 -11
  34. package/dist/cjs/global/global.cjs +2 -2
  35. package/dist/cjs/global/ws.cjs +2 -2
  36. package/dist/cjs/index.cjs +227 -87
  37. package/dist/cjs/index.d.cts +3 -2
  38. package/dist/cjs/interface/interface-base.d.cts +4 -4
  39. package/dist/cjs/interface/interface-logic.cjs +16 -10
  40. package/dist/cjs/interface/interface-logic.d.cts +34 -15
  41. package/dist/cjs/interface/interface-result.d.cts +2 -2
  42. package/dist/cjs/interface-table/interface-table.cjs +59 -0
  43. package/dist/cjs/interface-table/interface-table.d.cts +95 -0
  44. package/dist/cjs/plugin/extend/chinese-path.d.cts +1 -1
  45. package/dist/cjs/plugin/extend/custom-data.cjs +2 -2
  46. package/dist/cjs/plugin/extend/custom-data.d.cts +1 -1
  47. package/dist/cjs/plugin/extend/json.cjs +5 -5
  48. package/dist/cjs/plugin/extend/urlencoded.cjs +4 -4
  49. package/dist/cjs/plugin/extend/web-socket.cjs +7 -7
  50. package/dist/cjs/plugin/extend/web-socket.d.cts +2 -2
  51. package/dist/cjs/plugin/plug.d.cts +1 -1
  52. package/dist/cjs/server/server.cjs +187 -68
  53. package/dist/cjs/server/server.d.cts +15 -2
  54. package/dist/cjs/tools/tools.cjs +1 -1
  55. package/dist/esm/action/action.js +1 -1
  56. package/dist/esm/bin/gen-list/bin.js +3 -3
  57. package/dist/esm/bin/gen-list/index.js +1 -1
  58. package/dist/esm/bin/gen-table-list/bin.d.ts +1 -0
  59. package/dist/esm/bin/gen-table-list/bin.js +16 -0
  60. package/dist/esm/bin/gen-table-list/index.d.ts +3 -0
  61. package/dist/esm/bin/gen-table-list/index.js +6 -0
  62. package/dist/esm/bin/gen-table-type/addition.d.ts +3 -0
  63. package/dist/esm/bin/gen-table-type/addition.js +6 -0
  64. package/dist/esm/bin/gen-table-type/bin.d.ts +1 -0
  65. package/dist/esm/bin/gen-table-type/bin.js +17 -0
  66. package/dist/esm/bin/gen-table-type/index.d.ts +3 -0
  67. package/dist/esm/bin/gen-table-type/index.js +7 -0
  68. package/dist/esm/bin/gen-test/bin.js +2 -2
  69. package/dist/esm/bin/gen-test/index.js +1 -1
  70. package/dist/esm/bin/gen-type/bin.js +2 -2
  71. package/dist/esm/bin/gen-type/index.js +1 -1
  72. package/dist/esm/{chunk-F7TZXXFE.js → chunk-2QVSQMI7.js} +13 -12
  73. package/dist/esm/{chunk-JX5MRJL6.js → chunk-43ZE4ZNH.js} +1 -1
  74. package/dist/esm/{chunk-5WR5VNYH.js → chunk-47ICFQXW.js} +2 -2
  75. package/dist/esm/{chunk-6AW5SSYA.js → chunk-6Y4UXWIN.js} +3 -3
  76. package/dist/esm/{chunk-GVIGQG5Y.js → chunk-7Y3YE4M5.js} +4 -4
  77. package/dist/esm/chunk-AAZFVBDH.js +144 -0
  78. package/dist/esm/chunk-CSKAQDJA.js +204 -0
  79. package/dist/esm/{chunk-AVB7KPZC.js → chunk-CSOONB3X.js} +6 -6
  80. package/dist/esm/{chunk-BC6IISWS.js → chunk-DGDZQLIJ.js} +1 -1
  81. package/dist/esm/{chunk-BOCS6H24.js → chunk-ELSBYQPF.js} +12 -11
  82. package/dist/esm/{chunk-EAVNASDB.js → chunk-FIQSBTYJ.js} +2 -2
  83. package/dist/esm/{chunk-PVE5VI5K.js → chunk-IGHJCQ2S.js} +1 -1
  84. package/dist/esm/chunk-IY26L2UM.js +122 -0
  85. package/dist/esm/{chunk-EZ7OJFSQ.js → chunk-QGSMHYVT.js} +15 -9
  86. package/dist/esm/chunk-RG6U5R37.js +34 -0
  87. package/dist/esm/chunk-XICLHBEA.js +34 -0
  88. package/dist/esm/{chunk-WIZEBP6C.js → chunk-YATLUSDZ.js} +15 -14
  89. package/dist/esm/global/global.js +2 -2
  90. package/dist/esm/global/ws.js +1 -1
  91. package/dist/esm/index.d.ts +3 -2
  92. package/dist/esm/index.js +16 -10
  93. package/dist/esm/interface/interface-base.d.ts +4 -4
  94. package/dist/esm/interface/interface-logic.d.ts +34 -15
  95. package/dist/esm/interface/interface-logic.js +3 -3
  96. package/dist/esm/interface/interface-result.d.ts +2 -2
  97. package/dist/esm/interface-table/interface-table.d.ts +95 -0
  98. package/dist/esm/interface-table/interface-table.js +8 -0
  99. package/dist/esm/plugin/extend/chinese-path.d.ts +1 -1
  100. package/dist/esm/plugin/extend/custom-data.d.ts +1 -1
  101. package/dist/esm/plugin/extend/custom-data.js +3 -3
  102. package/dist/esm/plugin/extend/json.js +4 -4
  103. package/dist/esm/plugin/extend/urlencoded.js +3 -3
  104. package/dist/esm/plugin/extend/web-socket.d.ts +2 -2
  105. package/dist/esm/plugin/extend/web-socket.js +3 -3
  106. package/dist/esm/plugin/plug.d.ts +1 -1
  107. package/dist/esm/server/server.d.ts +15 -2
  108. package/dist/esm/server/server.js +5 -4
  109. package/dist/esm/tools/tools.js +1 -1
  110. package/package.json +14 -4
  111. package/dist/esm/chunk-3ERQ6GCK.js +0 -101
@@ -0,0 +1,208 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
18
+ // If the importer is in node compatibility mode or this is not an ESM
19
+ // file that has been converted to a CommonJS file using a Babel-
20
+ // compatible transform (i.e. "__esModule" has not been set), then set
21
+ // "default" to the CommonJS "module.exports" for node compatibility.
22
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
23
+ mod
24
+ ));
25
+
26
+ // src/bin/gen-table-type/bin.ts
27
+ var import_commander = require("commander");
28
+ var import_node_path2 = __toESM(require("path"), 1);
29
+
30
+ // src/bin/gen-table-type/index.ts
31
+ var import_ts_log = require("@lsby/ts-log");
32
+ var import_node_crypto = require("crypto");
33
+ var import_node_fs = __toESM(require("fs"), 1);
34
+ var import_node_path = __toESM(require("path"), 1);
35
+ var import_typescript = __toESM(require("typescript"), 1);
36
+
37
+ // src/bin/gen-table-type/addition.ts
38
+ var \u9644\u52A0\u4EE3\u7801 = `
39
+ export type \u57FA\u672C\u7C7B\u578B = string | number | boolean | null
40
+ export type \u6761\u4EF6<\u5217\u540D\u79F0\u4EEC> =
41
+ | { \u5217\u540D\u79F0: \u5217\u540D\u79F0\u4EEC; \u7B26\u53F7: '=' | '<>'; \u503C: \u57FA\u672C\u7C7B\u578B }
42
+ | { \u5217\u540D\u79F0: \u5217\u540D\u79F0\u4EEC; \u7B26\u53F7: '>' | '<' | '>=' | '<='; \u503C: number | string }
43
+ | { \u5217\u540D\u79F0: \u5217\u540D\u79F0\u4EEC; \u7B26\u53F7: 'like' | 'not like'; \u503C: string }
44
+ | { \u5217\u540D\u79F0: \u5217\u540D\u79F0\u4EEC; \u7B26\u53F7: 'in' | 'not in'; \u503C: \u57FA\u672C\u7C7B\u578B[] }
45
+ | { \u5217\u540D\u79F0: \u5217\u540D\u79F0\u4EEC; \u7B26\u53F7: 'is' | 'is not'; \u503C: \u57FA\u672C\u7C7B\u578B }
46
+ export type \u6761\u4EF6\u7EC4<\u5217\u540D\u79F0\u4EEC> =
47
+ | { \u6A21\u5F0F: '\u76F4\u63A5\u6761\u4EF6'; \u503C: \u6761\u4EF6<\u5217\u540D\u79F0\u4EEC> }
48
+ | { \u6A21\u5F0F: '\u7EC4\u5408\u6761\u4EF6'; \u7EC4\u5408\u6A21\u5F0F: '\u4E0E' | '\u6216'; \u6761\u4EF6\u4EEC: \u6761\u4EF6<\u5217\u540D\u79F0\u4EEC>[] }
49
+ export type \u6241\u5E73\u5316\u6761\u4EF6\u7EC4\u9879<\u5217\u540D\u79F0\u4EEC> = { \u7EC4\u5408\u6A21\u5F0F: '\u4E0E' | '\u6216'; \u6761\u4EF6: \u6761\u4EF6<\u5217\u540D\u79F0\u4EEC> }
50
+ export type \u5206\u9875\u9009\u9879 = {
51
+ \u9875\u6570: number
52
+ \u5927\u5C0F: number
53
+ }
54
+ export type \u6392\u5E8F\u9009\u9879<\u5217\u540D\u79F0\u4EEC> = {
55
+ \u6392\u5E8F\u5217: \u5217\u540D\u79F0\u4EEC
56
+ \u6392\u5E8F\u6A21\u5F0F: '\u6B63\u5E8F' | '\u5012\u5E8F'
57
+ }
58
+ export type \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<A> = A extends '\u5B57\u7B26\u4E32'
59
+ ? string
60
+ : A extends '\u6570\u5B57'
61
+ ? number
62
+ : A extends '\u5E03\u5C14'
63
+ ? boolean
64
+ : never
65
+ export type \u7FFB\u8BD1\u5217\u63CF\u8FF0<\u5BF9\u8C61> = { [key in keyof \u5BF9\u8C61]: \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]> }
66
+ `;
67
+
68
+ // src/bin/gen-table-type/index.ts
69
+ function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
70
+ let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = false;
71
+ import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, (\u8282\u70B9) => {
72
+ if (import_typescript.default.isExportDeclaration(\u8282\u70B9)) {
73
+ let \u8282\u70B9\u5BFC\u51FA = \u8282\u70B9.exportClause ?? null;
74
+ if (\u8282\u70B9\u5BFC\u51FA !== null && import_typescript.default.isDefaultClause(\u8282\u70B9\u5BFC\u51FA) || import_typescript.default.isExportAssignment(\u8282\u70B9)) {
75
+ \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = true;
76
+ }
77
+ } else if (import_typescript.default.isClassDeclaration(\u8282\u70B9) && (\u8282\u70B9.modifiers?.some((mod) => mod.kind === import_typescript.default.SyntaxKind.DefaultKeyword) ?? false)) {
78
+ \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = true;
79
+ }
80
+ });
81
+ return \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA;
82
+ }
83
+ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
84
+ let log = new import_ts_log.Log("@lsby:net-core").extend("gen-type");
85
+ await log.debug("\u5F00\u59CB\u751F\u6210\u7C7B\u578B...");
86
+ await log.debug(`tsconfig\u8DEF\u5F84: ${tsconfig\u8DEF\u5F84}`);
87
+ await log.debug(`\u76EE\u6807\u8DEF\u5F84: ${\u76EE\u6807\u8DEF\u5F84}`);
88
+ await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
89
+ let tsconfig\u5185\u5BB9 = import_typescript.default.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, import_node_fs.default.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
90
+ let tsconfig\u5185\u5BB9\u9519\u8BEF = tsconfig\u5185\u5BB9.error ?? null;
91
+ if (tsconfig\u5185\u5BB9\u9519\u8BEF !== null) {
92
+ await log.err("\u65E0\u6CD5\u89E3\u6790 tsconfig.json: " + tsconfig\u5185\u5BB9\u9519\u8BEF.messageText);
93
+ throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
94
+ }
95
+ let \u89E3\u6790\u540E\u7684tsconfig = import_typescript.default.parseJsonConfigFileContent(tsconfig\u5185\u5BB9.config, import_typescript.default.sys, import_node_path.default.resolve(tsconfig\u8DEF\u5F84, ".."));
96
+ await log.debug("\u6210\u529F\u89E3\u6790 tsconfig \u6587\u4EF6...");
97
+ let \u9879\u76EE\u4E3B\u673A = import_typescript.default.createCompilerHost(\u89E3\u6790\u540E\u7684tsconfig.options);
98
+ let \u9879\u76EE = import_typescript.default.createProgram(\u89E3\u6790\u540E\u7684tsconfig.fileNames, \u89E3\u6790\u540E\u7684tsconfig.options, \u9879\u76EE\u4E3B\u673A);
99
+ await log.debug("\u6210\u529F\u8BFB\u53D6\u9879\u76EE...");
100
+ let \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
101
+ let \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF6) => {
102
+ let \u6E90\u6587\u4EF6\u8DEF\u5F84 = import_node_path.default.normalize(\u6E90\u6587\u4EF6.fileName);
103
+ if (\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84) === false)
104
+ return false;
105
+ let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6);
106
+ if (\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA === false)
107
+ return false;
108
+ return true;
109
+ });
110
+ await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
111
+ let \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
112
+ let \u4EE3\u7801 = `
113
+ import { \u5206\u9875\u9009\u9879, \u6392\u5E8F\u9009\u9879, \u6761\u4EF6\u7EC4, \u7FFB\u8BD1\u5217\u63CF\u8FF0, \u865A\u62DF\u8868 } from '@lsby/net-core'
114
+ import { z } from 'zod'
115
+ import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}",
116
+
117
+ // \u8DEF\u5F84
118
+ type \u8DEF\u5F84 = (typeof \u5BFC\u5165)['\u8D44\u6E90\u8DEF\u5F84']
119
+
120
+ // \u5217
121
+ type \u5217\u63CF\u8FF0Zod = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, infer X, any, any, any, any> ? X : never
122
+
123
+ // \u9519\u8BEF
124
+ type \u589E\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, infer X, any, any, any> ? z.infer<X> : never
125
+ type \u5220\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, any, infer X, any, any> ? z.infer<X> : never
126
+ type \u6539\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, any, any, infer X, any> ? z.infer<X> : never
127
+ type \u67E5\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, any, any, any, infer X> ? z.infer<X> : never
128
+
129
+ // \u6700\u7EC8\u8F93\u51FA
130
+ type \u6700\u7EC8\u8F93\u51FA = \u8DEF\u5F84 extends infer _
131
+ ? {
132
+ \u8DEF\u5F84: \u8DEF\u5F84
133
+
134
+ \u6784\u9020\u53C2\u6570: \u5BFC\u5165 extends \u865A\u62DF\u8868<infer X, any, any, any, any, any> ? z.infer<X> : never
135
+ \u5217\u7C7B\u578B: \u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>
136
+
137
+ \u589E\u53C2\u6570_\u6570\u636E\u4EEC: Partial<\u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>>[]
138
+ \u5220\u53C2\u6570_\u7B5B\u9009\u6761\u4EF6: \u6761\u4EF6\u7EC4<z.infer<ReturnType<\u5217\u63CF\u8FF0Zod['keyof']>>>
139
+ \u6539\u53C2\u6570_\u65B0\u503C: Partial<\u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>>
140
+ \u6539\u53C2\u6570_\u7B5B\u9009\u6761\u4EF6: \u6761\u4EF6\u7EC4<z.infer<ReturnType<\u5217\u63CF\u8FF0Zod['keyof']>>>
141
+ \u67E5\u53C2\u6570_\u7B5B\u9009\u6761\u4EF6: \u6761\u4EF6\u7EC4<z.infer<ReturnType<\u5217\u63CF\u8FF0Zod['keyof']>>>
142
+ \u67E5\u53C2\u6570_\u5206\u9875\u6761\u4EF6: \u5206\u9875\u9009\u9879
143
+ \u67E5\u53C2\u6570_\u6392\u5E8F\u6761\u4EF6: \u6392\u5E8F\u9009\u9879<z.infer<ReturnType<\u5217\u63CF\u8FF0Zod['keyof']>>>
144
+
145
+ \u589E\u9519\u8BEF: \u589E\u9519\u8BEF
146
+ \u5220\u9519\u8BEF: \u5220\u9519\u8BEF
147
+ \u6539\u9519\u8BEF: \u6539\u9519\u8BEF
148
+ \u67E5\u9519\u8BEF: \u67E5\u9519\u8BEF
149
+
150
+ \u589E\u7ED3\u679C: {}
151
+ \u5220\u7ED3\u679C: {}
152
+ \u6539\u7ED3\u679C: {}
153
+ \u67E5\u7ED3\u679C: \u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>[]
154
+ }
155
+ : never
156
+ `;
157
+ return import_typescript.default.createSourceFile(a.fileName.replaceAll(".ts", "-" + (0, import_node_crypto.randomUUID)() + ".ts"), \u4EE3\u7801, import_typescript.default.ScriptTarget.Latest);
158
+ });
159
+ let \u65B0\u9879\u76EE = import_typescript.default.createProgram({
160
+ rootNames: [...\u9879\u76EE.getSourceFiles().map((a) => a.fileName), ...\u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.map((a) => a.fileName)],
161
+ options: \u89E3\u6790\u540E\u7684tsconfig.options,
162
+ host: {
163
+ ...\u9879\u76EE\u4E3B\u673A,
164
+ getSourceFile: (filename) => {
165
+ let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName === filename) ?? null;
166
+ if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 !== null)
167
+ return \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6;
168
+ return \u9879\u76EE.getSourceFile(filename);
169
+ }
170
+ },
171
+ oldProgram: \u9879\u76EE
172
+ });
173
+ let \u7C7B\u578B\u68C0\u67E5\u5668 = \u65B0\u9879\u76EE.getTypeChecker();
174
+ let \u7ED3\u679C = [];
175
+ for (let \u6E90\u6587\u4EF6 of \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC) {
176
+ import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, (node) => {
177
+ if (import_typescript.default.isTypeAliasDeclaration(node) && node.name.text === "\u6700\u7EC8\u8F93\u51FA") {
178
+ let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
179
+ \u7ED3\u679C.push(
180
+ \u7C7B\u578B\u68C0\u67E5\u5668.typeToString(
181
+ type,
182
+ void 0,
183
+ import_typescript.default.TypeFormatFlags.NoTruncation | import_typescript.default.TypeFormatFlags.NoTypeReduction | import_typescript.default.TypeFormatFlags.AllowUniqueESSymbolType | import_typescript.default.TypeFormatFlags.UseAliasDefinedOutsideCurrentScope
184
+ )
185
+ );
186
+ }
187
+ });
188
+ }
189
+ let \u6700\u7EC8\u7ED3\u679C = Array.from(new Set(\u7ED3\u679C.filter((a) => a !== "any" && a !== "never" && a !== "unknown")));
190
+ await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u63A5\u53E3\u8868\u7C7B\u578B`);
191
+ let \u6700\u7EC8\u4EE3\u7801 = [`export type InterfaceTableType = [${\u6700\u7EC8\u7ED3\u679C.join(",")}]`, \u9644\u52A0\u4EE3\u7801];
192
+ await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
193
+ let \u8F93\u51FA\u6587\u4EF6\u5939 = import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
194
+ if (import_node_fs.default.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939) === false)
195
+ import_node_fs.default.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
196
+ import_node_fs.default.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
197
+ await log.debug(`\u8F93\u51FA\u6587\u4EF6\u5199\u5165\u5B8C\u6210: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
198
+ }
199
+
200
+ // src/bin/gen-table-type/bin.ts
201
+ var program = new import_commander.Command();
202
+ program.name("\u751F\u6210\u8868\u7C7B\u578B\u6587\u4EF6").argument("<tsconfigPath>", "tsconfig\u6587\u4EF6\u8DEF\u5F84").argument("<interfaceFolderPath>", "\u63A5\u53E3\u6587\u4EF6\u5939\u8DEF\u5F84").argument("<outFilePath>", "\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84").action(async (tsconfigPath, interfaceFolderPath, outputPath) => {
203
+ let absoluteTsconfigPath = import_node_path2.default.resolve(tsconfigPath);
204
+ let absoluteApiFolderPath = import_node_path2.default.resolve(interfaceFolderPath);
205
+ let absoluteOutputPath = import_node_path2.default.resolve(outputPath);
206
+ await main(absoluteTsconfigPath, absoluteApiFolderPath, absoluteOutputPath);
207
+ });
208
+ program.parse(process.argv);
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/bin/gen-table-type/index.ts
31
+ var gen_table_type_exports = {};
32
+ __export(gen_table_type_exports, {
33
+ main: () => main
34
+ });
35
+ module.exports = __toCommonJS(gen_table_type_exports);
36
+ var import_ts_log = require("@lsby/ts-log");
37
+ var import_node_crypto = require("crypto");
38
+ var import_node_fs = __toESM(require("fs"), 1);
39
+ var import_node_path = __toESM(require("path"), 1);
40
+ var import_typescript = __toESM(require("typescript"), 1);
41
+
42
+ // src/bin/gen-table-type/addition.ts
43
+ var \u9644\u52A0\u4EE3\u7801 = `
44
+ export type \u57FA\u672C\u7C7B\u578B = string | number | boolean | null
45
+ export type \u6761\u4EF6<\u5217\u540D\u79F0\u4EEC> =
46
+ | { \u5217\u540D\u79F0: \u5217\u540D\u79F0\u4EEC; \u7B26\u53F7: '=' | '<>'; \u503C: \u57FA\u672C\u7C7B\u578B }
47
+ | { \u5217\u540D\u79F0: \u5217\u540D\u79F0\u4EEC; \u7B26\u53F7: '>' | '<' | '>=' | '<='; \u503C: number | string }
48
+ | { \u5217\u540D\u79F0: \u5217\u540D\u79F0\u4EEC; \u7B26\u53F7: 'like' | 'not like'; \u503C: string }
49
+ | { \u5217\u540D\u79F0: \u5217\u540D\u79F0\u4EEC; \u7B26\u53F7: 'in' | 'not in'; \u503C: \u57FA\u672C\u7C7B\u578B[] }
50
+ | { \u5217\u540D\u79F0: \u5217\u540D\u79F0\u4EEC; \u7B26\u53F7: 'is' | 'is not'; \u503C: \u57FA\u672C\u7C7B\u578B }
51
+ export type \u6761\u4EF6\u7EC4<\u5217\u540D\u79F0\u4EEC> =
52
+ | { \u6A21\u5F0F: '\u76F4\u63A5\u6761\u4EF6'; \u503C: \u6761\u4EF6<\u5217\u540D\u79F0\u4EEC> }
53
+ | { \u6A21\u5F0F: '\u7EC4\u5408\u6761\u4EF6'; \u7EC4\u5408\u6A21\u5F0F: '\u4E0E' | '\u6216'; \u6761\u4EF6\u4EEC: \u6761\u4EF6<\u5217\u540D\u79F0\u4EEC>[] }
54
+ export type \u6241\u5E73\u5316\u6761\u4EF6\u7EC4\u9879<\u5217\u540D\u79F0\u4EEC> = { \u7EC4\u5408\u6A21\u5F0F: '\u4E0E' | '\u6216'; \u6761\u4EF6: \u6761\u4EF6<\u5217\u540D\u79F0\u4EEC> }
55
+ export type \u5206\u9875\u9009\u9879 = {
56
+ \u9875\u6570: number
57
+ \u5927\u5C0F: number
58
+ }
59
+ export type \u6392\u5E8F\u9009\u9879<\u5217\u540D\u79F0\u4EEC> = {
60
+ \u6392\u5E8F\u5217: \u5217\u540D\u79F0\u4EEC
61
+ \u6392\u5E8F\u6A21\u5F0F: '\u6B63\u5E8F' | '\u5012\u5E8F'
62
+ }
63
+ export type \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<A> = A extends '\u5B57\u7B26\u4E32'
64
+ ? string
65
+ : A extends '\u6570\u5B57'
66
+ ? number
67
+ : A extends '\u5E03\u5C14'
68
+ ? boolean
69
+ : never
70
+ export type \u7FFB\u8BD1\u5217\u63CF\u8FF0<\u5BF9\u8C61> = { [key in keyof \u5BF9\u8C61]: \u7FFB\u8BD1\u81EA\u5B9A\u4E49\u7C7B\u578B<\u5BF9\u8C61[key]> }
71
+ `;
72
+
73
+ // src/bin/gen-table-type/index.ts
74
+ function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
75
+ let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = false;
76
+ import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, (\u8282\u70B9) => {
77
+ if (import_typescript.default.isExportDeclaration(\u8282\u70B9)) {
78
+ let \u8282\u70B9\u5BFC\u51FA = \u8282\u70B9.exportClause ?? null;
79
+ if (\u8282\u70B9\u5BFC\u51FA !== null && import_typescript.default.isDefaultClause(\u8282\u70B9\u5BFC\u51FA) || import_typescript.default.isExportAssignment(\u8282\u70B9)) {
80
+ \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = true;
81
+ }
82
+ } else if (import_typescript.default.isClassDeclaration(\u8282\u70B9) && (\u8282\u70B9.modifiers?.some((mod) => mod.kind === import_typescript.default.SyntaxKind.DefaultKeyword) ?? false)) {
83
+ \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = true;
84
+ }
85
+ });
86
+ return \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA;
87
+ }
88
+ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84) {
89
+ let log = new import_ts_log.Log("@lsby:net-core").extend("gen-type");
90
+ await log.debug("\u5F00\u59CB\u751F\u6210\u7C7B\u578B...");
91
+ await log.debug(`tsconfig\u8DEF\u5F84: ${tsconfig\u8DEF\u5F84}`);
92
+ await log.debug(`\u76EE\u6807\u8DEF\u5F84: ${\u76EE\u6807\u8DEF\u5F84}`);
93
+ await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
94
+ let tsconfig\u5185\u5BB9 = import_typescript.default.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, import_node_fs.default.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
95
+ let tsconfig\u5185\u5BB9\u9519\u8BEF = tsconfig\u5185\u5BB9.error ?? null;
96
+ if (tsconfig\u5185\u5BB9\u9519\u8BEF !== null) {
97
+ await log.err("\u65E0\u6CD5\u89E3\u6790 tsconfig.json: " + tsconfig\u5185\u5BB9\u9519\u8BEF.messageText);
98
+ throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
99
+ }
100
+ let \u89E3\u6790\u540E\u7684tsconfig = import_typescript.default.parseJsonConfigFileContent(tsconfig\u5185\u5BB9.config, import_typescript.default.sys, import_node_path.default.resolve(tsconfig\u8DEF\u5F84, ".."));
101
+ await log.debug("\u6210\u529F\u89E3\u6790 tsconfig \u6587\u4EF6...");
102
+ let \u9879\u76EE\u4E3B\u673A = import_typescript.default.createCompilerHost(\u89E3\u6790\u540E\u7684tsconfig.options);
103
+ let \u9879\u76EE = import_typescript.default.createProgram(\u89E3\u6790\u540E\u7684tsconfig.fileNames, \u89E3\u6790\u540E\u7684tsconfig.options, \u9879\u76EE\u4E3B\u673A);
104
+ await log.debug("\u6210\u529F\u8BFB\u53D6\u9879\u76EE...");
105
+ let \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
106
+ let \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF6) => {
107
+ let \u6E90\u6587\u4EF6\u8DEF\u5F84 = import_node_path.default.normalize(\u6E90\u6587\u4EF6.fileName);
108
+ if (\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84) === false)
109
+ return false;
110
+ let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6);
111
+ if (\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA === false)
112
+ return false;
113
+ return true;
114
+ });
115
+ await log.debug(`\u7B5B\u9009\u51FA ${\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.length} \u4E2A\u76F8\u5173\u6E90\u6587\u4EF6`);
116
+ let \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC = \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC.map((a) => {
117
+ let \u4EE3\u7801 = `
118
+ import { \u5206\u9875\u9009\u9879, \u6392\u5E8F\u9009\u9879, \u6761\u4EF6\u7EC4, \u7FFB\u8BD1\u5217\u63CF\u8FF0, \u865A\u62DF\u8868 } from '@lsby/net-core'
119
+ import { z } from 'zod'
120
+ import \u5BFC\u5165 from "./${a.fileName.split("/").at(-1)?.replaceAll(".ts", "")}",
121
+
122
+ // \u8DEF\u5F84
123
+ type \u8DEF\u5F84 = (typeof \u5BFC\u5165)['\u8D44\u6E90\u8DEF\u5F84']
124
+
125
+ // \u5217
126
+ type \u5217\u63CF\u8FF0Zod = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, infer X, any, any, any, any> ? X : never
127
+
128
+ // \u9519\u8BEF
129
+ type \u589E\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, infer X, any, any, any> ? z.infer<X> : never
130
+ type \u5220\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, any, infer X, any, any> ? z.infer<X> : never
131
+ type \u6539\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, any, any, infer X, any> ? z.infer<X> : never
132
+ type \u67E5\u9519\u8BEF = \u5BFC\u5165 extends \u865A\u62DF\u8868<any, any, any, any, any, infer X> ? z.infer<X> : never
133
+
134
+ // \u6700\u7EC8\u8F93\u51FA
135
+ type \u6700\u7EC8\u8F93\u51FA = \u8DEF\u5F84 extends infer _
136
+ ? {
137
+ \u8DEF\u5F84: \u8DEF\u5F84
138
+
139
+ \u6784\u9020\u53C2\u6570: \u5BFC\u5165 extends \u865A\u62DF\u8868<infer X, any, any, any, any, any> ? z.infer<X> : never
140
+ \u5217\u7C7B\u578B: \u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>
141
+
142
+ \u589E\u53C2\u6570_\u6570\u636E\u4EEC: Partial<\u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>>[]
143
+ \u5220\u53C2\u6570_\u7B5B\u9009\u6761\u4EF6: \u6761\u4EF6\u7EC4<z.infer<ReturnType<\u5217\u63CF\u8FF0Zod['keyof']>>>
144
+ \u6539\u53C2\u6570_\u65B0\u503C: Partial<\u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>>
145
+ \u6539\u53C2\u6570_\u7B5B\u9009\u6761\u4EF6: \u6761\u4EF6\u7EC4<z.infer<ReturnType<\u5217\u63CF\u8FF0Zod['keyof']>>>
146
+ \u67E5\u53C2\u6570_\u7B5B\u9009\u6761\u4EF6: \u6761\u4EF6\u7EC4<z.infer<ReturnType<\u5217\u63CF\u8FF0Zod['keyof']>>>
147
+ \u67E5\u53C2\u6570_\u5206\u9875\u6761\u4EF6: \u5206\u9875\u9009\u9879
148
+ \u67E5\u53C2\u6570_\u6392\u5E8F\u6761\u4EF6: \u6392\u5E8F\u9009\u9879<z.infer<ReturnType<\u5217\u63CF\u8FF0Zod['keyof']>>>
149
+
150
+ \u589E\u9519\u8BEF: \u589E\u9519\u8BEF
151
+ \u5220\u9519\u8BEF: \u5220\u9519\u8BEF
152
+ \u6539\u9519\u8BEF: \u6539\u9519\u8BEF
153
+ \u67E5\u9519\u8BEF: \u67E5\u9519\u8BEF
154
+
155
+ \u589E\u7ED3\u679C: {}
156
+ \u5220\u7ED3\u679C: {}
157
+ \u6539\u7ED3\u679C: {}
158
+ \u67E5\u7ED3\u679C: \u7FFB\u8BD1\u5217\u63CF\u8FF0<z.infer<\u5217\u63CF\u8FF0Zod>>[]
159
+ }
160
+ : never
161
+ `;
162
+ return import_typescript.default.createSourceFile(a.fileName.replaceAll(".ts", "-" + (0, import_node_crypto.randomUUID)() + ".ts"), \u4EE3\u7801, import_typescript.default.ScriptTarget.Latest);
163
+ });
164
+ let \u65B0\u9879\u76EE = import_typescript.default.createProgram({
165
+ rootNames: [...\u9879\u76EE.getSourceFiles().map((a) => a.fileName), ...\u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.map((a) => a.fileName)],
166
+ options: \u89E3\u6790\u540E\u7684tsconfig.options,
167
+ host: {
168
+ ...\u9879\u76EE\u4E3B\u673A,
169
+ getSourceFile: (filename) => {
170
+ let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName === filename) ?? null;
171
+ if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 !== null)
172
+ return \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6;
173
+ return \u9879\u76EE.getSourceFile(filename);
174
+ }
175
+ },
176
+ oldProgram: \u9879\u76EE
177
+ });
178
+ let \u7C7B\u578B\u68C0\u67E5\u5668 = \u65B0\u9879\u76EE.getTypeChecker();
179
+ let \u7ED3\u679C = [];
180
+ for (let \u6E90\u6587\u4EF6 of \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC) {
181
+ import_typescript.default.forEachChild(\u6E90\u6587\u4EF6, (node) => {
182
+ if (import_typescript.default.isTypeAliasDeclaration(node) && node.name.text === "\u6700\u7EC8\u8F93\u51FA") {
183
+ let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
184
+ \u7ED3\u679C.push(
185
+ \u7C7B\u578B\u68C0\u67E5\u5668.typeToString(
186
+ type,
187
+ void 0,
188
+ import_typescript.default.TypeFormatFlags.NoTruncation | import_typescript.default.TypeFormatFlags.NoTypeReduction | import_typescript.default.TypeFormatFlags.AllowUniqueESSymbolType | import_typescript.default.TypeFormatFlags.UseAliasDefinedOutsideCurrentScope
189
+ )
190
+ );
191
+ }
192
+ });
193
+ }
194
+ let \u6700\u7EC8\u7ED3\u679C = Array.from(new Set(\u7ED3\u679C.filter((a) => a !== "any" && a !== "never" && a !== "unknown")));
195
+ await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u63A5\u53E3\u8868\u7C7B\u578B`);
196
+ let \u6700\u7EC8\u4EE3\u7801 = [`export type InterfaceTableType = [${\u6700\u7EC8\u7ED3\u679C.join(",")}]`, \u9644\u52A0\u4EE3\u7801];
197
+ await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
198
+ let \u8F93\u51FA\u6587\u4EF6\u5939 = import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
199
+ if (import_node_fs.default.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939) === false)
200
+ import_node_fs.default.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
201
+ import_node_fs.default.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
202
+ await log.debug(`\u8F93\u51FA\u6587\u4EF6\u5199\u5165\u5B8C\u6210: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
203
+ }
204
+ // Annotate the CommonJS export names for ESM import in node:
205
+ 0 && (module.exports = {
206
+ main
207
+ });
@@ -0,0 +1,3 @@
1
+ declare function main(tsconfig路径: string, 目标路径: string, 输出文件路径: string): Promise<void>;
2
+
3
+ export { main };
@@ -24,19 +24,19 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
24
24
  ));
25
25
 
26
26
  // src/bin/gen-test/bin.ts
27
- var import_node_path2 = __toESM(require("path"), 1);
28
27
  var import_commander = require("commander");
28
+ var import_node_path2 = __toESM(require("path"), 1);
29
29
 
30
30
  // src/bin/gen-test/index.ts
31
+ var import_ts_log = require("@lsby/ts-log");
32
+ var import_lodash = __toESM(require("lodash"), 1);
31
33
  var import_node_crypto = require("crypto");
32
34
  var import_node_fs = __toESM(require("fs"), 1);
33
35
  var import_node_path = __toESM(require("path"), 1);
34
- var import_lodash = __toESM(require("lodash"), 1);
35
36
  var import_typescript = __toESM(require("typescript"), 1);
36
- var import_ts_log = require("@lsby/ts-log");
37
37
  function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
38
38
  for (let statement of \u6E90\u6587\u4EF6.statements) {
39
- if (import_typescript.default.isExportAssignment(statement) && statement.isExportEquals === void 0) {
39
+ if (import_typescript.default.isExportAssignment(statement) && (statement.isExportEquals ?? null) === null) {
40
40
  return true;
41
41
  }
42
42
  }
@@ -59,8 +59,9 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
59
59
  await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
60
60
  await log.debug(`\u6587\u4EF6\u8FC7\u6EE4\u8868\u8FBE\u5F0F: ${\u6587\u4EF6\u8FC7\u6EE4\u8868\u8FBE\u5F0F}`);
61
61
  let tsconfig\u5185\u5BB9 = import_typescript.default.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, import_node_fs.default.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
62
- if (tsconfig\u5185\u5BB9.error) {
63
- await log.err("\u65E0\u6CD5\u89E3\u6790 tsconfig.json", tsconfig\u5185\u5BB9.error);
62
+ let tsconfig\u5185\u5BB9\u9519\u8BEF = tsconfig\u5185\u5BB9.error ?? null;
63
+ if (tsconfig\u5185\u5BB9\u9519\u8BEF !== null) {
64
+ await log.err("\u65E0\u6CD5\u89E3\u6790 tsconfig.json", tsconfig\u5185\u5BB9\u9519\u8BEF);
64
65
  throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
65
66
  }
66
67
  let \u89E3\u6790\u540E\u7684tsconfig = import_typescript.default.parseJsonConfigFileContent(tsconfig\u5185\u5BB9.config, import_typescript.default.sys, import_node_path.default.resolve(tsconfig\u8DEF\u5F84, ".."));
@@ -71,13 +72,13 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
71
72
  let \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
72
73
  let \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF6) => {
73
74
  let \u6E90\u6587\u4EF6\u8DEF\u5F84 = import_node_path.default.normalize(\u6E90\u6587\u4EF6.fileName);
74
- if (!\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84))
75
+ if (\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84) === false)
75
76
  return false;
76
77
  let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6);
77
- if (!\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA)
78
+ if (\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA === false)
78
79
  return false;
79
- let \u7B26\u5408\u8FC7\u6EE4\u8868\u8FBE\u5F0F = new RegExp(\u6587\u4EF6\u8FC7\u6EE4\u8868\u8FBE\u5F0F || ".*").test(\u6E90\u6587\u4EF6\u8DEF\u5F84);
80
- if (!\u7B26\u5408\u8FC7\u6EE4\u8868\u8FBE\u5F0F)
80
+ let \u7B26\u5408\u8FC7\u6EE4\u8868\u8FBE\u5F0F = new RegExp(\u6587\u4EF6\u8FC7\u6EE4\u8868\u8FBE\u5F0F === "" ? ".*" : \u6587\u4EF6\u8FC7\u6EE4\u8868\u8FBE\u5F0F).test(\u6E90\u6587\u4EF6\u8DEF\u5F84);
81
+ if (\u7B26\u5408\u8FC7\u6EE4\u8868\u8FBE\u5F0F === false)
81
82
  return false;
82
83
  return true;
83
84
  });
@@ -101,8 +102,8 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
101
102
  host: {
102
103
  ...\u9879\u76EE\u4E3B\u673A,
103
104
  getSourceFile: (filename) => {
104
- let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName == filename);
105
- if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 != null)
105
+ let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName === filename) ?? null;
106
+ if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 !== null)
106
107
  return \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6;
107
108
  return \u9879\u76EE.getSourceFile(filename);
108
109
  }
@@ -117,13 +118,13 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
117
118
  if (import_typescript.default.isTypeAliasDeclaration(node) && node.name.text === "\u8BA1\u7B97\u7ED3\u679C") {
118
119
  let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
119
120
  let \u6587\u672C\u7ED3\u679C = \u7C7B\u578B\u68C0\u67E5\u5668.typeToString(type);
120
- if (\u6587\u672C\u7ED3\u679C == "true")
121
+ if (\u6587\u672C\u7ED3\u679C === "true")
121
122
  \u7ED3\u679C = true;
122
123
  }
123
124
  });
124
125
  \u68C0\u67E5\u7ED3\u679C.push(\u7ED3\u679C);
125
126
  }
126
- let \u6700\u7EC8\u7ED3\u679C = import_lodash.default.zip(\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC, \u68C0\u67E5\u7ED3\u679C).filter((a) => a[1] == true).map((a) => a[0]).filter((a) => a != null);
127
+ let \u6700\u7EC8\u7ED3\u679C = import_lodash.default.zip(\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC, \u68C0\u67E5\u7ED3\u679C).filter((a) => a[1] === true).map((a) => a[0] ?? null).filter((a) => a !== null);
127
128
  await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u6D4B\u8BD5\u7528\u4F8B`);
128
129
  let \u6700\u7EC8\u4EE3\u7801 = [
129
130
  "import { test } from 'vitest'",
@@ -136,7 +137,7 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
136
137
  ];
137
138
  await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
138
139
  let \u8F93\u51FA\u6587\u4EF6\u5939 = import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
139
- if (!import_node_fs.default.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939))
140
+ if (import_node_fs.default.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939) === false)
140
141
  import_node_fs.default.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
141
142
  import_node_fs.default.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
142
143
  await log.debug(`\u8F93\u51FA\u6587\u4EF6\u5199\u5165\u5B8C\u6210: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
@@ -33,15 +33,15 @@ __export(gen_test_exports, {
33
33
  main: () => main
34
34
  });
35
35
  module.exports = __toCommonJS(gen_test_exports);
36
+ var import_ts_log = require("@lsby/ts-log");
37
+ var import_lodash = __toESM(require("lodash"), 1);
36
38
  var import_node_crypto = require("crypto");
37
39
  var import_node_fs = __toESM(require("fs"), 1);
38
40
  var import_node_path = __toESM(require("path"), 1);
39
- var import_lodash = __toESM(require("lodash"), 1);
40
41
  var import_typescript = __toESM(require("typescript"), 1);
41
- var import_ts_log = require("@lsby/ts-log");
42
42
  function \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6) {
43
43
  for (let statement of \u6E90\u6587\u4EF6.statements) {
44
- if (import_typescript.default.isExportAssignment(statement) && statement.isExportEquals === void 0) {
44
+ if (import_typescript.default.isExportAssignment(statement) && (statement.isExportEquals ?? null) === null) {
45
45
  return true;
46
46
  }
47
47
  }
@@ -64,8 +64,9 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
64
64
  await log.debug(`\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);
65
65
  await log.debug(`\u6587\u4EF6\u8FC7\u6EE4\u8868\u8FBE\u5F0F: ${\u6587\u4EF6\u8FC7\u6EE4\u8868\u8FBE\u5F0F}`);
66
66
  let tsconfig\u5185\u5BB9 = import_typescript.default.parseConfigFileTextToJson(tsconfig\u8DEF\u5F84, import_node_fs.default.readFileSync(tsconfig\u8DEF\u5F84, "utf8"));
67
- if (tsconfig\u5185\u5BB9.error) {
68
- await log.err("\u65E0\u6CD5\u89E3\u6790 tsconfig.json", tsconfig\u5185\u5BB9.error);
67
+ let tsconfig\u5185\u5BB9\u9519\u8BEF = tsconfig\u5185\u5BB9.error ?? null;
68
+ if (tsconfig\u5185\u5BB9\u9519\u8BEF !== null) {
69
+ await log.err("\u65E0\u6CD5\u89E3\u6790 tsconfig.json", tsconfig\u5185\u5BB9\u9519\u8BEF);
69
70
  throw new Error("\u65E0\u6CD5\u89E3\u6790 tsconfig.json");
70
71
  }
71
72
  let \u89E3\u6790\u540E\u7684tsconfig = import_typescript.default.parseJsonConfigFileContent(tsconfig\u5185\u5BB9.config, import_typescript.default.sys, import_node_path.default.resolve(tsconfig\u8DEF\u5F84, ".."));
@@ -76,13 +77,13 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
76
77
  let \u6240\u6709\u6E90\u6587\u4EF6 = \u9879\u76EE.getSourceFiles();
77
78
  let \u76F8\u5173\u6E90\u6587\u4EF6\u4EEC = \u6240\u6709\u6E90\u6587\u4EF6.filter((\u6E90\u6587\u4EF6) => {
78
79
  let \u6E90\u6587\u4EF6\u8DEF\u5F84 = import_node_path.default.normalize(\u6E90\u6587\u4EF6.fileName);
79
- if (!\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84))
80
+ if (\u6E90\u6587\u4EF6\u8DEF\u5F84.includes(\u76EE\u6807\u8DEF\u5F84) === false)
80
81
  return false;
81
82
  let \u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA = \u68C0\u67E5\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA(\u6E90\u6587\u4EF6);
82
- if (!\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA)
83
+ if (\u5B58\u5728\u9ED8\u8BA4\u5BFC\u51FA === false)
83
84
  return false;
84
- let \u7B26\u5408\u8FC7\u6EE4\u8868\u8FBE\u5F0F = new RegExp(\u6587\u4EF6\u8FC7\u6EE4\u8868\u8FBE\u5F0F || ".*").test(\u6E90\u6587\u4EF6\u8DEF\u5F84);
85
- if (!\u7B26\u5408\u8FC7\u6EE4\u8868\u8FBE\u5F0F)
85
+ let \u7B26\u5408\u8FC7\u6EE4\u8868\u8FBE\u5F0F = new RegExp(\u6587\u4EF6\u8FC7\u6EE4\u8868\u8FBE\u5F0F === "" ? ".*" : \u6587\u4EF6\u8FC7\u6EE4\u8868\u8FBE\u5F0F).test(\u6E90\u6587\u4EF6\u8DEF\u5F84);
86
+ if (\u7B26\u5408\u8FC7\u6EE4\u8868\u8FBE\u5F0F === false)
86
87
  return false;
87
88
  return true;
88
89
  });
@@ -106,8 +107,8 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
106
107
  host: {
107
108
  ...\u9879\u76EE\u4E3B\u673A,
108
109
  getSourceFile: (filename) => {
109
- let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName == filename);
110
- if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 != null)
110
+ let \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 = \u4F34\u968F\u7684\u865A\u62DF\u6587\u4EF6\u4EEC.find((a) => a.fileName === filename) ?? null;
111
+ if (\u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6 !== null)
111
112
  return \u627E\u5230\u7684\u865A\u62DF\u6587\u4EF6;
112
113
  return \u9879\u76EE.getSourceFile(filename);
113
114
  }
@@ -122,13 +123,13 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
122
123
  if (import_typescript.default.isTypeAliasDeclaration(node) && node.name.text === "\u8BA1\u7B97\u7ED3\u679C") {
123
124
  let type = \u7C7B\u578B\u68C0\u67E5\u5668.getTypeAtLocation(node);
124
125
  let \u6587\u672C\u7ED3\u679C = \u7C7B\u578B\u68C0\u67E5\u5668.typeToString(type);
125
- if (\u6587\u672C\u7ED3\u679C == "true")
126
+ if (\u6587\u672C\u7ED3\u679C === "true")
126
127
  \u7ED3\u679C = true;
127
128
  }
128
129
  });
129
130
  \u68C0\u67E5\u7ED3\u679C.push(\u7ED3\u679C);
130
131
  }
131
- let \u6700\u7EC8\u7ED3\u679C = import_lodash.default.zip(\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC, \u68C0\u67E5\u7ED3\u679C).filter((a) => a[1] == true).map((a) => a[0]).filter((a) => a != null);
132
+ let \u6700\u7EC8\u7ED3\u679C = import_lodash.default.zip(\u76F8\u5173\u6E90\u6587\u4EF6\u4EEC, \u68C0\u67E5\u7ED3\u679C).filter((a) => a[1] === true).map((a) => a[0] ?? null).filter((a) => a !== null);
132
133
  await log.debug(`\u6700\u7EC8\u7B5B\u9009\u51FA ${\u6700\u7EC8\u7ED3\u679C.length} \u4E2A\u6D4B\u8BD5\u7528\u4F8B`);
133
134
  let \u6700\u7EC8\u4EE3\u7801 = [
134
135
  "import { test } from 'vitest'",
@@ -141,7 +142,7 @@ async function main(tsconfig\u8DEF\u5F84, \u76EE\u6807\u8DEF\u5F84, \u8F93\u51FA
141
142
  ];
142
143
  await log.debug("\u6700\u7EC8\u4EE3\u7801\u751F\u6210\u5B8C\u6210");
143
144
  let \u8F93\u51FA\u6587\u4EF6\u5939 = import_node_path.default.dirname(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84);
144
- if (!import_node_fs.default.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939))
145
+ if (import_node_fs.default.existsSync(\u8F93\u51FA\u6587\u4EF6\u5939) === false)
145
146
  import_node_fs.default.mkdirSync(\u8F93\u51FA\u6587\u4EF6\u5939, { recursive: true });
146
147
  import_node_fs.default.writeFileSync(\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84, \u6700\u7EC8\u4EE3\u7801.join("\n"));
147
148
  await log.debug(`\u8F93\u51FA\u6587\u4EF6\u5199\u5165\u5B8C\u6210: ${\u8F93\u51FA\u6587\u4EF6\u8DEF\u5F84}`);