@biuxiu/codegen 0.2.13 → 0.2.14

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.
@@ -2,8 +2,8 @@ import { ApiServiceField, DtoField, EntityField } from '../types';
2
2
  export declare class RenderNest {
3
3
  #private;
4
4
  constructor(name: string, path?: string);
5
- remove(): void;
6
- editAppModule(isDelete?: boolean): void;
5
+ remove(): Promise<void>;
6
+ editAppModule(isDelete?: boolean): Promise<void>;
7
7
  genModule(): Promise<void>;
8
8
  genApiService(apiService: ApiServiceField[]): Promise<void>;
9
9
  genEntity(entity: EntityField[]): Promise<void>;
package/dist/code/nest.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import xiu from "../render";
2
2
  import { join } from "path";
3
- import { reFromatFile, writeFormatFile } from "../util";
3
+ import { writeFormatFile } from "../util";
4
4
  import { existsSync, mkdirSync, statSync } from "fs";
5
5
  import { DTOFromat } from "../format/dto";
6
6
  import { EntityFormat } from "../format/entity";
@@ -44,15 +44,14 @@ class RenderNest {
44
44
  await unlink(filePath);
45
45
  }
46
46
  }
47
- rmdir(path);
47
+ await rmdir(path);
48
48
  }
49
- remove() {
49
+ async remove() {
50
50
  if (existsSync(this.#moduleDir)) {
51
- this.#deleteDir(this.#moduleDir);
51
+ await this.#deleteDir(this.#moduleDir);
52
52
  }
53
- this.editAppModule(true);
54
53
  }
55
- editAppModule(isDelete = false) {
54
+ async editAppModule(isDelete = false) {
56
55
  if (!isDelete) {
57
56
  let basePath = "";
58
57
  const apiDir = getApiDir();
@@ -131,16 +130,15 @@ class RenderNest {
131
130
  consumerStatement.replaceWithText(newText);
132
131
  }
133
132
  }
134
- await source.save();
135
- await reFromatFile(appModuleFile);
133
+ await writeFormatFile(appModuleFile, source.getFullText());
136
134
  }
137
135
  });
138
- runEditTask();
136
+ await runEditTask();
139
137
  }
140
138
  async genModule() {
141
139
  const modulePath = join(this.#moduleDir, `${this.#name}.module.ts`);
142
140
  const moduleStr = await xiu.render("module", { name: this.#name });
143
- writeFormatFile(modulePath, moduleStr);
141
+ await writeFormatFile(modulePath, moduleStr);
144
142
  }
145
143
  async genApiService(apiService) {
146
144
  const controllerPath = join(
@@ -152,24 +150,26 @@ class RenderNest {
152
150
  this.#name,
153
151
  apiService
154
152
  ).format();
155
- xiu.render("controller", {
156
- name: this.#name,
157
- importInfo: apiImport,
158
- content: apiContent
159
- }).then((controllerStr) => {
160
- writeFormatFile(controllerPath, controllerStr);
161
- });
162
153
  const [serviceImport, serviceContent] = new ServiceFormat(
163
154
  this.#name,
164
155
  apiService
165
156
  ).format();
166
- xiu.render("service", {
167
- name: this.#name,
168
- content: serviceContent,
169
- importInfo: serviceImport
170
- }).then((serviceStr) => {
171
- writeFormatFile(servicePath, serviceStr);
172
- });
157
+ const [controllerStr, serviceStr] = await Promise.all([
158
+ xiu.render("controller", {
159
+ name: this.#name,
160
+ importInfo: apiImport,
161
+ content: apiContent
162
+ }),
163
+ xiu.render("service", {
164
+ name: this.#name,
165
+ content: serviceContent,
166
+ importInfo: serviceImport
167
+ })
168
+ ]);
169
+ await Promise.all([
170
+ writeFormatFile(controllerPath, controllerStr),
171
+ writeFormatFile(servicePath, serviceStr)
172
+ ]);
173
173
  }
174
174
  async genEntity(entity) {
175
175
  const entityDir = join(this.#moduleDir, "entities");
@@ -183,7 +183,7 @@ class RenderNest {
183
183
  importInfo,
184
184
  content
185
185
  });
186
- writeFormatFile(entityPath, entityStr);
186
+ await writeFormatFile(entityPath, entityStr);
187
187
  }
188
188
  async genDto(dto) {
189
189
  const dtoPath = join(this.#moduleDir, "dto");
@@ -193,16 +193,14 @@ class RenderNest {
193
193
  const createDtoPath = join(dtoPath, `create-${this.#name}.dto.ts`);
194
194
  const updateDtoPath = join(dtoPath, `update-${this.#name}.dto.ts`);
195
195
  const [importInfo, content] = new DTOFromat(dto).format();
196
- const createDtoStr = await xiu.render("create-dto", {
197
- importInfo,
198
- name: this.#name,
199
- content
200
- });
201
- const updateDtoStr = await xiu.render("update-dto", {
202
- name: this.#name
203
- });
204
- writeFormatFile(createDtoPath, createDtoStr);
205
- writeFormatFile(updateDtoPath, updateDtoStr);
196
+ const [createDtoStr, updateDtoStr] = await Promise.all([
197
+ xiu.render("create-dto", { importInfo, name: this.#name, content }),
198
+ xiu.render("update-dto", { name: this.#name })
199
+ ]);
200
+ await Promise.all([
201
+ writeFormatFile(createDtoPath, createDtoStr),
202
+ writeFormatFile(updateDtoPath, updateDtoStr)
203
+ ]);
206
204
  }
207
205
  }
208
206
  export {
@@ -0,0 +1,11 @@
1
+ import { ApiServiceField, FieldSchema, ModuleConfig, ModuleRoute } from '@/types';
2
+ export declare class RenderVue {
3
+ #private;
4
+ constructor(name: string, path?: string);
5
+ editDir(isDelete?: boolean): Promise<void>;
6
+ setDatabase(route: ModuleRoute, isDelete?: boolean): Promise<undefined>;
7
+ genRoute(route: ModuleRoute): Promise<void>;
8
+ genVueTable({ name, comment }: ModuleConfig, fields: FieldSchema[]): Promise<void>;
9
+ genVueForm(config: ModuleConfig, fields: FieldSchema[]): Promise<void>;
10
+ genTsFile(fields: FieldSchema[], api: ApiServiceField[]): Promise<void>;
11
+ }
@@ -0,0 +1,176 @@
1
+ import { getSqliteFile, getWebDir } from "@/config";
2
+ import xiu from "@/render";
3
+ import { writeFormatFile } from "@/util";
4
+ import { existsSync, mkdirSync, statSync } from "fs";
5
+ import { readdir, rmdir, unlink } from "fs/promises";
6
+ import { join } from "path";
7
+ import Database from "better-sqlite3";
8
+ class RenderVue {
9
+ #moduleDir;
10
+ #name;
11
+ #path;
12
+ #formatPath(path) {
13
+ return path.split("/").filter((p) => p).join("/");
14
+ }
15
+ constructor(name, path) {
16
+ this.#path = path ? path.endsWith("/") ? `${this.#formatPath(path)}/${name}` : this.#formatPath(path) : name;
17
+ const webDir = getWebDir();
18
+ this.#name = name;
19
+ this.#moduleDir = join(webDir, this.#path);
20
+ }
21
+ async #deleteDir(path) {
22
+ const files = await readdir(path);
23
+ for (let i = 0; i < files.length; i++) {
24
+ const filePath = join(path, files[i]);
25
+ if (statSync(filePath).isDirectory()) {
26
+ await this.#deleteDir(filePath);
27
+ } else {
28
+ await unlink(filePath);
29
+ }
30
+ }
31
+ await rmdir(path);
32
+ }
33
+ async editDir(isDelete = false) {
34
+ if (isDelete) {
35
+ if (existsSync(this.#moduleDir)) {
36
+ await this.#deleteDir(this.#moduleDir);
37
+ }
38
+ } else {
39
+ let basePath = "";
40
+ const apiDir = getWebDir();
41
+ if (this.#path.includes("/")) {
42
+ const pathArr = this.#path.split("/");
43
+ for (let i = 0; i < pathArr.length; i++) {
44
+ const curPath = pathArr[i];
45
+ if (i === 0) {
46
+ basePath = join(apiDir, curPath);
47
+ } else {
48
+ basePath = join(basePath, curPath);
49
+ }
50
+ if (!existsSync(basePath)) {
51
+ mkdirSync(basePath);
52
+ }
53
+ }
54
+ } else {
55
+ basePath = join(apiDir, this.#path);
56
+ if (!existsSync(basePath)) {
57
+ mkdirSync(basePath);
58
+ }
59
+ }
60
+ }
61
+ }
62
+ #findIdByKey(key, select) {
63
+ const result = select.get(key);
64
+ return result ? result.id : void 0;
65
+ }
66
+ async setDatabase(route, isDelete = false) {
67
+ const sqliteFile = getSqliteFile();
68
+ if (!existsSync(sqliteFile)) {
69
+ return;
70
+ }
71
+ const db = new Database(sqliteFile);
72
+ const selectStmt = db.prepare(
73
+ `SELECT id FROM w_permission WHERE key = ?`
74
+ );
75
+ const insertStmt = db.prepare(
76
+ `INSERT INTO w_permission (title, key, description, pid) VALUES (@title, @key, @description, @pid)`
77
+ );
78
+ const deleteStmt = db.prepare(`DELETE FROM w_permission WHERE key = ?`);
79
+ const hasPremissionTbl = db.prepare(
80
+ `SELECT name FROM sqlite_master WHERE type='table' AND name=?`
81
+ ).get("w_permission");
82
+ if (!hasPremissionTbl) {
83
+ return Promise.reject("\u6743\u9650\u8868\u4E0D\u5B58\u5728");
84
+ }
85
+ const pathList = route.path.split("/").filter((p) => p);
86
+ const prefixKey = pathList.length > 1 ? "#" + pathList[0].replaceAll("-", "_") : "";
87
+ let pid = null;
88
+ if (prefixKey) {
89
+ const id = this.#findIdByKey(prefixKey, selectStmt);
90
+ if (!id) return Promise.reject(`\u7236\u7EA7\u6743\u9650${prefixKey}\u4E0D\u5B58\u5728`);
91
+ pid = id;
92
+ }
93
+ const key = "#" + pathList.join("_").replaceAll("-", "_");
94
+ let fn;
95
+ if (isDelete) {
96
+ const list = ["@add", "@update", "@delete"].map((k) => key + k);
97
+ fn = db.transaction(() => {
98
+ for (const k of list) {
99
+ deleteStmt.run(k);
100
+ }
101
+ deleteStmt.run(key);
102
+ });
103
+ } else {
104
+ const keyId = this.#findIdByKey(key, selectStmt);
105
+ if (keyId) return Promise.reject(`\u5F53\u524D\u6743\u9650${key}\u5DF2\u5B58\u5728`);
106
+ const list = [
107
+ { k: "@add", title: "\u6DFB\u52A0" },
108
+ { k: "@update", title: "\u4FEE\u6539" },
109
+ { k: "@delete", title: "\u5220\u9664" }
110
+ ].map(({ k, title }) => ({
111
+ title: title + route.title,
112
+ key: key + k,
113
+ description: title + route.title + "\u4FE1\u606F"
114
+ }));
115
+ fn = db.transaction(() => {
116
+ const { lastInsertRowid } = insertStmt.run({
117
+ key,
118
+ title: route.title,
119
+ description: `${route.title}\u9875\u9762\u67E5\u770B`,
120
+ pid
121
+ });
122
+ for (const item of list) {
123
+ insertStmt.run({ ...item, pid: lastInsertRowid });
124
+ }
125
+ });
126
+ }
127
+ try {
128
+ fn();
129
+ } catch (error) {
130
+ return Promise.reject(error);
131
+ }
132
+ }
133
+ async genRoute(route) {
134
+ const filePath = join(this.#moduleDir, "meta.json");
135
+ const source = await xiu.render("route-mata", route);
136
+ await writeFormatFile(filePath, source, "json");
137
+ }
138
+ async genVueTable({ name, comment }, fields) {
139
+ const filePath = join(this.#moduleDir, "index.vue");
140
+ const source = await xiu.render("index-vue", {
141
+ name,
142
+ comment,
143
+ fields
144
+ });
145
+ await writeFormatFile(filePath, source, "vue");
146
+ }
147
+ async genVueForm(config, fields) {
148
+ const filePath = join(this.#moduleDir, "form.vue");
149
+ const source = await xiu.render("form-vue", {
150
+ name: config.name,
151
+ comment: config.comment,
152
+ fields: fields.map((f) => ({
153
+ ...f,
154
+ isNumber: f.type === "number",
155
+ isString: f.type === "string"
156
+ }))
157
+ });
158
+ await writeFormatFile(filePath, source, "vue");
159
+ }
160
+ async genTsFile(fields, api) {
161
+ const apiMathods = api.map((a) => a.key);
162
+ const filePath = join(this.#moduleDir, "fetch-type.ts");
163
+ const source = await xiu.render("fetch-type", {
164
+ name: this.#name,
165
+ filedList: fields,
166
+ add: apiMathods.includes("add"),
167
+ delete: apiMathods.includes("delete"),
168
+ all: apiMathods.includes("all"),
169
+ update: apiMathods.includes("update")
170
+ });
171
+ await writeFormatFile(filePath, source);
172
+ }
173
+ }
174
+ export {
175
+ RenderVue
176
+ };
package/dist/config.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  declare const CodegenConfig: {
2
2
  webDir: string;
3
3
  apiDir: string;
4
+ sqliteFile: string;
4
5
  reverse: boolean;
5
6
  };
6
7
  export type ConfigType = Omit<Partial<typeof CodegenConfig>, 'reverse'>;
@@ -8,5 +9,6 @@ export declare function setConfig(config: ConfigType): void;
8
9
  export declare const setReverse: (reverse: boolean) => boolean;
9
10
  export declare const getWebDir: () => string;
10
11
  export declare const getApiDir: () => string;
12
+ export declare const getSqliteFile: () => string;
11
13
  export declare const isReverse: () => boolean;
12
14
  export {};
package/dist/config.js CHANGED
@@ -2,6 +2,7 @@ import { resolve } from "path";
2
2
  const CodegenConfig = {
3
3
  webDir: resolve(__dirname, ".."),
4
4
  apiDir: resolve(__dirname, ".."),
5
+ sqliteFile: resolve(__dirname, "..", "admin.db"),
5
6
  reverse: false
6
7
  };
7
8
  function setConfig(config) {
@@ -11,13 +12,18 @@ function setConfig(config) {
11
12
  if (config.apiDir) {
12
13
  CodegenConfig.apiDir = config.apiDir;
13
14
  }
15
+ if (config.sqliteFile) {
16
+ CodegenConfig.sqliteFile = config.sqliteFile;
17
+ }
14
18
  }
15
19
  const setReverse = (reverse) => CodegenConfig.reverse = reverse;
16
20
  const getWebDir = () => CodegenConfig.webDir;
17
21
  const getApiDir = () => CodegenConfig.apiDir;
22
+ const getSqliteFile = () => CodegenConfig.sqliteFile;
18
23
  const isReverse = () => CodegenConfig.reverse;
19
24
  export {
20
25
  getApiDir,
26
+ getSqliteFile,
21
27
  getWebDir,
22
28
  isReverse,
23
29
  setConfig,
package/dist/gen-type.js CHANGED
@@ -3,14 +3,14 @@ import { writeFormatFile } from "./util";
3
3
  import { existsSync, mkdirSync } from "fs";
4
4
  import { readFile, writeFile } from "fs/promises";
5
5
  const genLuaTypes = async (path) => {
6
- const types = ["base", "nest", "vue"];
6
+ const types = ["api", "base", "dto", "orm"];
7
7
  const vscodePath = join(path, ".vscode");
8
8
  if (!existsSync(vscodePath)) {
9
9
  mkdirSync(vscodePath);
10
10
  }
11
11
  const moveList = types.map((t) => ({
12
12
  writePath: join(vscodePath, `${t}-type.lua`),
13
- readPath: resolve(__dirname, `../sources/${t}-type.txt`)
13
+ readPath: resolve(__dirname, `../sources/${t}-type.lua`)
14
14
  }));
15
15
  moveList.forEach((m) => {
16
16
  if (!existsSync(m.writePath)) {
@@ -27,7 +27,7 @@ const genLuaTypes = async (path) => {
27
27
  settionObj["Lua.workspace.library"] = types.map(
28
28
  (t) => `.vscode/${t}-type.lua`
29
29
  );
30
- writeFormatFile(settingPath, JSON.stringify(settionObj), true);
30
+ writeFormatFile(settingPath, JSON.stringify(settionObj), "json");
31
31
  }
32
32
  } else {
33
33
  writeFormatFile(
@@ -35,7 +35,7 @@ const genLuaTypes = async (path) => {
35
35
  JSON.stringify({
36
36
  "Lua.workspace.library": types.map((t) => `.vscode/${t}-type.lua`)
37
37
  }),
38
- true
38
+ "json"
39
39
  );
40
40
  }
41
41
  };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
- import { genLuaTypes } from './gen-type';
2
1
  import { ConfigType } from './config';
3
- declare const startGen: (filePath: string, config?: ConfigType) => Promise<undefined>;
4
- declare const startRemove: (filePath: string, config?: ConfigType) => Promise<undefined>;
5
- export { startGen, startRemove, genLuaTypes };
2
+ declare const _default: {
3
+ startGen: (filePath: string, config?: ConfigType | undefined) => Promise<undefined>;
4
+ startRemove: (filePath: string, config?: ConfigType | undefined) => Promise<undefined>;
5
+ genLuaTypes: (path: string) => Promise<void>;
6
+ };
7
+ export default _default;
package/dist/index.js CHANGED
@@ -2,29 +2,30 @@ import { compileToByte } from "./compile";
2
2
  import { existsSync } from "fs";
3
3
  import { genLuaTypes } from "./gen-type";
4
4
  import { setConfig, setReverse } from "./config";
5
- async function startRun(filePath, isDelete, config) {
6
- if (config) setConfig(config);
7
- setReverse(isDelete);
8
- if (existsSync(filePath)) {
9
- try {
10
- const data = await compileToByte(filePath);
11
- const { run } = await import("./lua_codegen");
5
+ import { runTask } from "./task";
6
+ function startRun(isDelete) {
7
+ return async function(filePath, config) {
8
+ if (config) setConfig(config);
9
+ setReverse(isDelete);
10
+ if (existsSync(filePath)) {
11
+ try {
12
+ const data = await compileToByte(filePath);
13
+ const { run } = await import("./lua_codegen");
12
14
  run(new Uint8Array(data), filePath);
13
- } catch (error) {
14
- return Promise.reject(error);
15
+ await runTask();
16
+ } catch (error) {
17
+ return Promise.reject(error);
18
+ }
19
+ } else {
20
+ return Promise.reject(`${filePath}\u6587\u4EF6\u5B58\u5728`);
15
21
  }
16
- } else {
17
- return Promise.reject(`${filePath}\u6587\u4EF6\u5B58\u5728`);
18
- }
22
+ };
19
23
  }
20
- const startGen = (filePath, config) => {
21
- return startRun(filePath, false, config);
22
- };
23
- const startRemove = (filePath, config) => {
24
- return startRun(filePath, true, config);
24
+ var src_default = {
25
+ startGen: startRun(false),
26
+ startRemove: startRun(true),
27
+ genLuaTypes
25
28
  };
26
29
  export {
27
- genLuaTypes,
28
- startGen,
29
- startRemove
30
+ src_default as default
30
31
  };
@@ -1,16 +1,22 @@
1
+ import { setTask } from "../task";
1
2
  import { RenderNest } from "../code/nest";
2
3
  import { isReverse } from "../config";
3
4
  function renderNestCode(config, entity, dto, apiService) {
4
- const api = new RenderNest(config.name, config.path);
5
- if (isReverse()) {
6
- api.remove();
7
- return;
8
- }
9
- api.editAppModule();
10
- api.genModule();
11
- api.genDto(dto);
12
- api.genEntity(entity);
13
- api.genApiService(apiService);
5
+ setTask(async () => {
6
+ const api = new RenderNest(config.name, config.path);
7
+ if (isReverse()) {
8
+ await Promise.all([api.remove(), api.editAppModule(true)]);
9
+ } else {
10
+ await Promise.all([
11
+ api.editAppModule(),
12
+ api.genModule(),
13
+ api.genDto(dto),
14
+ api.genEntity(entity),
15
+ api.genApiService(apiService)
16
+ ]);
17
+ }
18
+ console.log("lib end>>>");
19
+ });
14
20
  }
15
21
  export {
16
22
  renderNestCode
package/dist/libs.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ import { ApiServiceField, DtoField, EntityField, FieldSchema, ModuleConfig, ModuleRoute } from './types';
2
+ export declare function renderNestCode(config: {
3
+ name: string;
4
+ path?: string;
5
+ }, entity: EntityField[], dto: DtoField[], apiService: ApiServiceField[]): void;
6
+ type FieldTuple = [string, FieldSchema['type'], string];
7
+ export declare function renderVueCode(config: ModuleConfig, route: ModuleRoute, fieldList: FieldTuple[], api: ApiServiceField[]): void;
8
+ export declare function printToNode(info: any): void;
9
+ export {};
package/dist/libs.js ADDED
@@ -0,0 +1,51 @@
1
+ import { setTask } from "./task";
2
+ import { RenderNest } from "./code/nest";
3
+ import { isReverse } from "./config";
4
+ import { RenderVue } from "./code/vue";
5
+ function renderNestCode(config, entity, dto, apiService) {
6
+ setTask(async () => {
7
+ const nest = new RenderNest(config.name, config.path);
8
+ if (isReverse()) {
9
+ await Promise.all([nest.remove(), nest.editAppModule(true)]);
10
+ } else {
11
+ await nest.editAppModule();
12
+ await Promise.all([
13
+ nest.genModule(),
14
+ nest.genDto(dto),
15
+ nest.genEntity(entity),
16
+ nest.genApiService(apiService)
17
+ ]);
18
+ }
19
+ });
20
+ }
21
+ function renderVueCode(config, route, fieldList, api) {
22
+ setTask(async () => {
23
+ const fields = fieldList.map(([key, type, comment]) => ({
24
+ key,
25
+ type,
26
+ comment
27
+ }));
28
+ const vue = new RenderVue(config.name, config.path);
29
+ if (isReverse()) {
30
+ vue.editDir(true);
31
+ vue.setDatabase(route, true);
32
+ } else {
33
+ await vue.editDir();
34
+ await Promise.all([
35
+ vue.setDatabase(route),
36
+ vue.genTsFile(fields, api),
37
+ vue.genRoute(route),
38
+ vue.genVueForm(config, fields),
39
+ vue.genVueTable(config, fields)
40
+ ]);
41
+ }
42
+ });
43
+ }
44
+ function printToNode(info) {
45
+ console.log(info);
46
+ }
47
+ export {
48
+ printToNode,
49
+ renderNestCode,
50
+ renderVueCode
51
+ };
@@ -1,6 +1,4 @@
1
- import { printToNode } from './libs';
2
- import { renderNestCode } from './libs/nest-lib';
3
- import { genWebCode } from './libs/vue-lib';
1
+ import { printToNode, renderNestCode, renderVueCode } from './libs';
4
2
 
5
3
  let wasm;
6
4
  export function __wbg_set_wasm(val) {
@@ -146,12 +144,12 @@ export function __wbindgen_object_drop_ref(arg0) {
146
144
  takeObject(arg0);
147
145
  };
148
146
 
149
- export function __wbg_renderNestCode_ba91730cbcd316b3(arg0, arg1, arg2, arg3) {
147
+ export function __wbg_renderNestCode_786f8dedd18b6a00(arg0, arg1, arg2, arg3) {
150
148
  renderNestCode(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));
151
149
  };
152
150
 
153
- export function __wbg_genWebCode_2826bcda9a2b9845(arg0, arg1, arg2) {
154
- genWebCode(getStringFromWasm0(arg0, arg1), getObject(arg2));
151
+ export function __wbg_renderVueCode_cd8438a75c2a320e(arg0, arg1, arg2, arg3) {
152
+ renderVueCode(getObject(arg0), getObject(arg1), getObject(arg2), getObject(arg3));
155
153
  };
156
154
 
157
155
  export function __wbg_printToNode_f8646f4da26c5023(arg0) {
Binary file
package/dist/render.js CHANGED
@@ -2,10 +2,7 @@ import { XiuTemplate } from "@biuxiu/template";
2
2
  import { resolve } from "path";
3
3
  const basePath = resolve(__dirname, "..");
4
4
  const xiu = new XiuTemplate(basePath);
5
- xiu.install(() => ({
6
- name: "up",
7
- fn: (val) => val[0].toUpperCase() + val.slice(1)
8
- }));
5
+ xiu.install(["up", (val) => val[0].toUpperCase() + val.slice(1)]);
9
6
  var render_default = xiu;
10
7
  export {
11
8
  render_default as default
package/dist/task.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ type TaskFn = {
2
+ (): Promise<void>;
3
+ };
4
+ export declare function setTask(fn: TaskFn): void;
5
+ export declare function runTask(): Promise<void[]>;
6
+ export {};
package/dist/task.js ADDED
@@ -0,0 +1,16 @@
1
+ const TaskQueue = [];
2
+ function setTask(fn) {
3
+ TaskQueue.push(fn);
4
+ }
5
+ function runTask() {
6
+ const currentTask = [];
7
+ for (let i = 0; i < TaskQueue.length; i++) {
8
+ const fn = TaskQueue[i];
9
+ currentTask.push(fn);
10
+ }
11
+ return Promise.all(currentTask.map((f) => f()));
12
+ }
13
+ export {
14
+ runTask,
15
+ setTask
16
+ };
package/dist/types.d.ts CHANGED
@@ -1,7 +1,18 @@
1
- type FieldSchema = {
1
+ export type FieldSchema = {
2
2
  key: string;
3
+ comment: string;
3
4
  type: 'string' | 'number' | 'bool';
4
5
  };
6
+ export interface ModuleConfig {
7
+ name: string;
8
+ comment: string;
9
+ path?: string;
10
+ }
11
+ export interface ModuleRoute {
12
+ path: string;
13
+ icon: string;
14
+ title: string;
15
+ }
5
16
  export type DtoField = FieldSchema & {
6
17
  isOptional?: boolean;
7
18
  limit?: {
@@ -15,7 +26,6 @@ export type DtoField = FieldSchema & {
15
26
  };
16
27
  export type EntityField = FieldSchema & {
17
28
  isExclude?: true;
18
- comment?: string;
19
29
  length?: number;
20
30
  nullable?: true;
21
31
  name?: string;
@@ -26,4 +36,3 @@ export type ApiServiceField = {
26
36
  interceptor?: true;
27
37
  noAuth?: true;
28
38
  };
29
- export {};
package/dist/util.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const reFromatFile: (filePath: string) => Promise<void>;
2
- export declare const writeFormatFile: (filePath: string, content: string, isJson?: boolean) => Promise<void>;
1
+ import { BuiltInParserName, LiteralUnion } from 'prettier';
2
+ export declare const writeFormatFile: (filePath: string, content: string, parser?: LiteralUnion<BuiltInParserName>) => Promise<undefined>;
package/dist/util.js CHANGED
@@ -1,23 +1,22 @@
1
- import { readFile, writeFile } from "fs/promises";
2
- import { format, resolveConfig, resolveConfigFile } from "prettier";
3
- const reFromatFile = async (filePath) => {
4
- const content = await readFile(filePath, "utf-8");
5
- await writeFormatFile(filePath, content);
6
- };
7
- const writeFormatFile = async (filePath, content, isJson = false) => {
1
+ import { writeFile } from "fs/promises";
2
+ import {
3
+ format,
4
+ resolveConfig,
5
+ resolveConfigFile
6
+ } from "prettier";
7
+ const writeFormatFile = async (filePath, content, parser = "typescript") => {
8
8
  try {
9
9
  const file = await resolveConfigFile(filePath);
10
10
  const config = file ? await resolveConfig(file) : {};
11
11
  const formatText = await format(content, {
12
12
  ...config,
13
- parser: isJson ? "json" : "typescript"
13
+ parser
14
14
  });
15
15
  await writeFile(filePath, formatText);
16
16
  } catch (error) {
17
- console.log(error);
17
+ return Promise.reject(error);
18
18
  }
19
19
  };
20
20
  export {
21
- reFromatFile,
22
21
  writeFormatFile
23
22
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@biuxiu/codegen",
3
- "version": "0.2.13",
3
+ "version": "0.2.14",
4
4
  "description": "代码生成工具",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -19,6 +19,7 @@
19
19
  "license": "ISC",
20
20
  "devDependencies": {
21
21
  "@biuxiu/publish": "^1.2.11",
22
+ "@types/better-sqlite3": "^7.6.11",
22
23
  "@types/node": "^20.14.2",
23
24
  "@types/shelljs": "^0.8.15",
24
25
  "esbuild": "^0.21.5",
@@ -28,8 +29,8 @@
28
29
  "typescript": "^5.4.5"
29
30
  },
30
31
  "dependencies": {
31
- "@biuxiu/template": "^1.2.3",
32
- "module-alias": "^2.2.3",
32
+ "@biuxiu/template": "^1.5.2",
33
+ "better-sqlite3": "^11.1.2",
33
34
  "prettier": "^3.3.2",
34
35
  "ts-morph": "^22.0.0"
35
36
  }