vome-core 0.0.16 → 0.0.18

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 (45) hide show
  1. package/dist/admin/api/client.js +2 -0
  2. package/dist/admin/config/plugin-dev.js +1 -1
  3. package/dist/admin/crud/config.js +1 -1
  4. package/dist/admin/crud/confirm.js +1 -1
  5. package/dist/admin/crud/dict.js +1 -1
  6. package/dist/admin/crud/index.js +1 -1
  7. package/dist/admin/crud/key.js +1 -1
  8. package/dist/admin/crud/mitt.js +1 -1
  9. package/dist/admin/crud/plugins.js +1 -1
  10. package/dist/admin/crud/span.js +1 -1
  11. package/dist/admin/crud/style.js +1 -1
  12. package/dist/admin/crud/validate.js +1 -1
  13. package/dist/admin/directives/perm.js +1 -1
  14. package/dist/admin/hooks/useUpload.js +1 -1
  15. package/dist/admin/hooks/useVome.d.ts +3 -1
  16. package/dist/admin/lib/browser.js +1 -1
  17. package/dist/admin/lib/cn.js +1 -1
  18. package/dist/admin/lib/dialog-float.js +1 -1
  19. package/dist/admin/lib/eps.d.ts +2 -11
  20. package/dist/admin/lib/eps.js +7 -33
  21. package/dist/admin/lib/menu.js +1 -1
  22. package/dist/admin/lib/tree.js +1 -1
  23. package/dist/admin/lib/upload.js +1 -1
  24. package/dist/admin/service/base.d.ts +2 -27
  25. package/dist/admin/service/base.js +1 -76
  26. package/dist/admin/service/index.d.ts +10 -16
  27. package/dist/admin/service/index.js +31 -259
  28. package/dist/client/base.d.ts +28 -0
  29. package/dist/client/base.js +77 -0
  30. package/dist/client/configure.d.ts +9 -0
  31. package/dist/client/configure.js +10 -0
  32. package/dist/client/eps.d.ts +12 -0
  33. package/dist/client/eps.js +42 -0
  34. package/dist/client/index.d.ts +4 -0
  35. package/dist/client/index.js +22 -0
  36. package/dist/client/service.d.ts +31 -0
  37. package/dist/client/service.js +299 -0
  38. package/dist/client/vite-plugin-eps.d.ts +42 -0
  39. package/dist/client/vite-plugin-eps.js +266 -0
  40. package/dist/index.js +1 -1
  41. package/dist/server/index.js +1 -1
  42. package/dist/shared/index.js +1 -1
  43. package/dist/shared/tree.js +1 -1
  44. package/package.json +46 -4
  45. package/typings/admin/comm/eps.d.ts +48 -0
@@ -0,0 +1,266 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ function toCamel(str) {
4
+ return str.replace(/([^-])(?:-+([^-]))/g, (_m, a, b) => a + String(b).toUpperCase());
5
+ }
6
+ function toPascal(str) {
7
+ const c = toCamel(str);
8
+ return c ? c[0].toUpperCase() + c.slice(1) : "Entity";
9
+ }
10
+ function methodName(p) {
11
+ return p.replace(/^\//, "").replace(/[:,\s/-]/g, "");
12
+ }
13
+ function tsType(col) {
14
+ const t = String(col.type || "string").toLowerCase();
15
+ if (["int", "integer", "bigint", "number", "float", "double", "decimal"].some((x) => t.includes(x)))
16
+ return "number";
17
+ if (["bool", "boolean"].some((x) => t.includes(x)))
18
+ return "boolean";
19
+ if (t.includes("json") || t.includes("array"))
20
+ return "any";
21
+ return "string";
22
+ }
23
+ export function buildEpsDts(map, side) {
24
+ const list = Object.values(map).flat().filter((e) => e.prefix);
25
+ const entityBlocks = [];
26
+ const serviceBlocks = [];
27
+ const tree = {};
28
+ const sideRe = new RegExp(`^${side}/?`);
29
+ for (const e of list) {
30
+ const prefix = e.prefix.replace(/^\//, "");
31
+ const parts = prefix.replace(sideRe, "").split("/").filter(Boolean);
32
+ const leaf = parts[parts.length - 1] || "index";
33
+ const entityName = e.name && e.name.endsWith("Entity") ? e.name : `${toPascal(parts.join("_") || leaf)}Entity`;
34
+ const serviceName = toPascal(parts.join("_") || leaf);
35
+ const cols = [...e.columns || [], ...e.pageColumns || []];
36
+ const seen = new Set;
37
+ const fields = cols.filter((c) => c.propertyName && !seen.has(c.propertyName) && seen.add(c.propertyName)).map((c) => {
38
+ const comment = c.comment ? ` /** ${c.comment} */
39
+ ` : "";
40
+ return `${comment} ${c.propertyName}?: ${tsType(c)};`;
41
+ }).join(`
42
+
43
+ `);
44
+ entityBlocks.push(` interface ${entityName} {
45
+ ${fields || "\t\tid?: number;"}
46
+
47
+ [key: string]: any;
48
+ }`);
49
+ const apis = e.api || [];
50
+ const methods = new Map;
51
+ for (const a of apis) {
52
+ const n = methodName(a.path || "");
53
+ if (!n || /[-:]/.test(n))
54
+ continue;
55
+ const sum = a.summary ? ` /** ${a.summary} */
56
+ ` : "";
57
+ if (n === "page") {
58
+ methods.set(n, `${sum} page(data?: any): Promise<{ list: ${entityName}[]; pagination: { page: number; size: number; total: number } }>;`);
59
+ } else if (n === "list") {
60
+ methods.set(n, `${sum} list(data?: any): Promise<${entityName}[]>;`);
61
+ } else if (n === "info") {
62
+ methods.set(n, `${sum} info(data?: { id: number | string }): Promise<${entityName}>;`);
63
+ } else {
64
+ methods.set(n, `${sum} ${n}(data?: any): Promise<any>;`);
65
+ }
66
+ }
67
+ for (const n of ["page", "list", "info", "add", "update", "delete", "restore"]) {
68
+ if (methods.has(n))
69
+ continue;
70
+ if (n === "page")
71
+ methods.set(n, ` page(data?: any): Promise<{ list: ${entityName}[]; pagination: { page: number; size: number; total: number } }>;`);
72
+ else if (n === "list")
73
+ methods.set(n, ` list(data?: any): Promise<${entityName}[]>;`);
74
+ else if (n === "info")
75
+ methods.set(n, ` info(data?: { id: number | string }): Promise<${entityName}>;`);
76
+ else
77
+ methods.set(n, ` ${n}(data?: any): Promise<any>;`);
78
+ }
79
+ const permKeys = [...methods.keys()];
80
+ serviceBlocks.push(` interface ${serviceName} {
81
+ ${[...methods.values()].join(`
82
+
83
+ `)}
84
+
85
+ namespace: string;
86
+ permission: { ${permKeys.map((k) => `${k}: string`).join("; ")} };
87
+ _permission: { ${permKeys.map((k) => `${k}: boolean`).join("; ")} };
88
+ request: Eps.Request;
89
+ }`);
90
+ let node = tree;
91
+ for (let i = 0;i < parts.length; i++) {
92
+ const key = toCamel(parts[i]);
93
+ if (i === parts.length - 1) {
94
+ node[key] = serviceName;
95
+ } else {
96
+ if (!node[key] || typeof node[key] === "string")
97
+ node[key] = {};
98
+ node = node[key];
99
+ }
100
+ }
101
+ }
102
+ function renderTree(n, indent = 2) {
103
+ const pad = "\t".repeat(indent);
104
+ return Object.entries(n).map(([k, v]) => {
105
+ if (typeof v === "string")
106
+ return `${pad}${k}: ${v};`;
107
+ return `${pad}${k}: {
108
+ ${renderTree(v, indent + 1)}
109
+ ${pad}};`;
110
+ }).join(`
111
+ `);
112
+ }
113
+ return `declare namespace Eps {
114
+ type RequestOptions = {
115
+ url?: string;
116
+ method?: string;
117
+ data?: any;
118
+ params?: any;
119
+ [key: string]: any;
120
+ };
121
+
122
+ type Request = (options?: RequestOptions) => Promise<any>;
123
+
124
+ ${entityBlocks.join(`
125
+
126
+ `)}
127
+
128
+ ${serviceBlocks.join(`
129
+
130
+ `)}
131
+
132
+ type Service = {
133
+ request: Request;
134
+ ${renderTree(tree)}
135
+ };
136
+ }
137
+ `;
138
+ }
139
+ async function fetchEps(apiUrl) {
140
+ try {
141
+ const res = await fetch(apiUrl, { signal: AbortSignal.timeout(5000) });
142
+ const json = await res.json();
143
+ if (json?.code === 1000 && json.data && Object.keys(json.data).length) {
144
+ return json.data;
145
+ }
146
+ } catch {}
147
+ return null;
148
+ }
149
+ const SKIP_HOT = ["eps.json", "eps.d.ts", "node_modules", "/dist/", "/build/"];
150
+ export function createEpsVitePlugin(options = {}) {
151
+ const sideMode = options.side ?? "app";
152
+ const dtsSide = options.dtsSide ?? (sideMode === "both" ? "admin" : sideMode);
153
+ const apiBase = (options.apiBase || "http://127.0.0.1:3001").replace(/\/$/, "");
154
+ let root = "";
155
+ let bootOk = false;
156
+ let bootTried = false;
157
+ let timer = null;
158
+ let running = null;
159
+ async function generate(reason = "start") {
160
+ if (!root)
161
+ return { changed: false };
162
+ if (bootTried && reason === "start")
163
+ return { changed: false };
164
+ const distDir = path.resolve(root, options.dist || "build");
165
+ const dtsPath = path.resolve(root, options.dts || "typings/eps.d.ts");
166
+ const jsonPath = path.join(distDir, "eps.json");
167
+ const needAdmin = sideMode === "admin" || sideMode === "both";
168
+ const needApp = sideMode === "app" || sideMode === "both";
169
+ const [adminMap, appMap] = await Promise.all([
170
+ needAdmin ? fetchEps(`${apiBase}/admin/base/open/eps`) : Promise.resolve(null),
171
+ needApp ? fetchEps(`${apiBase}/app/base/open/eps`) : Promise.resolve(null)
172
+ ]);
173
+ let bundle = null;
174
+ if (adminMap || appMap) {
175
+ bundle = { admin: adminMap || {}, app: appMap || {} };
176
+ } else if (reason !== "hot") {
177
+ try {
178
+ const raw = JSON.parse(fs.readFileSync(jsonPath, "utf8"));
179
+ if (raw.admin || raw.app) {
180
+ bundle = { admin: raw.admin || {}, app: raw.app || {} };
181
+ } else {
182
+ bundle = {
183
+ admin: dtsSide === "admin" ? raw : {},
184
+ app: dtsSide === "app" ? raw : {}
185
+ };
186
+ }
187
+ } catch {
188
+ bundle = null;
189
+ }
190
+ }
191
+ const mapForDts = dtsSide === "admin" ? bundle?.admin : bundle?.app;
192
+ if (!bundle || !mapForDts || !Object.keys(mapForDts).length) {
193
+ if (reason === "start") {
194
+ console.warn("[vome-eps] skip generate (no data), will retry once");
195
+ } else if (reason === "retry") {
196
+ console.warn("[vome-eps] skip generate (no data)");
197
+ }
198
+ if (reason === "start" || reason === "retry")
199
+ bootTried = true;
200
+ return { changed: false };
201
+ }
202
+ const dts = buildEpsDts(mapForDts, dtsSide);
203
+ const json = JSON.stringify(bundle, null, 2);
204
+ fs.mkdirSync(distDir, { recursive: true });
205
+ fs.mkdirSync(path.dirname(dtsPath), { recursive: true });
206
+ let changed = true;
207
+ try {
208
+ changed = fs.readFileSync(dtsPath, "utf8") !== dts || fs.readFileSync(jsonPath, "utf8") !== json;
209
+ } catch {
210
+ changed = true;
211
+ }
212
+ if (changed) {
213
+ fs.writeFileSync(jsonPath, json);
214
+ fs.writeFileSync(dtsPath, dts);
215
+ console.log(`[vome-eps] updated ${options.dts || "typings/eps.d.ts"} (${dtsSide})`);
216
+ }
217
+ bootOk = true;
218
+ bootTried = true;
219
+ return { changed };
220
+ }
221
+ function scheduleHot(send) {
222
+ if (timer)
223
+ clearTimeout(timer);
224
+ timer = setTimeout(() => {
225
+ timer = null;
226
+ const run = running ??= generate("hot").finally(() => {
227
+ running = null;
228
+ });
229
+ run.then(({ changed }) => {
230
+ if (!changed)
231
+ return;
232
+ send({ type: "custom", event: "eps-update", data: { changed: true } });
233
+ });
234
+ }, 400);
235
+ }
236
+ return {
237
+ name: "vome-eps",
238
+ configResolved(cfg) {
239
+ root = cfg.root;
240
+ },
241
+ async buildStart() {
242
+ await generate("start");
243
+ },
244
+ async configureServer(server) {
245
+ if (!bootOk) {
246
+ setTimeout(() => void generate("retry"), 3000);
247
+ }
248
+ server.middlewares.use((req, _res, next) => {
249
+ if (req.url === "/@vite/client") {
250
+ scheduleHot((payload) => {
251
+ (server.hot || server.ws).send(payload);
252
+ });
253
+ }
254
+ next();
255
+ });
256
+ },
257
+ handleHotUpdate({ file, server }) {
258
+ const f = file.replace(/\\/g, "/");
259
+ if (SKIP_HOT.some((x) => f.includes(x)))
260
+ return;
261
+ scheduleHot((payload) => {
262
+ (server.hot || server.ws).send(payload);
263
+ });
264
+ }
265
+ };
266
+ }
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- const _0x4966fe=_0x6882;(function(_0x4bc565,_0x50d073){const _0x21dedb=_0x6882,_0x377120=_0x4bc565();while(!![]){try{const _0x5ebd89=-parseInt(_0x21dedb(0x117))/0x1*(-parseInt(_0x21dedb(0x124))/0x2)+parseInt(_0x21dedb(0x13f))/0x3+-parseInt(_0x21dedb(0x14c))/0x4+-parseInt(_0x21dedb(0x128))/0x5*(parseInt(_0x21dedb(0x135))/0x6)+parseInt(_0x21dedb(0x11f))/0x7+parseInt(_0x21dedb(0x139))/0x8*(parseInt(_0x21dedb(0x136))/0x9)+-parseInt(_0x21dedb(0x115))/0xa;if(_0x5ebd89===_0x50d073)break;else _0x377120['push'](_0x377120['shift']());}catch(_0x371e51){_0x377120['push'](_0x377120['shift']());}}}(_0x4abf,0x3274e));function merge(_0x475283,_0x51a2f5){const _0x3b6592=_0x6882,_0x4a74ed={..._0x475283};for(const _0x145a24 of Object['keys'](_0x51a2f5)){const _0x293849=_0x4a74ed[_0x145a24],_0x445a32=_0x51a2f5[_0x145a24];if(_0x293849&&_0x445a32&&typeof _0x293849===_0x3b6592(0x145)&&typeof _0x445a32===_0x3b6592(0x145)&&!Array[_0x3b6592(0x138)](_0x293849)&&!Array[_0x3b6592(0x138)](_0x445a32)){_0x4a74ed[_0x145a24]=merge(_0x293849,_0x445a32);continue;}_0x4a74ed[_0x145a24]=_0x445a32;}return _0x4a74ed;}function deepTree(_0x56c521,_0x4a8ffc=_0x4966fe(0x12c)){const _0x4c499d=_0x4966fe,_0x2238c3=new Map();for(const _0x3775b0 of _0x56c521){if(_0x3775b0['id']==null)continue;_0x2238c3['set'](_0x3775b0['id'],{..._0x3775b0,'children':[]});}const _0x1e51c7=[];for(const _0x344a5e of _0x2238c3[_0x4c499d(0x142)]()){const _0x22b02f=_0x344a5e[_0x4c499d(0x14e)];_0x22b02f!=null&&_0x22b02f!==''&&_0x2238c3['has'](_0x22b02f)?_0x2238c3[_0x4c499d(0x10c)](_0x22b02f)[_0x4c499d(0x147)]['push'](_0x344a5e):_0x1e51c7['push'](_0x344a5e);}const _0x496057=_0xd417fd=>{const _0x3c9ddc=_0x4c499d;_0xd417fd[_0x3c9ddc(0x118)]((_0x585b70,_0x36d845)=>{const _0x19b67e=_0x3c9ddc,_0x593b13=_0x585b70[_0x19b67e(0x130)]??0x0,_0x4d2b2e=_0x36d845[_0x19b67e(0x130)]??0x0,_0x3164c3=_0x4a8ffc===_0x19b67e(0x129)?_0x4d2b2e-_0x593b13:_0x593b13-_0x4d2b2e;return _0x3164c3||Number(_0x585b70['id'])-Number(_0x36d845['id']);});for(const _0x5640e8 of _0xd417fd)if(_0x5640e8[_0x3c9ddc(0x147)]?.[_0x3c9ddc(0x144)])_0x496057(_0x5640e8[_0x3c9ddc(0x147)]);};return _0x496057(_0x1e51c7),_0x1e51c7;}function flattenTree(_0x4ffe6a,_0x30592c,_0x1d5bb0=0x0,_0x53fcec=[]){const _0x3c27e3=_0x4966fe;for(const _0x3254f4 of _0x4ffe6a){const _0x1b079d=_0x3254f4[_0x3c27e3(0x147)]||[];_0x53fcec['push']({..._0x3254f4,'depth':_0x1d5bb0,'hasChildren':_0x1b079d[_0x3c27e3(0x144)]>0x0});if(_0x1b079d['length']&&_0x30592c[_0x3c27e3(0x11e)](_0x3254f4['id']))flattenTree(_0x1b079d,_0x30592c,_0x1d5bb0+0x1,_0x53fcec);}return _0x53fcec;}function _0x6882(_0x170a75,_0x184c35){_0x170a75=_0x170a75-0x10c;const _0x4abfb9=_0x4abf();let _0x68828=_0x4abfb9[_0x170a75];if(_0x6882['olQqWL']===undefined){var _0x20d0ad=function(_0x546f65){const _0x30399f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x475283='',_0x51a2f5='';for(let _0x4a74ed=0x0,_0x145a24,_0x293849,_0x445a32=0x0;_0x293849=_0x546f65['charAt'](_0x445a32++);~_0x293849&&(_0x145a24=_0x4a74ed%0x4?_0x145a24*0x40+_0x293849:_0x293849,_0x4a74ed++%0x4)?_0x475283+=String['fromCharCode'](0xff&_0x145a24>>(-0x2*_0x4a74ed&0x6)):0x0){_0x293849=_0x30399f['indexOf'](_0x293849);}for(let _0x56c521=0x0,_0x4a8ffc=_0x475283['length'];_0x56c521<_0x4a8ffc;_0x56c521++){_0x51a2f5+='%'+('00'+_0x475283['charCodeAt'](_0x56c521)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x51a2f5);};_0x6882['ZUHiyf']=_0x20d0ad,_0x6882['poxUpt']={},_0x6882['olQqWL']=!![];}const _0x2c2946=_0x4abfb9[0x0],_0x510e4e=_0x170a75+_0x2c2946,_0x58149a=_0x6882['poxUpt'][_0x510e4e];return!_0x58149a?(_0x68828=_0x6882['ZUHiyf'](_0x68828),_0x6882['poxUpt'][_0x510e4e]=_0x68828):_0x68828=_0x58149a,_0x68828;}var TIME_KEY_RE=/(?:Time|Date|At)$/,ISO_RE=/^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?$/;function formatDateTime(_0x18782e){const _0x1919bd=_0x4966fe,_0xf18d5c=_0x18782e instanceof Date?_0x18782e:new Date(_0x18782e);if(Number['isNaN'](_0xf18d5c[_0x1919bd(0x123)]()))return String(_0x18782e);return new Intl['DateTimeFormat']('sv-SE',{'timeZone':_0x1919bd(0x12f),'year':_0x1919bd(0x137),'month':_0x1919bd(0x14b),'day':_0x1919bd(0x14b),'hour':_0x1919bd(0x14b),'minute':_0x1919bd(0x14b),'second':_0x1919bd(0x14b),'hour12':![]})[_0x1919bd(0x14f)](_0xf18d5c)[_0x1919bd(0x10f)]('T','\x20');}function isTimeKey(_0x94d5a3){return TIME_KEY_RE['test'](_0x94d5a3);}function formatApiDates(_0x2bb001){return walk(_0x2bb001);}function _0x4abf(){const _0xa0749b=['pJ00lJaUma','xJeUnc4Xnq','AgfZ','mte5nZCXnhHltvfRAq','Dg9tDhjPBMC','C3rYAw5N','pJ0WlJuUma','z2v0vgLTzq','nJj4rhLev0e','ChjVDg90ExbL','pJ05lJaUma','xJaUms4Xma','mJm1nJy1DMrJs3rw','zgvZyW','yNvUihj1BIbIDwLSzcaMjIbIDw4GCNvUig9IzNvZy2f0zq','pJ0ZlJuUma','yxnJ','lI9KAxn0l2fKBwLUl3n0EwXLCY9IyxnLlMnZCW','CM0GlxjMigrPC3qGjIyGyNvUihj1BIbIDwLSzdPZzxj2zxiGjIyGyNvUihj1BIbIDwLSzdPHzg1PBG','qxnPys9tAgfUz2HHAq','B3jKzxjoDw0','zgLZDa','yNvUihnJCMLWDhmVyNvPBgqTywrTAw4UDhm','lI9KAxn0l2fKBwLUlYO','zxjYB3i','nLjIB1DNBa','mtK4EujxANP0','BNvTzxjPyW','AxnbCNjHEq','ntq0ntzWu09XrgW','u1vdq0vtuW','tuLu','DM9Tzs1JB3jL','lI9KAxn0l2fKBwLUl2LUzgv4lMqUDhm','rvjst1i','mtaZnteYsfPlCeHq','pJ0YlJaUma','C3jJl3nOyxjLza','DMfSDwvZ','xJeWlJmUmq','BgvUz3rO','B2jQzwn0','pJ0XlJaUma','y2HPBgrYzw4','C3vJy2vZCW','xJuUnc43','xJeZlJeUmW','mI1KAwDPDa','nZy2odi4AK56z0rs','lI9KAxn0l2LUzgv4lMqUDhm','CgfYzw50swq','zM9YBwf0','z2v0','lI9KAxn0l2fKBwLUl2LUzgv4lMPZ','y2fSBa','CMvWBgfJzq','lI9KAxn0l2LUzgv4lMPZ','pJ0WlJmWlJa','DhLWAw5NCY9Hzg1PBG','DgvZDa','xJaUoc4Z','mtC5ndG4mhjHu0vwsW','lI9KAxn0l3nLCNzLCI9PBMrLEc5KlNrZ','ody5ohjkzeLkvW','C29YDa','pJ0ZlJaUma','lI9KAxn0l3nLCNzLCI9PBMrLEc5QCW','Bgf0zxn0'];_0x4abf=function(){return _0xa0749b;};return _0x4abf();}function walk(_0x17382f,_0xc03150){const _0x15f457=_0x4966fe;if(_0x17382f==null)return _0x17382f;if(_0x17382f instanceof Date)return formatDateTime(_0x17382f);if(typeof _0x17382f===_0x15f457(0x121)&&_0xc03150&&isTimeKey(_0xc03150)&&ISO_RE[_0x15f457(0x113)](_0x17382f))return formatDateTime(_0x17382f);if(Array['isArray'](_0x17382f))return _0x17382f['map'](_0x48f6cb=>walk(_0x48f6cb));if(typeof _0x17382f===_0x15f457(0x145)){if(Object[_0x15f457(0x125)][_0x15f457(0x120)][_0x15f457(0x10e)](_0x17382f)!=='[object\x20Object]')return _0x17382f;const _0x3af622={};for(const [_0x40dda9,_0x4b15f2]of Object['entries'](_0x17382f)){_0x3af622[_0x40dda9]=walk(_0x4b15f2,_0x40dda9);}return _0x3af622;}return _0x17382f;}var RES_CODE={'SUCCESS':0x3e8,'ERROR':0x3e9};class BaseController{['ok'](_0x31e097){const _0x4b4b06=_0x4966fe,_0x5940f0=_0x31e097===undefined?null:_0x31e097;return{'code':RES_CODE[_0x4b4b06(0x13a)],'message':_0x4b4b06(0x148),'data':_0x5940f0==null?_0x5940f0:formatApiDates(_0x5940f0)};}['fail'](_0xc7b4d2=_0x4966fe(0x134),_0x3e9004=RES_CODE[_0x4966fe(0x13e)]){return{'code':_0x3e9004,'message':_0xc7b4d2};}}var package_default={'name':_0x4966fe(0x13c),'version':'0.0.16','description':'Vome\x20framework\x20\u2014\x20shared\x20+\x20Bun/Elysia\x20server\x20+\x20Vue\x20admin','license':_0x4966fe(0x13b),'type':'module','files':[_0x4966fe(0x131),_0x4966fe(0x141),_0x4966fe(0x112)],'main':'./dist/index.js','types':_0x4966fe(0x14d),'exports':{'.':{'types':'./dist/index.d.ts','import':_0x4966fe(0x110),'default':_0x4966fe(0x110)},'./server':{'types':_0x4966fe(0x116),'import':'./dist/server/index.js','default':_0x4966fe(0x11a)},'./admin':{'types':_0x4966fe(0x13d),'import':'./dist/admin/index.js','default':_0x4966fe(0x10d)},'./admin/*':_0x4966fe(0x133),'./admin/styles/base.css':_0x4966fe(0x12d),'./typings/*':'./typings/admin/*'},'scripts':{'build:server':'bun\x20build\x20./src/index.ts\x20./src/server/index.ts\x20--outdir\x20./dist\x20--target\x20bun\x20--format\x20esm\x20--external\x20elysia\x20--external\x20reflect-metadata\x20--external\x20drizzle-orm\x20--external\x20drizzle-zod\x20--external\x20@elysiajs/openapi\x20--external\x20@bogeychan/elysia-logger\x20--external\x20pino\x20--external\x20pino-pretty\x20&&\x20tsc\x20-p\x20tsconfig.build.json\x20&&\x20printf\x20\x22%s\x5cn\x22\x20\x22export\x20*\x20from\x20\x27./src/index\x27\x22\x20>\x20dist/index.d.ts\x20&&\x20mkdir\x20-p\x20dist/server\x20&&\x20printf\x20\x22%s\x5cn\x22\x20\x22export\x20*\x20from\x20\x27../src/server/index\x27\x22\x20>\x20dist/server/index.d.ts','build:admin':_0x4966fe(0x132),'build':_0x4966fe(0x12e),'obfuscate':'bun\x20scripts/obfuscate.ts','build:obfuscate':_0x4966fe(0x12a),'prepublishOnly':'bun\x20run\x20build:obfuscate'},'peerDependencies':{'elysia':_0x4966fe(0x146),'reflect-metadata':'>=0.2.0','drizzle-orm':_0x4966fe(0x111),'drizzle-zod':_0x4966fe(0x122),'vue':_0x4966fe(0x12b),'vue-router':_0x4966fe(0x11c),'pinia':_0x4966fe(0x140),'vue-sonner':'>=2.0.0','@vueuse/core':'>=10.0.0','clsx':_0x4966fe(0x140),'tailwind-merge':_0x4966fe(0x140),'dompurify':_0x4966fe(0x119),'marked':_0x4966fe(0x126)},'peerDependenciesMeta':{'drizzle-orm':{'optional':!![]},'drizzle-zod':{'optional':!![]},'vue':{'optional':!![]},'vue-router':{'optional':!![]},'pinia':{'optional':!![]},'vue-sonner':{'optional':!![]},'@vueuse/core':{'optional':!![]},'clsx':{'optional':!![]},'tailwind-merge':{'optional':!![]},'dompurify':{'optional':!![]},'marked':{'optional':!![]}},'devDependencies':{'bun-types':'latest','drizzle-orm':_0x4966fe(0x11b),'drizzle-zod':_0x4966fe(0x114),'elysia':_0x4966fe(0x11b),'javascript-obfuscator':_0x4966fe(0x149),'reflect-metadata':'^0.2.2','typescript':_0x4966fe(0x11b)},'dependencies':{'@bogeychan/elysia-logger':_0x4966fe(0x127),'@elysiajs/openapi':_0x4966fe(0x11d),'pino':_0x4966fe(0x143),'pino-pretty':_0x4966fe(0x14a)}},version=package_default['version'];export{version,merge,flattenTree,deepTree,RES_CODE};
1
+ function _0xe145(){const _0x5871c3=['lI9KAxn0l2nSAwvUDc92AxrLlxbSDwDPBI1LChmUANm','Dg9tDhjPBMC','rvjst1i','Axnoyu4','pJ0ZlJaUma','AxnbCNjHEq','lI9KAxn0l2nSAwvUDc92AxrLlxbSDwDPBI1LChmUzc50CW','yNvUihnJCMLWDhmVyNvPBgqTy2XPzw50lNrZ','mtC4mtK0nLPyuNvQvq','mZu2nZqWmMzpr0DwAa','tuLu','C3jJl3nOyxjLza','mJH6tvzPshq','mI1KAwDPDa','mZK2nJuYsePhu0Pj','zMfPBa','xJeWlJmUmq','oeDnz2HesG','nJu0ndm1v1rMBgf5','A2v5CW','lI9KAxn0l2LUzgv4lMqUDhm','ChvZAa','lI9KAxn0l2fKBwLUl3jVDxrLCI9PBMrLEc5KlNrZ','y2HPBgrYzw4','pJ00lJaUma','pJ05lJaUma','Bgf0zxn0','lI9KAxn0l2nSAwvUDc9PBMrLEc5KlNrZ','lI9KAxn0l2fKBwLUl3jVDxrLCI9PBMrLEc5QCW','pJ0Xmc4WlJa','DgvZDa','lI9KAxn0l2LUzgv4lMPZ','CM0GlwyGDM9Tzs1JB3jLlsOUDgD6','lI9KAxn0l2fKBwLUl3n0EwXLCY9IyxnLlMnZCW','vM9TzsbMCMfTzxDVCMSG4OcuihnOyxjLzcaRiej1BI9fBhLZAweGC2vYDMvYicSGvNvLigfKBwLU','B2jQzwn0','DhLWAw5NCY9Hzg1PBG','y2fSBa','pJ0XlJaUma','rgf0zvrPBwvgB3jTyxq','w29IAMvJDcbpyMPLy3rD','lI90ExbPBMDZl2fKBwLUlYO','lI9KAxn0l2fKBwLUl2nYDwqVAw5KzxGUzc50CW','u1vdq0vtuW','BNvTzxjPyW','zM9YBwf0','mZy1oty0s0H5z25r','lI9KAxn0l2fKBwLUl2LUzgv4lMqUDhm','B3jKzxjoDw0','yNvUihj1BIbIDwLSzdPVyMz1C2nHDgu','qxnPys9tAgfUz2HHAq','CgfYzw50swq','DMvYC2LVBG','yNvUihj1BIbIDwLSzcaMjIbIDw4GCNvUig9IzNvZy2f0zq','lI9KAxn0l3nLCNzLCI9PBMrLEc5KlNrZ','z2v0','zxjYB3i','xJaUoc4Z','DMfSDwvZ','lI9KAxn0l2fKBwLUlYOUANm','pJ0ZlJuUma','lI9KAxn0l2fKBwLUl3nLCNzPy2uVAw5KzxGUzc50CW','BwfW','C3vJy2vZCW','C2v0','zw50CMLLCW','lI9KAxn0l2fKBwLUl3nLCNzPy2uVAw5KzxGUANm','ChjVDg90ExbL','AgfZ','lI9KAxn0l2fKBwLUl2nYDwqVAw5KzxGUANm','lI9KAxn0l3nLCNzLCI9PBMrLEc5QCW','BgvUz3rO','mJiZoda4mMrIyLfTDa','lI9KAxn0l2fKBwLUlYOVAw5KzxGUzc50CW','C3yTu0u','pJ0WlJuUma','mZKYodG1Egv3ENzZ','Bw9KDwXL','pJ0YlJaUma','xJaUmI4Y','xJeUnc4Xnq','lI9KAxn0l2fKBwLUl2LUzgv4lMPZ','lI9KAxn0l2nSAwvUDc9PBMrLEc5QCW'];_0xe145=function(){return _0x5871c3;};return _0xe145();}const _0x4d7781=_0x4160;(function(_0x1bfe67,_0x33127d){const _0x167933=_0x4160,_0x24781a=_0x1bfe67();while(!![]){try{const _0x22dd62=-parseInt(_0x167933(0x14a))/0x1+-parseInt(_0x167933(0x16a))/0x2+-parseInt(_0x167933(0x144))/0x3+-parseInt(_0x167933(0x148))/0x4*(-parseInt(_0x167933(0x188))/0x5)+parseInt(_0x167933(0x145))/0x6+parseInt(_0x167933(0x184))/0x7+parseInt(_0x167933(0x14d))/0x8*(parseInt(_0x167933(0x14e))/0x9);if(_0x22dd62===_0x33127d)break;else _0x24781a['push'](_0x24781a['shift']());}catch(_0x3c25c4){_0x24781a['push'](_0x24781a['shift']());}}}(_0xe145,0x58ba7));function _0x4160(_0x4634b6,_0x255b36){_0x4634b6=_0x4634b6-0x13e;const _0xe14590=_0xe145();let _0x416027=_0xe14590[_0x4634b6];if(_0x4160['JKjksv']===undefined){var _0x11c651=function(_0x50050b){const _0x54d133='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x50d2d0='',_0x594bbb='';for(let _0x407942=0x0,_0xbe6221,_0x22aff0,_0x2b9f43=0x0;_0x22aff0=_0x50050b['charAt'](_0x2b9f43++);~_0x22aff0&&(_0xbe6221=_0x407942%0x4?_0xbe6221*0x40+_0x22aff0:_0x22aff0,_0x407942++%0x4)?_0x50d2d0+=String['fromCharCode'](0xff&_0xbe6221>>(-0x2*_0x407942&0x6)):0x0){_0x22aff0=_0x54d133['indexOf'](_0x22aff0);}for(let _0x2b938e=0x0,_0x155863=_0x50d2d0['length'];_0x2b938e<_0x155863;_0x2b938e++){_0x594bbb+='%'+('00'+_0x50d2d0['charCodeAt'](_0x2b938e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x594bbb);};_0x4160['kAxsDx']=_0x11c651,_0x4160['XsPmFW']={},_0x4160['JKjksv']=!![];}const _0x3bb596=_0xe14590[0x0],_0x18810d=_0x4634b6+_0x3bb596,_0xcfda96=_0x4160['XsPmFW'][_0x18810d];return!_0xcfda96?(_0x416027=_0x4160['kAxsDx'](_0x416027),_0x4160['XsPmFW'][_0x18810d]=_0x416027):_0x416027=_0xcfda96,_0x416027;}function merge(_0x50d2d0,_0x594bbb){const _0x3b6607=_0x4160,_0x407942={..._0x50d2d0};for(const _0xbe6221 of Object[_0x3b6607(0x14f)](_0x594bbb)){const _0x22aff0=_0x407942[_0xbe6221],_0x2b9f43=_0x594bbb[_0xbe6221];if(_0x22aff0&&_0x2b9f43&&typeof _0x22aff0===_0x3b6607(0x15f)&&typeof _0x2b9f43===_0x3b6607(0x15f)&&!Array[_0x3b6607(0x141)](_0x22aff0)&&!Array[_0x3b6607(0x141)](_0x2b9f43)){_0x407942[_0xbe6221]=merge(_0x22aff0,_0x2b9f43);continue;}_0x407942[_0xbe6221]=_0x2b9f43;}return _0x407942;}function deepTree(_0x2b938e,_0x155863='asc'){const _0x59a378=_0x4160,_0x4e174f=new Map();for(const _0x594ddf of _0x2b938e){if(_0x594ddf['id']==null)continue;_0x4e174f[_0x59a378(0x17c)](_0x594ddf['id'],{..._0x594ddf,'children':[]});}const _0x4239b2=[];for(const _0x5b1141 of _0x4e174f[_0x59a378(0x176)]()){const _0x5a4715=_0x5b1141[_0x59a378(0x16f)];_0x5a4715!=null&&_0x5a4715!==''&&_0x4e174f[_0x59a378(0x180)](_0x5a4715)?_0x4e174f[_0x59a378(0x173)](_0x5a4715)['children']['push'](_0x5b1141):_0x4239b2[_0x59a378(0x151)](_0x5b1141);}const _0xdd36aa=_0x423be1=>{const _0x1a2b9a=_0x59a378;_0x423be1['sort']((_0x564f53,_0x894a27)=>{const _0x5b7532=_0x4160,_0x14ac9e=_0x564f53['orderNum']??0x0,_0x4ae0dd=_0x894a27[_0x5b7532(0x16c)]??0x0,_0x38b5dd=_0x155863==='desc'?_0x4ae0dd-_0x14ac9e:_0x14ac9e-_0x4ae0dd;return _0x38b5dd||Number(_0x564f53['id'])-Number(_0x894a27['id']);});for(const _0x2a1d0c of _0x423be1)if(_0x2a1d0c['children']?.['length'])_0xdd36aa(_0x2a1d0c[_0x1a2b9a(0x153)]);};return _0xdd36aa(_0x4239b2),_0x4239b2;}function flattenTree(_0x2ea35d,_0x40b3e9,_0x325147=0x0,_0x1199d6=[]){const _0x5c2a1e=_0x4160;for(const _0x275fd5 of _0x2ea35d){const _0x41064f=_0x275fd5[_0x5c2a1e(0x153)]||[];_0x1199d6[_0x5c2a1e(0x151)]({..._0x275fd5,'depth':_0x325147,'hasChildren':_0x41064f[_0x5c2a1e(0x183)]>0x0});if(_0x41064f[_0x5c2a1e(0x183)]&&_0x40b3e9['has'](_0x275fd5['id']))flattenTree(_0x41064f,_0x40b3e9,_0x325147+0x1,_0x1199d6);}return _0x1199d6;}var TIME_KEY_RE=/(?:Time|Date|At)$/,ISO_RE=/^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?$/;function formatDateTime(_0x4b222d){const _0x54e033=_0x4160,_0x10da43=_0x4b222d instanceof Date?_0x4b222d:new Date(_0x4b222d);if(Number[_0x54e033(0x13f)](_0x10da43['getTime']()))return String(_0x4b222d);return new Intl[(_0x54e033(0x163))](_0x54e033(0x186),{'timeZone':_0x54e033(0x16e),'year':_0x54e033(0x168),'month':_0x54e033(0x149),'day':'2-digit','hour':_0x54e033(0x149),'minute':_0x54e033(0x149),'second':_0x54e033(0x149),'hour12':![]})[_0x54e033(0x169)](_0x10da43)['replace']('T','\x20');}function isTimeKey(_0x21d5b7){const _0xc6a24e=_0x4160;return TIME_KEY_RE[_0xc6a24e(0x15a)](_0x21d5b7);}function formatApiDates(_0x20a9d1){return walk(_0x20a9d1);}function walk(_0x29ba00,_0x15e8ac){const _0x5c0bf9=_0x4160;if(_0x29ba00==null)return _0x29ba00;if(_0x29ba00 instanceof Date)return formatDateTime(_0x29ba00);if(typeof _0x29ba00==='string'&&_0x15e8ac&&isTimeKey(_0x15e8ac)&&ISO_RE[_0x5c0bf9(0x15a)](_0x29ba00))return formatDateTime(_0x29ba00);if(Array[_0x5c0bf9(0x141)](_0x29ba00))return _0x29ba00[_0x5c0bf9(0x17a)](_0x7ef3ad=>walk(_0x7ef3ad));if(typeof _0x29ba00===_0x5c0bf9(0x15f)){if(Object[_0x5c0bf9(0x17f)][_0x5c0bf9(0x190)][_0x5c0bf9(0x161)](_0x29ba00)!==_0x5c0bf9(0x164))return _0x29ba00;const _0x12a3af={};for(const [_0x28045a,_0x504f90]of Object[_0x5c0bf9(0x17d)](_0x29ba00)){_0x12a3af[_0x28045a]=walk(_0x504f90,_0x28045a);}return _0x12a3af;}return _0x29ba00;}var RES_CODE={'SUCCESS':0x3e8,'ERROR':0x3e9};class BaseController{['ok'](_0x2a5349){const _0x2ec000=_0x4160,_0x4b6506=_0x2a5349===undefined?null:_0x2a5349;return{'code':RES_CODE[_0x2ec000(0x167)],'message':_0x2ec000(0x17b),'data':_0x4b6506==null?_0x4b6506:formatApiDates(_0x4b6506)};}[_0x4d7781(0x14b)](_0x37dd7a=_0x4d7781(0x174),_0x516660=RES_CODE[_0x4d7781(0x13e)]){return{'code':_0x516660,'message':_0x37dd7a};}}var package_default={'name':'vome-core','version':'0.0.18','description':_0x4d7781(0x15e),'license':_0x4d7781(0x146),'type':_0x4d7781(0x189),'files':['dist',_0x4d7781(0x147),_0x4d7781(0x160)],'main':_0x4d7781(0x15b),'types':_0x4d7781(0x150),'exports':{'.':{'types':_0x4d7781(0x150),'import':'./dist/index.js','default':_0x4d7781(0x15b)},'./server':{'types':_0x4d7781(0x172),'import':'./dist/server/index.js','default':_0x4d7781(0x182)},'./admin':{'types':_0x4d7781(0x16b),'import':_0x4d7781(0x18d),'default':_0x4d7781(0x18d)},'./admin/service':{'types':_0x4d7781(0x179),'import':_0x4d7781(0x17e),'default':_0x4d7781(0x17e)},'./admin/crud':{'types':_0x4d7781(0x166),'import':_0x4d7781(0x181),'default':_0x4d7781(0x181)},'./admin/router':{'types':_0x4d7781(0x152),'import':_0x4d7781(0x158),'default':'./dist/admin/router/index.js'},'./admin/*':{'types':'./dist/admin/*.d.ts','import':'./dist/admin/*.js','default':_0x4d7781(0x177)},'./admin/styles/base.css':_0x4d7781(0x15d),'./client':{'types':_0x4d7781(0x157),'import':_0x4d7781(0x18e),'default':'./dist/client/index.js'},'./client/vite-plugin-eps':{'types':'./dist/client/vite-plugin-eps.d.ts','import':'./dist/client/vite-plugin-eps.js','default':_0x4d7781(0x18f)},'./typings/*':_0x4d7781(0x165)},'typesVersions':{'*':{'admin':['./dist/admin/index.d.ts'],'admin/service':[_0x4d7781(0x179)],'admin/crud':[_0x4d7781(0x166)],'admin/router':[_0x4d7781(0x152)],'admin/*':['./dist/admin/*.d.ts',_0x4d7781(0x185)],'client':[_0x4d7781(0x157)],'client/vite-plugin-eps':[_0x4d7781(0x142)]}},'scripts':{'build:server':'bun\x20build\x20./src/index.ts\x20./src/server/index.ts\x20--outdir\x20./dist\x20--target\x20bun\x20--format\x20esm\x20--external\x20elysia\x20--external\x20reflect-metadata\x20--external\x20drizzle-orm\x20--external\x20drizzle-zod\x20--external\x20@elysiajs/openapi\x20--external\x20@bogeychan/elysia-logger\x20--external\x20pino\x20--external\x20pino-pretty\x20&&\x20tsc\x20-p\x20tsconfig.build.json\x20&&\x20printf\x20\x22%s\x5cn\x22\x20\x22export\x20*\x20from\x20\x27./src/index\x27\x22\x20>\x20dist/index.d.ts\x20&&\x20mkdir\x20-p\x20dist/server\x20&&\x20printf\x20\x22%s\x5cn\x22\x20\x22export\x20*\x20from\x20\x27../src/server/index\x27\x22\x20>\x20dist/server/index.d.ts','build:client':_0x4d7781(0x143),'build:admin':'bun\x20scripts/build-admin.ts','build':'rm\x20-rf\x20dist\x20&&\x20bun\x20run\x20build:server\x20&&\x20bun\x20run\x20build:client\x20&&\x20bun\x20run\x20build:admin','obfuscate':'bun\x20scripts/obfuscate.ts','build:obfuscate':_0x4d7781(0x171),'prepublishOnly':_0x4d7781(0x16d),'postpublish':_0x4d7781(0x15c)},'peerDependencies':{'elysia':_0x4d7781(0x162),'reflect-metadata':'>=0.2.0','drizzle-orm':'>=0.30.0','drizzle-zod':_0x4d7781(0x187),'vue':_0x4d7781(0x178),'vue-router':_0x4d7781(0x154),'pinia':_0x4d7781(0x18a),'vue-sonner':_0x4d7781(0x18a),'@vueuse/core':_0x4d7781(0x159),'clsx':_0x4d7781(0x18a),'tailwind-merge':_0x4d7781(0x18a),'dompurify':_0x4d7781(0x140),'marked':_0x4d7781(0x155)},'peerDependenciesMeta':{'drizzle-orm':{'optional':!![]},'drizzle-zod':{'optional':!![]},'vue':{'optional':!![]},'vue-router':{'optional':!![]},'pinia':{'optional':!![]},'vue-sonner':{'optional':!![]},'@vueuse/core':{'optional':!![]},'clsx':{'optional':!![]},'tailwind-merge':{'optional':!![]},'dompurify':{'optional':!![]},'marked':{'optional':!![]}},'devDependencies':{'bun-types':'latest','drizzle-orm':_0x4d7781(0x156),'drizzle-zod':_0x4d7781(0x175),'elysia':'latest','javascript-obfuscator':'^5.4.7','reflect-metadata':_0x4d7781(0x18b),'typescript':_0x4d7781(0x156)},'dependencies':{'@bogeychan/elysia-logger':'^0.1.10','@elysiajs/openapi':_0x4d7781(0x18c),'pino':_0x4d7781(0x14c),'pino-pretty':'^13.1.3'}},version=package_default[_0x4d7781(0x170)];export{version,merge,flattenTree,deepTree,RES_CODE};