vome-core 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/admin/api/client.js +13 -3
  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/orm/repository.d.ts +9 -7
  89. package/dist/orm/service.d.ts +3 -5
  90. package/dist/server/index.d.ts +2 -2
  91. package/dist/server/index.js +1 -1
  92. package/dist/shared/datetime-picker.js +1 -1
  93. package/dist/shared/excel.js +1 -1
  94. package/dist/shared/index.js +1 -1
  95. package/dist/shared/locale-json.js +1 -1
  96. package/dist/shared/tree.js +1 -1
  97. package/package.json +1 -1
  98. package/typings/admin/comm/crud.ts +10 -4
  99. package/typings/admin/comm/request.ts +3 -1
  100. package/dist/admin/lib/setup-crud-defaults.d.ts +0 -2
  101. package/dist/admin/lib/setup-crud-defaults.js +0 -1
  102. package/dist/admin/themes/dark.d.ts +0 -2
  103. package/dist/admin/themes/dark.js +0 -1
  104. package/dist/admin/themes/index.d.ts +0 -9
  105. package/dist/admin/themes/index.js +0 -1
  106. package/dist/admin/themes/light.d.ts +0 -2
  107. 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 _0x12b5(_0x3cc207,_0x2908cf){_0x3cc207=_0x3cc207-0xcd;const _0x194ef4=_0x194e();let _0x12b5ed=_0x194ef4[_0x3cc207];if(_0x12b5['IqMaRA']===undefined){var _0x3d5f86=function(_0x4d03c0){const _0x16e53a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1479fe='',_0x59cb46='';for(let _0x26cb4a=0x0,_0x509c3a,_0x4d7e42,_0x333b85=0x0;_0x4d7e42=_0x4d03c0['charAt'](_0x333b85++);~_0x4d7e42&&(_0x509c3a=_0x26cb4a%0x4?_0x509c3a*0x40+_0x4d7e42:_0x4d7e42,_0x26cb4a++%0x4)?_0x1479fe+=String['fromCharCode'](0xff&_0x509c3a>>(-0x2*_0x26cb4a&0x6)):0x0){_0x4d7e42=_0x16e53a['indexOf'](_0x4d7e42);}for(let _0x514b59=0x0,_0x59d91b=_0x1479fe['length'];_0x514b59<_0x59d91b;_0x514b59++){_0x59cb46+='%'+('00'+_0x1479fe['charCodeAt'](_0x514b59)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x59cb46);};_0x12b5['dlzhKz']=_0x3d5f86,_0x12b5['fUirJC']={},_0x12b5['IqMaRA']=!![];}const _0x238c7e=_0x194ef4[0x0],_0x550385=_0x3cc207+_0x238c7e,_0x4a5c5d=_0x12b5['fUirJC'][_0x550385];return!_0x4a5c5d?(_0x12b5ed=_0x12b5['dlzhKz'](_0x12b5ed),_0x12b5['fUirJC'][_0x550385]=_0x12b5ed):_0x12b5ed=_0x4a5c5d,_0x12b5ed;}const _0x49b251=_0x12b5;(function(_0x381c27,_0x5bcd6a){const _0x6d5d2=_0x12b5,_0x3eedc2=_0x381c27();while(!![]){try{const _0x245381=parseInt(_0x6d5d2(0xed))/0x1+-parseInt(_0x6d5d2(0xe7))/0x2+parseInt(_0x6d5d2(0xe2))/0x3+parseInt(_0x6d5d2(0xf0))/0x4+-parseInt(_0x6d5d2(0xfd))/0x5+parseInt(_0x6d5d2(0xe3))/0x6+-parseInt(_0x6d5d2(0xf4))/0x7;if(_0x245381===_0x5bcd6a)break;else _0x3eedc2['push'](_0x3eedc2['shift']());}catch(_0x48004b){_0x3eedc2['push'](_0x3eedc2['shift']());}}}(_0x194e,0xf21aa));function _0x194e(){const _0x5d40ce=['B2jQzwn0','nZGZotu2mezbzK9crG','zNvUy3rPB24','zMLUza','AxnbCNjHEq','mJi4mJyYmZbkDxvgq2W','CMvWBgfJzq','Bg9JywXL','BwfW','yxbW','CgfJA0nHy2HL','BwvUDs4','A2v5CW','DhjPBq','mty4odq3nuHPswrizG','C3rYAw5N','CgfJA0PZB24','y29Kzq','DM9TztPSB2nHBguTy2HHBMDL','Bg9HzeXHBMDZ','yxbWBhLdCNvKtg9JywXL','zgLZCgf0y2HfDMvUDa','C3bSAxq','C2v0','Ag9ZDeXVy2fSzxm','8j+pS++4JW','ywn0AxzL','BgfUz3m','BgLZDa','z2v0','Bg9HzgvK','Bg9HzfbHy2S','zMLSDgvY','DMvYC2LVBG','BMfTzq','EMGTq04','mZyWotK3oePzyNHIsq','ntCZmJu2mNPpCLDlva','Ag9ZDa','566a5l2t5lIT5PAh','Dw5KzwzPBMvK','mJGYmtqZmLDVBKPtAW','C29Tzq','BwvZC2fNzxm','BgvUz3rO','8j+hQpcFH7m','ywrTAw4','mtG4mJmXnLrly2zIqW','Bg9JywXLCW'];_0x194e=function(){return _0x5d40ce;};return _0x194e();}import{defineStore}from'pinia';function getByPath(_0x1479fe,_0x59cb46){const _0x274da0=_0x12b5;if(!_0x1479fe||typeof _0x1479fe!=='object')return;const _0x26cb4a=_0x59cb46[_0x274da0(0xd4)]('.')[_0x274da0(0xde)](Boolean);let _0x509c3a=_0x1479fe;for(const _0x4d7e42 of _0x26cb4a){if(!_0x509c3a||typeof _0x509c3a!==_0x274da0(0xef))return;_0x509c3a=_0x509c3a[_0x4d7e42];}return typeof _0x509c3a===_0x274da0(0xcd)?_0x509c3a:undefined;}function formatTpl(_0x333b85,_0x514b59){const _0x5a88bb=_0x12b5;let _0x59d91b=_0x333b85;for(let _0x1231d8=0x0;_0x1231d8<_0x514b59['length'];_0x1231d8++){_0x59d91b=_0x59d91b[_0x5a88bb(0xf5)](new RegExp('\x5c{'+_0x1231d8+'\x5c}','g'),String(_0x514b59[_0x1231d8]));}return _0x59d91b;}const FALLBACK_LANGS=[{'code':'zh-CN','name':_0x49b251(0xe5),'flag':_0x49b251(0xeb)}];export function createLocaleStore(_0x105d5e){const _0x2d4f64=_0x49b251,{id:id=_0x2d4f64(0xf6),storageKey:_0x4249c5,scopeKey:_0x2b005a,defaultLocale:defaultLocale=_0x2d4f64(0xe1),defaultPack:_0x6cff3e,persist:_0x2da6f0,getPackApi:_0x4ffe0c,langMode:langMode=_0x2b005a==='admin'?_0x2d4f64(0xec):_0x2d4f64(0xf8),cachePacks:cachePacks=Boolean(_0x6cff3e),onPackLoaded:_0x116ccf,enableMenu:enableMenu=![]}=_0x105d5e,_0x45a07c=_0x6cff3e?{..._0x6cff3e}:{};return defineStore(id,{'state':()=>({'locale':String(_0x2da6f0[_0x2d4f64(0xdb)](_0x4249c5)||defaultLocale),'langs':[],'messages':{..._0x45a07c},'packCache':cachePacks&&_0x6cff3e?{[defaultLocale]:{..._0x45a07c}}:{},'version':0x0,'loaded':![]}),'getters':{'currentLang'(_0xd00e5e){const _0x443b8d=_0x2d4f64;return _0xd00e5e[_0x443b8d(0xd9)][_0x443b8d(0xf2)](_0x4273e0=>_0x4273e0['code']===_0xd00e5e[_0x443b8d(0xf6)]);}},'actions':{'t'(_0x27a081,_0x14264b,..._0x557553){const _0x2c3d73=_0x2d4f64,_0x532d81=getByPath(this[_0x2c3d73(0xe9)],_0x27a081),_0x4cbd07=_0x532d81!=null&&_0x532d81!==''?_0x532d81:_0x14264b??_0x27a081;return _0x557553[_0x2c3d73(0xea)]?formatTpl(_0x4cbd07,_0x557553):_0x4cbd07;},'tMenu'(_0x4409dd){const _0x283094=_0x2d4f64;if(!enableMenu)return String(_0x4409dd?.[_0x283094(0xe0)]??'');const _0x25c791=_0x4409dd?.['id'];if(_0x25c791!=null){const _0x1c8c3f=this['t'](_0x283094(0xfa)+_0x25c791,'');if(_0x1c8c3f)return _0x1c8c3f;}return String(_0x4409dd?.[_0x283094(0xe0)]??'');},'applyCrudLocale'(){_0x116ccf?.({'t':this['t']['bind'](this)});},async 'loadLangs'(){const _0x74ebff=_0x2d4f64,_0x23ef4a=_0x4ffe0c();if(!_0x23ef4a){this[_0x74ebff(0xd9)]=FALLBACK_LANGS;return;}try{let _0x1e1a15=[];if(langMode==='admin'){if(typeof _0x23ef4a[_0x74ebff(0xd6)]===_0x74ebff(0xf1))_0x1e1a15=await _0x23ef4a['hostLocales']();else{if(typeof _0x23ef4a[_0x74ebff(0xda)]===_0x74ebff(0xf1)){const _0xb0d772=await _0x23ef4a[_0x74ebff(0xda)]({'scopeType':_0x74ebff(0xe4),'scopeKey':_0x2b005a}),_0x13dc48=[...new Set((_0xb0d772??[])['map'](_0x2138cc=>String(_0x2138cc['langCode']||'')[_0x74ebff(0xfc)]())['filter'](Boolean))];_0x1e1a15=_0x13dc48[_0x74ebff(0xf7)](_0x393e9b=>({'code':_0x393e9b,'name':_0x393e9b,'flag':_0x74ebff(0xd7)}));}}}else typeof _0x23ef4a[_0x74ebff(0xee)]==='function'&&(_0x1e1a15=await _0x23ef4a[_0x74ebff(0xee)]({'scopeKey':_0x2b005a}));this[_0x74ebff(0xd9)]=Array[_0x74ebff(0xf3)](_0x1e1a15)&&_0x1e1a15[_0x74ebff(0xea)]?_0x1e1a15:FALLBACK_LANGS;}catch{this[_0x74ebff(0xd9)]=FALLBACK_LANGS;}},async 'loadPack'(_0xb7ce79){const _0xc849fe=_0x2d4f64,_0x15cf5b=_0xb7ce79??this['locale'];if(cachePacks&&this[_0xc849fe(0xf9)][_0x15cf5b]){this['messages']={...this['packCache'][_0x15cf5b]},this[_0xc849fe(0xdc)]=!![],this[_0xc849fe(0xd2)]();return;}if(_0x6cff3e&&_0x15cf5b===defaultLocale){const _0x466b75={..._0x45a07c};if(cachePacks)this['packCache'][_0x15cf5b]=_0x466b75;this[_0xc849fe(0xe9)]={..._0x466b75},this[_0xc849fe(0xdc)]=!![],this[_0xc849fe(0xd2)]();return;}const _0x313e3e=_0x4ffe0c();if(!_0x313e3e?.[_0xc849fe(0xd8)]){this['messages']=_0x6cff3e?{..._0x45a07c}:{},this['loaded']=!![],this[_0xc849fe(0xd2)]();return;}try{const _0x1fb705=await _0x313e3e[_0xc849fe(0xd8)]({'langCode':_0x15cf5b,'scopeKey':_0x2b005a,...langMode===_0xc849fe(0xec)?{'scopeType':_0xc849fe(0xe4)}:{}}),_0x37daf4=_0x1fb705?.[_0xc849fe(0xce)]&&typeof _0x1fb705['packJson']==='object'&&Object[_0xc849fe(0xfb)](_0x1fb705['packJson'])[_0xc849fe(0xea)]?_0x1fb705[_0xc849fe(0xce)]:_0x6cff3e?{..._0x45a07c}:{};if(cachePacks)this['packCache'][_0x15cf5b]=_0x37daf4;this[_0xc849fe(0xe9)]={..._0x37daf4},this['version']=Number(_0x1fb705?.[_0xc849fe(0xdf)]??0x0);}catch{this[_0xc849fe(0xe9)]=_0x6cff3e?{..._0x45a07c}:{};}this[_0xc849fe(0xdc)]=!![],this[_0xc849fe(0xd2)]();},async 'initLocale'(){const _0x112b26=_0x2d4f64;await this[_0x112b26(0xd1)](),!this[_0x112b26(0xd9)][_0x112b26(0xe8)](_0x33e898=>_0x33e898[_0x112b26(0xcf)]===this[_0x112b26(0xf6)])&&(this['locale']=this[_0x112b26(0xd9)][_0x112b26(0xf2)](_0x2b4fb2=>_0x2b4fb2[_0x112b26(0xcf)]===defaultLocale)?.[_0x112b26(0xcf)]||this[_0x112b26(0xd9)][0x0]?.[_0x112b26(0xcf)]||defaultLocale,_0x2da6f0[_0x112b26(0xd5)](_0x4249c5,this[_0x112b26(0xf6)])),await this[_0x112b26(0xdd)](this['locale']);},async 'setLocale'(_0x56d90c){const _0x345002=_0x2d4f64,_0x42a22=String(_0x56d90c||'')[_0x345002(0xfc)]()||defaultLocale;this[_0x345002(0xf6)]=_0x42a22,_0x2da6f0[_0x345002(0xd5)](_0x4249c5,_0x42a22),await this['loadPack'](_0x42a22);try{typeof window!==_0x345002(0xe6)&&window[_0x345002(0xd3)](new CustomEvent(_0x345002(0xd0),{'detail':{'code':_0x42a22}}));}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 _0x543253=_0x44c7;(function(_0x11f25d,_0x23cfc3){const _0x16a9bd=_0x44c7,_0x36900c=_0x11f25d();while(!![]){try{const _0xa6f993=parseInt(_0x16a9bd(0x111))/0x1+parseInt(_0x16a9bd(0x129))/0x2+parseInt(_0x16a9bd(0x142))/0x3*(parseInt(_0x16a9bd(0x11f))/0x4)+parseInt(_0x16a9bd(0x10a))/0x5+parseInt(_0x16a9bd(0x10f))/0x6+-parseInt(_0x16a9bd(0x139))/0x7+-parseInt(_0x16a9bd(0x145))/0x8;if(_0xa6f993===_0x23cfc3)break;else _0x36900c['push'](_0x36900c['shift']());}catch(_0x198774){_0x36900c['push'](_0x36900c['shift']());}}}(_0x5bb2,0x9bd59));import{BaseService}from'./base';import{loadEps}from'./eps';import{parseEpsPayload}from'./eps-payload';function toCamel(_0x1778e3){const _0x392ebc=_0x44c7;return _0x1778e3[_0x392ebc(0x13d)](/([^-])(?:-+([^-]))/g,(_0xe80545,_0x1310e4,_0x20db01)=>_0x1310e4+String(_0x20db01)[_0x392ebc(0x150)]());}function methodName(_0x3a5217){const _0xb265d8=_0x44c7;return _0x3a5217[_0xb265d8(0x13d)](/^\//,'')[_0xb265d8(0x13d)](/[:,\s/-]/g,'');}function isValidName(_0x4f9741){const _0x58b6d2=_0x44c7;return Boolean(_0x4f9741)&&!['{','}',':'][_0x58b6d2(0x119)](_0x11c0c3=>_0x4f9741[_0x58b6d2(0x146)](_0x11c0c3));}function resolvePermCode(_0x460391,_0x11d05a,_0x2b08ca){const _0x576a37=_0x44c7,_0x35d25d=_0x460391['replace'](/^\//,'')[_0x576a37(0x125)]('/')['filter'](Boolean),_0x38b7b3=_0x2b08ca==='admin'?_0x35d25d[0x1]||_0x35d25d[0x0]||'base':_0x35d25d[0x0]||_0x576a37(0x13c);let _0x3dd34d=_0x2b08ca===_0x576a37(0x120)?_0x35d25d[_0x576a37(0x113)](0x2)[_0x576a37(0x10b)](':'):_0x35d25d['slice'](0x1)[_0x576a37(0x10b)](':');if(_0x3dd34d===_0x38b7b3)_0x3dd34d=_0x38b7b3;else _0x3dd34d['startsWith'](_0x38b7b3+':')&&(_0x3dd34d=_0x3dd34d[_0x576a37(0x113)](_0x38b7b3[_0x576a37(0x13f)]+0x1));const _0x4d42ef=_0x38b7b3+'-';if(_0x3dd34d[_0x576a37(0x122)](_0x4d42ef))_0x3dd34d=_0x3dd34d['slice'](_0x4d42ef[_0x576a37(0x13f)]);_0x3dd34d=_0x3dd34d[_0x576a37(0x13d)](/-/g,':');if(!_0x3dd34d)_0x3dd34d=_0x38b7b3;return _0x38b7b3+':'+_0x3dd34d+':'+_0x11d05a;}function prefixToParts(_0x20ed1f,_0x22b384){const _0x188556=_0x44c7,_0x34ef8d=_0x20ed1f[_0x188556(0x13d)](/^\//,'');return _0x34ef8d[_0x188556(0x13d)](new RegExp('^'+_0x22b384+'/?'),'')[_0x188556(0x125)]('/')[_0x188556(0x138)](Boolean)[_0x188556(0x11d)](toCamel);}function bindCrud(_0x5a4352,_0x5e98ac,_0x506616){const _0xb3f53=_0x44c7,_0xbe4384=BaseService[_0xb3f53(0x143)],_0x49c075=new Set(_0x506616['map'](_0x1c76d5=>methodName(_0x1c76d5['path']))[_0xb3f53(0x138)](_0x5b4ad9=>_0x5b4ad9&&isValidName(_0x5b4ad9)&&!/[-:]/g['test'](_0x5b4ad9)));for(const _0xafd9e8 of[_0xb3f53(0x10d),_0xb3f53(0x112),_0xb3f53(0x11e),'info',_0xb3f53(0x114),_0xb3f53(0x148),'delete',_0xb3f53(0x135)]){if(_0xafd9e8!==_0xb3f53(0x10d)&&!_0x49c075[_0xb3f53(0x144)](_0xafd9e8))continue;const _0x594666=_0xbe4384[_0xafd9e8];typeof _0x594666==='function'&&(_0x5a4352[_0xafd9e8]=_0x594666[_0xb3f53(0x115)](_0x5e98ac));}}function bindApis(_0x4e502a,_0x2cba1f,_0x1aeab7,_0x3c6bf2){const _0x253951=_0x44c7;_0x4e502a[_0x253951(0x14b)]||={};for(const _0x358f2b of _0x1aeab7){const _0x3de4d0=methodName(_0x358f2b['path']);if(!isValidName(_0x3de4d0)||/[-:]/g[_0x253951(0x10e)](_0x3de4d0))continue;const _0x16b4bc=(_0x358f2b[_0x253951(0x141)]||_0x253951(0x133))['toLowerCase']();_0x4e502a[_0x3de4d0]=function(_0x2289ae){const _0x4bf40b=_0x253951;return this[_0x4bf40b(0x10d)]({'url':_0x358f2b['path']['startsWith']('/')?_0x358f2b[_0x4bf40b(0x11a)]:'/'+_0x358f2b[_0x4bf40b(0x11a)],'method':_0x16b4bc,[_0x16b4bc===_0x4bf40b(0x126)?_0x4bf40b(0x109):_0x4bf40b(0x149)]:_0x2289ae});}['bind'](_0x2cba1f),_0x4e502a['permission'][_0x3de4d0]=_0x358f2b[_0x253951(0x14c)]?.[0x0]||resolvePermCode('/'+_0x4e502a['namespace'],_0x3de4d0,_0x3c6bf2);}}function createLeaf(_0x4af4e4,_0x5b6845=[],_0x1cf062){const _0x28fdb2=_0x44c7,_0x11b4fb=_0x4af4e4[_0x28fdb2(0x13d)](/^\//,''),_0x281cc1=new BaseService(_0x11b4fb),_0x52e315=_0x281cc1;return _0x52e315[_0x28fdb2(0x12f)]=_0x11b4fb,_0x52e315[_0x28fdb2(0x14b)]={},_0x52e315[_0x28fdb2(0x128)]={},bindCrud(_0x52e315,_0x281cc1,_0x5b6845),bindApis(_0x52e315,_0x281cc1,_0x5b6845,_0x1cf062),_0x52e315;}function attachLeaf(_0x10cf45,_0x522451,_0x2959e9=[],_0x2fcef5){const _0x2d67f5=_0x44c7,_0x3343cb=_0x522451[_0x2d67f5(0x13d)](/^\//,''),_0x21408c=prefixToParts(_0x522451,_0x2fcef5);if(!_0x21408c[_0x2d67f5(0x13f)])return;let _0x36f39c=_0x10cf45;for(let _0x1e5ca7=0x0;_0x1e5ca7<_0x21408c['length'];_0x1e5ca7++){const _0x22875d=_0x21408c[_0x1e5ca7],_0x321cf6=_0x1e5ca7===_0x21408c[_0x2d67f5(0x13f)]-0x1;if(!_0x321cf6){const _0x570bea=_0x36f39c[_0x22875d];(!_0x570bea||typeof _0x570bea!==_0x2d67f5(0x131)||_0x2d67f5(0x12f)in _0x570bea)&&(_0x36f39c[_0x22875d]={});_0x36f39c=_0x36f39c[_0x22875d];continue;}const _0xb2ff09=createLeaf(_0x3343cb,_0x2959e9,_0x2fcef5);return _0x36f39c[_0x22875d]=_0xb2ff09,_0xb2ff09;}return;}function buildFromEps(_0x4cde05,_0x491f9d,_0x568164){const _0x7ea800=_0x44c7,_0x22c418=Object[_0x7ea800(0x11c)](_0x4cde05)['flat']();for(const _0x5eacb2 of _0x22c418){if(!_0x5eacb2?.[_0x7ea800(0x13e)])continue;const _0x38ade8=attachLeaf(_0x568164,_0x5eacb2[_0x7ea800(0x13e)],_0x5eacb2[_0x7ea800(0x12c)]||[],_0x491f9d);if(_0x38ade8){const _0x296234=_0x5eacb2['pageQueryOp'];_0x296234&&(_0x38ade8[_0x7ea800(0x140)]={'fieldEq':_0x296234[_0x7ea800(0x137)],'fieldLike':_0x296234['fieldLike'],'fieldArray':_0x296234[_0x7ea800(0x132)],'fieldRange':_0x296234[_0x7ea800(0x110)],'keyWordLikeFields':_0x296234[_0x7ea800(0x11b)]});}}}function _0x5bb2(){const _0x2210be=['zMLLBgrfCq','zMLSDgvY','nJuZmJi3nfverezmtq','ig1PC3nPBMCGywz0zxiGrvbtigfWCgX5','zMXHDa','DxnLCG','CMvWBgfJzq','ChjLzML4','BgvUz3rO','C2vHCMnO','Bwv0Ag9K','mZe5mZe2ngH2CuLHBG','ChjVDg90ExbL','AgfZ','mtu1ntm1mtjbswz0ywe','Aw5JBhvKzxm','ihnLCNzPy2uGAg90ihvWzgf0zwq','DxbKyxrL','CgfYyw1Z','zM9Yy2u','CgvYBwLZC2LVBG','CgvYBxm','w3zVBwuTzxbZxsbLBxb0EsbVCIbPBNzHBgLKiokaLcbLBMfIBguGDM9Tzs5LChmGyw5KignOzwnRieDfvcaV','l2jHC2uVB3bLBI9LChm','lNnLCNzPy2uUCM9VDa','Dg9vChbLCKnHC2u','zgf0yq','mtq5odGWmfj6wvzhyq','AM9PBG','A2v5CW','CMvXDwvZDa','DgvZDa','mJy3odiXnezhDefzyG','zMLLBgrsyw5Nzq','mte5nZy2me1bA3HsrW','CgfNzq','C2XPy2u','ywrK','yMLUza','CMvXDwLYzvjVB3q','icHHD2fPDcbJCMvHDgvfChmGzMLYC3qP','zNvUy3rPB24','C29Tzq','Cgf0Aa','A2v5v29YzeXPA2vgAwvSzhm','DMfSDwvZ','BwfW','BgLZDa','nhrWzxflBG','ywrTAw4','DM9Tzs4','C3rHCNrZv2L0Aa','Ag90','B3DUs2v5CW','C3bSAxq','Cg9ZDa','w3zVBwuTzxbZxsa','x3bLCM1PC3nPB24','mtaXndK4mLDpwejkzq','C2LKzq','zM9Y','yxbP','lNnLCNzPy2uUzxbZ','yMfZzq','BMfTzxnWywnL','C2v0','B2jQzwn0','zMLLBgrbCNjHEq','z2v0','DgHLBG','CMvZDg9Yzq','Bw9KDwXLCW'];_0x5bb2=function(){return _0x2210be;};return _0x5bb2();}function normalizeEpsMap(_0x16e759){const _0x2708db=_0x44c7;return parseEpsPayload(_0x16e759)[_0x2708db(0x136)];}function countPrefixedEntities(_0x1b998d){const _0x59aec2=_0x44c7;return Object[_0x59aec2(0x11c)](_0x1b998d)[_0x59aec2(0x13b)]()[_0x59aec2(0x138)](_0x1ffca9=>_0x1ffca9&&typeof _0x1ffca9==='object'&&Boolean(_0x1ffca9['prefix']))[_0x59aec2(0x13f)];}function rootKey(_0x490f68){const _0x32564e=_0x44c7;return Symbol['for'](_0x32564e(0x121)+_0x490f68+_0x32564e(0x14f));}function epsKey(_0x32f336){const _0x239bfb=_0x44c7;return Symbol[_0x239bfb(0x12b)](_0x239bfb(0x121)+_0x32f336+_0x239bfb(0x12d));}function createServiceRoot(){const _0x337378=new BaseService();return{'request':_0x337378['request']['bind'](_0x337378)};}function getOrCreateRoot(_0x5f0bb2){const _0x4d5232=globalThis,_0x1846cf=rootKey(_0x5f0bb2);return!_0x4d5232[_0x1846cf]&&(_0x4d5232[_0x1846cf]=createServiceRoot()),_0x4d5232[_0x1846cf];}function resetServiceModules(_0x1f2888){const _0x39cb9f=_0x44c7,_0x413f54=getOrCreateRoot(_0x1f2888);for(const _0x5ac16f of Object[_0x39cb9f(0x10c)](_0x413f54)){if(_0x5ac16f==='request')continue;delete _0x413f54[_0x5ac16f];}}function _0x44c7(_0x197bfa,_0x57801f){_0x197bfa=_0x197bfa-0x109;const _0x5bb2d6=_0x5bb2();let _0x44c786=_0x5bb2d6[_0x197bfa];if(_0x44c7['OPuqOa']===undefined){var _0x5e764a=function(_0x5a0e3d){const _0x4040fa='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1778e3='',_0xe80545='';for(let _0x1310e4=0x0,_0x20db01,_0x3a5217,_0x4f9741=0x0;_0x3a5217=_0x5a0e3d['charAt'](_0x4f9741++);~_0x3a5217&&(_0x20db01=_0x1310e4%0x4?_0x20db01*0x40+_0x3a5217:_0x3a5217,_0x1310e4++%0x4)?_0x1778e3+=String['fromCharCode'](0xff&_0x20db01>>(-0x2*_0x1310e4&0x6)):0x0){_0x3a5217=_0x4040fa['indexOf'](_0x3a5217);}for(let _0x11c0c3=0x0,_0x460391=_0x1778e3['length'];_0x11c0c3<_0x460391;_0x11c0c3++){_0xe80545+='%'+('00'+_0x1778e3['charCodeAt'](_0x11c0c3)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xe80545);};_0x44c7['LZGEmw']=_0x5e764a,_0x44c7['ROaros']={},_0x44c7['OPuqOa']=!![];}const _0x1a64d9=_0x5bb2d6[0x0],_0x183b0c=_0x197bfa+_0x1a64d9,_0x5de27d=_0x44c7['ROaros'][_0x183b0c];return!_0x5de27d?(_0x44c786=_0x44c7['LZGEmw'](_0x44c786),_0x44c7['ROaros'][_0x183b0c]=_0x44c786):_0x44c786=_0x5de27d,_0x44c786;}function createServiceProxy(_0x2d2026){return new Proxy({},{'get'(_0x483504,_0x2f5be2,_0x5d99f4){const _0x1c4490=_0x44c7,_0x1210bc=getOrCreateRoot(_0x2d2026),_0x55c4ff=Reflect['get'](_0x1210bc,_0x2f5be2,_0x1210bc);return typeof _0x55c4ff===_0x1c4490(0x118)?_0x55c4ff[_0x1c4490(0x115)](_0x1210bc):_0x55c4ff;},'set'(_0x19b454,_0x5b9ab6,_0x249f3d){const _0x544ec2=_0x44c7;return Reflect[_0x544ec2(0x130)](getOrCreateRoot(_0x2d2026),_0x5b9ab6,_0x249f3d);},'has'(_0x5fe327,_0x4ca070){const _0x3efa01=_0x44c7;return Reflect[_0x3efa01(0x144)](getOrCreateRoot(_0x2d2026),_0x4ca070);},'ownKeys'(){const _0x59c126=_0x44c7;return Reflect[_0x59c126(0x124)](getOrCreateRoot(_0x2d2026));},'getOwnPropertyDescriptor'(_0x12a67e,_0x4d2172){const _0x59a2c6=Reflect['getOwnPropertyDescriptor'](getOrCreateRoot(_0x2d2026),_0x4d2172);if(_0x59a2c6)_0x59a2c6['configurable']=!![];return _0x59a2c6;}});}const serviceBySide={};export function getService(_0x4c548f=_0x543253(0x120)){return!serviceBySide[_0x4c548f]&&(serviceBySide[_0x4c548f]=createServiceProxy(_0x4c548f)),serviceBySide[_0x4c548f];}export const service=getService(_0x543253(0x120));export async function createEps(_0x198c9a={}){const _0x55d3fa=_0x543253,_0x16d1da=_0x198c9a[_0x55d3fa(0x12a)]??_0x55d3fa(0x120),_0x5ee38a=Boolean(_0x198c9a[_0x55d3fa(0x14a)]),_0x1cd855=_0x198c9a[_0x55d3fa(0x116)]===undefined?_0x16d1da===_0x55d3fa(0x120)?_0x55d3fa(0x12e):![]:_0x198c9a[_0x55d3fa(0x116)],_0x390b05=globalThis,_0x798906=epsKey(_0x16d1da);if(!_0x5ee38a&&_0x390b05[_0x798906])return _0x390b05[_0x798906];const _0x366296=((async()=>{const _0x88c1ae=_0x55d3fa,_0x1615db=await loadEps(_0x5ee38a,_0x16d1da)||{},_0x21a654=normalizeEpsMap(_0x1615db),_0x31c4da=countPrefixedEntities(_0x21a654);if(!_0x31c4da)throw new Error(_0x88c1ae(0x14d)+_0x16d1da+_0x88c1ae(0x14e));resetServiceModules(_0x16d1da);const _0x5a7d12=getOrCreateRoot(_0x16d1da);buildFromEps(_0x21a654,_0x16d1da,_0x5a7d12);if(_0x1cd855){const _0x371f75=_0x5a7d12[_0x1cd855];if(!_0x371f75||typeof _0x371f75!==_0x88c1ae(0x131))throw new Error('[vome-eps]\x20mount\x20failed:\x20service.'+_0x1cd855+_0x88c1ae(0x13a));}return _0x5a7d12;})());_0x390b05[_0x798906]=_0x366296;try{return await _0x366296;}catch(_0xc88714){_0x390b05[_0x798906]=null;throw _0xc88714;}}export function bindEpsHotReload(_0x5c549f=_0x543253(0x120)){const _0x397d61=_0x543253;try{const _0x44dd3e=import.meta;if(!_0x44dd3e[_0x397d61(0x123)])return;_0x44dd3e[_0x397d61(0x123)]['on']('eps-update',()=>{const _0x14a496=_0x397d61;globalThis[epsKey(_0x5c549f)]=null,createEps({'force':!![],'side':_0x5c549f})[_0x14a496(0x134)](()=>{const _0x3bc98d=_0x14a496;if(_0x44dd3e['env']?.['DEV'])console['log'](_0x3bc98d(0x127)+_0x5c549f+_0x3bc98d(0x147));});});}catch{}}export function setServicePerms(_0x13586f,_0x932966=![],_0x4d92de=_0x543253(0x120)){const _0x2acb69=_0x13586f||[],_0x200802=getOrCreateRoot(_0x4d92de),_0x3c455b=_0x4d92de+'/';function _0x47a3e5(_0x23f844){const _0x269067=_0x44c7;if(!_0x23f844||typeof _0x23f844!=='object')return;const _0x3860fb=_0x23f844;if(_0x3860fb[_0x269067(0x14b)]&&_0x3860fb[_0x269067(0x12f)]){_0x3860fb[_0x269067(0x128)]={};for(const _0x1af507 of Object[_0x269067(0x10c)](_0x3860fb[_0x269067(0x14b)])){if(_0x932966){_0x3860fb[_0x269067(0x128)][_0x1af507]=!![];continue;}const _0x33d9fe=_0x3860fb['permission'][_0x1af507];_0x3860fb[_0x269067(0x128)][_0x1af507]=_0x2acb69[_0x269067(0x146)](_0x33d9fe)||_0x2acb69[_0x269067(0x119)](_0x41c872=>_0x41c872[_0x269067(0x13d)](/:/g,'/')['includes'](_0x3860fb['namespace'][_0x269067(0x13d)](new RegExp('^'+_0x3c455b),'')+'/'+_0x1af507));}return;}for(const _0x2b4160 of Object['keys'](_0x3860fb)){if(_0x2b4160===_0x269067(0x10d))continue;_0x47a3e5(_0x3860fb[_0x2b4160]);}}_0x47a3e5(_0x200802);}export function resolveService(_0x4c1d47,_0x21c4b7=_0x543253(0x120)){const _0x2fb2e9=_0x543253,_0x4b6713=_0x4c1d47[_0x2fb2e9(0x13d)](/^\//,'')['split']('.')['filter'](Boolean);let _0x3c5e33=getOrCreateRoot(_0x21c4b7);for(const _0x3bc7fb of _0x4b6713){if(!_0x3c5e33||typeof _0x3c5e33!==_0x2fb2e9(0x131))return;_0x3c5e33=_0x3c5e33[_0x3bc7fb];}if(_0x3c5e33&&typeof _0x3c5e33===_0x2fb2e9(0x131)&&_0x2fb2e9(0x12f)in _0x3c5e33)return _0x3c5e33;return;}export function serviceOf(_0x87efd5,_0x364d37=_0x543253(0x120)){const _0x33b7a6=_0x543253,_0x9bc4d7=_0x87efd5[_0x33b7a6(0x13d)](/\/$/,''),_0x54a1c5=prefixToParts(_0x9bc4d7,_0x364d37)['join']('.'),_0x570af6=resolveService(_0x54a1c5,_0x364d37);if(!_0x570af6)throw new Error('[vome-eps]\x20service\x20missing:\x20'+_0x87efd5+_0x33b7a6(0x117));return _0x570af6;}
@@ -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 _0x37a55a=_0x143b;(function(_0xdbe642,_0x388273){const _0xd96575=_0x143b,_0x130517=_0xdbe642();while(!![]){try{const _0x135035=parseInt(_0xd96575(0xc2))/0x1*(-parseInt(_0xd96575(0xbd))/0x2)+-parseInt(_0xd96575(0xbe))/0x3*(-parseInt(_0xd96575(0xb8))/0x4)+-parseInt(_0xd96575(0xaf))/0x5+-parseInt(_0xd96575(0xb4))/0x6*(parseInt(_0xd96575(0xad))/0x7)+parseInt(_0xd96575(0xb6))/0x8*(-parseInt(_0xd96575(0xbc))/0x9)+-parseInt(_0xd96575(0xc1))/0xa+parseInt(_0xd96575(0xc4))/0xb;if(_0x135035===_0x388273)break;else _0x130517['push'](_0x130517['shift']());}catch(_0x38df0e){_0x130517['push'](_0x130517['shift']());}}}(_0x3cfe,0x99cee));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';export{createAdminAutoImportPlugins}from'./vite-auto-import.js';export{vomeAdminNoOptimizePlugin,vomeHostEsbuildPlugin,vomePeerDepsPlugin,vomeResolvePlugin}from'./vite-resolve.js';function _0x143b(_0x3a41a0,_0x2478dc){_0x3a41a0=_0x3a41a0-0xac;const _0x3cfe45=_0x3cfe();let _0x143b26=_0x3cfe45[_0x3a41a0];if(_0x143b['ZBvxmw']===undefined){var _0x3a4948=function(_0x1d6627){const _0x3f1789='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x277c02='',_0x55f571='';for(let _0x259b74=0x0,_0x231928,_0x5be8bc,_0x478f9d=0x0;_0x5be8bc=_0x1d6627['charAt'](_0x478f9d++);~_0x5be8bc&&(_0x231928=_0x259b74%0x4?_0x231928*0x40+_0x5be8bc:_0x5be8bc,_0x259b74++%0x4)?_0x277c02+=String['fromCharCode'](0xff&_0x231928>>(-0x2*_0x259b74&0x6)):0x0){_0x5be8bc=_0x3f1789['indexOf'](_0x5be8bc);}for(let _0x382a21=0x0,_0x1717fb=_0x277c02['length'];_0x382a21<_0x1717fb;_0x382a21++){_0x55f571+='%'+('00'+_0x277c02['charCodeAt'](_0x382a21)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x55f571);};_0x143b['owHeuY']=_0x3a4948,_0x143b['WDDYDk']={},_0x143b['ZBvxmw']=!![];}const _0x544de3=_0x3cfe45[0x0],_0x47dbc1=_0x3a41a0+_0x544de3,_0x336869=_0x143b['WDDYDk'][_0x47dbc1];return!_0x336869?(_0x143b26=_0x143b['owHeuY'](_0x143b26),_0x143b['WDDYDk'][_0x47dbc1]=_0x143b26):_0x143b26=_0x336869,_0x143b26;}export const adminDedupe=['vue','vue-router',_0x37a55a(0xb7),_0x37a55a(0xb0),_0x37a55a(0xba),_0x37a55a(0xb3),_0x37a55a(0xb5),_0x37a55a(0xb9),'lucide-vue-next',_0x37a55a(0xae)];export const adminOptimizeDepsInclude=['dompurify','marked',_0x37a55a(0xbb),'pinia',_0x37a55a(0xae),_0x37a55a(0xb9),_0x37a55a(0xba),'xlsx'];export function createAdminResolvePlugins(_0x277c02){const _0x22e201=_0x37a55a,_0x55f571=_0x277c02[_0x22e201(0xb1)];return[vomePeerDepsPlugin(_0x55f571),vomeResolvePlugin(_0x55f571),vomeAdminNoOptimizePlugin(),{'name':_0x22e201(0xc5),'config'(){return{'optimizeDeps':{'include':[...adminOptimizeDepsInclude]}};}}];}export function createAdminOptimizeDepsPlugins(_0x259b74){const _0x81a194=_0x37a55a;return[vomeHostEsbuildPlugin(_0x259b74[_0x81a194(0xb1)])];}export function adminDevProxy(_0x231928){return ensureMicroAppProxy(_0x231928);}export const adminWatchIgnored=[_0x37a55a(0xc0),'**/build/eps.json',_0x5be8bc=>{const _0x750c56=_0x37a55a,_0x478f9d=_0x5be8bc[_0x750c56(0xac)](/\\/g,'/');return _0x478f9d[_0x750c56(0xbf)](_0x750c56(0xb2))&&!_0x478f9d[_0x750c56(0xbf)](_0x750c56(0xc3));}];function _0x3cfe(){const _0x416a4c=['nMjWuvPJza','mZmZnde5n1PxtuzYsW','Aw5JBhvKzxm','kIOVDhLWAw5NCY9LChmUzc50CW','mtKXmdGYmfvMtKHjEG','mJe2nJuZwNrxqKDO','l25VzgvFBw9KDwXLCY92B21LlwnVCMu','mJG5mJG2mtrytKrur28','DM9Tzs1Hzg1PBI1VChrPBwL6zs1KzxbZ','CMvWBgfJzq','mtrKEfzNBMK','D3vQAwu','ntqYmZi3mhHrENbXtq','qhz1zxvZzs9JB3jL','CM9VDa','l25VzgvFBw9KDwXLCY8','y2XZEa','mtu3ndu5ohbNtuH3vW','DgfPBhDPBMqTBwvYz2u','mJy0mJG1nK9xqMnRqG','CgLUAwe','nhbfAgrZsG','qgX1y2LKzs92Dwu','CMvRys11Aq','DNvLlxnVBM5LCG','mtHttejdv2K'];_0x3cfe=function(){return _0x416a4c;};return _0x3cfe();}