zcw-shared 1.28.0 → 1.29.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 (142) hide show
  1. package/dist/functions/algorithm/lcsVisual.d.ts +6 -0
  2. package/dist/functions/algorithm/lcsVisual.js +88 -0
  3. package/dist/functions/algorithm/lcsVisual.js.map +1 -0
  4. package/dist/functions/algorithm/mergeSortVisual.d.ts +5 -0
  5. package/dist/functions/algorithm/mergeSortVisual.js +103 -0
  6. package/dist/functions/algorithm/mergeSortVisual.js.map +1 -0
  7. package/dist/functions/algorithm/nQueensVisual.d.ts +14 -0
  8. package/dist/functions/algorithm/nQueensVisual.js +94 -0
  9. package/dist/functions/algorithm/nQueensVisual.js.map +1 -0
  10. package/dist/functions/algorithm/numIslandsVisual.d.ts +17 -0
  11. package/dist/functions/algorithm/numIslandsVisual.js +102 -0
  12. package/dist/functions/algorithm/numIslandsVisual.js.map +1 -0
  13. package/dist/functions/algorithm/quickSortVisual.d.ts +18 -0
  14. package/dist/functions/algorithm/quickSortVisual.js +104 -0
  15. package/dist/functions/algorithm/quickSortVisual.js.map +1 -0
  16. package/dist/functions/browser/detectDevice.d.ts +10 -0
  17. package/dist/functions/browser/detectDevice.js +49 -0
  18. package/dist/functions/browser/detectDevice.js.map +1 -0
  19. package/dist/functions/cookie/getCookie.d.ts +5 -0
  20. package/dist/functions/cookie/getCookie.js +14 -0
  21. package/dist/functions/cookie/getCookie.js.map +1 -0
  22. package/dist/functions/cookie/removeCookie.d.ts +8 -0
  23. package/dist/functions/cookie/removeCookie.js +12 -0
  24. package/dist/functions/cookie/removeCookie.js.map +1 -0
  25. package/dist/functions/cookie/setCookie.d.ts +11 -0
  26. package/dist/functions/cookie/setCookie.js +23 -0
  27. package/dist/functions/cookie/setCookie.js.map +1 -0
  28. package/dist/functions/data-structures/EventEmitter.d.ts +32 -0
  29. package/dist/functions/data-structures/EventEmitter.js +108 -0
  30. package/dist/functions/data-structures/EventEmitter.js.map +1 -0
  31. package/dist/functions/data-structures/MyPromise.d.ts +32 -0
  32. package/dist/functions/data-structures/MyPromise.js +254 -0
  33. package/dist/functions/data-structures/MyPromise.js.map +1 -0
  34. package/dist/functions/image/generatePlaceholderImage.d.ts +43 -0
  35. package/dist/functions/image/generatePlaceholderImage.js +331 -0
  36. package/dist/functions/image/generatePlaceholderImage.js.map +1 -0
  37. package/dist/functions/reactive/useReactiveCookie.d.ts +19 -0
  38. package/dist/functions/reactive/useReactiveCookie.js +84 -0
  39. package/dist/functions/reactive/useReactiveCookie.js.map +1 -0
  40. package/dist/hooks/useClickOutside.d.ts +12 -0
  41. package/dist/hooks/useClickOutside.js +16 -0
  42. package/dist/hooks/useClickOutside.js.map +1 -0
  43. package/dist/hooks/useClipboard.d.ts +20 -0
  44. package/dist/hooks/useClipboard.js +33 -0
  45. package/dist/hooks/useClipboard.js.map +1 -0
  46. package/dist/hooks/useCounter.d.ts +19 -0
  47. package/dist/hooks/useCounter.js +44 -0
  48. package/dist/hooks/useCounter.js.map +1 -0
  49. package/dist/hooks/useEventListener.d.ts +14 -0
  50. package/dist/hooks/useEventListener.js +18 -0
  51. package/dist/hooks/useEventListener.js.map +1 -0
  52. package/dist/hooks/useInterval.d.ts +19 -0
  53. package/dist/hooks/useInterval.js +33 -0
  54. package/dist/hooks/useInterval.js.map +1 -0
  55. package/dist/hooks/useTimeout.d.ts +20 -0
  56. package/dist/hooks/useTimeout.js +40 -0
  57. package/dist/hooks/useTimeout.js.map +1 -0
  58. package/dist/hooks/useToggle.d.ts +15 -0
  59. package/dist/hooks/useToggle.js +23 -0
  60. package/dist/hooks/useToggle.js.map +1 -0
  61. package/dist/reactive/createGlobalState.d.ts +2 -0
  62. package/dist/reactive/createGlobalState.js +11 -0
  63. package/dist/reactive/createGlobalState.js.map +1 -0
  64. package/dist/reactive/createSharedComposable.d.ts +2 -0
  65. package/dist/reactive/createSharedComposable.js +13 -0
  66. package/dist/reactive/createSharedComposable.js.map +1 -0
  67. package/dist/reactive/errorManager.d.ts +63 -0
  68. package/dist/reactive/errorManager.js +199 -0
  69. package/dist/reactive/errorManager.js.map +1 -0
  70. package/dist/reactive/i18n.d.ts +27 -0
  71. package/dist/reactive/i18n.js +119 -0
  72. package/dist/reactive/i18n.js.map +1 -0
  73. package/dist/reactive/permission.d.ts +40 -0
  74. package/dist/reactive/permission.js +189 -0
  75. package/dist/reactive/permission.js.map +1 -0
  76. package/dist/reactive/pinia.d.ts +52 -0
  77. package/dist/reactive/pinia.js +183 -0
  78. package/dist/reactive/pinia.js.map +1 -0
  79. package/dist/reactive/useAltool.d.ts +39 -0
  80. package/dist/reactive/useAltool.js +350 -0
  81. package/dist/reactive/useAltool.js.map +1 -0
  82. package/dist/reactive/useCache.d.ts +18 -0
  83. package/dist/reactive/useCache.js +82 -0
  84. package/dist/reactive/useCache.js.map +1 -0
  85. package/dist/reactive/useLocalStorage.d.ts +8 -0
  86. package/dist/reactive/useLocalStorage.js +101 -0
  87. package/dist/reactive/useLocalStorage.js.map +1 -0
  88. package/dist/reactive/usePluginSystem.d.ts +11 -0
  89. package/dist/reactive/usePluginSystem.js +34 -0
  90. package/dist/reactive/usePluginSystem.js.map +1 -0
  91. package/dist/reactive/useSessionStorage.d.ts +8 -0
  92. package/dist/reactive/useSessionStorage.js +101 -0
  93. package/dist/reactive/useSessionStorage.js.map +1 -0
  94. package/dist/reactive/useStorage.d.ts +13 -0
  95. package/dist/reactive/useStorage.js +62 -0
  96. package/dist/reactive/useStorage.js.map +1 -0
  97. package/dist/reactive/useStorageWithIndexedDB.d.ts +8 -0
  98. package/dist/reactive/useStorageWithIndexedDB.js +132 -0
  99. package/dist/reactive/useStorageWithIndexedDB.js.map +1 -0
  100. package/dist/vue-hooks/browser/useFileUpload.d.ts +25 -0
  101. package/dist/vue-hooks/browser/useFileUpload.js +81 -0
  102. package/dist/vue-hooks/browser/useFileUpload.js.map +1 -0
  103. package/package.json +4 -2
  104. package/dist/functions/platform/tencent-cloud/deploy.tcb.d.ts +0 -13
  105. package/dist/functions/platform/tencent-cloud/deploy.tcb.js +0 -46
  106. package/dist/functions/platform/tencent-cloud/deploy.tcb.js.map +0 -1
  107. package/dist/functions/platform/tencent-cloud/getSecret.d.ts +0 -4
  108. package/dist/functions/platform/tencent-cloud/getSecret.js +0 -19
  109. package/dist/functions/platform/tencent-cloud/getSecret.js.map +0 -1
  110. package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.d.ts +0 -27
  111. package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.js +0 -287
  112. package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.js.map +0 -1
  113. package/dist/functions/platform/uniapp/build.d.ts +0 -21
  114. package/dist/functions/platform/uniapp/build.js +0 -83
  115. package/dist/functions/platform/uniapp/build.js.map +0 -1
  116. package/dist/functions/platform/uniapp/detectAndroidProjectStructure.d.ts +0 -11
  117. package/dist/functions/platform/uniapp/detectAndroidProjectStructure.js +0 -30
  118. package/dist/functions/platform/uniapp/detectAndroidProjectStructure.js.map +0 -1
  119. package/dist/functions/platform/uniapp/detectProjectType.d.ts +0 -20
  120. package/dist/functions/platform/uniapp/detectProjectType.js +0 -68
  121. package/dist/functions/platform/uniapp/detectProjectType.js.map +0 -1
  122. package/dist/functions/platform/uniapp/parseManifest.d.ts +0 -18
  123. package/dist/functions/platform/uniapp/parseManifest.js +0 -49
  124. package/dist/functions/platform/uniapp/parseManifest.js.map +0 -1
  125. package/dist/functions/platform/uniapp/waitForPages.d.ts +0 -7
  126. package/dist/functions/platform/uniapp/waitForPages.js +0 -20
  127. package/dist/functions/platform/uniapp/waitForPages.js.map +0 -1
  128. package/dist/functions/string/visualizeRegexSteps.d.ts +0 -39
  129. package/dist/functions/string/visualizeRegexSteps.js +0 -446
  130. package/dist/functions/string/visualizeRegexSteps.js.map +0 -1
  131. package/dist/functions/utils/createI18n.d.ts +0 -2
  132. package/dist/functions/utils/createI18n.js +0 -97
  133. package/dist/functions/utils/createI18n.js.map +0 -1
  134. package/dist/functions/utils/formatString.d.ts +0 -5
  135. package/dist/functions/utils/formatString.js +0 -9
  136. package/dist/functions/utils/formatString.js.map +0 -1
  137. package/dist/hooks/usePermission.d.ts +0 -7
  138. package/dist/hooks/usePermission.js +0 -123
  139. package/dist/hooks/usePermission.js.map +0 -1
  140. package/dist/vue-hooks/dom/useKeyboard.d.ts +0 -29
  141. package/dist/vue-hooks/dom/useKeyboard.js +0 -129
  142. package/dist/vue-hooks/dom/useKeyboard.js.map +0 -1
@@ -0,0 +1,101 @@
1
+ export default function useSessionStorage(deps, options = {}) {
2
+ const { sessionStorage, consoleError } = deps;
3
+ const { prefix = '', serializer } = options;
4
+ const defaultSerializer = {
5
+ serialize: (value) => JSON.stringify(value),
6
+ deserialize: (value) => {
7
+ try {
8
+ return JSON.parse(value);
9
+ }
10
+ catch {
11
+ return value;
12
+ }
13
+ }
14
+ };
15
+ const currentSerializer = serializer || defaultSerializer;
16
+ const get = async (key) => {
17
+ try {
18
+ const fullKey = prefix + key;
19
+ const item = sessionStorage.getItem(fullKey);
20
+ if (item === null)
21
+ return null;
22
+ return currentSerializer.deserialize(item);
23
+ }
24
+ catch (error) {
25
+ consoleError(`获取 sessionStorage 值失败: ${error}`);
26
+ return null;
27
+ }
28
+ };
29
+ const set = async (key, value) => {
30
+ try {
31
+ const fullKey = prefix + key;
32
+ const serializedValue = currentSerializer.serialize(value);
33
+ sessionStorage.setItem(fullKey, serializedValue);
34
+ }
35
+ catch (error) {
36
+ throw new Error(`设置 sessionStorage 值失败: ${error}`);
37
+ }
38
+ };
39
+ const remove = async (key) => {
40
+ try {
41
+ const fullKey = prefix + key;
42
+ sessionStorage.removeItem(fullKey);
43
+ }
44
+ catch (error) {
45
+ throw new Error(`移除 sessionStorage 值失败: ${error}`);
46
+ }
47
+ };
48
+ const clear = async () => {
49
+ try {
50
+ sessionStorage.clear();
51
+ }
52
+ catch (error) {
53
+ throw new Error(`清空 sessionStorage 失败: ${error}`);
54
+ }
55
+ };
56
+ const getAll = async () => {
57
+ try {
58
+ const result = {};
59
+ for (let i = 0; i < sessionStorage.length; i++) {
60
+ const key = sessionStorage.key(i);
61
+ if (key && key.startsWith(prefix)) {
62
+ const actualKey = key.slice(prefix.length);
63
+ const value = await get(actualKey);
64
+ if (value !== null) {
65
+ result[actualKey] = value;
66
+ }
67
+ }
68
+ }
69
+ return result;
70
+ }
71
+ catch (error) {
72
+ consoleError(`获取所有 sessionStorage 值失败: ${error}`);
73
+ return {};
74
+ }
75
+ };
76
+ const getKeys = async () => {
77
+ try {
78
+ const keys = [];
79
+ for (let i = 0; i < sessionStorage.length; i++) {
80
+ const key = sessionStorage.key(i);
81
+ if (key && key.startsWith(prefix)) {
82
+ keys.push(key.slice(prefix.length));
83
+ }
84
+ }
85
+ return keys;
86
+ }
87
+ catch (error) {
88
+ consoleError(`获取 sessionStorage 键列表失败: ${error}`);
89
+ return [];
90
+ }
91
+ };
92
+ return {
93
+ get,
94
+ set,
95
+ remove,
96
+ clear,
97
+ getAll,
98
+ getKeys
99
+ };
100
+ }
101
+ //# sourceMappingURL=useSessionStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSessionStorage.js","sourceRoot":"","sources":["../../src/reactive/useSessionStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { StorageAdapter } from '../../types/storage.d';
2
+ import type { Console } from '../../references/console.d';
3
+ export interface StorageDeps {
4
+ error: Console['error'];
5
+ }
6
+ export default function useStorage<T>(adapter: StorageAdapter<T>, deps: StorageDeps): {
7
+ getAll: () => Promise<Record<string, T>>;
8
+ get: (key: string) => Promise<T | null>;
9
+ set: (key: string, value: T) => Promise<void>;
10
+ remove: (key: string) => Promise<void>;
11
+ clear: () => Promise<void>;
12
+ getKeys: () => Promise<string[]>;
13
+ };
@@ -0,0 +1,62 @@
1
+ export default function useStorage(adapter, deps) {
2
+ const getAll = async () => {
3
+ try {
4
+ return await adapter.getAll();
5
+ }
6
+ catch (error) {
7
+ deps.error(`获取所有存储值失败: ${error}`);
8
+ return {};
9
+ }
10
+ };
11
+ const get = async (key) => {
12
+ try {
13
+ return await adapter.get(key);
14
+ }
15
+ catch (error) {
16
+ deps.error(`获取存储值失败: ${error}`);
17
+ return null;
18
+ }
19
+ };
20
+ const set = async (key, value) => {
21
+ try {
22
+ await adapter.set(key, value);
23
+ }
24
+ catch (error) {
25
+ throw new Error(`设置存储值失败: ${error}`);
26
+ }
27
+ };
28
+ const remove = async (key) => {
29
+ try {
30
+ await adapter.remove(key);
31
+ }
32
+ catch (error) {
33
+ throw new Error(`移除存储值失败: ${error}`);
34
+ }
35
+ };
36
+ const clear = async () => {
37
+ try {
38
+ await adapter.clear();
39
+ }
40
+ catch (error) {
41
+ throw new Error(`清空存储失败: ${error}`);
42
+ }
43
+ };
44
+ const getKeys = async () => {
45
+ try {
46
+ return await adapter.getKeys();
47
+ }
48
+ catch (error) {
49
+ deps.error(`获取存储键列表失败: ${error}`);
50
+ return [];
51
+ }
52
+ };
53
+ return {
54
+ getAll,
55
+ get,
56
+ set,
57
+ remove,
58
+ clear,
59
+ getKeys
60
+ };
61
+ }
62
+ //# sourceMappingURL=useStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStorage.js","sourceRoot":"","sources":["../../src/reactive/useStorage.ts"],"names":[],"mappings":"AAsBA,MAAM,CAAC,OAAO,UAAU,UAAU,CAChC,OAA0B,EAC1B,IAAiB;IAGjB,MAAM,MAAM,GAAG,KAAK,IAAgC,EAAE;QACpD,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,MAAM,EAAE,CAAA;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,EAAE,CAAC,CAAA;YACjC,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC,CAAA;IAGD,MAAM,GAAG,GAAG,KAAK,EAAE,GAAW,EAAqB,EAAE;QACnD,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC,CAAA;YAC/B,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAGD,MAAM,GAAG,GAAG,KAAK,EAAE,GAAW,EAAE,KAAQ,EAAiB,EAAE;QACzD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC/B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC,CAAA;QACtC,CAAC;IACH,CAAC,CAAA;IAGD,MAAM,MAAM,GAAG,KAAK,EAAE,GAAW,EAAiB,EAAE;QAClD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC,CAAA;QACtC,CAAC;IACH,CAAC,CAAA;IAGD,MAAM,KAAK,GAAG,KAAK,IAAmB,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAA;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,EAAE,CAAC,CAAA;QACrC,CAAC;IACH,CAAC,CAAA;IAGD,MAAM,OAAO,GAAG,KAAK,IAAuB,EAAE;QAC5C,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,EAAE,CAAC,CAAA;YACjC,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC,CAAA;IAED,OAAO;QACL,MAAM;QACN,GAAG;QACH,GAAG;QACH,MAAM;QACN,KAAK;QACL,OAAO;KACR,CAAA;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { IDBFactory } from '../../references/indexeddb.d';
2
+ import type { IndexedDBStorageOptions, StorageAdapter } from '../../types/storage.d';
3
+ import type { Console } from '../../references/console.d';
4
+ export interface IndexedDBStorageDeps {
5
+ indexedDB: IDBFactory;
6
+ consoleError: Console['error'];
7
+ }
8
+ export default function useStorageWithIndexedDB<T>(deps: IndexedDBStorageDeps, options: IndexedDBStorageOptions): StorageAdapter<T>;
@@ -0,0 +1,132 @@
1
+ export default function useStorageWithIndexedDB(deps, options) {
2
+ const { indexedDB, consoleError } = deps;
3
+ const { dbName, storeName, version = 1, prefix = '', serializer } = options;
4
+ const defaultSerializer = {
5
+ serialize: (value) => value,
6
+ deserialize: (value) => value
7
+ };
8
+ const currentSerializer = serializer ? {
9
+ serialize: serializer.serialize,
10
+ deserialize: (value) => {
11
+ if (typeof value === 'string') {
12
+ return serializer.deserialize(value);
13
+ }
14
+ return serializer.deserialize(JSON.stringify(value));
15
+ }
16
+ } : defaultSerializer;
17
+ const openDatabase = () => {
18
+ return new Promise((resolve, reject) => {
19
+ const request = indexedDB.open(dbName, version);
20
+ request.onerror = () => {
21
+ reject(new Error(`打开 IndexedDB 数据库失败: ${request.error?.message}`));
22
+ };
23
+ request.onsuccess = () => {
24
+ resolve(request.result);
25
+ };
26
+ request.onupgradeneeded = () => {
27
+ const db = request.result;
28
+ if (!db.objectStoreNames.contains(storeName)) {
29
+ db.createObjectStore(storeName);
30
+ }
31
+ };
32
+ });
33
+ };
34
+ const getObjectStore = async (mode = 'readonly') => {
35
+ const db = await openDatabase();
36
+ const transaction = db.transaction([storeName], mode);
37
+ return transaction.objectStore(storeName);
38
+ };
39
+ const executeRequest = (request) => {
40
+ return new Promise((resolve, reject) => {
41
+ request.onsuccess = () => resolve(request.result);
42
+ request.onerror = () => reject(new Error(`IndexedDB 操作失败: ${request.error?.message}`));
43
+ });
44
+ };
45
+ const get = async (key) => {
46
+ try {
47
+ const fullKey = prefix + key;
48
+ const store = await getObjectStore('readonly');
49
+ const request = store.get(fullKey);
50
+ const result = await executeRequest(request);
51
+ return result ? currentSerializer.deserialize(result) : null;
52
+ }
53
+ catch (error) {
54
+ consoleError(`获取 IndexedDB 值失败: ${error}`);
55
+ return null;
56
+ }
57
+ };
58
+ const set = async (key, value) => {
59
+ try {
60
+ const fullKey = prefix + key;
61
+ const store = await getObjectStore('readwrite');
62
+ const serializedValue = currentSerializer.serialize(value);
63
+ const request = store.put(serializedValue, fullKey);
64
+ await executeRequest(request);
65
+ }
66
+ catch (error) {
67
+ throw new Error(`设置 IndexedDB 值失败: ${error}`);
68
+ }
69
+ };
70
+ const remove = async (key) => {
71
+ try {
72
+ const fullKey = prefix + key;
73
+ const store = await getObjectStore('readwrite');
74
+ const request = store.delete(fullKey);
75
+ await executeRequest(request);
76
+ }
77
+ catch (error) {
78
+ throw new Error(`移除 IndexedDB 值失败: ${error}`);
79
+ }
80
+ };
81
+ const clear = async () => {
82
+ try {
83
+ const store = await getObjectStore('readwrite');
84
+ const request = store.clear();
85
+ await executeRequest(request);
86
+ }
87
+ catch (error) {
88
+ throw new Error(`清空 IndexedDB 失败: ${error}`);
89
+ }
90
+ };
91
+ const getKeys = async () => {
92
+ try {
93
+ const store = await getObjectStore('readonly');
94
+ const request = store.getAllKeys();
95
+ const keys = await executeRequest(request);
96
+ return keys.map(key => {
97
+ const strKey = String(key);
98
+ return strKey.startsWith(prefix) ? strKey.slice(prefix.length) : strKey;
99
+ });
100
+ }
101
+ catch (error) {
102
+ consoleError(`获取 IndexedDB 键列表失败: ${error}`);
103
+ return [];
104
+ }
105
+ };
106
+ const getAll = async () => {
107
+ try {
108
+ const keys = await getKeys();
109
+ const result = {};
110
+ for (const key of keys) {
111
+ const value = await get(key);
112
+ if (value !== null) {
113
+ result[key] = value;
114
+ }
115
+ }
116
+ return result;
117
+ }
118
+ catch (error) {
119
+ consoleError(`获取所有 IndexedDB 值失败: ${error}`);
120
+ return {};
121
+ }
122
+ };
123
+ return {
124
+ get,
125
+ set,
126
+ remove,
127
+ clear,
128
+ getAll,
129
+ getKeys
130
+ };
131
+ }
132
+ //# sourceMappingURL=useStorageWithIndexedDB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStorageWithIndexedDB.js","sourceRoot":"","sources":["../../src/reactive/useStorageWithIndexedDB.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { Ref } from '../../../references/vue.d';
2
+ import type { VueCompositionAPI } from '../../../types/vue.d';
3
+ import type { Window, File } from '../../../references/browser.d';
4
+ export interface FileUploadItem {
5
+ uid: string;
6
+ originFile: File;
7
+ status: 'ready' | 'uploading' | 'success' | 'failed';
8
+ localPreview?: string;
9
+ onlinePreview?: string;
10
+ }
11
+ export interface UseFileUploadEnvironment {
12
+ vue: Pick<Required<VueCompositionAPI>, 'ref' | 'shallowRef' | 'onUnmounted'>;
13
+ host: {
14
+ createObjectURL: Window['URL']['createObjectURL'];
15
+ revokeObjectURL: Window['URL']['revokeObjectURL'];
16
+ };
17
+ }
18
+ export interface UseFileUploadReturn {
19
+ fileList: Ref<FileUploadItem[]>;
20
+ clear: () => void;
21
+ append: (files: File | File[]) => void;
22
+ replaceAt: (index: number, file: File) => void;
23
+ }
24
+ export declare function useFileUpload(initialFileList: FileUploadItem[], asyncBeforeUpload: (file: File) => Promise<boolean> | boolean, asyncUpload: (file: File) => Promise<string>, asyncAfterUpload: (file: File, url: string) => Promise<void> | void, env: UseFileUploadEnvironment): UseFileUploadReturn;
25
+ export default useFileUpload;
@@ -0,0 +1,81 @@
1
+ export function useFileUpload(initialFileList, asyncBeforeUpload, asyncUpload, asyncAfterUpload, env) {
2
+ const fileList = env.vue.shallowRef(initialFileList || []);
3
+ function generateUID() {
4
+ return `${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;
5
+ }
6
+ function createFileItem(file) {
7
+ const uid = generateUID();
8
+ const localPreview = env.host.createObjectURL(file);
9
+ return {
10
+ uid,
11
+ originFile: file,
12
+ status: 'ready',
13
+ localPreview
14
+ };
15
+ }
16
+ async function handleUpload(fileItem) {
17
+ try {
18
+ const shouldUpload = await asyncBeforeUpload(fileItem.originFile);
19
+ if (!shouldUpload) {
20
+ fileItem.status = 'failed';
21
+ return;
22
+ }
23
+ fileItem.status = 'uploading';
24
+ const url = await asyncUpload(fileItem.originFile);
25
+ fileItem.status = 'success';
26
+ fileItem.onlinePreview = url;
27
+ await asyncAfterUpload(fileItem.originFile, url);
28
+ }
29
+ catch (error) {
30
+ fileItem.status = 'failed';
31
+ throw error;
32
+ }
33
+ }
34
+ function clear() {
35
+ fileList.value.forEach(item => {
36
+ if (item.localPreview) {
37
+ env.host.revokeObjectURL(item.localPreview);
38
+ }
39
+ });
40
+ fileList.value = [];
41
+ }
42
+ function append(files) {
43
+ const filesArray = Array.isArray(files) ? files : [files];
44
+ const newItems = filesArray.map(file => createFileItem(file));
45
+ fileList.value = [...fileList.value, ...newItems];
46
+ newItems.forEach(item => {
47
+ handleUpload(item).catch(() => {
48
+ });
49
+ });
50
+ }
51
+ function replaceAt(index, file) {
52
+ if (index < 0 || index >= fileList.value.length) {
53
+ throw new Error(`索引 ${index} 超出范围`);
54
+ }
55
+ const oldItem = fileList.value[index];
56
+ if (oldItem.localPreview) {
57
+ env.host.revokeObjectURL(oldItem.localPreview);
58
+ }
59
+ const newItem = createFileItem(file);
60
+ const newList = [...fileList.value];
61
+ newList[index] = newItem;
62
+ fileList.value = newList;
63
+ handleUpload(newItem).catch(() => {
64
+ });
65
+ }
66
+ env.vue.onUnmounted(() => {
67
+ fileList.value.forEach(item => {
68
+ if (item.localPreview) {
69
+ env.host.revokeObjectURL(item.localPreview);
70
+ }
71
+ });
72
+ });
73
+ return {
74
+ fileList,
75
+ clear,
76
+ append,
77
+ replaceAt
78
+ };
79
+ }
80
+ export default useFileUpload;
81
+ //# sourceMappingURL=useFileUpload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFileUpload.js","sourceRoot":"","sources":["../../../src/vue-hooks/browser/useFileUpload.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zcw-shared",
3
- "version": "1.28.0",
3
+ "version": "1.29.0",
4
4
  "files": [
5
5
  "references",
6
6
  "dist",
@@ -34,7 +34,7 @@
34
34
  "typescript": "^5.8.3",
35
35
  "vitepress": "^1.6.4",
36
36
  "vue": "^3.5.22",
37
- "zcw-shared": "^1.27.0",
37
+ "zcw-shared": "^1.28.0",
38
38
  "zcw-vue-ui": "^1.11.3"
39
39
  },
40
40
  "exports": {
@@ -148,6 +148,7 @@
148
148
  "./functions/image/generateMacIcons": "./dist/functions/image/generateMacIcons.js",
149
149
  "./functions/image/generateMacTrayIcon": "./dist/functions/image/generateMacTrayIcon.js",
150
150
  "./functions/image/generatePaddedImage": "./dist/functions/image/generatePaddedImage.js",
151
+ "./functions/image/generatePlaceholderImage": "./dist/functions/image/generatePlaceholderImage.js",
151
152
  "./functions/image/generatePwaIcons": "./dist/functions/image/generatePwaIcons.js",
152
153
  "./functions/image/generateRoundedImage": "./dist/functions/image/generateRoundedImage.js",
153
154
  "./functions/image/getImageDimensions": "./dist/functions/image/getImageDimensions.js",
@@ -257,6 +258,7 @@
257
258
  "./vue-hooks/browser/useBluetooth": "./dist/vue-hooks/browser/useBluetooth.js",
258
259
  "./vue-hooks/browser/useCamera": "./dist/vue-hooks/browser/useCamera.js",
259
260
  "./vue-hooks/browser/useClipboard": "./dist/vue-hooks/browser/useClipboard.js",
261
+ "./vue-hooks/browser/useFileUpload": "./dist/vue-hooks/browser/useFileUpload.js",
260
262
  "./vue-hooks/browser/useFullscreen": "./dist/vue-hooks/browser/useFullscreen.js",
261
263
  "./vue-hooks/browser/useGamepad": "./dist/vue-hooks/browser/useGamepad.js",
262
264
  "./vue-hooks/browser/useGeolocation": "./dist/vue-hooks/browser/useGeolocation.js",
@@ -1,13 +0,0 @@
1
- import type { DeployOptions, DeployResult, SecretType } from '../../../../types/tencent-cloud.d';
2
- import type { TencentCloudSecret, CloudBaseManager } from '../../../../references/tencent-cloud.d';
3
- import type { FileSystem } from '../../../../references/node.d';
4
- import type { Console } from '../../../../references/console.d';
5
- export interface DeployTCBDeps {
6
- existsSync: FileSystem['existsSync'];
7
- init: CloudBaseManager['init'];
8
- log: Console['log'];
9
- error: Console['error'];
10
- getSecret: (type: SecretType) => TencentCloudSecret | null;
11
- }
12
- export declare function deployToTCB(options: DeployOptions, deps: DeployTCBDeps): Promise<DeployResult>;
13
- export default deployToTCB;
@@ -1,46 +0,0 @@
1
- export async function deployToTCB(options, deps) {
2
- const { localPath, cloudPath = '/', envId, secretType, showProgress = true } = options;
3
- try {
4
- if (!deps.existsSync(localPath)) {
5
- return {
6
- success: false,
7
- error: `本地路径不存在: ${localPath}`
8
- };
9
- }
10
- const secret = deps.getSecret(secretType);
11
- if (!secret || !secret.secretId || !secret.secretKey) {
12
- return {
13
- success: false,
14
- error: `无效的密钥类型: ${secretType}`
15
- };
16
- }
17
- const app = deps.init({
18
- secretId: secret.secretId,
19
- secretKey: secret.secretKey,
20
- envId
21
- });
22
- const hosting = app.hosting;
23
- await hosting.uploadFiles({
24
- localPath,
25
- cloudPath,
26
- onProgress: showProgress ? (progressData) => {
27
- deps.log(`上传进度: ${progressData.percent}%`);
28
- } : undefined
29
- });
30
- deps.log('文件上传成功');
31
- return {
32
- success: true,
33
- message: '部署成功'
34
- };
35
- }
36
- catch (error) {
37
- const errorMessage = error instanceof Error ? error.message : String(error);
38
- deps.error('部署失败:', error);
39
- return {
40
- success: false,
41
- error: `部署失败: ${errorMessage}`
42
- };
43
- }
44
- }
45
- export default deployToTCB;
46
- //# sourceMappingURL=deploy.tcb.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deploy.tcb.js","sourceRoot":"","sources":["../../../../src/functions/platform/tencent-cloud/deploy.tcb.ts"],"names":[],"mappings":"AAuDA,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAsB,EACtB,IAAmB;IAEnB,MAAM,EACJ,SAAS,EACT,SAAS,GAAG,GAAG,EACf,KAAK,EACL,UAAU,EACV,YAAY,GAAG,IAAI,EACpB,GAAG,OAAO,CAAA;IAEX,IAAI,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY,SAAS,EAAE;aAC/B,CAAA;QACH,CAAC;QAGD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QACzC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACrD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY,UAAU,EAAE;aAChC,CAAA;QACH,CAAC;QAGD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;YACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,KAAK;SACN,CAAC,CAAA;QAGF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;QAG3B,MAAM,OAAO,CAAC,WAAW,CAAC;YACxB,SAAS;YACT,SAAS;YACT,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,YAAgC,EAAE,EAAE;gBAC7D,IAAI,CAAC,GAAG,CAAC,SAAS,YAAY,CAAC,OAAO,GAAG,CAAC,CAAA;YAC5C,CAAC,CAAC,CAAC,CAAC,SAAS;SACf,CAAC,CAAA;QAGF,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAClB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,MAAM;SAChB,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3E,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC1B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,SAAS,YAAY,EAAE;SAC/B,CAAA;IACH,CAAC;AACH,CAAC;AAQD,eAAe,WAAW,CAAA"}
@@ -1,4 +0,0 @@
1
- import type { TencentCloudSecret } from '../../../../references/tencent-cloud.d';
2
- import type { SecretType } from '../../../../types/tencent-cloud.d';
3
- export declare function getSecret(type: SecretType): TencentCloudSecret;
4
- export default getSecret;
@@ -1,19 +0,0 @@
1
- const secretMap = {
2
- personal: {
3
- secretId: 'AKIDKVQ5VjiQu73j9IBnFRN2QYQ2MQEl22mI',
4
- secretKey: 'IL7cqoWy94lDsGSXP9gxzkGXcSFrDJ8h',
5
- },
6
- individual: {
7
- secretId: 'AKID2A6oIZcT5TcWBetteARULxKSM1ResARl',
8
- secretKey: 'INFtISN3VmocDZgYBZicIitpWyEG4f2B',
9
- },
10
- enterprise: {
11
- secretId: 'AKIDRhqpgKn46uVvACzd7ORGTbaLtHSSEn8H',
12
- secretKey: '95tV4Ql02wpY5QaaOzTlrjOr8OQFsHUW',
13
- },
14
- };
15
- export function getSecret(type) {
16
- return secretMap[type];
17
- }
18
- export default getSecret;
19
- //# sourceMappingURL=getSecret.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getSecret.js","sourceRoot":"","sources":["../../../../src/functions/platform/tencent-cloud/getSecret.ts"],"names":[],"mappings":"AAIA,MAAM,SAAS,GAA2C;IACxD,QAAQ,EAAE;QAER,QAAQ,EAAE,sCAAsC;QAChD,SAAS,EAAE,kCAAkC;KAC9C;IACD,UAAU,EAAE;QAEV,QAAQ,EAAE,sCAAsC;QAChD,SAAS,EAAE,kCAAkC;KAC9C;IACD,UAAU,EAAE;QAEV,QAAQ,EAAE,sCAAsC;QAChD,SAAS,EAAE,kCAAkC;KAC9C;CACF,CAAA;AAoCD,MAAM,UAAU,SAAS,CAAC,IAAgB;IACxC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAA;AACxB,CAAC;AAKD,eAAe,SAAS,CAAA"}
@@ -1,27 +0,0 @@
1
- import type { UniAppAndroidBuildOptions, UniAppAndroidBuildResult } from '../../../../../types/uniapp-android-build.d';
2
- import type { FileSystem, Path, ChildProcess } from '../../../../../references/node.d';
3
- import type { XMLParserConstructor, XMLSerializerConstructor } from '../../../../../references/xml.d';
4
- import type { JSON5Parser } from '../../../../../references/json5.d';
5
- import type { XPath } from '../../../../../references/xpath.d';
6
- import type { setTimeout } from '../../../../../references/timer.d';
7
- export interface BuildAndroidAppDeps {
8
- existsSync: FileSystem['existsSync'];
9
- readFileSync: FileSystem['readFileSync'];
10
- writeFileSync: FileSystem['writeFileSync'];
11
- copyFileSync: FileSystem['copyFileSync'];
12
- mkdirSync: FileSystem['mkdirSync'];
13
- readdirSync: FileSystem['readdirSync'];
14
- statSync: FileSystem['statSync'];
15
- cp: FileSystem['promises']['cp'];
16
- join: Path['join'];
17
- dirname: Path['dirname'];
18
- basename: Path['basename'];
19
- exec: ChildProcess['exec'];
20
- platform: string;
21
- parse: JSON5Parser['parse'];
22
- xmlParser: XMLParserConstructor;
23
- xmlSerializer: XMLSerializerConstructor;
24
- xpath: XPath;
25
- setTimeout: typeof setTimeout;
26
- }
27
- export declare function buildAndroidApp(options: UniAppAndroidBuildOptions, deps: BuildAndroidAppDeps): Promise<UniAppAndroidBuildResult>;