zcw-shared 1.29.0 → 1.31.0

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 (182) hide show
  1. package/README.md +87 -55
  2. package/dist/functions/platform/tencent-cloud/deploy.tcb.d.ts +13 -0
  3. package/dist/functions/platform/tencent-cloud/deploy.tcb.js +46 -0
  4. package/dist/functions/platform/tencent-cloud/deploy.tcb.js.map +1 -0
  5. package/dist/functions/platform/tencent-cloud/getSecret.d.ts +4 -0
  6. package/dist/functions/platform/tencent-cloud/getSecret.js +19 -0
  7. package/dist/functions/platform/tencent-cloud/getSecret.js.map +1 -0
  8. package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.d.ts +27 -0
  9. package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.js +287 -0
  10. package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.js.map +1 -0
  11. package/dist/functions/platform/uniapp/build.d.ts +21 -0
  12. package/dist/functions/platform/uniapp/build.js +83 -0
  13. package/dist/functions/platform/uniapp/build.js.map +1 -0
  14. package/dist/functions/platform/uniapp/detectAndroidProjectStructure.d.ts +11 -0
  15. package/dist/functions/platform/uniapp/detectAndroidProjectStructure.js +30 -0
  16. package/dist/functions/platform/uniapp/detectAndroidProjectStructure.js.map +1 -0
  17. package/dist/functions/platform/uniapp/detectProjectType.d.ts +20 -0
  18. package/dist/functions/platform/uniapp/detectProjectType.js +68 -0
  19. package/dist/functions/platform/uniapp/detectProjectType.js.map +1 -0
  20. package/dist/functions/platform/uniapp/parseManifest.d.ts +18 -0
  21. package/dist/functions/platform/uniapp/parseManifest.js +49 -0
  22. package/dist/functions/platform/uniapp/parseManifest.js.map +1 -0
  23. package/dist/functions/platform/uniapp/waitForPages.d.ts +7 -0
  24. package/dist/functions/platform/uniapp/waitForPages.js +20 -0
  25. package/dist/functions/platform/uniapp/waitForPages.js.map +1 -0
  26. package/dist/functions/string/visualizeRegexSteps.d.ts +39 -0
  27. package/dist/functions/string/visualizeRegexSteps.js +446 -0
  28. package/dist/functions/string/visualizeRegexSteps.js.map +1 -0
  29. package/dist/functions/utils/createI18n.d.ts +2 -0
  30. package/dist/functions/utils/createI18n.js +97 -0
  31. package/dist/functions/utils/createI18n.js.map +1 -0
  32. package/dist/functions/utils/formatString.d.ts +5 -0
  33. package/dist/functions/utils/formatString.js +9 -0
  34. package/dist/functions/utils/formatString.js.map +1 -0
  35. package/dist/functions/vue/dynamicMount.d.ts +6 -4
  36. package/dist/functions/vue/isVNode.d.ts +1 -1
  37. package/dist/functions/vue/isVueComponent.d.ts +1 -1
  38. package/dist/hooks/usePermission.d.ts +7 -0
  39. package/dist/hooks/usePermission.js +123 -0
  40. package/dist/hooks/usePermission.js.map +1 -0
  41. package/dist/vue-hooks/browser/useBattery.d.ts +1 -1
  42. package/dist/vue-hooks/browser/useBluetooth.d.ts +1 -1
  43. package/dist/vue-hooks/browser/useCamera.d.ts +1 -1
  44. package/dist/vue-hooks/browser/useClipboard.d.ts +1 -1
  45. package/dist/vue-hooks/browser/useFileUpload.d.ts +3 -2
  46. package/dist/vue-hooks/browser/useFileUpload.js +12 -1
  47. package/dist/vue-hooks/browser/useFileUpload.js.map +1 -1
  48. package/dist/vue-hooks/browser/useFullscreen.d.ts +1 -1
  49. package/dist/vue-hooks/browser/useGamepad.d.ts +1 -1
  50. package/dist/vue-hooks/browser/useGeolocation.d.ts +1 -1
  51. package/dist/vue-hooks/browser/useMediaSession.d.ts +1 -1
  52. package/dist/vue-hooks/browser/useMicrophone.d.ts +1 -1
  53. package/dist/vue-hooks/browser/useNetwork.d.ts +1 -1
  54. package/dist/vue-hooks/browser/useOrientation.d.ts +1 -1
  55. package/dist/vue-hooks/browser/usePageVisibility.d.ts +1 -1
  56. package/dist/vue-hooks/browser/useScreenOrientation.d.ts +1 -1
  57. package/dist/vue-hooks/browser/useScreenWakeLock.d.ts +1 -1
  58. package/dist/vue-hooks/browser/useShare.d.ts +1 -1
  59. package/dist/vue-hooks/browser/useVibration.d.ts +1 -1
  60. package/dist/vue-hooks/dom/useAutoUpdate.d.ts +1 -1
  61. package/dist/vue-hooks/dom/useClickOutside.d.ts +1 -1
  62. package/dist/vue-hooks/dom/useDraggable.d.ts +4 -4
  63. package/dist/vue-hooks/dom/useEventListener.d.ts +1 -1
  64. package/dist/vue-hooks/dom/useKeyboard.d.ts +29 -0
  65. package/dist/vue-hooks/dom/useKeyboard.js +129 -0
  66. package/dist/vue-hooks/dom/useKeyboard.js.map +1 -0
  67. package/dist/vue-hooks/dom/useResizable.d.ts +8 -3
  68. package/dist/vue-hooks/history/useDebouncedRefHistory.d.ts +1 -1
  69. package/dist/vue-hooks/history/useManualRefHistory.d.ts +1 -1
  70. package/dist/vue-hooks/history/useRefHistory.d.ts +1 -1
  71. package/dist/vue-hooks/state/injectLocal.d.ts +1 -1
  72. package/dist/vue-hooks/state/provideLocal.d.ts +1 -1
  73. package/dist/vue-hooks/state/useAsyncState.d.ts +1 -1
  74. package/dist/vue-hooks/state/useCounter.d.ts +1 -1
  75. package/dist/vue-hooks/state/useFileUpload.d.ts +23 -0
  76. package/dist/vue-hooks/state/useFileUpload.js +93 -0
  77. package/dist/vue-hooks/state/useFileUpload.js.map +1 -0
  78. package/dist/vue-hooks/state/useToggle.d.ts +1 -1
  79. package/dist/vue-hooks/time/useInterval.d.ts +1 -1
  80. package/dist/vue-hooks/time/useTimeout.d.ts +1 -1
  81. package/dist/vue-hooks/worker/useWebWorker.d.ts +4 -4
  82. package/dist/vue-hooks/worker/useWorkerFunction.d.ts +4 -4
  83. package/dist/vue-hooks/worker/useWorkerPool.d.ts +4 -4
  84. package/package.json +1 -1
  85. package/types/vue.d.ts +1 -1
  86. package/dist/functions/algorithm/lcsVisual.d.ts +0 -6
  87. package/dist/functions/algorithm/lcsVisual.js +0 -88
  88. package/dist/functions/algorithm/lcsVisual.js.map +0 -1
  89. package/dist/functions/algorithm/mergeSortVisual.d.ts +0 -5
  90. package/dist/functions/algorithm/mergeSortVisual.js +0 -103
  91. package/dist/functions/algorithm/mergeSortVisual.js.map +0 -1
  92. package/dist/functions/algorithm/nQueensVisual.d.ts +0 -14
  93. package/dist/functions/algorithm/nQueensVisual.js +0 -94
  94. package/dist/functions/algorithm/nQueensVisual.js.map +0 -1
  95. package/dist/functions/algorithm/numIslandsVisual.d.ts +0 -17
  96. package/dist/functions/algorithm/numIslandsVisual.js +0 -102
  97. package/dist/functions/algorithm/numIslandsVisual.js.map +0 -1
  98. package/dist/functions/algorithm/quickSortVisual.d.ts +0 -18
  99. package/dist/functions/algorithm/quickSortVisual.js +0 -104
  100. package/dist/functions/algorithm/quickSortVisual.js.map +0 -1
  101. package/dist/functions/browser/detectDevice.d.ts +0 -10
  102. package/dist/functions/browser/detectDevice.js +0 -49
  103. package/dist/functions/browser/detectDevice.js.map +0 -1
  104. package/dist/functions/cookie/getCookie.d.ts +0 -5
  105. package/dist/functions/cookie/getCookie.js +0 -14
  106. package/dist/functions/cookie/getCookie.js.map +0 -1
  107. package/dist/functions/cookie/removeCookie.d.ts +0 -8
  108. package/dist/functions/cookie/removeCookie.js +0 -12
  109. package/dist/functions/cookie/removeCookie.js.map +0 -1
  110. package/dist/functions/cookie/setCookie.d.ts +0 -11
  111. package/dist/functions/cookie/setCookie.js +0 -23
  112. package/dist/functions/cookie/setCookie.js.map +0 -1
  113. package/dist/functions/data-structures/EventEmitter.d.ts +0 -32
  114. package/dist/functions/data-structures/EventEmitter.js +0 -108
  115. package/dist/functions/data-structures/EventEmitter.js.map +0 -1
  116. package/dist/functions/data-structures/MyPromise.d.ts +0 -32
  117. package/dist/functions/data-structures/MyPromise.js +0 -254
  118. package/dist/functions/data-structures/MyPromise.js.map +0 -1
  119. package/dist/functions/reactive/useReactiveCookie.d.ts +0 -19
  120. package/dist/functions/reactive/useReactiveCookie.js +0 -84
  121. package/dist/functions/reactive/useReactiveCookie.js.map +0 -1
  122. package/dist/hooks/useClickOutside.d.ts +0 -12
  123. package/dist/hooks/useClickOutside.js +0 -16
  124. package/dist/hooks/useClickOutside.js.map +0 -1
  125. package/dist/hooks/useClipboard.d.ts +0 -20
  126. package/dist/hooks/useClipboard.js +0 -33
  127. package/dist/hooks/useClipboard.js.map +0 -1
  128. package/dist/hooks/useCounter.d.ts +0 -19
  129. package/dist/hooks/useCounter.js +0 -44
  130. package/dist/hooks/useCounter.js.map +0 -1
  131. package/dist/hooks/useEventListener.d.ts +0 -14
  132. package/dist/hooks/useEventListener.js +0 -18
  133. package/dist/hooks/useEventListener.js.map +0 -1
  134. package/dist/hooks/useInterval.d.ts +0 -19
  135. package/dist/hooks/useInterval.js +0 -33
  136. package/dist/hooks/useInterval.js.map +0 -1
  137. package/dist/hooks/useTimeout.d.ts +0 -20
  138. package/dist/hooks/useTimeout.js +0 -40
  139. package/dist/hooks/useTimeout.js.map +0 -1
  140. package/dist/hooks/useToggle.d.ts +0 -15
  141. package/dist/hooks/useToggle.js +0 -23
  142. package/dist/hooks/useToggle.js.map +0 -1
  143. package/dist/reactive/createGlobalState.d.ts +0 -2
  144. package/dist/reactive/createGlobalState.js +0 -11
  145. package/dist/reactive/createGlobalState.js.map +0 -1
  146. package/dist/reactive/createSharedComposable.d.ts +0 -2
  147. package/dist/reactive/createSharedComposable.js +0 -13
  148. package/dist/reactive/createSharedComposable.js.map +0 -1
  149. package/dist/reactive/errorManager.d.ts +0 -63
  150. package/dist/reactive/errorManager.js +0 -199
  151. package/dist/reactive/errorManager.js.map +0 -1
  152. package/dist/reactive/i18n.d.ts +0 -27
  153. package/dist/reactive/i18n.js +0 -119
  154. package/dist/reactive/i18n.js.map +0 -1
  155. package/dist/reactive/permission.d.ts +0 -40
  156. package/dist/reactive/permission.js +0 -189
  157. package/dist/reactive/permission.js.map +0 -1
  158. package/dist/reactive/pinia.d.ts +0 -52
  159. package/dist/reactive/pinia.js +0 -183
  160. package/dist/reactive/pinia.js.map +0 -1
  161. package/dist/reactive/useAltool.d.ts +0 -39
  162. package/dist/reactive/useAltool.js +0 -350
  163. package/dist/reactive/useAltool.js.map +0 -1
  164. package/dist/reactive/useCache.d.ts +0 -18
  165. package/dist/reactive/useCache.js +0 -82
  166. package/dist/reactive/useCache.js.map +0 -1
  167. package/dist/reactive/useLocalStorage.d.ts +0 -8
  168. package/dist/reactive/useLocalStorage.js +0 -101
  169. package/dist/reactive/useLocalStorage.js.map +0 -1
  170. package/dist/reactive/usePluginSystem.d.ts +0 -11
  171. package/dist/reactive/usePluginSystem.js +0 -34
  172. package/dist/reactive/usePluginSystem.js.map +0 -1
  173. package/dist/reactive/useSessionStorage.d.ts +0 -8
  174. package/dist/reactive/useSessionStorage.js +0 -101
  175. package/dist/reactive/useSessionStorage.js.map +0 -1
  176. package/dist/reactive/useStorage.d.ts +0 -13
  177. package/dist/reactive/useStorage.js +0 -62
  178. package/dist/reactive/useStorage.js.map +0 -1
  179. package/dist/reactive/useStorageWithIndexedDB.d.ts +0 -8
  180. package/dist/reactive/useStorageWithIndexedDB.js +0 -132
  181. package/dist/reactive/useStorageWithIndexedDB.js.map +0 -1
  182. package/references/vue.d.ts +0 -242
@@ -1,20 +0,0 @@
1
- import type { Ref } from '../../references/vue.d';
2
- import type { setTimeout, clearTimeout } from '../../references/timer.d';
3
- export interface VueCompositionAPI {
4
- ref: <T>(value: T) => Ref<T>;
5
- onUnmounted: (fn: () => void) => void;
6
- }
7
- export interface UseTimeoutDeps {
8
- vue: VueCompositionAPI;
9
- setTimeout: typeof setTimeout;
10
- clearTimeout: typeof clearTimeout;
11
- }
12
- export interface UseTimeoutReturn {
13
- isPending: Ref<boolean>;
14
- isReady: Ref<boolean>;
15
- start: () => void;
16
- stop: () => void;
17
- }
18
- export declare function useTimeout(callback: () => void, delay: number, options: {
19
- immediate?: boolean;
20
- } | undefined, deps: UseTimeoutDeps): UseTimeoutReturn;
@@ -1,40 +0,0 @@
1
- export function useTimeout(callback, delay, options = {}, deps) {
2
- const { immediate = true } = options;
3
- const isPending = deps.vue.ref(false);
4
- const isReady = deps.vue.ref(false);
5
- let timeoutId = null;
6
- const clear = () => {
7
- if (timeoutId) {
8
- deps.clearTimeout(timeoutId);
9
- timeoutId = null;
10
- }
11
- isPending.value = false;
12
- };
13
- const stop = () => {
14
- clear();
15
- isReady.value = false;
16
- };
17
- const start = () => {
18
- clear();
19
- isReady.value = false;
20
- isPending.value = true;
21
- timeoutId = deps.setTimeout(() => {
22
- isPending.value = false;
23
- isReady.value = true;
24
- callback();
25
- }, delay);
26
- };
27
- if (immediate) {
28
- start();
29
- }
30
- deps.vue.onUnmounted(() => {
31
- clear();
32
- });
33
- return {
34
- isPending,
35
- isReady,
36
- start,
37
- stop
38
- };
39
- }
40
- //# sourceMappingURL=useTimeout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTimeout.js","sourceRoot":"","sources":["../../src/hooks/useTimeout.ts"],"names":[],"mappings":"AAuEA,MAAM,UAAU,UAAU,CACxB,QAAoB,EACpB,KAAa,EACb,UAAmC,EAAE,EACrC,IAAoB;IAEpB,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAU,KAAK,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAU,KAAK,CAAC,CAAA;IAC5C,IAAI,SAAS,GAAQ,IAAI,CAAA;IAEzB,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;YAC5B,SAAS,GAAG,IAAI,CAAA;QAClB,CAAC;QACD,SAAS,CAAC,KAAK,GAAG,KAAK,CAAA;IACzB,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,KAAK,EAAE,CAAA;QACP,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA;IACvB,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,KAAK,EAAE,CAAA;QACP,OAAO,CAAC,KAAK,GAAG,KAAK,CAAA;QACrB,SAAS,CAAC,KAAK,GAAG,IAAI,CAAA;QAEtB,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;YAC/B,SAAS,CAAC,KAAK,GAAG,KAAK,CAAA;YACvB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAA;YACpB,QAAQ,EAAE,CAAA;QACZ,CAAC,EAAE,KAAK,CAAC,CAAA;IACX,CAAC,CAAA;IAED,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,EAAE,CAAA;IACT,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE;QACxB,KAAK,EAAE,CAAA;IACT,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,SAAS;QACT,OAAO;QACP,KAAK;QACL,IAAI;KACL,CAAA;AACH,CAAC"}
@@ -1,15 +0,0 @@
1
- import type { Ref } from '../../references/vue.d';
2
- export interface VueCompositionAPI {
3
- ref: <T>(value: T) => Ref<T>;
4
- }
5
- export interface UseToggleDeps {
6
- vue: VueCompositionAPI;
7
- }
8
- export interface UseToggleReturn {
9
- value: Ref<boolean>;
10
- toggle: () => void;
11
- setTrue: () => void;
12
- setFalse: () => void;
13
- setValue: (val: boolean) => void;
14
- }
15
- export declare function useToggle(initialValue: boolean | undefined, deps: UseToggleDeps): UseToggleReturn;
@@ -1,23 +0,0 @@
1
- export function useToggle(initialValue = false, deps) {
2
- const value = deps.vue.ref(initialValue);
3
- const toggle = () => {
4
- value.value = !value.value;
5
- };
6
- const setTrue = () => {
7
- value.value = true;
8
- };
9
- const setFalse = () => {
10
- value.value = false;
11
- };
12
- const setValue = (val) => {
13
- value.value = val;
14
- };
15
- return {
16
- value,
17
- toggle,
18
- setTrue,
19
- setFalse,
20
- setValue
21
- };
22
- }
23
- //# sourceMappingURL=useToggle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useToggle.js","sourceRoot":"","sources":["../../src/hooks/useToggle.ts"],"names":[],"mappings":"AAwDA,MAAM,UAAU,SAAS,CACvB,eAAwB,KAAK,EAC7B,IAAmB;IAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAU,YAAY,CAAC,CAAA;IAEjD,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,KAAK,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,CAAA;IAC5B,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAA;IACpB,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAA;IACrB,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,CAAC,GAAY,EAAE,EAAE;QAChC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAA;IACnB,CAAC,CAAA;IAED,OAAO;QACL,KAAK;QACL,MAAM;QACN,OAAO;QACP,QAAQ;QACR,QAAQ;KACT,CAAA;AACH,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function createGlobalState<T>(stateFactory: () => T): () => T;
2
- export default createGlobalState;
@@ -1,11 +0,0 @@
1
- export function createGlobalState(stateFactory) {
2
- let state;
3
- return () => {
4
- if (state === undefined) {
5
- state = stateFactory();
6
- }
7
- return state;
8
- };
9
- }
10
- export default createGlobalState;
11
- //# sourceMappingURL=createGlobalState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createGlobalState.js","sourceRoot":"","sources":["../../src/reactive/createGlobalState.ts"],"names":[],"mappings":"AAwBA,MAAM,UAAU,iBAAiB,CAC/B,YAAqB;IAErB,IAAI,KAAoB,CAAA;IAExB,OAAO,GAAG,EAAE;QACV,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,GAAG,YAAY,EAAE,CAAA;QACxB,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;AACH,CAAC;AAED,eAAe,iBAAiB,CAAA"}
@@ -1,2 +0,0 @@
1
- export declare function createSharedComposable<T>(composable: () => T): () => T;
2
- export default createSharedComposable;
@@ -1,13 +0,0 @@
1
- export function createSharedComposable(composable) {
2
- let state;
3
- let subscriberCount = 0;
4
- return () => {
5
- subscriberCount++;
6
- if (!state) {
7
- state = composable();
8
- }
9
- return state;
10
- };
11
- }
12
- export default createSharedComposable;
13
- //# sourceMappingURL=createSharedComposable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createSharedComposable.js","sourceRoot":"","sources":["../../src/reactive/createSharedComposable.ts"],"names":[],"mappings":"AAsCA,MAAM,UAAU,sBAAsB,CACpC,UAAmB;IAEnB,IAAI,KAAoB,CAAA;IACxB,IAAI,eAAe,GAAG,CAAC,CAAA;IAEvB,OAAO,GAAG,EAAE;QACV,eAAe,EAAE,CAAA;QAEjB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,UAAU,EAAE,CAAA;QACtB,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;AACH,CAAC;AAED,eAAe,sBAAsB,CAAA"}
@@ -1,63 +0,0 @@
1
- import type { CreateReactive } from '../../types/reactive';
2
- export interface ErrorCode {
3
- code: string;
4
- message: Record<string, string>;
5
- httpStatus?: number;
6
- level?: 'info' | 'warning' | 'error' | 'fatal';
7
- metadata?: Record<string, any>;
8
- }
9
- export interface ErrorCategory {
10
- name: string;
11
- prefix: string;
12
- errors: ErrorCode[];
13
- }
14
- export interface ErrorManagerConfig {
15
- defaultLocale: string;
16
- fallbackLocale?: string;
17
- categories: ErrorCategory[];
18
- }
19
- export interface ErrorManagerDeps {
20
- createReactive: CreateReactive;
21
- log: (...args: any[]) => void;
22
- warn: (...args: any[]) => void;
23
- }
24
- export declare class BusinessError extends Error {
25
- readonly code: string;
26
- readonly httpStatus: number;
27
- readonly level: 'info' | 'warning' | 'error' | 'fatal';
28
- readonly metadata: Record<string, any>;
29
- readonly params?: Record<string, any>;
30
- constructor(code: string, message: string, options?: {
31
- httpStatus?: number;
32
- level?: 'info' | 'warning' | 'error' | 'fatal';
33
- metadata?: Record<string, any>;
34
- params?: Record<string, any>;
35
- });
36
- toJSON(): {
37
- name: string;
38
- code: string;
39
- message: string;
40
- httpStatus: number;
41
- level: "error" | "info" | "warning" | "fatal";
42
- metadata: Record<string, any>;
43
- params: Record<string, any> | undefined;
44
- };
45
- }
46
- export interface ErrorManagerInstance {
47
- locale: string;
48
- getMessage: (code: string, params?: Record<string, any>) => string;
49
- createError: (code: string, params?: Record<string, any>) => BusinessError;
50
- throwError: (code: string, params?: Record<string, any>) => never;
51
- hasError: (code: string) => boolean;
52
- getErrorDefinition: (code: string) => ErrorCode | undefined;
53
- getAllErrors: () => ErrorCode[];
54
- getCategoryErrors: (prefix: string) => ErrorCode[];
55
- getCategories: () => ErrorCategory[];
56
- setLocale: (locale: string) => void;
57
- addError: (categoryPrefix: string, error: ErrorCode) => void;
58
- addCategory: (category: ErrorCategory) => void;
59
- subscribe: (listener: () => void) => () => void;
60
- dispose: () => void;
61
- }
62
- export declare function createErrorManager(config: ErrorManagerConfig, deps: ErrorManagerDeps): ErrorManagerInstance;
63
- export declare function defineErrorCodes<T extends Record<string, string>>(codes: T): T;
@@ -1,199 +0,0 @@
1
- export class BusinessError extends Error {
2
- code;
3
- httpStatus;
4
- level;
5
- metadata;
6
- params;
7
- constructor(code, message, options) {
8
- super(message);
9
- this.name = 'BusinessError';
10
- this.code = code;
11
- this.httpStatus = options?.httpStatus ?? 500;
12
- this.level = options?.level ?? 'error';
13
- this.metadata = options?.metadata ?? {};
14
- this.params = options?.params;
15
- }
16
- toJSON() {
17
- return {
18
- name: this.name,
19
- code: this.code,
20
- message: this.message,
21
- httpStatus: this.httpStatus,
22
- level: this.level,
23
- metadata: this.metadata,
24
- params: this.params
25
- };
26
- }
27
- }
28
- export function createErrorManager(config, deps) {
29
- if (!config.defaultLocale) {
30
- throw new Error('defaultLocale is required');
31
- }
32
- if (!config.categories || config.categories.length === 0) {
33
- throw new Error('categories is required and cannot be empty');
34
- }
35
- const errorMap = new Map();
36
- const categoryMap = new Map();
37
- config.categories.forEach(category => {
38
- categoryMap.set(category.prefix, category);
39
- category.errors.forEach(error => {
40
- errorMap.set(error.code, error);
41
- });
42
- });
43
- const state = {
44
- locale: config.defaultLocale,
45
- fallbackLocale: config.fallbackLocale || config.defaultLocale,
46
- categories: config.categories
47
- };
48
- const reactiveState = deps.createReactive(state, {
49
- subscribers: new Set(),
50
- notify: () => {
51
- },
52
- subscribe: (listener) => {
53
- reactiveState.subscribers.add(listener);
54
- return () => reactiveState.subscribers.delete(listener);
55
- },
56
- dispose: () => reactiveState.subscribers.clear(),
57
- createProxy: (target, reactiveDeps) => new Proxy(target, {
58
- get(target, property) {
59
- if (property === 'subscribe' || property === 'notify' ||
60
- property === 'dispose' || property === 'subscribers') {
61
- return reactiveDeps[property];
62
- }
63
- return target[property];
64
- },
65
- set(target, property, value) {
66
- ;
67
- target[property] = value;
68
- if (property === 'locale') {
69
- reactiveDeps.notify();
70
- deps.log(`语言已切换到: ${value}`);
71
- }
72
- return true;
73
- },
74
- deleteProperty(target, property) {
75
- if (property in target) {
76
- delete target[property];
77
- reactiveDeps.notify();
78
- return true;
79
- }
80
- return false;
81
- }
82
- }),
83
- getChangePath: (target, property) => [String(property)]
84
- });
85
- function replaceParams(message, params) {
86
- if (!params) {
87
- return message;
88
- }
89
- return message.replace(/\{(\w+)\}/g, (match, key) => {
90
- return params[key] !== undefined ? String(params[key]) : match;
91
- });
92
- }
93
- function getMessage(code, params) {
94
- const errorDef = errorMap.get(code);
95
- if (!errorDef) {
96
- deps.warn(`Error code "${code}" not found`);
97
- return code;
98
- }
99
- let message = errorDef.message[reactiveState.locale];
100
- if (!message && reactiveState.fallbackLocale !== reactiveState.locale) {
101
- message = errorDef.message[reactiveState.fallbackLocale];
102
- }
103
- if (!message) {
104
- deps.warn(`Message for error code "${code}" not found in locale "${reactiveState.locale}"`);
105
- return code;
106
- }
107
- return replaceParams(message, params);
108
- }
109
- function createError(code, params) {
110
- const errorDef = errorMap.get(code);
111
- if (!errorDef) {
112
- deps.warn(`Error code "${code}" not found`);
113
- return new BusinessError(code, code, {
114
- httpStatus: 500,
115
- level: 'error'
116
- });
117
- }
118
- const message = getMessage(code, params);
119
- return new BusinessError(code, message, {
120
- httpStatus: errorDef.httpStatus,
121
- level: errorDef.level,
122
- metadata: errorDef.metadata,
123
- params
124
- });
125
- }
126
- function throwError(code, params) {
127
- throw createError(code, params);
128
- }
129
- function hasError(code) {
130
- return errorMap.has(code);
131
- }
132
- function getErrorDefinition(code) {
133
- return errorMap.get(code);
134
- }
135
- function getAllErrors() {
136
- return Array.from(errorMap.values());
137
- }
138
- function getCategoryErrors(prefix) {
139
- const category = categoryMap.get(prefix);
140
- return category ? category.errors : [];
141
- }
142
- function getCategories() {
143
- return reactiveState.categories;
144
- }
145
- function setLocale(locale) {
146
- reactiveState.locale = locale;
147
- }
148
- function addError(categoryPrefix, error) {
149
- const category = categoryMap.get(categoryPrefix);
150
- if (!category) {
151
- deps.warn(`Category "${categoryPrefix}" not found`);
152
- return;
153
- }
154
- if (errorMap.has(error.code)) {
155
- deps.warn(`Error code "${error.code}" already exists`);
156
- return;
157
- }
158
- category.errors.push(error);
159
- errorMap.set(error.code, error);
160
- deps.log(`已添加错误码: ${error.code}`);
161
- }
162
- function addCategory(category) {
163
- if (categoryMap.has(category.prefix)) {
164
- deps.warn(`Category "${category.prefix}" already exists`);
165
- return;
166
- }
167
- reactiveState.categories.push(category);
168
- categoryMap.set(category.prefix, category);
169
- category.errors.forEach(error => {
170
- errorMap.set(error.code, error);
171
- });
172
- deps.log(`已添加错误分类: ${category.name} (${category.prefix})`);
173
- }
174
- return {
175
- get locale() {
176
- return reactiveState.locale;
177
- },
178
- set locale(value) {
179
- setLocale(value);
180
- },
181
- getMessage,
182
- createError,
183
- throwError,
184
- hasError,
185
- getErrorDefinition,
186
- getAllErrors,
187
- getCategoryErrors,
188
- getCategories,
189
- setLocale,
190
- addError,
191
- addCategory,
192
- subscribe: reactiveState.subscribe,
193
- dispose: reactiveState.dispose
194
- };
195
- }
196
- export function defineErrorCodes(codes) {
197
- return codes;
198
- }
199
- //# sourceMappingURL=errorManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errorManager.js","sourceRoot":"","sources":["../../src/reactive/errorManager.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- import type { CreateReactive } from '../../types/reactive';
2
- export interface I18nTranslation {
3
- [key: string]: string | I18nTranslation;
4
- }
5
- export interface I18nMessages {
6
- [locale: string]: I18nTranslation;
7
- }
8
- export interface I18nConfig {
9
- defaultLocale: string;
10
- fallbackLocale?: string;
11
- messages: I18nMessages;
12
- }
13
- export interface I18nDeps {
14
- createReactive: CreateReactive;
15
- log: (...args: any[]) => void;
16
- warn: (...args: any[]) => void;
17
- }
18
- export interface I18nInstance {
19
- locale: string;
20
- t: (key: string, params?: Record<string, any>) => string;
21
- setLocale: (locale: string) => void;
22
- getLocales: () => string[];
23
- hasLocale: (locale: string) => boolean;
24
- addMessages: (locale: string, messages: I18nTranslation) => void;
25
- getMessages: () => I18nTranslation;
26
- }
27
- export declare function createI18n(config: I18nConfig, deps: I18nDeps): I18nInstance;
@@ -1,119 +0,0 @@
1
- export function createI18n(config, deps) {
2
- if (!config.defaultLocale) {
3
- throw new Error('defaultLocale is required');
4
- }
5
- if (!config.messages || Object.keys(config.messages).length === 0) {
6
- throw new Error('messages is required and cannot be empty');
7
- }
8
- if (!config.messages[config.defaultLocale]) {
9
- throw new Error(`Default locale "${config.defaultLocale}" not found in messages`);
10
- }
11
- const state = {
12
- locale: config.defaultLocale,
13
- fallbackLocale: config.fallbackLocale || config.defaultLocale,
14
- messages: config.messages
15
- };
16
- const reactiveState = deps.createReactive(state, {
17
- subscribers: new Set(),
18
- notify: () => {
19
- },
20
- subscribe: (listener) => {
21
- reactiveState.subscribers.add(listener);
22
- return () => reactiveState.subscribers.delete(listener);
23
- },
24
- dispose: () => reactiveState.subscribers.clear(),
25
- createProxy: (target, reactiveDeps) => new Proxy(target, {
26
- get(target, property) {
27
- if (property === 'subscribe' || property === 'notify' ||
28
- property === 'dispose' || property === 'subscribers') {
29
- return reactiveDeps[property];
30
- }
31
- return target[property];
32
- },
33
- set(target, property, value) {
34
- const oldValue = target[property];
35
- target[property] = value;
36
- if (property === 'locale') {
37
- reactiveDeps.notify();
38
- deps.log(`语言已切换到: ${value}`);
39
- }
40
- return true;
41
- },
42
- deleteProperty(target, property) {
43
- if (property in target) {
44
- delete target[property];
45
- reactiveDeps.notify();
46
- return true;
47
- }
48
- return false;
49
- }
50
- }),
51
- getChangePath: (target, property) => [String(property)]
52
- });
53
- function getNestedValue(obj, path) {
54
- return path.split('.').reduce((current, key) => {
55
- return current && current[key] !== undefined ? current[key] : undefined;
56
- }, obj);
57
- }
58
- function t(key, params) {
59
- let message = getNestedValue(reactiveState.messages[reactiveState.locale], key);
60
- if (message === undefined && reactiveState.fallbackLocale !== reactiveState.locale) {
61
- message = getNestedValue(reactiveState.messages[reactiveState.fallbackLocale], key);
62
- }
63
- if (message === undefined) {
64
- deps.warn(`Translation key "${key}" not found for locale "${reactiveState.locale}"`);
65
- return key;
66
- }
67
- if (params && typeof message === 'string') {
68
- return message.replace(/\{(\w+)\}/g, (match, paramKey) => {
69
- return params[paramKey] !== undefined ? String(params[paramKey]) : match;
70
- });
71
- }
72
- return String(message);
73
- }
74
- function setLocale(locale) {
75
- if (!reactiveState.messages[locale]) {
76
- deps.warn(`Locale "${locale}" not found in messages`);
77
- return;
78
- }
79
- reactiveState.locale = locale;
80
- }
81
- function getLocales() {
82
- return Object.keys(reactiveState.messages);
83
- }
84
- function hasLocale(locale) {
85
- return locale in reactiveState.messages;
86
- }
87
- function addMessages(locale, messages) {
88
- if (reactiveState.messages[locale]) {
89
- reactiveState.messages[locale] = {
90
- ...reactiveState.messages[locale],
91
- ...messages
92
- };
93
- }
94
- else {
95
- reactiveState.messages[locale] = messages;
96
- }
97
- deps.log(`已添加语言包: ${locale}`);
98
- }
99
- function getMessages() {
100
- return reactiveState.messages[reactiveState.locale] || {};
101
- }
102
- return {
103
- get locale() {
104
- return reactiveState.locale;
105
- },
106
- set locale(value) {
107
- setLocale(value);
108
- },
109
- t,
110
- setLocale,
111
- getLocales,
112
- hasLocale,
113
- addMessages,
114
- getMessages,
115
- subscribe: reactiveState.subscribe,
116
- dispose: reactiveState.dispose
117
- };
118
- }
119
- //# sourceMappingURL=i18n.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/reactive/i18n.ts"],"names":[],"mappings":"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"}
@@ -1,40 +0,0 @@
1
- import type { CreateReactive } from '../../types/reactive';
2
- export interface Permission {
3
- code: string;
4
- name: string;
5
- description?: string;
6
- }
7
- export interface Role {
8
- code: string;
9
- name: string;
10
- permissions: string[];
11
- description?: string;
12
- }
13
- export interface PermissionConfig {
14
- defaultRole: string;
15
- permissions: Permission[];
16
- roles: Role[];
17
- strict?: boolean;
18
- }
19
- export interface PermissionDeps {
20
- createReactive: CreateReactive;
21
- log: (...args: any[]) => void;
22
- warn: (...args: any[]) => void;
23
- }
24
- export interface PermissionInstance {
25
- currentRole: string;
26
- hasPermission: (permissionCode: string) => boolean;
27
- hasAllPermissions: (permissionCodes: string[]) => boolean;
28
- hasAnyPermission: (permissionCodes: string[]) => boolean;
29
- setRole: (roleCode: string) => void;
30
- getCurrentRole: () => Role | undefined;
31
- getCurrentPermissions: () => Permission[];
32
- getRoles: () => Role[];
33
- getPermissions: () => Permission[];
34
- hasRole: (roleCode: string) => boolean;
35
- addRole: (role: Role) => void;
36
- addPermission: (permission: Permission) => void;
37
- addPermissionToRole: (roleCode: string, permissionCode: string) => void;
38
- removePermissionFromRole: (roleCode: string, permissionCode: string) => void;
39
- }
40
- export declare function createPermission(config: PermissionConfig, deps: PermissionDeps): PermissionInstance;