zcw-shared 2.1.0 → 2.4.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.
- package/README.md +17 -180
- package/dist/constants/apiErrorCodes.d.ts +17 -0
- package/dist/constants/apiErrorCodes.js +26 -0
- package/dist/constants/apiErrorCodes.js.map +1 -0
- package/dist/constants/authStorage.d.ts +4 -0
- package/dist/constants/authStorage.js +5 -0
- package/dist/constants/authStorage.js.map +1 -0
- package/dist/functions/im/formatImChatConversationListTime.d.ts +1 -0
- package/dist/functions/im/formatImChatConversationListTime.js +19 -0
- package/dist/functions/im/formatImChatConversationListTime.js.map +1 -0
- package/dist/functions/image/getImageDimensions.js +15 -5
- package/dist/functions/image/getImageDimensions.js.map +1 -1
- package/dist/functions/storage/useDexieShortcuts.d.ts +28 -0
- package/dist/functions/storage/useDexieShortcuts.js +54 -0
- package/dist/functions/storage/useDexieShortcuts.js.map +1 -0
- package/dist/functions/storage/useLocalStorage.js +11 -12
- package/dist/functions/storage/useLocalStorage.js.map +1 -1
- package/dist/functions/storage/useSessionStorage.js +11 -12
- package/dist/functions/storage/useSessionStorage.js.map +1 -1
- package/dist/functions/storage/useStorageWithIndexedDB.js +4 -5
- package/dist/functions/storage/useStorageWithIndexedDB.js.map +1 -1
- package/dist/schemas/auth.schema.d.ts +4 -4
- package/dist/vue-hooks/browser/useBridgeMessage.js +7 -8
- package/dist/vue-hooks/browser/useBridgeMessage.js.map +1 -1
- package/package.json +25 -1
- package/types/address.d.ts +38 -0
- package/types/im-api.d.ts +118 -0
- package/types/im-chat.d.ts +49 -0
- package/types/notification.d.ts +37 -0
- package/types/oss.d.ts +26 -0
- package/types/page-config.d.ts +14 -0
- package/types/payment.d.ts +21 -0
- package/types/performance.d.ts +12 -0
- package/types/rbac.d.ts +24 -0
- package/types/report.d.ts +29 -0
- package/types/review.d.ts +13 -0
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export default function useSessionStorage(deps, options = {}) {
|
|
2
|
-
const { sessionStorage, consoleError } = deps;
|
|
3
2
|
const { prefix = '', serializer } = options;
|
|
4
3
|
const defaultSerializer = {
|
|
5
4
|
serialize: (value) => JSON.stringify(value),
|
|
@@ -16,13 +15,13 @@ export default function useSessionStorage(deps, options = {}) {
|
|
|
16
15
|
const get = async (key) => {
|
|
17
16
|
try {
|
|
18
17
|
const fullKey = prefix + key;
|
|
19
|
-
const item = sessionStorage.getItem(fullKey);
|
|
18
|
+
const item = deps.sessionStorage.getItem(fullKey);
|
|
20
19
|
if (item === null)
|
|
21
20
|
return null;
|
|
22
21
|
return currentSerializer.deserialize(item);
|
|
23
22
|
}
|
|
24
23
|
catch (error) {
|
|
25
|
-
consoleError(`获取 sessionStorage 值失败: ${error}`);
|
|
24
|
+
deps.consoleError(`获取 sessionStorage 值失败: ${error}`);
|
|
26
25
|
return null;
|
|
27
26
|
}
|
|
28
27
|
};
|
|
@@ -30,7 +29,7 @@ export default function useSessionStorage(deps, options = {}) {
|
|
|
30
29
|
try {
|
|
31
30
|
const fullKey = prefix + key;
|
|
32
31
|
const serializedValue = currentSerializer.serialize(value);
|
|
33
|
-
sessionStorage.setItem(fullKey, serializedValue);
|
|
32
|
+
deps.sessionStorage.setItem(fullKey, serializedValue);
|
|
34
33
|
}
|
|
35
34
|
catch (error) {
|
|
36
35
|
throw new Error(`设置 sessionStorage 值失败: ${error}`);
|
|
@@ -39,7 +38,7 @@ export default function useSessionStorage(deps, options = {}) {
|
|
|
39
38
|
const remove = async (key) => {
|
|
40
39
|
try {
|
|
41
40
|
const fullKey = prefix + key;
|
|
42
|
-
sessionStorage.removeItem(fullKey);
|
|
41
|
+
deps.sessionStorage.removeItem(fullKey);
|
|
43
42
|
}
|
|
44
43
|
catch (error) {
|
|
45
44
|
throw new Error(`移除 sessionStorage 值失败: ${error}`);
|
|
@@ -47,7 +46,7 @@ export default function useSessionStorage(deps, options = {}) {
|
|
|
47
46
|
};
|
|
48
47
|
const clear = async () => {
|
|
49
48
|
try {
|
|
50
|
-
sessionStorage.clear();
|
|
49
|
+
deps.sessionStorage.clear();
|
|
51
50
|
}
|
|
52
51
|
catch (error) {
|
|
53
52
|
throw new Error(`清空 sessionStorage 失败: ${error}`);
|
|
@@ -56,8 +55,8 @@ export default function useSessionStorage(deps, options = {}) {
|
|
|
56
55
|
const getAll = async () => {
|
|
57
56
|
try {
|
|
58
57
|
const result = {};
|
|
59
|
-
for (let i = 0; i < sessionStorage.length; i++) {
|
|
60
|
-
const key = sessionStorage.key(i);
|
|
58
|
+
for (let i = 0; i < deps.sessionStorage.length; i++) {
|
|
59
|
+
const key = deps.sessionStorage.key(i);
|
|
61
60
|
if (key && key.startsWith(prefix)) {
|
|
62
61
|
const actualKey = key.slice(prefix.length);
|
|
63
62
|
const value = await get(actualKey);
|
|
@@ -69,15 +68,15 @@ export default function useSessionStorage(deps, options = {}) {
|
|
|
69
68
|
return result;
|
|
70
69
|
}
|
|
71
70
|
catch (error) {
|
|
72
|
-
consoleError(`获取所有 sessionStorage 值失败: ${error}`);
|
|
71
|
+
deps.consoleError(`获取所有 sessionStorage 值失败: ${error}`);
|
|
73
72
|
return {};
|
|
74
73
|
}
|
|
75
74
|
};
|
|
76
75
|
const getKeys = async () => {
|
|
77
76
|
try {
|
|
78
77
|
const keys = [];
|
|
79
|
-
for (let i = 0; i < sessionStorage.length; i++) {
|
|
80
|
-
const key = sessionStorage.key(i);
|
|
78
|
+
for (let i = 0; i < deps.sessionStorage.length; i++) {
|
|
79
|
+
const key = deps.sessionStorage.key(i);
|
|
81
80
|
if (key && key.startsWith(prefix)) {
|
|
82
81
|
keys.push(key.slice(prefix.length));
|
|
83
82
|
}
|
|
@@ -85,7 +84,7 @@ export default function useSessionStorage(deps, options = {}) {
|
|
|
85
84
|
return keys;
|
|
86
85
|
}
|
|
87
86
|
catch (error) {
|
|
88
|
-
consoleError(`获取 sessionStorage 键列表失败: ${error}`);
|
|
87
|
+
deps.consoleError(`获取 sessionStorage 键列表失败: ${error}`);
|
|
89
88
|
return [];
|
|
90
89
|
}
|
|
91
90
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSessionStorage.js","sourceRoot":"","sources":["../../../src/functions/storage/useSessionStorage.ts"],"names":[],"mappings":"AAwBA,MAAM,CAAC,OAAO,UAAU,iBAAiB,CACvC,IAAwB,EACxB,UAA0B,EAAE;IAE5B,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"useSessionStorage.js","sourceRoot":"","sources":["../../../src/functions/storage/useSessionStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export default function useStorageWithIndexedDB(deps, options) {
|
|
2
|
-
const { indexedDB, consoleError } = deps;
|
|
3
2
|
const { dbName, storeName, version = 1, prefix = '', serializer } = options;
|
|
4
3
|
const defaultSerializer = {
|
|
5
4
|
serialize: (value) => value,
|
|
@@ -16,7 +15,7 @@ export default function useStorageWithIndexedDB(deps, options) {
|
|
|
16
15
|
} : defaultSerializer;
|
|
17
16
|
const openDatabase = () => {
|
|
18
17
|
return new Promise((resolve, reject) => {
|
|
19
|
-
const request = indexedDB.open(dbName, version);
|
|
18
|
+
const request = deps.indexedDB.open(dbName, version);
|
|
20
19
|
request.onerror = () => {
|
|
21
20
|
reject(new Error(`打开 IndexedDB 数据库失败: ${request.error?.message}`));
|
|
22
21
|
};
|
|
@@ -51,7 +50,7 @@ export default function useStorageWithIndexedDB(deps, options) {
|
|
|
51
50
|
return result ? currentSerializer.deserialize(result) : null;
|
|
52
51
|
}
|
|
53
52
|
catch (error) {
|
|
54
|
-
consoleError(`获取 IndexedDB 值失败: ${error}`);
|
|
53
|
+
deps.consoleError(`获取 IndexedDB 值失败: ${error}`);
|
|
55
54
|
return null;
|
|
56
55
|
}
|
|
57
56
|
};
|
|
@@ -99,7 +98,7 @@ export default function useStorageWithIndexedDB(deps, options) {
|
|
|
99
98
|
});
|
|
100
99
|
}
|
|
101
100
|
catch (error) {
|
|
102
|
-
consoleError(`获取 IndexedDB 键列表失败: ${error}`);
|
|
101
|
+
deps.consoleError(`获取 IndexedDB 键列表失败: ${error}`);
|
|
103
102
|
return [];
|
|
104
103
|
}
|
|
105
104
|
};
|
|
@@ -116,7 +115,7 @@ export default function useStorageWithIndexedDB(deps, options) {
|
|
|
116
115
|
return result;
|
|
117
116
|
}
|
|
118
117
|
catch (error) {
|
|
119
|
-
consoleError(`获取所有 IndexedDB 值失败: ${error}`);
|
|
118
|
+
deps.consoleError(`获取所有 IndexedDB 值失败: ${error}`);
|
|
120
119
|
return {};
|
|
121
120
|
}
|
|
122
121
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStorageWithIndexedDB.js","sourceRoot":"","sources":["../../../src/functions/storage/useStorageWithIndexedDB.ts"],"names":[],"mappings":"AAwBA,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAC7C,IAA0B,EAC1B,OAAgC;IAEhC,MAAM,
|
|
1
|
+
{"version":3,"file":"useStorageWithIndexedDB.js","sourceRoot":"","sources":["../../../src/functions/storage/useStorageWithIndexedDB.ts"],"names":[],"mappings":"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"}
|
|
@@ -344,25 +344,25 @@ export declare const SendSmsCodeResponseSchema: z.ZodObject<{
|
|
|
344
344
|
success: z.ZodBoolean;
|
|
345
345
|
message: z.ZodString;
|
|
346
346
|
}, "strip", z.ZodTypeAny, {
|
|
347
|
-
success: boolean;
|
|
348
347
|
message: string;
|
|
349
|
-
}, {
|
|
350
348
|
success: boolean;
|
|
349
|
+
}, {
|
|
351
350
|
message: string;
|
|
351
|
+
success: boolean;
|
|
352
352
|
}>;
|
|
353
353
|
message: z.ZodString;
|
|
354
354
|
}, "strip", z.ZodTypeAny, {
|
|
355
355
|
message: string;
|
|
356
356
|
data: {
|
|
357
|
-
success: boolean;
|
|
358
357
|
message: string;
|
|
358
|
+
success: boolean;
|
|
359
359
|
};
|
|
360
360
|
code: number;
|
|
361
361
|
}, {
|
|
362
362
|
message: string;
|
|
363
363
|
data: {
|
|
364
|
-
success: boolean;
|
|
365
364
|
message: string;
|
|
365
|
+
success: boolean;
|
|
366
366
|
};
|
|
367
367
|
code: number;
|
|
368
368
|
}>;
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
import { postBridgeMessage } from '../../functions/hybrid/postBridgeMessage';
|
|
2
2
|
import { createRequestMessage } from '../../functions/hybrid/createBridgeMessage';
|
|
3
3
|
export function useBridgeMessage(deps) {
|
|
4
|
-
const { vue, isServer } = deps;
|
|
5
4
|
const isInWechatMiniprogram = () => {
|
|
6
|
-
if (isServer())
|
|
5
|
+
if (deps.isServer())
|
|
7
6
|
return false;
|
|
8
7
|
const wx = deps.getWx();
|
|
9
8
|
return !!(wx && wx.miniProgram);
|
|
10
9
|
};
|
|
11
10
|
const isInAppWebview = () => {
|
|
12
|
-
if (isServer())
|
|
11
|
+
if (deps.isServer())
|
|
13
12
|
return false;
|
|
14
13
|
const window = deps.window;
|
|
15
14
|
return !!(window?.uni || window?.plus);
|
|
16
15
|
};
|
|
17
16
|
const getDetectedEnv = () => {
|
|
18
|
-
if (isServer())
|
|
17
|
+
if (deps.isServer())
|
|
19
18
|
return 'unknown';
|
|
20
19
|
if (isInWechatMiniprogram())
|
|
21
20
|
return 'miniapp';
|
|
@@ -24,13 +23,13 @@ export function useBridgeMessage(deps) {
|
|
|
24
23
|
return 'h5';
|
|
25
24
|
};
|
|
26
25
|
const detectedEnv = getDetectedEnv();
|
|
27
|
-
const environment = vue.ref(detectedEnv);
|
|
28
|
-
const error = vue.ref(null);
|
|
26
|
+
const environment = deps.vue.ref(detectedEnv);
|
|
27
|
+
const error = deps.vue.ref(null);
|
|
29
28
|
const isBridgeSupported = () => {
|
|
30
29
|
return isInWechatMiniprogram() || isInAppWebview();
|
|
31
30
|
};
|
|
32
31
|
const postBridgeMessageHook = async (data, options) => {
|
|
33
|
-
if (isServer()) {
|
|
32
|
+
if (deps.isServer()) {
|
|
34
33
|
throw new Error('服务端环境不支持');
|
|
35
34
|
}
|
|
36
35
|
error.value = null;
|
|
@@ -61,7 +60,7 @@ export function useBridgeMessage(deps) {
|
|
|
61
60
|
}
|
|
62
61
|
};
|
|
63
62
|
const getEnvironmentInfo = () => {
|
|
64
|
-
if (isServer()) {
|
|
63
|
+
if (deps.isServer()) {
|
|
65
64
|
return {
|
|
66
65
|
environment: 'server',
|
|
67
66
|
userAgent: '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBridgeMessage.js","sourceRoot":"","sources":["../../../src/vue-hooks/browser/useBridgeMessage.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAA;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAA;AAyCjF,MAAM,UAAU,gBAAgB,CAAC,IAA0B;IACzD,MAAM,
|
|
1
|
+
{"version":3,"file":"useBridgeMessage.js","sourceRoot":"","sources":["../../../src/vue-hooks/browser/useBridgeMessage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zcw-shared",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"references",
|
|
6
6
|
"dist",
|
|
@@ -15,9 +15,18 @@
|
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"zod": "^3.23.8"
|
|
17
17
|
},
|
|
18
|
+
"peerDependencies": {
|
|
19
|
+
"dexie": "^4.0.1"
|
|
20
|
+
},
|
|
21
|
+
"peerDependenciesMeta": {
|
|
22
|
+
"dexie": {
|
|
23
|
+
"optional": true
|
|
24
|
+
}
|
|
25
|
+
},
|
|
18
26
|
"devDependencies": {
|
|
19
27
|
"@cloudbase/manager-node": "^4.3.2",
|
|
20
28
|
"cos-nodejs-sdk-v5": "^2.14.4",
|
|
29
|
+
"dexie": "^4.3.0",
|
|
21
30
|
"jszip": "^3.10.1",
|
|
22
31
|
"tsx": "^4.20.3",
|
|
23
32
|
"typescript": "^5.8.3",
|
|
@@ -26,6 +35,8 @@
|
|
|
26
35
|
"zcw-vue-ui": "^1.25.1"
|
|
27
36
|
},
|
|
28
37
|
"exports": {
|
|
38
|
+
"./constants/apiErrorCodes": "./dist/constants/apiErrorCodes.js",
|
|
39
|
+
"./constants/authStorage": "./dist/constants/authStorage.js",
|
|
29
40
|
"./constants/colorPatterns": "./dist/constants/colorPatterns.js",
|
|
30
41
|
"./constants/hybridConstants": "./dist/constants/hybridConstants.js",
|
|
31
42
|
"./constants/namedColors": "./dist/constants/namedColors.js",
|
|
@@ -162,6 +173,7 @@
|
|
|
162
173
|
"./functions/hybrid/generateBridgeMessageId": "./dist/functions/hybrid/generateBridgeMessageId.js",
|
|
163
174
|
"./functions/hybrid/postBridgeMessage": "./dist/functions/hybrid/postBridgeMessage.js",
|
|
164
175
|
"./functions/hybrid/validateBridgeMessage": "./dist/functions/hybrid/validateBridgeMessage.js",
|
|
176
|
+
"./functions/im/formatImChatConversationListTime": "./dist/functions/im/formatImChatConversationListTime.js",
|
|
165
177
|
"./functions/image/compressImageToWidth": "./dist/functions/image/compressImageToWidth.js",
|
|
166
178
|
"./functions/image/compressToTargetSize": "./dist/functions/image/compressToTargetSize.js",
|
|
167
179
|
"./functions/image/generateFavIcon": "./dist/functions/image/generateFavIcon.js",
|
|
@@ -225,6 +237,7 @@
|
|
|
225
237
|
"./functions/promise/timeout": "./dist/functions/promise/timeout.js",
|
|
226
238
|
"./functions/qiankun/createQiankunVueApp": "./dist/functions/qiankun/createQiankunVueApp.js",
|
|
227
239
|
"./functions/software/findSoftware": "./dist/functions/software/findSoftware.js",
|
|
240
|
+
"./functions/storage/useDexieShortcuts": "./dist/functions/storage/useDexieShortcuts.js",
|
|
228
241
|
"./functions/storage/useLocalStorage": "./dist/functions/storage/useLocalStorage.js",
|
|
229
242
|
"./functions/storage/useSessionStorage": "./dist/functions/storage/useSessionStorage.js",
|
|
230
243
|
"./functions/storage/useStorage": "./dist/functions/storage/useStorage.js",
|
|
@@ -381,6 +394,7 @@
|
|
|
381
394
|
"./vue-hooks/worker/useWebWorker": "./dist/vue-hooks/worker/useWebWorker.js",
|
|
382
395
|
"./vue-hooks/worker/useWorkerFunction": "./dist/vue-hooks/worker/useWorkerFunction.js",
|
|
383
396
|
"./vue-hooks/worker/useWorkerPool": "./dist/vue-hooks/worker/useWorkerPool.js",
|
|
397
|
+
"./types/address": "./types/address.d.ts",
|
|
384
398
|
"./types/algorithm-visual": "./types/algorithm-visual.d.ts",
|
|
385
399
|
"./types/algorithm": "./types/algorithm.d.ts",
|
|
386
400
|
"./types/altool": "./types/altool.d.ts",
|
|
@@ -392,15 +406,25 @@
|
|
|
392
406
|
"./types/design-system": "./types/design-system.d.ts",
|
|
393
407
|
"./types/geometry": "./types/geometry.d.ts",
|
|
394
408
|
"./types/hybrid": "./types/hybrid.d.ts",
|
|
409
|
+
"./types/im-api": "./types/im-api.d.ts",
|
|
410
|
+
"./types/im-chat": "./types/im-chat.d.ts",
|
|
395
411
|
"./types/ios-build": "./types/ios-build.d.ts",
|
|
396
412
|
"./types/music": "./types/music.d.ts",
|
|
413
|
+
"./types/notification": "./types/notification.d.ts",
|
|
397
414
|
"./types/order": "./types/order.d.ts",
|
|
415
|
+
"./types/oss": "./types/oss.d.ts",
|
|
416
|
+
"./types/page-config": "./types/page-config.d.ts",
|
|
417
|
+
"./types/payment": "./types/payment.d.ts",
|
|
418
|
+
"./types/performance": "./types/performance.d.ts",
|
|
398
419
|
"./types/pgyer": "./types/pgyer.d.ts",
|
|
399
420
|
"./types/placement": "./types/placement.d.ts",
|
|
400
421
|
"./types/platform": "./types/platform.d.ts",
|
|
401
422
|
"./types/points-config": "./types/points-config.d.ts",
|
|
402
423
|
"./types/product": "./types/product.d.ts",
|
|
424
|
+
"./types/rbac": "./types/rbac.d.ts",
|
|
403
425
|
"./types/reactive": "./types/reactive.d.ts",
|
|
426
|
+
"./types/report": "./types/report.d.ts",
|
|
427
|
+
"./types/review": "./types/review.d.ts",
|
|
404
428
|
"./types/semver": "./types/semver.d.ts",
|
|
405
429
|
"./types/software": "./types/software.d.ts",
|
|
406
430
|
"./types/storage": "./types/storage.d.ts",
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export interface Address {
|
|
2
|
+
id: number
|
|
3
|
+
user_id?: string
|
|
4
|
+
name?: string
|
|
5
|
+
phone?: string
|
|
6
|
+
province?: string
|
|
7
|
+
city?: string
|
|
8
|
+
district?: string
|
|
9
|
+
detail?: string
|
|
10
|
+
is_default?: boolean
|
|
11
|
+
created_at?: string
|
|
12
|
+
updated_at?: string
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface AddressListResponse {
|
|
16
|
+
data: Address[]
|
|
17
|
+
count: number
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface CreateAddressPayload {
|
|
21
|
+
name: string
|
|
22
|
+
phone: string
|
|
23
|
+
province: string
|
|
24
|
+
city: string
|
|
25
|
+
district?: string
|
|
26
|
+
detail: string
|
|
27
|
+
is_default?: boolean
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface UpdateAddressPayload {
|
|
31
|
+
name?: string
|
|
32
|
+
phone?: string
|
|
33
|
+
province?: string
|
|
34
|
+
city?: string
|
|
35
|
+
district?: string
|
|
36
|
+
detail?: string
|
|
37
|
+
is_default?: boolean
|
|
38
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IM:与后端 HTTP / WebSocket JSON 及落库归一后的**领域形状**一致(多为 snake_case)。
|
|
3
|
+
*
|
|
4
|
+
* - **终端 UI 展示**见 `zcw-shared/types/im-chat`(`ChatMessage` / `ChatConversation`,camelCase、含 sender 对象等),
|
|
5
|
+
* 与本文件的 `ImApiMessage` 在设计上不同:前者是列表/气泡视图模型,后者是接口契约。
|
|
6
|
+
* - 需要兼顾旧代码时可用别名 `ImMessage`、`Conversation` 等(均指向 ImApi*)。
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/** 出站投递状态(与送达已读 status 分离);库内成功落库行一般为 success */
|
|
10
|
+
export type ImOutboundStatus =
|
|
11
|
+
| 'queued'
|
|
12
|
+
| 'sending'
|
|
13
|
+
| 'failed'
|
|
14
|
+
| 'success'
|
|
15
|
+
|
|
16
|
+
/** HTTP / WS 中的消息对象(与 `ImService` 返回结构一致) */
|
|
17
|
+
export interface ImApiMessage {
|
|
18
|
+
/** PostgreSQL BIGSERIAL 为 number;CloudBase 等可能为十六进制字符串文档 id */
|
|
19
|
+
id: string | number
|
|
20
|
+
sender_id: string
|
|
21
|
+
conversation_id: string
|
|
22
|
+
content: string
|
|
23
|
+
type: 'text' | 'image' | 'file' | 'system' | 'audio' | 'video'
|
|
24
|
+
status: 'sent' | 'delivered' | 'read'
|
|
25
|
+
/** 发送方在该会话中的第几条(由服务端写入;旧数据可由接口补算) */
|
|
26
|
+
sender_seq?: number
|
|
27
|
+
/** 终端上报的本地发送时刻(ISO) */
|
|
28
|
+
client_sent_at?: string
|
|
29
|
+
/** 服务端落库/受理时刻(ISO),排序与展示优先于 created_at 缺失时 */
|
|
30
|
+
server_sent_at?: string
|
|
31
|
+
/** 终端幂等 ID,重试去重 */
|
|
32
|
+
client_message_id?: string
|
|
33
|
+
/** 终端上报的已尝试发送次数快照(可选) */
|
|
34
|
+
send_retry_count?: number
|
|
35
|
+
/** 出站状态;仅终端离线队列或后续异步扩展用库内非 success */
|
|
36
|
+
outbound_status?: ImOutboundStatus
|
|
37
|
+
extra_data?: Record<string, any>
|
|
38
|
+
created_at?: string
|
|
39
|
+
updated_at?: string
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** 会话对象(接口返回;成员 id 列表 + 可选最后一条消息) */
|
|
43
|
+
export interface ImApiConversation {
|
|
44
|
+
id: string
|
|
45
|
+
type: 'private' | 'group'
|
|
46
|
+
name?: string
|
|
47
|
+
avatar?: string
|
|
48
|
+
members: string[]
|
|
49
|
+
last_message?: ImApiMessage
|
|
50
|
+
unread_count?: number
|
|
51
|
+
created_at?: string
|
|
52
|
+
updated_at?: string
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/** `registerMediaOutbound` 响应:附件 id、已落库消息、OSS 直传目标 */
|
|
56
|
+
export interface ImRegisterMediaOutboundResult {
|
|
57
|
+
attachmentId: string
|
|
58
|
+
message: ImApiMessage
|
|
59
|
+
upload: { bucket: string; path: string }
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** 仓储驱动返回的 `im_messages` 行(字段宽松,需经归一函数转为 `ImApiMessage`) */
|
|
63
|
+
export interface ImDbMessageRow {
|
|
64
|
+
id: string | number
|
|
65
|
+
sender_id: string
|
|
66
|
+
conversation_id: string
|
|
67
|
+
content: string
|
|
68
|
+
type: string
|
|
69
|
+
status: string
|
|
70
|
+
sender_seq?: number | null
|
|
71
|
+
client_sent_at?: string | null
|
|
72
|
+
server_sent_at?: string | null
|
|
73
|
+
client_message_id?: string | null
|
|
74
|
+
send_retry_count?: number | null
|
|
75
|
+
outbound_status?: string | null
|
|
76
|
+
extra_data?: Record<string, any>
|
|
77
|
+
created_at?: string
|
|
78
|
+
updated_at?: string
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface ImDbConversationRow {
|
|
82
|
+
id: string
|
|
83
|
+
type: string
|
|
84
|
+
name?: string
|
|
85
|
+
avatar?: string
|
|
86
|
+
members?: string[]
|
|
87
|
+
created_at?: string
|
|
88
|
+
updated_at?: string
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export interface ImDbAttachmentRow {
|
|
92
|
+
id: string
|
|
93
|
+
uploader_id: string
|
|
94
|
+
conversation_id: string
|
|
95
|
+
storage_bucket: string
|
|
96
|
+
storage_path: string
|
|
97
|
+
public_url?: string | null
|
|
98
|
+
original_name?: string | null
|
|
99
|
+
mime_type?: string | null
|
|
100
|
+
size_bytes?: number | null
|
|
101
|
+
status: string
|
|
102
|
+
upload_retry_count?: number | null
|
|
103
|
+
last_error?: string | null
|
|
104
|
+
linked_message_id?: string | number | null
|
|
105
|
+
created_at?: string
|
|
106
|
+
updated_at?: string
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** 与 `ImApiMessage` 相同(简练别名,服务端历史代码常用) */
|
|
110
|
+
export type ImMessage = ImApiMessage
|
|
111
|
+
|
|
112
|
+
/** 与 `ImApiConversation` 相同 */
|
|
113
|
+
export type ImConversation = ImApiConversation
|
|
114
|
+
|
|
115
|
+
/** 与 `ImApiConversation` 相同(历史泛名,建议新代码用 ImApiConversation) */
|
|
116
|
+
export type Conversation = ImApiConversation
|
|
117
|
+
|
|
118
|
+
export type RegisterMediaOutboundResult = ImRegisterMediaOutboundResult
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IM 聊天:**终端 UI** 用的视图类型(camelCase,含 `sender` 对象等)。
|
|
3
|
+
*
|
|
4
|
+
* 与接口 JSON 形状不同,后者见 `zcw-shared/types/im-api`(`ImApiMessage` / `ImApiConversation`)。
|
|
5
|
+
* 在仓库层做 `ImApiMessage` → `ChatMessage` 的映射即可两端共类型、各层语义清晰。
|
|
6
|
+
*/
|
|
7
|
+
export interface ChatMessage {
|
|
8
|
+
id: string
|
|
9
|
+
type: 'text' | 'image' | 'video' | 'voice' | 'file'
|
|
10
|
+
content: string
|
|
11
|
+
timestamp: Date
|
|
12
|
+
sender: {
|
|
13
|
+
id: string
|
|
14
|
+
name: string
|
|
15
|
+
avatar?: string
|
|
16
|
+
}
|
|
17
|
+
isOwn?: boolean
|
|
18
|
+
status?: 'sending' | 'sent' | 'delivered' | 'read' | 'failed'
|
|
19
|
+
senderSeq?: number
|
|
20
|
+
timeLabel?: string
|
|
21
|
+
clientTimeLabel?: string
|
|
22
|
+
clientSentAt?: string
|
|
23
|
+
serverSentAt?: string
|
|
24
|
+
/** 服务端 extra_data.media_upload_status 映射,用于图片等先上传再展示 */
|
|
25
|
+
mediaUploadStatus?: 'uploading' | 'uploaded' | 'failed'
|
|
26
|
+
/** 本地上传 0–100;仅在前端写入,用于 OSS 上传进度 */
|
|
27
|
+
mediaUploadProgress?: number
|
|
28
|
+
/** 终端幂等 id,与 ImApiMessage.client_message_id 一致 */
|
|
29
|
+
clientMessageId?: string
|
|
30
|
+
/** 媒体登记时原名(content 尚为空时用于文件气泡标题) */
|
|
31
|
+
mediaOriginalFileName?: string
|
|
32
|
+
/** 图片/视频缩略图 URL;存在时列表气泡优先展示缩略图 */
|
|
33
|
+
mediaThumbnailUrl?: string
|
|
34
|
+
/** 气泡内展示用的原始像素宽(如 extra_data.location_x / image_width) */
|
|
35
|
+
mediaWidth?: number
|
|
36
|
+
/** 气泡内展示用的原始像素高 */
|
|
37
|
+
mediaHeight?: number
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface ChatConversation {
|
|
41
|
+
id: string
|
|
42
|
+
name: string
|
|
43
|
+
avatar?: string
|
|
44
|
+
description?: string
|
|
45
|
+
lastMessage?: string
|
|
46
|
+
timestamp?: Date
|
|
47
|
+
unreadCount?: number
|
|
48
|
+
isOnline?: boolean
|
|
49
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export type NotificationType =
|
|
2
|
+
| 'system'
|
|
3
|
+
| 'comment'
|
|
4
|
+
| 'reply'
|
|
5
|
+
| 'like'
|
|
6
|
+
| 'follow'
|
|
7
|
+
| 'post'
|
|
8
|
+
| 'order'
|
|
9
|
+
| 'payment'
|
|
10
|
+
|
|
11
|
+
export interface Notification {
|
|
12
|
+
id: number
|
|
13
|
+
user_id?: string
|
|
14
|
+
type?: NotificationType
|
|
15
|
+
title?: string
|
|
16
|
+
content?: string
|
|
17
|
+
status?: string
|
|
18
|
+
related_id?: string
|
|
19
|
+
related_type?: string
|
|
20
|
+
extra_data?: Record<string, unknown>
|
|
21
|
+
created_at?: string
|
|
22
|
+
updated_at?: string
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface NotificationListResponse {
|
|
26
|
+
data: Notification[]
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface CreateNotificationPayload {
|
|
30
|
+
user_id: string
|
|
31
|
+
type: NotificationType
|
|
32
|
+
title: string
|
|
33
|
+
content?: string
|
|
34
|
+
related_id?: string
|
|
35
|
+
related_type?: string
|
|
36
|
+
extra_data?: Record<string, unknown>
|
|
37
|
+
}
|
package/types/oss.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** 与 api.zengchaowu.com OSS listFiles 返回结构一致 */
|
|
2
|
+
export interface OssFile {
|
|
3
|
+
id?: string
|
|
4
|
+
name: string
|
|
5
|
+
updated_at?: string
|
|
6
|
+
created_at?: string
|
|
7
|
+
last_accessed_at?: string
|
|
8
|
+
metadata?: Record<string, unknown>
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface OssListParams {
|
|
12
|
+
bucket: string
|
|
13
|
+
path?: string
|
|
14
|
+
limit?: number
|
|
15
|
+
offset?: number
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface OssListResponse {
|
|
19
|
+
data: OssFile[]
|
|
20
|
+
count: number
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface OssDeleteFilesPayload {
|
|
24
|
+
bucket: string
|
|
25
|
+
paths: string[]
|
|
26
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** 与 api.zengchaowu.com GET /page-config 返回的 data 结构一致 */
|
|
2
|
+
export interface PageConfig {
|
|
3
|
+
appKey?: string
|
|
4
|
+
version?: string
|
|
5
|
+
tabBar?: unknown
|
|
6
|
+
permissions?: unknown
|
|
7
|
+
displays?: unknown
|
|
8
|
+
[key: string]: unknown
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface PageConfigResponse {
|
|
12
|
+
code?: number
|
|
13
|
+
data?: PageConfig
|
|
14
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface Payment {
|
|
2
|
+
id: number
|
|
3
|
+
user_id?: string
|
|
4
|
+
order_id?: number
|
|
5
|
+
amount?: number
|
|
6
|
+
status?: string
|
|
7
|
+
payment_method?: string
|
|
8
|
+
transaction_id?: string
|
|
9
|
+
created_at?: string
|
|
10
|
+
updated_at?: string
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface PaymentListResponse {
|
|
14
|
+
data: Payment[]
|
|
15
|
+
pagination: {
|
|
16
|
+
total: number
|
|
17
|
+
page: number
|
|
18
|
+
page_size: number
|
|
19
|
+
total_pages: number
|
|
20
|
+
}
|
|
21
|
+
}
|