vome-core 0.2.1 → 0.2.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 (105) hide show
  1. package/dist/admin/api/client.js +9 -0
  2. package/dist/admin/components/ui/avatar/index.js +1 -1
  3. package/dist/admin/components/ui/button/index.d.ts +1 -1
  4. package/dist/admin/components/ui/checkbox/index.js +1 -1
  5. package/dist/admin/components/ui/dialog/index.js +1 -1
  6. package/dist/admin/components/ui/dropdown-menu/index.js +1 -1
  7. package/dist/admin/components/ui/input/index.js +1 -1
  8. package/dist/admin/components/ui/label/index.js +1 -1
  9. package/dist/admin/components/ui/scroll-area/index.js +1 -1
  10. package/dist/admin/components/ui/select/index.js +1 -1
  11. package/dist/admin/components/ui/separator/index.js +1 -1
  12. package/dist/admin/components/ui/sheet/index.js +1 -1
  13. package/dist/admin/components/ui/sonner/index.js +1 -1
  14. package/dist/admin/components/ui/table/index.js +1 -1
  15. package/dist/admin/components/ui/tabs/index.js +1 -1
  16. package/dist/admin/components/ui/tooltip/index.js +1 -1
  17. package/dist/admin/components/vm-empty.vue +3 -12
  18. package/dist/admin/crud/components/vm-dict-tag.vue +6 -3
  19. package/dist/admin/crud/components/vm-richtext-extensions.js +1 -1
  20. package/dist/admin/crud/config.js +1 -1
  21. package/dist/admin/crud/confirm.js +1 -1
  22. package/dist/admin/crud/crud-page-request.js +1 -1
  23. package/dist/admin/crud/data-i18n.js +1 -1
  24. package/dist/admin/crud/dict.js +1 -1
  25. package/dist/admin/crud/export-fetch.js +1 -1
  26. package/dist/admin/crud/key.js +1 -1
  27. package/dist/admin/crud/plugins.js +1 -1
  28. package/dist/admin/crud/span.js +1 -1
  29. package/dist/admin/crud/style.js +1 -1
  30. package/dist/admin/crud/validate.js +1 -1
  31. package/dist/admin/directives/perm.js +1 -1
  32. package/dist/admin/hooks/useUpload.js +1 -1
  33. package/dist/admin/hooks/useVome.d.ts +2 -2
  34. package/dist/admin/index.d.ts +4 -4
  35. package/dist/admin/index.js +2 -7
  36. package/dist/admin/lib/browser.js +1 -1
  37. package/dist/admin/lib/cn.js +1 -1
  38. package/dist/admin/lib/dialog-float.js +1 -1
  39. package/dist/admin/lib/export-excel.js +1 -1
  40. package/dist/admin/lib/import-excel.js +1 -1
  41. package/dist/admin/lib/json.js +1 -1
  42. package/dist/admin/lib/menu.js +1 -1
  43. package/dist/admin/lib/micro-locale.js +1 -1
  44. package/dist/admin/lib/micro-theme.js +1 -1
  45. package/dist/admin/lib/scarce-assets.d.ts +5 -0
  46. package/dist/admin/lib/scarce-assets.js +16 -0
  47. package/dist/admin/lib/shell.d.ts +2 -7
  48. package/dist/admin/lib/shell.js +1 -1
  49. package/dist/admin/lib/theme-color-options.js +1 -1
  50. package/dist/admin/lib/tree.js +1 -1
  51. package/dist/admin/lib/upload.js +1 -1
  52. package/dist/admin/lib/video-frame.js +1 -1
  53. package/dist/admin/router/create.js +1 -1
  54. package/dist/admin/router/guards.js +1 -1
  55. package/dist/admin/stores/app.d.ts +13 -1
  56. package/dist/admin/stores/tags.d.ts +14 -1
  57. package/dist/admin/stores/user.d.ts +48 -1
  58. package/dist/admin/stores/user.js +2 -0
  59. package/dist/agent/index.js +1 -64
  60. package/dist/ai/adapters/index.d.ts +0 -1
  61. package/dist/ai/index.d.ts +1 -1
  62. package/dist/ai/index.js +1 -29188
  63. package/dist/client/ai-model-registry.d.ts +16 -0
  64. package/dist/client/ai-model-registry.js +1 -0
  65. package/dist/client/base.js +1 -107
  66. package/dist/client/configure.js +1 -39
  67. package/dist/client/dict.d.ts +1 -2
  68. package/dist/client/dict.js +1 -53
  69. package/dist/client/eps-payload.js +1 -20
  70. package/dist/client/eps.js +1 -122
  71. package/dist/client/index.d.ts +3 -2
  72. package/dist/client/index.js +1 -35
  73. package/dist/client/locale-store.d.ts +40 -1
  74. package/dist/client/locale-store.js +1 -164
  75. package/dist/client/service.js +1 -289
  76. package/dist/client/vite-admin.js +1 -70
  77. package/dist/client/vite-auto-import.js +1 -127
  78. package/dist/client/vite-micro-proxy.js +1 -59
  79. package/dist/client/vite-plugin-eps.js +1 -308
  80. package/dist/client/vite-resolve.js +1 -205
  81. package/dist/config/index.d.ts +1 -1
  82. package/dist/config/index.js +1 -118
  83. package/dist/core/host-infra.d.ts +0 -2
  84. package/dist/core/index.d.ts +1 -1
  85. package/dist/i18n/data-i18n.d.ts +0 -1
  86. package/dist/index.js +1 -1
  87. package/dist/ioc/index.d.ts +1 -1
  88. package/dist/server/index.d.ts +2 -2
  89. package/dist/server/index.js +1 -1
  90. package/dist/shared/datetime-picker.js +1 -1
  91. package/dist/shared/excel.js +1 -1
  92. package/dist/shared/index.js +1 -1
  93. package/dist/shared/locale-json.js +1 -1
  94. package/dist/shared/tree.js +1 -1
  95. package/package.json +4 -2
  96. package/typings/admin/comm/crud.ts +10 -4
  97. package/typings/admin/comm/request.ts +3 -1
  98. package/dist/admin/lib/setup-crud-defaults.d.ts +0 -2
  99. package/dist/admin/lib/setup-crud-defaults.js +0 -1
  100. package/dist/admin/themes/dark.d.ts +0 -2
  101. package/dist/admin/themes/dark.js +0 -1
  102. package/dist/admin/themes/index.d.ts +0 -9
  103. package/dist/admin/themes/index.js +0 -1
  104. package/dist/admin/themes/light.d.ts +0 -2
  105. package/dist/admin/themes/light.js +0 -1
@@ -1,164 +1 @@
1
- import { defineStore } from "pinia";
2
- function getByPath(obj, path) {
3
- if (!obj || typeof obj !== "object")
4
- return;
5
- const parts = path.split(".").filter(Boolean);
6
- let cur = obj;
7
- for (const p of parts) {
8
- if (!cur || typeof cur !== "object")
9
- return;
10
- cur = cur[p];
11
- }
12
- return typeof cur === "string" ? cur : undefined;
13
- }
14
- function formatTpl(tpl, args) {
15
- let out = tpl;
16
- for (let i = 0;i < args.length; i++) {
17
- out = out.replace(new RegExp(`\\{${i}\\}`, "g"), String(args[i]));
18
- }
19
- return out;
20
- }
21
- const FALLBACK_LANGS = [
22
- { code: "zh-CN", name: "简体中文", flag: "\uD83C\uDDE8\uD83C\uDDF3" }
23
- ];
24
- export function createLocaleStore(options) {
25
- const {
26
- id = "locale",
27
- storageKey,
28
- scopeKey,
29
- defaultLocale = "zh-CN",
30
- defaultPack,
31
- persist,
32
- getPackApi,
33
- langMode = scopeKey === "admin" ? "admin" : "app",
34
- cachePacks = Boolean(defaultPack),
35
- onPackLoaded,
36
- enableMenu = false
37
- } = options;
38
- const initialPack = defaultPack ? { ...defaultPack } : {};
39
- return defineStore(id, {
40
- state: () => ({
41
- locale: String(persist.get(storageKey) || defaultLocale),
42
- langs: [],
43
- messages: { ...initialPack },
44
- packCache: cachePacks && defaultPack ? { [defaultLocale]: { ...initialPack } } : {},
45
- version: 0,
46
- loaded: false
47
- }),
48
- getters: {
49
- currentLang(state) {
50
- return state.langs.find((l) => l.code === state.locale);
51
- }
52
- },
53
- actions: {
54
- t(key, fallback, ...args) {
55
- const v = getByPath(this.messages, key);
56
- const raw = v != null && v !== "" ? v : fallback ?? key;
57
- return args.length ? formatTpl(raw, args) : raw;
58
- },
59
- tMenu(item) {
60
- if (!enableMenu)
61
- return String(item?.name ?? "");
62
- const mid = item?.id;
63
- if (mid != null) {
64
- const v = this.t(`menu.${mid}`, "");
65
- if (v)
66
- return v;
67
- }
68
- return String(item?.name ?? "");
69
- },
70
- applyCrudLocale() {
71
- onPackLoaded?.({ t: this.t.bind(this) });
72
- },
73
- async loadLangs() {
74
- const packApi = getPackApi();
75
- if (!packApi) {
76
- this.langs = FALLBACK_LANGS;
77
- return;
78
- }
79
- try {
80
- let list = [];
81
- if (langMode === "admin") {
82
- if (typeof packApi.hostLocales === "function") {
83
- list = await packApi.hostLocales();
84
- } else if (typeof packApi.list === "function") {
85
- const rows = await packApi.list({
86
- scopeType: "host",
87
- scopeKey
88
- });
89
- const codes = [
90
- ...new Set((rows ?? []).map((r) => String(r.langCode || "").trim()).filter(Boolean))
91
- ];
92
- list = codes.map((code) => ({ code, name: code, flag: "\uD83C\uDFF3️" }));
93
- }
94
- } else if (typeof packApi.locales === "function") {
95
- list = await packApi.locales({ scopeKey });
96
- }
97
- this.langs = Array.isArray(list) && list.length ? list : FALLBACK_LANGS;
98
- } catch {
99
- this.langs = FALLBACK_LANGS;
100
- }
101
- },
102
- async loadPack(locale) {
103
- const code = locale ?? this.locale;
104
- if (cachePacks && this.packCache[code]) {
105
- this.messages = { ...this.packCache[code] };
106
- this.loaded = true;
107
- this.applyCrudLocale();
108
- return;
109
- }
110
- if (defaultPack && code === defaultLocale) {
111
- const pack = { ...initialPack };
112
- if (cachePacks)
113
- this.packCache[code] = pack;
114
- this.messages = { ...pack };
115
- this.loaded = true;
116
- this.applyCrudLocale();
117
- return;
118
- }
119
- const api = getPackApi();
120
- if (!api?.active) {
121
- this.messages = defaultPack ? { ...initialPack } : {};
122
- this.loaded = true;
123
- this.applyCrudLocale();
124
- return;
125
- }
126
- try {
127
- const row = await api.active({
128
- langCode: code,
129
- scopeKey,
130
- ...langMode === "admin" ? { scopeType: "host" } : {}
131
- });
132
- const pack = row?.packJson && typeof row.packJson === "object" && Object.keys(row.packJson).length ? row.packJson : defaultPack ? { ...initialPack } : {};
133
- if (cachePacks)
134
- this.packCache[code] = pack;
135
- this.messages = { ...pack };
136
- this.version = Number(row?.version ?? 0);
137
- } catch {
138
- this.messages = defaultPack ? { ...initialPack } : {};
139
- }
140
- this.loaded = true;
141
- this.applyCrudLocale();
142
- },
143
- async initLocale() {
144
- await this.loadLangs();
145
- if (!this.langs.some((l) => l.code === this.locale)) {
146
- this.locale = this.langs.find((l) => l.code === defaultLocale)?.code || this.langs[0]?.code || defaultLocale;
147
- persist.set(storageKey, this.locale);
148
- }
149
- await this.loadPack(this.locale);
150
- },
151
- async setLocale(code) {
152
- const next = String(code || "").trim() || defaultLocale;
153
- this.locale = next;
154
- persist.set(storageKey, next);
155
- await this.loadPack(next);
156
- try {
157
- if (typeof window !== "undefined") {
158
- window.dispatchEvent(new CustomEvent("vome:locale-change", { detail: { code: next } }));
159
- }
160
- } catch {}
161
- }
162
- }
163
- });
164
- }
1
+ function _0x50e3(){const _0x42ed71=['Bg9HzgvK','oePiBwXLEa','A2v5CW','AxnbCNjHEq','Bg9JywXLCW','zMLUza','CgfJA0nHy2HL','ovLov251vG','566a5l2t5lIT5PAh','ywn0AxzL','Bg9JywXL','BgvUz3rO','ndKZmJq3m2jrzwzpCq','B2jQzwn0','yxbW','8j+hQpcFH7m','CgfJA0PZB24','nJGWotG5mfPPwMPHvG','mti5nZK5odbMBuHWsu4','BwfW','Bg9HzfbHy2S','ovrjz2zMEq','DM9TztPSB2nHBguTy2HHBMDL','nZvgChPxC2i','BMfTzq','EMGTq04','zMLSDgvY','BgfUz3m','y29Kzq','C3bSAxq','C29Tzq','yxbWBhLdCNvKtg9JywXL','8j+pS++4JW','z2v0','BwvZC2fNzxm','Bg9HzeXHBMDZ','Ag9ZDa','DhjPBq','C2v0','ody5BxnnD2rK','oty2mdjlyuPgDKm','BwvUDs4','BgLZDa','CMvWBgfJzq','nZy0mJrjEMTdwMC','otq4whruBLfk','ywrTAw4','zNvUy3rPB24','zgLZCgf0y2HfDMvUDa','DMvYC2LVBG','mtCZntmYs3zKDuf1','mta1nffvuNjeAq','BgfUz0nVzgu','yMLUza'];_0x50e3=function(){return _0x42ed71;};return _0x50e3();}const _0x1b2459=_0x1478;function _0x1478(_0x185978,_0x401938){_0x185978=_0x185978-0x1c3;const _0x50e315=_0x50e3();let _0x1478a1=_0x50e315[_0x185978];if(_0x1478['XNPAmP']===undefined){var _0x5f5204=function(_0x26e15c){const _0x1833a1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x512f1d='',_0x1681f8='';for(let _0x4f94e0=0x0,_0x3cd6ef,_0xa8c282,_0x4e9c7d=0x0;_0xa8c282=_0x26e15c['charAt'](_0x4e9c7d++);~_0xa8c282&&(_0x3cd6ef=_0x4f94e0%0x4?_0x3cd6ef*0x40+_0xa8c282:_0xa8c282,_0x4f94e0++%0x4)?_0x512f1d+=String['fromCharCode'](0xff&_0x3cd6ef>>(-0x2*_0x4f94e0&0x6)):0x0){_0xa8c282=_0x1833a1['indexOf'](_0xa8c282);}for(let _0x4b8eef=0x0,_0x346b4b=_0x512f1d['length'];_0x4b8eef<_0x346b4b;_0x4b8eef++){_0x1681f8+='%'+('00'+_0x512f1d['charCodeAt'](_0x4b8eef)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1681f8);};_0x1478['lOqroE']=_0x5f5204,_0x1478['zIFSVW']={},_0x1478['XNPAmP']=!![];}const _0x210a39=_0x50e315[0x0],_0x20600b=_0x185978+_0x210a39,_0x53ce32=_0x1478['zIFSVW'][_0x20600b];return!_0x53ce32?(_0x1478a1=_0x1478['lOqroE'](_0x1478a1),_0x1478['zIFSVW'][_0x20600b]=_0x1478a1):_0x1478a1=_0x53ce32,_0x1478a1;}(function(_0x56d749,_0x33c638){const _0x50371e=_0x1478,_0xe1cd15=_0x56d749();while(!![]){try{const _0x3641b3=-parseInt(_0x50371e(0x1f6))/0x1*(-parseInt(_0x50371e(0x1cc))/0x2)+parseInt(_0x50371e(0x1d6))/0x3*(parseInt(_0x50371e(0x1c5))/0x4)+-parseInt(_0x50371e(0x1e6))/0x5*(parseInt(_0x50371e(0x1cb))/0x6)+-parseInt(_0x50371e(0x1db))/0x7*(parseInt(_0x50371e(0x1d0))/0x8)+parseInt(_0x50371e(0x1e4))/0x9*(parseInt(_0x50371e(0x1e0))/0xa)+parseInt(_0x50371e(0x1f7))/0xb*(-parseInt(_0x50371e(0x1c6))/0xc)+parseInt(_0x50371e(0x1e1))/0xd;if(_0x3641b3===_0x33c638)break;else _0xe1cd15['push'](_0xe1cd15['shift']());}catch(_0xb124ee){_0xe1cd15['push'](_0xe1cd15['shift']());}}}(_0x50e3,0x587f3));import{defineStore}from'pinia';function getByPath(_0x512f1d,_0x1681f8){const _0x2a043c=_0x1478;if(!_0x512f1d||typeof _0x512f1d!=='object')return;const _0x4f94e0=_0x1681f8[_0x2a043c(0x1ec)]('.')[_0x2a043c(0x1e9)](Boolean);let _0x3cd6ef=_0x512f1d;for(const _0xa8c282 of _0x4f94e0){if(!_0x3cd6ef||typeof _0x3cd6ef!==_0x2a043c(0x1dc))return;_0x3cd6ef=_0x3cd6ef[_0xa8c282];}return typeof _0x3cd6ef==='string'?_0x3cd6ef:undefined;}function formatTpl(_0x4e9c7d,_0x4b8eef){const _0x4377b1=_0x1478;let _0x346b4b=_0x4e9c7d;for(let _0xce045b=0x0;_0xce045b<_0x4b8eef['length'];_0xce045b++){_0x346b4b=_0x346b4b[_0x4377b1(0x1c4)](new RegExp('\x5c{'+_0xce045b+'\x5c}','g'),String(_0x4b8eef[_0xce045b]));}return _0x346b4b;}const FALLBACK_LANGS=[{'code':_0x1b2459(0x1e8),'name':_0x1b2459(0x1d7),'flag':_0x1b2459(0x1de)}];export function createLocaleStore(_0x4f6b8d){const _0x5c00e5=_0x1b2459,{id:id=_0x5c00e5(0x1d9),storageKey:_0x58899f,scopeKey:_0x1acbf4,defaultLocale:defaultLocale=_0x5c00e5(0x1e8),defaultPack:_0x56e2ab,persist:_0x2ef7be,getPackApi:_0x2d245b,langMode:langMode=_0x1acbf4===_0x5c00e5(0x1c7)?'admin':_0x5c00e5(0x1dd),cachePacks:cachePacks=Boolean(_0x56e2ab),onPackLoaded:_0x3f4f61,enableMenu:enableMenu=![]}=_0x4f6b8d,_0x2b1f76=_0x56e2ab?{..._0x56e2ab}:{};return defineStore(id,{'state':()=>({'locale':String(_0x2ef7be[_0x5c00e5(0x1f0)](_0x58899f)||defaultLocale),'langs':[],'messages':{..._0x2b1f76},'packCache':cachePacks&&_0x56e2ab?{[defaultLocale]:{..._0x2b1f76}}:{},'version':0x0,'loaded':![]}),'getters':{'currentLang'(_0xeedeed){const _0x5f5055=_0x5c00e5;return _0xeedeed['langs'][_0x5f5055(0x1d4)](_0x10336d=>_0x10336d[_0x5f5055(0x1eb)]===_0xeedeed[_0x5f5055(0x1d9)]);}},'actions':{'t'(_0x486ca3,_0x4ce28b,..._0x38c88a){const _0xd5d3a6=_0x5c00e5,_0x2f6567=getByPath(this[_0xd5d3a6(0x1f1)],_0x486ca3),_0x2eabb3=_0x2f6567!=null&&_0x2f6567!==''?_0x2f6567:_0x4ce28b??_0x486ca3;return _0x38c88a[_0xd5d3a6(0x1da)]?formatTpl(_0x2eabb3,_0x38c88a):_0x2eabb3;},'tMenu'(_0x54141a){const _0xd03745=_0x5c00e5;if(!enableMenu)return String(_0x54141a?.['name']??'');const _0x258d00=_0x54141a?.['id'];if(_0x258d00!=null){const _0x33fdf4=this['t'](_0xd03745(0x1f8)+_0x258d00,'');if(_0x33fdf4)return _0x33fdf4;}return String(_0x54141a?.[_0xd03745(0x1e7)]??'');},'applyCrudLocale'(){const _0x117239=_0x5c00e5;_0x3f4f61?.({'t':this['t'][_0x117239(0x1ce)](this)});},async 'loadLangs'(){const _0x4417a9=_0x5c00e5,_0x4a6faa=_0x2d245b();if(!_0x4a6faa){this[_0x4417a9(0x1ea)]=FALLBACK_LANGS;return;}try{let _0x233dad=[];if(langMode===_0x4417a9(0x1c7)){if(typeof _0x4a6faa['hostLocales']===_0x4417a9(0x1c8))_0x233dad=await _0x4a6faa['hostLocales']();else{if(typeof _0x4a6faa[_0x4417a9(0x1c3)]==='function'){const _0x5a4e8b=await _0x4a6faa[_0x4417a9(0x1c3)]({'scopeType':_0x4417a9(0x1f3),'scopeKey':_0x1acbf4}),_0x21795a=[...new Set((_0x5a4e8b??[])[_0x4417a9(0x1e2)](_0x3d1d1a=>String(_0x3d1d1a[_0x4417a9(0x1cd)]||'')['trim']())[_0x4417a9(0x1e9)](Boolean))];_0x233dad=_0x21795a['map'](_0x303471=>({'code':_0x303471,'name':_0x303471,'flag':_0x4417a9(0x1ef)}));}}}else typeof _0x4a6faa[_0x4417a9(0x1d3)]===_0x4417a9(0x1c8)&&(_0x233dad=await _0x4a6faa['locales']({'scopeKey':_0x1acbf4}));this['langs']=Array[_0x4417a9(0x1d2)](_0x233dad)&&_0x233dad[_0x4417a9(0x1da)]?_0x233dad:FALLBACK_LANGS;}catch{this['langs']=FALLBACK_LANGS;}},async 'loadPack'(_0x37274b){const _0x496eb2=_0x5c00e5,_0x1a1296=_0x37274b??this['locale'];if(cachePacks&&this['packCache'][_0x1a1296]){this[_0x496eb2(0x1f1)]={...this[_0x496eb2(0x1d5)][_0x1a1296]},this[_0x496eb2(0x1cf)]=!![],this[_0x496eb2(0x1ee)]();return;}if(_0x56e2ab&&_0x1a1296===defaultLocale){const _0x4d02e0={..._0x2b1f76};if(cachePacks)this['packCache'][_0x1a1296]=_0x4d02e0;this['messages']={..._0x4d02e0},this[_0x496eb2(0x1cf)]=!![],this[_0x496eb2(0x1ee)]();return;}const _0xd8a653=_0x2d245b();if(!_0xd8a653?.[_0x496eb2(0x1d8)]){this[_0x496eb2(0x1f1)]=_0x56e2ab?{..._0x2b1f76}:{},this[_0x496eb2(0x1cf)]=!![],this[_0x496eb2(0x1ee)]();return;}try{const _0x150be6=await _0xd8a653[_0x496eb2(0x1d8)]({'langCode':_0x1a1296,'scopeKey':_0x1acbf4,...langMode==='admin'?{'scopeType':_0x496eb2(0x1f3)}:{}}),_0x4b48eb=_0x150be6?.[_0x496eb2(0x1df)]&&typeof _0x150be6[_0x496eb2(0x1df)]===_0x496eb2(0x1dc)&&Object[_0x496eb2(0x1d1)](_0x150be6[_0x496eb2(0x1df)])['length']?_0x150be6['packJson']:_0x56e2ab?{..._0x2b1f76}:{};if(cachePacks)this[_0x496eb2(0x1d5)][_0x1a1296]=_0x4b48eb;this[_0x496eb2(0x1f1)]={..._0x4b48eb},this[_0x496eb2(0x1ca)]=Number(_0x150be6?.[_0x496eb2(0x1ca)]??0x0);}catch{this['messages']=_0x56e2ab?{..._0x2b1f76}:{};}this[_0x496eb2(0x1cf)]=!![],this[_0x496eb2(0x1ee)]();},async 'initLocale'(){const _0x3bea3d=_0x5c00e5;await this[_0x3bea3d(0x1f2)](),!this['langs'][_0x3bea3d(0x1ed)](_0x163f0b=>_0x163f0b[_0x3bea3d(0x1eb)]===this[_0x3bea3d(0x1d9)])&&(this[_0x3bea3d(0x1d9)]=this[_0x3bea3d(0x1ea)][_0x3bea3d(0x1d4)](_0x5087cb=>_0x5087cb[_0x3bea3d(0x1eb)]===defaultLocale)?.['code']||this[_0x3bea3d(0x1ea)][0x0]?.[_0x3bea3d(0x1eb)]||defaultLocale,_0x2ef7be[_0x3bea3d(0x1f5)](_0x58899f,this['locale'])),await this[_0x3bea3d(0x1e3)](this[_0x3bea3d(0x1d9)]);},async 'setLocale'(_0x4e3acc){const _0x155881=_0x5c00e5,_0x1d49cc=String(_0x4e3acc||'')[_0x155881(0x1f4)]()||defaultLocale;this[_0x155881(0x1d9)]=_0x1d49cc,_0x2ef7be[_0x155881(0x1f5)](_0x58899f,_0x1d49cc),await this[_0x155881(0x1e3)](_0x1d49cc);try{typeof window!=='undefined'&&window[_0x155881(0x1c9)](new CustomEvent(_0x155881(0x1e5),{'detail':{'code':_0x1d49cc}}));}catch{}}}});}
@@ -1,289 +1 @@
1
- import { BaseService } from "./base";
2
- import { loadEps } from "./eps";
3
- import { parseEpsPayload } from "./eps-payload";
4
- function toCamel(str) {
5
- return str.replace(/([^-])(?:-+([^-]))/g, (_m, a, b) => a + String(b).toUpperCase());
6
- }
7
- function methodName(path) {
8
- return path.replace(/^\//, "").replace(/[:,\s/-]/g, "");
9
- }
10
- function isValidName(name) {
11
- return Boolean(name) && !["{", "}", ":"].some((c) => name.includes(c));
12
- }
13
- function resolvePermCode(prefix, action, side) {
14
- const parts = prefix.replace(/^\//, "").split("/").filter(Boolean);
15
- const module = side === "admin" ? parts[1] || parts[0] || "base" : parts[0] || "user";
16
- let resource = side === "admin" ? parts.slice(2).join(":") : parts.slice(1).join(":");
17
- if (resource === module) {
18
- resource = module;
19
- } else if (resource.startsWith(`${module}:`)) {
20
- resource = resource.slice(module.length + 1);
21
- }
22
- const head = `${module}-`;
23
- if (resource.startsWith(head))
24
- resource = resource.slice(head.length);
25
- resource = resource.replace(/-/g, ":");
26
- if (!resource)
27
- resource = module;
28
- return `${module}:${resource}:${action}`;
29
- }
30
- function prefixToParts(prefix, side) {
31
- const raw = prefix.replace(/^\//, "");
32
- return raw.replace(new RegExp(`^${side}/?`), "").split("/").filter(Boolean).map(toCamel);
33
- }
34
- function bindCrud(leaf, base, apis) {
35
- const proto = BaseService.prototype;
36
- const names = new Set(apis.map((a) => methodName(a.path)).filter((n) => n && isValidName(n) && !/[-:]/g.test(n)));
37
- for (const name of [
38
- "request",
39
- "page",
40
- "list",
41
- "info",
42
- "add",
43
- "update",
44
- "delete",
45
- "restore"
46
- ]) {
47
- if (name !== "request" && !names.has(name))
48
- continue;
49
- const fn = proto[name];
50
- if (typeof fn === "function") {
51
- leaf[name] = fn.bind(base);
52
- }
53
- }
54
- }
55
- function bindApis(leaf, base, apis, side) {
56
- leaf.permission ||= {};
57
- for (const api of apis) {
58
- const name = methodName(api.path);
59
- if (!isValidName(name) || /[-:]/g.test(name))
60
- continue;
61
- const method = (api.method || "get").toLowerCase();
62
- leaf[name] = function(data) {
63
- return this.request({
64
- url: api.path.startsWith("/") ? api.path : `/${api.path}`,
65
- method,
66
- [method === "post" ? "data" : "params"]: data
67
- });
68
- }.bind(base);
69
- leaf.permission[name] = api.perms?.[0] || resolvePermCode(`/${leaf.namespace}`, name, side);
70
- }
71
- }
72
- function createLeaf(namespace, apis = [], side) {
73
- const ns = namespace.replace(/^\//, "");
74
- const base = new BaseService(ns);
75
- const leaf = base;
76
- leaf.namespace = ns;
77
- leaf.permission = {};
78
- leaf._permission = {};
79
- bindCrud(leaf, base, apis);
80
- bindApis(leaf, base, apis, side);
81
- return leaf;
82
- }
83
- function attachLeaf(tree, prefix, apis = [], side) {
84
- const raw = prefix.replace(/^\//, "");
85
- const arr = prefixToParts(prefix, side);
86
- if (!arr.length)
87
- return;
88
- let node = tree;
89
- for (let i = 0;i < arr.length; i++) {
90
- const key = arr[i];
91
- const isLast = i === arr.length - 1;
92
- if (!isLast) {
93
- const cur = node[key];
94
- if (!cur || typeof cur !== "object" || "namespace" in cur) {
95
- node[key] = {};
96
- }
97
- node = node[key];
98
- continue;
99
- }
100
- const leaf = createLeaf(raw, apis, side);
101
- node[key] = leaf;
102
- return leaf;
103
- }
104
- return;
105
- }
106
- function buildFromEps(map, side, root) {
107
- const list = Object.values(map).flat();
108
- for (const e of list) {
109
- if (!e?.prefix)
110
- continue;
111
- const leaf = attachLeaf(root, e.prefix, e.api || [], side);
112
- if (leaf) {
113
- const op = e.pageQueryOp;
114
- if (op) {
115
- leaf.search = {
116
- fieldEq: op.fieldEq,
117
- fieldLike: op.fieldLike,
118
- fieldArray: op.fieldArray,
119
- fieldRange: op.fieldRange,
120
- keyWordLikeFields: op.keyWordLikeFields
121
- };
122
- }
123
- }
124
- }
125
- }
126
- function normalizeEpsMap(input) {
127
- return parseEpsPayload(input).modules;
128
- }
129
- function countPrefixedEntities(map) {
130
- return Object.values(map).flat().filter((e) => e && typeof e === "object" && Boolean(e.prefix)).length;
131
- }
132
- function rootKey(side) {
133
- return Symbol.for(`vome.${side}.service.root`);
134
- }
135
- function epsKey(side) {
136
- return Symbol.for(`vome.${side}.service.eps`);
137
- }
138
- function createServiceRoot() {
139
- const root = new BaseService;
140
- return {
141
- request: root.request.bind(root)
142
- };
143
- }
144
- function getOrCreateRoot(side) {
145
- const g = globalThis;
146
- const key = rootKey(side);
147
- if (!g[key]) {
148
- g[key] = createServiceRoot();
149
- }
150
- return g[key];
151
- }
152
- function resetServiceModules(side) {
153
- const root = getOrCreateRoot(side);
154
- for (const key of Object.keys(root)) {
155
- if (key === "request")
156
- continue;
157
- delete root[key];
158
- }
159
- }
160
- function createServiceProxy(side) {
161
- return new Proxy({}, {
162
- get(_t, prop, _r) {
163
- const root = getOrCreateRoot(side);
164
- const val = Reflect.get(root, prop, root);
165
- return typeof val === "function" ? val.bind(root) : val;
166
- },
167
- set(_t, prop, value) {
168
- return Reflect.set(getOrCreateRoot(side), prop, value);
169
- },
170
- has(_t, prop) {
171
- return Reflect.has(getOrCreateRoot(side), prop);
172
- },
173
- ownKeys() {
174
- return Reflect.ownKeys(getOrCreateRoot(side));
175
- },
176
- getOwnPropertyDescriptor(_t, prop) {
177
- const desc = Reflect.getOwnPropertyDescriptor(getOrCreateRoot(side), prop);
178
- if (desc)
179
- desc.configurable = true;
180
- return desc;
181
- }
182
- });
183
- }
184
- const serviceBySide = {};
185
- export function getService(side = "admin") {
186
- if (!serviceBySide[side]) {
187
- serviceBySide[side] = createServiceProxy(side);
188
- }
189
- return serviceBySide[side];
190
- }
191
- export const service = getService("admin");
192
- export async function createEps(opts = {}) {
193
- const side = opts.side ?? "admin";
194
- const force = Boolean(opts.force);
195
- const requireRoot = opts.requireRoot === undefined ? side === "admin" ? "base" : false : opts.requireRoot;
196
- const g = globalThis;
197
- const promiseKey = epsKey(side);
198
- if (!force && g[promiseKey])
199
- return g[promiseKey];
200
- const run = (async () => {
201
- const raw = await loadEps(force, side) || {};
202
- const map = normalizeEpsMap(raw);
203
- const n = countPrefixedEntities(map);
204
- if (!n) {
205
- throw new Error(`[vome-eps] empty or invalid — enable vome.eps and check GET /${side}/base/open/eps`);
206
- }
207
- resetServiceModules(side);
208
- const root = getOrCreateRoot(side);
209
- buildFromEps(map, side, root);
210
- if (requireRoot) {
211
- const hit = root[requireRoot];
212
- if (!hit || typeof hit !== "object") {
213
- throw new Error(`[vome-eps] mount failed: service.${requireRoot} missing after EPS apply`);
214
- }
215
- }
216
- return root;
217
- })();
218
- g[promiseKey] = run;
219
- try {
220
- return await run;
221
- } catch (e) {
222
- g[promiseKey] = null;
223
- throw e;
224
- }
225
- }
226
- export function bindEpsHotReload(side = "admin") {
227
- try {
228
- const meta = import.meta;
229
- if (!meta.hot)
230
- return;
231
- meta.hot.on("eps-update", () => {
232
- globalThis[epsKey(side)] = null;
233
- createEps({ force: true, side }).then(() => {
234
- if (meta.env?.DEV)
235
- console.log(`[vome-eps] ${side} service hot updated`);
236
- });
237
- });
238
- } catch {}
239
- }
240
- export function setServicePerms(perms, isSuper = false, side = "admin") {
241
- const list = perms || [];
242
- const root = getOrCreateRoot(side);
243
- const sidePrefix = `${side}/`;
244
- function deep(d) {
245
- if (!d || typeof d !== "object")
246
- return;
247
- const obj = d;
248
- if (obj.permission && obj.namespace) {
249
- obj._permission = {};
250
- for (const key of Object.keys(obj.permission)) {
251
- if (isSuper) {
252
- obj._permission[key] = true;
253
- continue;
254
- }
255
- const code = obj.permission[key];
256
- obj._permission[key] = list.includes(code) || list.some((p) => p.replace(/:/g, "/").includes(`${obj.namespace.replace(new RegExp(`^${sidePrefix}`), "")}/${key}`));
257
- }
258
- return;
259
- }
260
- for (const k of Object.keys(obj)) {
261
- if (k === "request")
262
- continue;
263
- deep(obj[k]);
264
- }
265
- }
266
- deep(root);
267
- }
268
- export function resolveService(path, side = "admin") {
269
- const parts = path.replace(/^\//, "").split(".").filter(Boolean);
270
- let cur = getOrCreateRoot(side);
271
- for (const p of parts) {
272
- if (!cur || typeof cur !== "object")
273
- return;
274
- cur = cur[p];
275
- }
276
- if (cur && typeof cur === "object" && "namespace" in cur) {
277
- return cur;
278
- }
279
- return;
280
- }
281
- export function serviceOf(prefix, side = "admin") {
282
- const raw = prefix.replace(/\/$/, "");
283
- const path = prefixToParts(raw, side).join(".");
284
- const hit = resolveService(path, side);
285
- if (!hit) {
286
- throw new Error(`[vome-eps] service missing: ${prefix} (await createEps first)`);
287
- }
288
- return hit;
289
- }
1
+ const _0x47bbed=_0xef70;(function(_0x12487c,_0x53d1c9){const _0xdd7179=_0xef70,_0x15145c=_0x12487c();while(!![]){try{const _0x574b94=-parseInt(_0xdd7179(0xc6))/0x1+parseInt(_0xdd7179(0x88))/0x2*(-parseInt(_0xdd7179(0xae))/0x3)+parseInt(_0xdd7179(0xc2))/0x4+parseInt(_0xdd7179(0xbe))/0x5+-parseInt(_0xdd7179(0x9b))/0x6*(parseInt(_0xdd7179(0xc7))/0x7)+-parseInt(_0xdd7179(0xbc))/0x8+parseInt(_0xdd7179(0x95))/0x9;if(_0x574b94===_0x53d1c9)break;else _0x15145c['push'](_0x15145c['shift']());}catch(_0x560cd0){_0x15145c['push'](_0x15145c['shift']());}}}(_0xb79e,0xdecbf));import{BaseService}from'./base';import{loadEps}from'./eps';import{parseEpsPayload}from'./eps-payload';function toCamel(_0x111740){const _0x3d691e=_0xef70;return _0x111740[_0x3d691e(0xb9)](/([^-])(?:-+([^-]))/g,(_0x326849,_0x252b7f,_0x374ae7)=>_0x252b7f+String(_0x374ae7)[_0x3d691e(0xb2)]());}function methodName(_0x269c2c){return _0x269c2c['replace'](/^\//,'')['replace'](/[:,\s/-]/g,'');}function isValidName(_0x1e4752){const _0x19a1bd=_0xef70;return Boolean(_0x1e4752)&&!['{','}',':']['some'](_0x58a07c=>_0x1e4752[_0x19a1bd(0xb3)](_0x58a07c));}function resolvePermCode(_0x4d3afc,_0x1d6d07,_0x3d4e26){const _0x2b362c=_0xef70,_0x5b5cdd=_0x4d3afc[_0x2b362c(0xb9)](/^\//,'')[_0x2b362c(0x92)]('/')[_0x2b362c(0x8d)](Boolean),_0x522f21=_0x3d4e26===_0x2b362c(0x90)?_0x5b5cdd[0x1]||_0x5b5cdd[0x0]||_0x2b362c(0xb6):_0x5b5cdd[0x0]||_0x2b362c(0xa3);let _0x562735=_0x3d4e26===_0x2b362c(0x90)?_0x5b5cdd[_0x2b362c(0xaf)](0x2)[_0x2b362c(0x99)](':'):_0x5b5cdd[_0x2b362c(0xaf)](0x1)[_0x2b362c(0x99)](':');if(_0x562735===_0x522f21)_0x562735=_0x522f21;else _0x562735[_0x2b362c(0xbd)](_0x522f21+':')&&(_0x562735=_0x562735['slice'](_0x522f21[_0x2b362c(0x9f)]+0x1));const _0x4c9914=_0x522f21+'-';if(_0x562735[_0x2b362c(0xbd)](_0x4c9914))_0x562735=_0x562735[_0x2b362c(0xaf)](_0x4c9914[_0x2b362c(0x9f)]);_0x562735=_0x562735[_0x2b362c(0xb9)](/-/g,':');if(!_0x562735)_0x562735=_0x522f21;return _0x522f21+':'+_0x562735+':'+_0x1d6d07;}function prefixToParts(_0x557a15,_0x41dd10){const _0xdbd0dc=_0xef70,_0x206326=_0x557a15['replace'](/^\//,'');return _0x206326[_0xdbd0dc(0xb9)](new RegExp('^'+_0x41dd10+'/?'),'')[_0xdbd0dc(0x92)]('/')['filter'](Boolean)['map'](toCamel);}function bindCrud(_0x433da9,_0x1e906d,_0x38c60c){const _0x48842b=_0xef70,_0x3d9cc4=BaseService[_0x48842b(0xc0)],_0x4bcb8d=new Set(_0x38c60c[_0x48842b(0xa9)](_0x14778e=>methodName(_0x14778e['path']))[_0x48842b(0x8d)](_0x2488a2=>_0x2488a2&&isValidName(_0x2488a2)&&!/[-:]/g[_0x48842b(0xc4)](_0x2488a2)));for(const _0x5d3ec9 of[_0x48842b(0xa2),'page',_0x48842b(0xba),_0x48842b(0x8e),_0x48842b(0xaa),_0x48842b(0x98),'delete',_0x48842b(0x87)]){if(_0x5d3ec9!=='request'&&!_0x4bcb8d[_0x48842b(0x94)](_0x5d3ec9))continue;const _0x5b50d0=_0x3d9cc4[_0x5d3ec9];typeof _0x5b50d0===_0x48842b(0x89)&&(_0x433da9[_0x5d3ec9]=_0x5b50d0[_0x48842b(0xac)](_0x1e906d));}}function bindApis(_0x5772cc,_0x321a62,_0x4b20b8,_0x462d4f){const _0x442c30=_0xef70;_0x5772cc['permission']||={};for(const _0x55fc16 of _0x4b20b8){const _0x372b50=methodName(_0x55fc16[_0x442c30(0xca)]);if(!isValidName(_0x372b50)||/[-:]/g[_0x442c30(0xc4)](_0x372b50))continue;const _0xc8acd6=(_0x55fc16[_0x442c30(0xb4)]||_0x442c30(0x91))['toLowerCase']();_0x5772cc[_0x372b50]=function(_0x1bb57b){const _0x19b896=_0x442c30;return this['request']({'url':_0x55fc16[_0x19b896(0xca)][_0x19b896(0xbd)]('/')?_0x55fc16[_0x19b896(0xca)]:'/'+_0x55fc16['path'],'method':_0xc8acd6,[_0xc8acd6===_0x19b896(0xbb)?_0x19b896(0x8a):_0x19b896(0x8b)]:_0x1bb57b});}[_0x442c30(0xac)](_0x321a62),_0x5772cc[_0x442c30(0x9e)][_0x372b50]=_0x55fc16[_0x442c30(0xa6)]?.[0x0]||resolvePermCode('/'+_0x5772cc[_0x442c30(0x9a)],_0x372b50,_0x462d4f);}}function _0xef70(_0x1ec954,_0x13fc0d){_0x1ec954=_0x1ec954-0x85;const _0xb79ec8=_0xb79e();let _0xef704=_0xb79ec8[_0x1ec954];if(_0xef70['vKPkGp']===undefined){var _0x162054=function(_0x183583){const _0x3ee6ce='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x111740='',_0x326849='';for(let _0x252b7f=0x0,_0x374ae7,_0x269c2c,_0x1e4752=0x0;_0x269c2c=_0x183583['charAt'](_0x1e4752++);~_0x269c2c&&(_0x374ae7=_0x252b7f%0x4?_0x374ae7*0x40+_0x269c2c:_0x269c2c,_0x252b7f++%0x4)?_0x111740+=String['fromCharCode'](0xff&_0x374ae7>>(-0x2*_0x252b7f&0x6)):0x0){_0x269c2c=_0x3ee6ce['indexOf'](_0x269c2c);}for(let _0x58a07c=0x0,_0x4d3afc=_0x111740['length'];_0x58a07c<_0x4d3afc;_0x58a07c++){_0x326849+='%'+('00'+_0x111740['charCodeAt'](_0x58a07c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x326849);};_0xef70['xgDFGK']=_0x162054,_0xef70['iRTBDk']={},_0xef70['vKPkGp']=!![];}const _0x3cef14=_0xb79ec8[0x0],_0x1d9c7c=_0x1ec954+_0x3cef14,_0x8c7a74=_0xef70['iRTBDk'][_0x1d9c7c];return!_0x8c7a74?(_0xef704=_0xef70['xgDFGK'](_0xef704),_0xef70['iRTBDk'][_0x1d9c7c]=_0xef704):_0xef704=_0x8c7a74,_0xef704;}function createLeaf(_0x4a6119,_0x849835=[],_0x3523f9){const _0x417227=_0xef70,_0x53aade=_0x4a6119[_0x417227(0xb9)](/^\//,''),_0x1c4f03=new BaseService(_0x53aade),_0x18446c=_0x1c4f03;return _0x18446c[_0x417227(0x9a)]=_0x53aade,_0x18446c[_0x417227(0x9e)]={},_0x18446c[_0x417227(0xab)]={},bindCrud(_0x18446c,_0x1c4f03,_0x849835),bindApis(_0x18446c,_0x1c4f03,_0x849835,_0x3523f9),_0x18446c;}function attachLeaf(_0x2dccd3,_0x2d59a7,_0x271e82=[],_0x495543){const _0x9f8e9b=_0xef70,_0x5872ba=_0x2d59a7[_0x9f8e9b(0xb9)](/^\//,''),_0x8176bf=prefixToParts(_0x2d59a7,_0x495543);if(!_0x8176bf['length'])return;let _0x676093=_0x2dccd3;for(let _0x1a6a58=0x0;_0x1a6a58<_0x8176bf[_0x9f8e9b(0x9f)];_0x1a6a58++){const _0x3834f0=_0x8176bf[_0x1a6a58],_0x40df83=_0x1a6a58===_0x8176bf[_0x9f8e9b(0x9f)]-0x1;if(!_0x40df83){const _0x5ce727=_0x676093[_0x3834f0];(!_0x5ce727||typeof _0x5ce727!==_0x9f8e9b(0xc8)||_0x9f8e9b(0x9a)in _0x5ce727)&&(_0x676093[_0x3834f0]={});_0x676093=_0x676093[_0x3834f0];continue;}const _0x21c5c1=createLeaf(_0x5872ba,_0x271e82,_0x495543);return _0x676093[_0x3834f0]=_0x21c5c1,_0x21c5c1;}return;}function buildFromEps(_0x283324,_0x8e735f,_0x59f50){const _0x477485=_0xef70,_0x227654=Object[_0x477485(0xad)](_0x283324)[_0x477485(0xa0)]();for(const _0x467881 of _0x227654){if(!_0x467881?.[_0x477485(0x97)])continue;const _0x47f003=attachLeaf(_0x59f50,_0x467881[_0x477485(0x97)],_0x467881[_0x477485(0xb7)]||[],_0x8e735f);if(_0x47f003){const _0x3412ef=_0x467881[_0x477485(0xa5)];_0x3412ef&&(_0x47f003[_0x477485(0x8c)]={'fieldEq':_0x3412ef['fieldEq'],'fieldLike':_0x3412ef['fieldLike'],'fieldArray':_0x3412ef['fieldArray'],'fieldRange':_0x3412ef[_0x477485(0xa1)],'keyWordLikeFields':_0x3412ef[_0x477485(0xa7)]});}}}function normalizeEpsMap(_0x14676a){const _0x34bbca=_0xef70;return parseEpsPayload(_0x14676a)[_0x34bbca(0xb8)];}function _0xb79e(){const _0x1238a9=['mJaXmJGYmtjtCfnbrLO','l2jHC2uVB3bLBI9LChm','ChjLzML4','DxbKyxrL','AM9PBG','BMfTzxnWywnL','nKPHBg9vEa','DgHLBG','w3zVBwuTzxbZxsbTB3vUDcbMywLSzwq6ihnLCNzPy2uU','CgvYBwLZC2LVBG','BgvUz3rO','zMXHDa','zMLLBgrsyw5Nzq','CMvXDwvZDa','DxnLCG','C2v0','CgfNzvf1zxj5t3a','CgvYBxm','A2v5v29YzeXPA2vgAwvSzhm','w3zVBwuTzxbZxsa','BwfW','ywrK','x3bLCM1PC3nPB24','yMLUza','DMfSDwvZ','ow9Xq29kuG','C2XPy2u','B3DUs2v5CW','DM9Tzs4','Dg9vChbLCKnHC2u','Aw5JBhvKzxm','Bwv0Ag9K','icHHD2fPDcbJCMvHDgvfChmGzMLYC3qP','yMfZzq','yxbP','Bw9KDwXLCW','CMvWBgfJzq','BgLZDa','Cg9ZDa','mta3ody1mtjlD0Pty3i','C3rHCNrZv2L0Aa','nZy2ota2mgLYDuPOBG','C2LKzq','ChjVDg90ExbL','zM9Y','nJeYmZG4off0z21tqq','revw','DgvZDa','lNnLCNzPy2uUCM9VDa','nJC4mZeXBwvhrK9s','mtaXmty3mdfnwMDZqLG','B2jQzwn0','C29Tzq','Cgf0Aa','CMvXDwLYzvjVB3q','ig1PC3nPBMCGywz0zxiGrvbtigfWCgX5','CMvZDg9Yzq','nJeXmJa2v1DIt2n4','zNvUy3rPB24','zgf0yq','CgfYyw1Z','C2vHCMnO','zMLSDgvY','Aw5MBW','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','ywrTAw4','z2v0','C3bSAxq','A2v5CW','AgfZ'];_0xb79e=function(){return _0x1238a9;};return _0xb79e();}function countPrefixedEntities(_0x3a8900){const _0x56e868=_0xef70;return Object[_0x56e868(0xad)](_0x3a8900)['flat']()[_0x56e868(0x8d)](_0x1e3ddc=>_0x1e3ddc&&typeof _0x1e3ddc===_0x56e868(0xc8)&&Boolean(_0x1e3ddc[_0x56e868(0x97)]))['length'];}function rootKey(_0x175bc7){const _0x1a355a=_0xef70;return Symbol[_0x1a355a(0xc1)]('vome.'+_0x175bc7+_0x1a355a(0xc5));}function epsKey(_0xcc55a4){const _0x39c905=_0xef70;return Symbol[_0x39c905(0xc1)](_0x39c905(0xb1)+_0xcc55a4+'.service.eps');}function createServiceRoot(){const _0x3ba018=_0xef70,_0x1fbfb9=new BaseService();return{'request':_0x1fbfb9[_0x3ba018(0xa2)][_0x3ba018(0xac)](_0x1fbfb9)};}function getOrCreateRoot(_0x52c1ba){const _0x4da2bb=globalThis,_0x344707=rootKey(_0x52c1ba);return!_0x4da2bb[_0x344707]&&(_0x4da2bb[_0x344707]=createServiceRoot()),_0x4da2bb[_0x344707];}function resetServiceModules(_0x5c0cef){const _0x552d4f=_0xef70,_0x22ec85=getOrCreateRoot(_0x5c0cef);for(const _0x3b3020 of Object[_0x552d4f(0x93)](_0x22ec85)){if(_0x3b3020===_0x552d4f(0xa2))continue;delete _0x22ec85[_0x3b3020];}}function createServiceProxy(_0x1a16e9){return new Proxy({},{'get'(_0x1f256b,_0x54fff3,_0x27c60a){const _0x4dcc4d=_0xef70,_0x5c66f5=getOrCreateRoot(_0x1a16e9),_0x2f9950=Reflect['get'](_0x5c66f5,_0x54fff3,_0x5c66f5);return typeof _0x2f9950==='function'?_0x2f9950[_0x4dcc4d(0xac)](_0x5c66f5):_0x2f9950;},'set'(_0x40cd34,_0xbf205,_0xbca24b){const _0x541073=_0xef70;return Reflect[_0x541073(0xa4)](getOrCreateRoot(_0x1a16e9),_0xbf205,_0xbca24b);},'has'(_0x5d4e3a,_0x475f2a){const _0x1e8549=_0xef70;return Reflect[_0x1e8549(0x94)](getOrCreateRoot(_0x1a16e9),_0x475f2a);},'ownKeys'(){const _0x24d002=_0xef70;return Reflect[_0x24d002(0xb0)](getOrCreateRoot(_0x1a16e9));},'getOwnPropertyDescriptor'(_0x1b8187,_0x1696da){const _0x31f9b3=_0xef70,_0x183163=Reflect[_0x31f9b3(0x8f)](getOrCreateRoot(_0x1a16e9),_0x1696da);if(_0x183163)_0x183163['configurable']=!![];return _0x183163;}});}const serviceBySide={};export function getService(_0x1a8dc5=_0x47bbed(0x90)){return!serviceBySide[_0x1a8dc5]&&(serviceBySide[_0x1a8dc5]=createServiceProxy(_0x1a8dc5)),serviceBySide[_0x1a8dc5];}export const service=getService(_0x47bbed(0x90));export async function createEps(_0x279a14={}){const _0x32ce54=_0x47bbed,_0x406887=_0x279a14[_0x32ce54(0xbf)]??_0x32ce54(0x90),_0x2507dd=Boolean(_0x279a14['force']),_0x2253f7=_0x279a14[_0x32ce54(0x85)]===undefined?_0x406887===_0x32ce54(0x90)?'base':![]:_0x279a14[_0x32ce54(0x85)],_0x471893=globalThis,_0x503024=epsKey(_0x406887);if(!_0x2507dd&&_0x471893[_0x503024])return _0x471893[_0x503024];const _0x53adda=((async()=>{const _0x1bd461=_0x32ce54,_0x4650f0=await loadEps(_0x2507dd,_0x406887)||{},_0x54d9ca=normalizeEpsMap(_0x4650f0),_0x170d5e=countPrefixedEntities(_0x54d9ca);if(!_0x170d5e)throw new Error('[vome-eps]\x20empty\x20or\x20invalid\x20—\x20enable\x20vome.eps\x20and\x20check\x20GET\x20/'+_0x406887+_0x1bd461(0x96));resetServiceModules(_0x406887);const _0x599ff1=getOrCreateRoot(_0x406887);buildFromEps(_0x54d9ca,_0x406887,_0x599ff1);if(_0x2253f7){const _0x134a54=_0x599ff1[_0x2253f7];if(!_0x134a54||typeof _0x134a54!==_0x1bd461(0xc8))throw new Error(_0x1bd461(0x9d)+_0x2253f7+_0x1bd461(0x86));}return _0x599ff1;})());_0x471893[_0x503024]=_0x53adda;try{return await _0x53adda;}catch(_0x17ada2){_0x471893[_0x503024]=null;throw _0x17ada2;}}export function bindEpsHotReload(_0x437aff=_0x47bbed(0x90)){try{const _0x37e09a=import.meta;if(!_0x37e09a['hot'])return;_0x37e09a['hot']['on']('eps-update',()=>{const _0x55574e=_0xef70;globalThis[epsKey(_0x437aff)]=null,createEps({'force':!![],'side':_0x437aff})[_0x55574e(0x9c)](()=>{const _0x5d9e26=_0x55574e;if(_0x37e09a['env']?.[_0x5d9e26(0xc3)])console['log'](_0x5d9e26(0xa8)+_0x437aff+'\x20service\x20hot\x20updated');});});}catch{}}export function setServicePerms(_0x9d2a90,_0x3ea0ff=![],_0x517656=_0x47bbed(0x90)){const _0xcd3e51=_0x9d2a90||[],_0x5ce144=getOrCreateRoot(_0x517656),_0x4a82a3=_0x517656+'/';function _0x22334c(_0x5f38ec){const _0x3b4281=_0xef70;if(!_0x5f38ec||typeof _0x5f38ec!==_0x3b4281(0xc8))return;const _0x3fc690=_0x5f38ec;if(_0x3fc690[_0x3b4281(0x9e)]&&_0x3fc690[_0x3b4281(0x9a)]){_0x3fc690[_0x3b4281(0xab)]={};for(const _0x5274d1 of Object[_0x3b4281(0x93)](_0x3fc690[_0x3b4281(0x9e)])){if(_0x3ea0ff){_0x3fc690[_0x3b4281(0xab)][_0x5274d1]=!![];continue;}const _0x2c9b8f=_0x3fc690['permission'][_0x5274d1];_0x3fc690[_0x3b4281(0xab)][_0x5274d1]=_0xcd3e51['includes'](_0x2c9b8f)||_0xcd3e51[_0x3b4281(0xc9)](_0x4d1fc8=>_0x4d1fc8[_0x3b4281(0xb9)](/:/g,'/')['includes'](_0x3fc690[_0x3b4281(0x9a)][_0x3b4281(0xb9)](new RegExp('^'+_0x4a82a3),'')+'/'+_0x5274d1));}return;}for(const _0x2742cc of Object[_0x3b4281(0x93)](_0x3fc690)){if(_0x2742cc===_0x3b4281(0xa2))continue;_0x22334c(_0x3fc690[_0x2742cc]);}}_0x22334c(_0x5ce144);}export function resolveService(_0x3f7e32,_0x5cf4a2=_0x47bbed(0x90)){const _0x403eb3=_0x47bbed,_0x2f6854=_0x3f7e32[_0x403eb3(0xb9)](/^\//,'')[_0x403eb3(0x92)]('.')['filter'](Boolean);let _0x4a3f6b=getOrCreateRoot(_0x5cf4a2);for(const _0x23b478 of _0x2f6854){if(!_0x4a3f6b||typeof _0x4a3f6b!=='object')return;_0x4a3f6b=_0x4a3f6b[_0x23b478];}if(_0x4a3f6b&&typeof _0x4a3f6b===_0x403eb3(0xc8)&&_0x403eb3(0x9a)in _0x4a3f6b)return _0x4a3f6b;return;}export function serviceOf(_0x4a4966,_0x3584d7=_0x47bbed(0x90)){const _0x3e4f72=_0x47bbed,_0x15f2a7=_0x4a4966[_0x3e4f72(0xb9)](/\/$/,''),_0x243ec0=prefixToParts(_0x15f2a7,_0x3584d7)['join']('.'),_0x5e993a=resolveService(_0x243ec0,_0x3584d7);if(!_0x5e993a)throw new Error('[vome-eps]\x20service\x20missing:\x20'+_0x4a4966+_0x3e4f72(0xb5));return _0x5e993a;}
@@ -1,70 +1 @@
1
- import { ensureMicroAppProxy, coreAlias } from "./vite-micro-proxy.js";
2
- import { createAdminAutoImportPlugins } from "./vite-auto-import.js";
3
- import {
4
- vomeAdminNoOptimizePlugin,
5
- vomeHostEsbuildPlugin,
6
- vomePeerDepsPlugin,
7
- vomeResolvePlugin
8
- } from "./vite-resolve.js";
9
- export { ensureMicroAppProxy, coreAlias } from "./vite-micro-proxy.js";
10
- export { createAdminAutoImportPlugins } from "./vite-auto-import.js";
11
- export {
12
- vomeAdminNoOptimizePlugin,
13
- vomeHostEsbuildPlugin,
14
- vomePeerDepsPlugin,
15
- vomeResolvePlugin
16
- } from "./vite-resolve.js";
17
- export const adminDedupe = [
18
- "vue",
19
- "vue-router",
20
- "pinia",
21
- "@vueuse/core",
22
- "reka-ui",
23
- "clsx",
24
- "tailwind-merge",
25
- "@lucide/vue",
26
- "lucide-vue-next",
27
- "wujie"
28
- ];
29
- export const adminOptimizeDepsInclude = [
30
- "dompurify",
31
- "marked",
32
- "vue-sonner",
33
- "pinia",
34
- "wujie",
35
- "@lucide/vue",
36
- "reka-ui",
37
- "xlsx"
38
- ];
39
- export function createAdminResolvePlugins(opts) {
40
- const root = opts.root;
41
- return [
42
- vomePeerDepsPlugin(root),
43
- vomeResolvePlugin(root),
44
- vomeAdminNoOptimizePlugin(),
45
- {
46
- name: "vome-admin-optimize-deps",
47
- config() {
48
- return {
49
- optimizeDeps: {
50
- include: [...adminOptimizeDepsInclude]
51
- }
52
- };
53
- }
54
- }
55
- ];
56
- }
57
- export function createAdminOptimizeDepsPlugins(opts) {
58
- return [vomeHostEsbuildPlugin(opts.root)];
59
- }
60
- export function adminDevProxy(proxy) {
61
- return ensureMicroAppProxy(proxy);
62
- }
63
- export const adminWatchIgnored = [
64
- "**/typings/eps.d.ts",
65
- "**/build/eps.json",
66
- (id) => {
67
- const p = id.replace(/\\/g, "/");
68
- return p.includes("/node_modules/") && !p.includes("/node_modules/vome-core");
69
- }
70
- ];
1
+ const _0x4dd1a2=_0x363c;(function(_0x2932b6,_0x138710){const _0x44ebe5=_0x363c,_0x1406bb=_0x2932b6();while(!![]){try{const _0x23dada=parseInt(_0x44ebe5(0x1d3))/0x1+-parseInt(_0x44ebe5(0x1d1))/0x2*(parseInt(_0x44ebe5(0x1e0))/0x3)+-parseInt(_0x44ebe5(0x1da))/0x4+-parseInt(_0x44ebe5(0x1e5))/0x5*(-parseInt(_0x44ebe5(0x1e7))/0x6)+parseInt(_0x44ebe5(0x1d0))/0x7+-parseInt(_0x44ebe5(0x1d5))/0x8+parseInt(_0x44ebe5(0x1e9))/0x9;if(_0x23dada===_0x138710)break;else _0x1406bb['push'](_0x1406bb['shift']());}catch(_0x20a271){_0x1406bb['push'](_0x1406bb['shift']());}}}(_0x1a69,0x37894));import{ensureMicroAppProxy,coreAlias}from'./vite-micro-proxy.js';import{createAdminAutoImportPlugins}from'./vite-auto-import.js';import{vomeAdminNoOptimizePlugin,vomeHostEsbuildPlugin,vomePeerDepsPlugin,vomeResolvePlugin}from'./vite-resolve.js';export{ensureMicroAppProxy,coreAlias}from'./vite-micro-proxy.js';function _0x1a69(){const _0x137816=['y2XZEa','DNvLlxjVDxrLCG','CgLUAwe','Aw5JBhvKzxm','ntGZnZi0yuzgCenM','DM9Tzs1Hzg1PBI1VChrPBwL6zs1KzxbZ','D3vQAwu','l25VzgvFBw9KDwXLCY8','zg9TChvYAwz5','BhvJAwrLlxz1zs1UzxH0','m0jvAw5HDG','EgXZEa','qhz1zxvZzs9JB3jL','kIOVyNvPBgqVzxbZlMPZB24','DNvLlxnVBM5LCG','mtCYmgv3tNLWsG','CMvWBgfJzq','mta5mKrVyKPMtW','l25VzgvFBw9KDwXLCY92B21LlwnVCMu','mtq3ntu1men3v2zuva','mtCYndK0n2TbwwfWrG','nda3ntG4y1vhrLnQ','CM9VDa','mJC4mdC4rhHls3zk','qgX1y2LKzs92Dwu','mtm5mdG0ofjNtuPzDG'];_0x1a69=function(){return _0x137816;};return _0x1a69();}export{createAdminAutoImportPlugins}from'./vite-auto-import.js';function _0x363c(_0x5a653b,_0x15432d){_0x5a653b=_0x5a653b-0x1d0;const _0x1a6904=_0x1a69();let _0x363c40=_0x1a6904[_0x5a653b];if(_0x363c['kvVPpR']===undefined){var _0x1cb7fd=function(_0x4718b4){const _0x321a7f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x501fed='',_0x510237='';for(let _0x1b0da0=0x0,_0x4fb1e3,_0x4b90f2,_0x348def=0x0;_0x4b90f2=_0x4718b4['charAt'](_0x348def++);~_0x4b90f2&&(_0x4fb1e3=_0x1b0da0%0x4?_0x4fb1e3*0x40+_0x4b90f2:_0x4b90f2,_0x1b0da0++%0x4)?_0x501fed+=String['fromCharCode'](0xff&_0x4fb1e3>>(-0x2*_0x1b0da0&0x6)):0x0){_0x4b90f2=_0x321a7f['indexOf'](_0x4b90f2);}for(let _0xd841d7=0x0,_0x4cd4be=_0x501fed['length'];_0xd841d7<_0x4cd4be;_0xd841d7++){_0x510237+='%'+('00'+_0x501fed['charCodeAt'](_0xd841d7)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x510237);};_0x363c['ynnXWG']=_0x1cb7fd,_0x363c['BkGJZw']={},_0x363c['kvVPpR']=!![];}const _0xb7425f=_0x1a6904[0x0],_0xc19597=_0x5a653b+_0xb7425f,_0x240045=_0x363c['BkGJZw'][_0xc19597];return!_0x240045?(_0x363c40=_0x363c['ynnXWG'](_0x363c40),_0x363c['BkGJZw'][_0xc19597]=_0x363c40):_0x363c40=_0x240045,_0x363c40;}export{vomeAdminNoOptimizePlugin,vomeHostEsbuildPlugin,vomePeerDepsPlugin,vomeResolvePlugin}from'./vite-resolve.js';export const adminDedupe=['vue',_0x4dd1a2(0x1d7),_0x4dd1a2(0x1d8),_0x4dd1a2(0x1e2),'reka-ui',_0x4dd1a2(0x1d6),'tailwind-merge',_0x4dd1a2(0x1d4),_0x4dd1a2(0x1df),'wujie'];export const adminOptimizeDepsInclude=[_0x4dd1a2(0x1de),'marked',_0x4dd1a2(0x1e4),'pinia',_0x4dd1a2(0x1dc),_0x4dd1a2(0x1d4),'reka-ui',_0x4dd1a2(0x1e1)];export function createAdminResolvePlugins(_0x501fed){const _0x1f3abe=_0x4dd1a2,_0x510237=_0x501fed[_0x1f3abe(0x1d2)];return[vomePeerDepsPlugin(_0x510237),vomeResolvePlugin(_0x510237),vomeAdminNoOptimizePlugin(),{'name':_0x1f3abe(0x1db),'config'(){return{'optimizeDeps':{'include':[...adminOptimizeDepsInclude]}};}}];}export function createAdminOptimizeDepsPlugins(_0x1b0da0){const _0x378009=_0x4dd1a2;return[vomeHostEsbuildPlugin(_0x1b0da0[_0x378009(0x1d2)])];}export function adminDevProxy(_0x4fb1e3){return ensureMicroAppProxy(_0x4fb1e3);}export const adminWatchIgnored=['**/typings/eps.d.ts',_0x4dd1a2(0x1e3),_0x4b90f2=>{const _0xd383a7=_0x4dd1a2,_0x348def=_0x4b90f2[_0xd383a7(0x1e6)](/\\/g,'/');return _0x348def[_0xd383a7(0x1d9)](_0xd383a7(0x1dd))&&!_0x348def[_0xd383a7(0x1d9)](_0xd383a7(0x1e8));}];