@cloudcome/utils-uni 1.3.1 → 1.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/dist/_helpers.cjs +10 -0
- package/dist/_helpers.cjs.map +1 -0
- package/dist/_helpers.d.ts +8 -0
- package/dist/_helpers.mjs +11 -0
- package/dist/_helpers.mjs.map +1 -0
- package/dist/client.cjs +26 -0
- package/dist/client.cjs.map +1 -0
- package/dist/client.d.ts +49 -0
- package/dist/client.mjs +26 -0
- package/dist/client.mjs.map +1 -0
- package/dist/cloud/error.d.ts +4 -0
- package/dist/cloud/expose.d.ts +48 -0
- package/dist/cloud/object.d.ts +132 -0
- package/dist/cloud/respond.d.ts +3 -0
- package/dist/cloud/uni-id.d.ts +14 -0
- package/dist/cloud.cjs +90 -19
- package/dist/cloud.cjs.map +1 -1
- package/dist/cloud.d.ts +5 -53
- package/dist/cloud.mjs +90 -19
- package/dist/cloud.mjs.map +1 -1
- package/dist/database/db.d.ts +11079 -0
- package/dist/database/types.d.ts +9 -0
- package/dist/database.cjs +200 -0
- package/dist/database.cjs.map +1 -0
- package/dist/database.d.ts +2 -0
- package/dist/database.mjs +200 -0
- package/dist/database.mjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +21 -4
package/dist/cloud.mjs
CHANGED
|
@@ -1,25 +1,96 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { errorAssign, errorNormalize } from "@cloudcome/utils-core/error";
|
|
2
|
+
import { p as parseCloudObjectOutput } from "./_helpers.mjs";
|
|
3
|
+
import { objectDefaults } from "@cloudcome/utils-core/object";
|
|
4
|
+
import { tryFlatten } from "@cloudcome/utils-core/try";
|
|
5
|
+
import { isFunction } from "@cloudcome/utils-core/type";
|
|
6
|
+
function createCloudObjectError(message, code) {
|
|
7
|
+
return errorAssign(new Error(message), {
|
|
8
|
+
errCode: code,
|
|
9
|
+
errMsg: message
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
async function respondCloudObject(fn, requestId) {
|
|
13
|
+
try {
|
|
14
|
+
const data = await fn();
|
|
15
|
+
return {
|
|
16
|
+
requestId,
|
|
17
|
+
data,
|
|
18
|
+
errCode: 0,
|
|
19
|
+
errMsg: ""
|
|
20
|
+
};
|
|
21
|
+
} catch (err) {
|
|
22
|
+
const err2 = errorNormalize(err);
|
|
23
|
+
return {
|
|
24
|
+
requestId,
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
data: null,
|
|
27
|
+
errCode: err2.errCode || -1,
|
|
28
|
+
errMsg: err2.errMsg || err2.message || ""
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function buildCloudObjectExposeCreator(options) {
|
|
33
|
+
const buildOptions = objectDefaults(options || {}, {
|
|
34
|
+
requiredUserErrCode: "uni-id-check-token-failed",
|
|
35
|
+
requiredUserErrMsg: "需要登录后才能进行此操作"
|
|
36
|
+
});
|
|
37
|
+
const createCloudObjectExpose = (arg0, arg1, arg2) => {
|
|
38
|
+
const optionsSource = isFunction(arg0) ? arg1 : arg2;
|
|
39
|
+
const createOptions = objectDefaults(optionsSource || {}, {
|
|
40
|
+
requiredUser: false
|
|
41
|
+
});
|
|
42
|
+
return async function(input) {
|
|
43
|
+
return await respondCloudObject(async () => {
|
|
44
|
+
var _a, _b;
|
|
45
|
+
const user = await parseAppendUser(this, options == null ? void 0 : options.uniIdCloudObject);
|
|
46
|
+
const append = {
|
|
47
|
+
options: createOptions,
|
|
48
|
+
user
|
|
49
|
+
};
|
|
50
|
+
const context = Object.assign(this, append);
|
|
51
|
+
if (createOptions.requiredUser && !user.id) {
|
|
52
|
+
throw createCloudObjectError(buildOptions.requiredUserErrMsg, buildOptions.requiredUserErrCode);
|
|
53
|
+
}
|
|
54
|
+
if (isFunction(arg0)) {
|
|
55
|
+
return await arg0(context);
|
|
56
|
+
}
|
|
57
|
+
const parsed = arg0.safeParse(input);
|
|
58
|
+
if (!parsed.success) {
|
|
59
|
+
console.log(parsed.error.issues);
|
|
60
|
+
const issue0 = (_b = (_a = parsed.error) == null ? void 0 : _a.issues) == null ? void 0 : _b[0];
|
|
61
|
+
if ((issue0 == null ? void 0 : issue0.code) === "custom") throw issue0.message;
|
|
62
|
+
throw new Error("请求数据不正确");
|
|
63
|
+
}
|
|
64
|
+
return await arg1(context, parsed.data);
|
|
65
|
+
}, this.getUniCloudRequestId());
|
|
66
|
+
};
|
|
10
67
|
};
|
|
11
|
-
return
|
|
68
|
+
return createCloudObjectExpose;
|
|
12
69
|
}
|
|
13
|
-
function
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
70
|
+
async function parseAppendUser(objectThis, uniIdCloudObject) {
|
|
71
|
+
const appendUser = {
|
|
72
|
+
id: "",
|
|
73
|
+
role: [],
|
|
74
|
+
permission: [],
|
|
75
|
+
isAdmin: false
|
|
76
|
+
};
|
|
77
|
+
if (!uniIdCloudObject) return appendUser;
|
|
78
|
+
const uniId = uniIdCloudObject.createInstance({
|
|
79
|
+
clientInfo: objectThis.getClientInfo()
|
|
80
|
+
});
|
|
81
|
+
const [err1, user] = await tryFlatten(uniId.checkToken(objectThis.getUniIdToken() || ""));
|
|
82
|
+
if (!user) return appendUser;
|
|
83
|
+
const [err2, userData] = tryFlatten(() => parseCloudObjectOutput(user));
|
|
84
|
+
if (!userData) return appendUser;
|
|
85
|
+
appendUser.id = userData.uid || "";
|
|
86
|
+
appendUser.role = userData.role || [];
|
|
87
|
+
appendUser.permission = userData.permission || [];
|
|
88
|
+
appendUser.isAdmin = appendUser.role.includes("admin") && appendUser.permission.length === 0;
|
|
89
|
+
return appendUser;
|
|
20
90
|
}
|
|
21
91
|
export {
|
|
22
|
-
|
|
23
|
-
|
|
92
|
+
buildCloudObjectExposeCreator,
|
|
93
|
+
createCloudObjectError,
|
|
94
|
+
respondCloudObject
|
|
24
95
|
};
|
|
25
96
|
//# sourceMappingURL=cloud.mjs.map
|
package/dist/cloud.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud.mjs","sources":["../src/cloud.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"cloud.mjs","sources":["../src/cloud/error.ts","../src/cloud/respond.ts","../src/cloud/expose.ts"],"sourcesContent":["import { errorAssign } from '@cloudcome/utils-core/error';\n\nexport function createCloudObjectError(message: string, code?: number | string) {\n return errorAssign(new Error(message), {\n errCode: code,\n errMsg: message,\n });\n}\n","import { errorNormalize } from '@cloudcome/utils-core/error';\nimport type { MaybePromise } from '@cloudcome/utils-core/types';\nimport type { UniCloudObjectOutput } from './object';\n\nexport async function respondCloudObject<O>(\n fn: () => MaybePromise<O>,\n requestId?: string,\n): Promise<UniCloudObjectOutput<O>> {\n try {\n const data = await fn();\n\n return {\n requestId,\n data,\n errCode: 0,\n errMsg: '',\n };\n } catch (err) {\n const err2 = errorNormalize(err as Error & { errCode?: number | string; errMsg?: string });\n\n return {\n requestId,\n // @ts-ignore\n data: null,\n errCode: err2.errCode || -1,\n errMsg: err2.errMsg || err2.message || '',\n };\n }\n}\n","import { parseCloudObjectOutput } from '@/_helpers';\nimport { objectDefaults } from '@cloudcome/utils-core/object';\nimport { tryFlatten } from '@cloudcome/utils-core/try';\nimport { isFunction } from '@cloudcome/utils-core/type';\nimport type { MaybePromise } from '@cloudcome/utils-core/types';\nimport type z from 'zod';\nimport type { ZodObject } from 'zod';\nimport { createCloudObjectError } from './error';\nimport type { UniCloudObject, UniCloudObjectThis } from './object';\nimport { respondCloudObject } from './respond';\nimport type { UniIdCloudObject } from './uni-id';\n\nexport type UniCloudObjectThisAppendUser = {\n id: string;\n role: string[];\n permission: string[];\n isAdmin: boolean;\n};\n\nexport type UniCloudObjectThisAppend = {\n options: Required<CreateCloudObjectOptions>;\n user: UniCloudObjectThisAppendUser;\n};\n\nexport type UniCloudObjectContext = UniCloudObjectThis & UniCloudObjectThisAppend;\n\n/**\n * 构建云函数暴露创建器的选项配置\n * 用于配置云函数暴露创建器的行为,目前支持传入UniIdCloudObject实例\n */\nexport type BuildCloudExposeCreatorOptions = {\n /**\n * 可选的UniIdCloudObject实例\n * 用于处理用户身份验证和权限管理相关功能\n */\n uniIdCloudObject?: UniIdCloudObject;\n\n /**\n * 需要用户登录态的错误码\n * @default 'uni-id-check-token-failed'\n */\n requiredUserErrCode?: number | string;\n\n /**\n * 需要用户登录态的错误消息\n * @default '需要登录后才能进行此操作'\n */\n requiredUserErrMsg?: string;\n};\n\nexport type CreateCloudObjectOptions = {\n /**\n * 是否需要用户登录态\n * @default false\n */\n requiredUser?: boolean;\n};\n\nexport type CreateCloudObjectExpose = {\n <S extends ZodObject, O>(\n schema: S,\n fn: (context: UniCloudObjectContext, input: z.infer<S>) => MaybePromise<O>,\n options?: CreateCloudObjectOptions,\n ): UniCloudObject<z.infer<S>, O>;\n <O>(\n fn: (context: UniCloudObjectContext) => MaybePromise<O>,\n options?: CreateCloudObjectOptions,\n ): UniCloudObject<void, O>;\n};\n\nexport function buildCloudObjectExposeCreator(options?: BuildCloudExposeCreatorOptions) {\n const buildOptions = objectDefaults(options || {}, {\n requiredUserErrCode: 'uni-id-check-token-failed',\n requiredUserErrMsg: '需要登录后才能进行此操作',\n }) as Required<BuildCloudExposeCreatorOptions>;\n\n // @ts-ignore\n const createCloudObjectExpose: CreateCloudObjectExpose = (arg0, arg1, arg2) => {\n // 选项来源\n const optionsSource = (isFunction(arg0) ? arg1 : arg2) as CreateCloudObjectOptions | undefined;\n // 设置默认选项值\n const createOptions = objectDefaults(optionsSource || {}, {\n requiredUser: false,\n }) as Required<CreateCloudObjectOptions>;\n\n return async function (input) {\n // 处理云函数响应逻辑\n return await respondCloudObject(async () => {\n // 构建附加的上下文信息\n const user = await parseAppendUser(this, options?.uniIdCloudObject);\n const append: UniCloudObjectThisAppend = {\n options: createOptions,\n user: user,\n };\n const context = Object.assign(this, append) as UniCloudObjectContext;\n\n if (createOptions.requiredUser && !user.id) {\n throw createCloudObjectError(buildOptions.requiredUserErrMsg, buildOptions.requiredUserErrCode);\n }\n\n // 无入参\n if (isFunction(arg0)) {\n return await arg0(context);\n }\n\n // 单入参\n // 验证输入数据\n const parsed = arg0.safeParse(input);\n\n if (!parsed.success) {\n console.log(parsed.error.issues);\n\n const issue0 = parsed.error?.issues?.[0];\n\n // 处理验证错误\n if (issue0?.code === 'custom') throw issue0.message;\n throw new Error('请求数据不正确');\n }\n\n return await arg1(context, parsed.data);\n }, this.getUniCloudRequestId());\n };\n };\n\n return createCloudObjectExpose;\n}\n\nasync function parseAppendUser(\n objectThis: UniCloudObjectThis,\n uniIdCloudObject?: UniIdCloudObject,\n): Promise<UniCloudObjectThisAppendUser> {\n const appendUser: UniCloudObjectThisAppendUser = {\n id: '',\n role: [],\n permission: [],\n isAdmin: false,\n };\n\n if (!uniIdCloudObject) return appendUser;\n\n const uniId = uniIdCloudObject.createInstance({\n clientInfo: objectThis.getClientInfo(),\n });\n\n // 忽略错误1\n const [err1, user] = await tryFlatten(uniId.checkToken(objectThis.getUniIdToken() || ''));\n if (!user) return appendUser;\n\n // 忽略错误2\n const [err2, userData] = tryFlatten(() => parseCloudObjectOutput(user));\n if (!userData) return appendUser;\n\n appendUser.id = userData.uid || '';\n appendUser.role = userData.role || [];\n appendUser.permission = userData.permission || [];\n appendUser.isAdmin = appendUser.role.includes('admin') && appendUser.permission.length === 0;\n\n return appendUser;\n}\n"],"names":[],"mappings":";;;;;AAEgB,SAAA,uBAAuB,SAAiB,MAAwB;AAC9E,SAAO,YAAY,IAAI,MAAM,OAAO,GAAG;AAAA,IACrC,SAAS;AAAA,IACT,QAAQ;AAAA,EAAA,CACT;AACH;ACHsB,eAAA,mBACpB,IACA,WACkC;AAC9B,MAAA;AACI,UAAA,OAAO,MAAM,GAAG;AAEf,WAAA;AAAA,MACL;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT,QAAQ;AAAA,IACV;AAAA,WACO,KAAK;AACN,UAAA,OAAO,eAAe,GAA6D;AAElF,WAAA;AAAA,MACL;AAAA;AAAA,MAEA,MAAM;AAAA,MACN,SAAS,KAAK,WAAW;AAAA,MACzB,QAAQ,KAAK,UAAU,KAAK,WAAW;AAAA,IACzC;AAAA,EAAA;AAEJ;AC0CO,SAAS,8BAA8B,SAA0C;AACtF,QAAM,eAAe,eAAe,WAAW,IAAI;AAAA,IACjD,qBAAqB;AAAA,IACrB,oBAAoB;AAAA,EAAA,CACrB;AAGD,QAAM,0BAAmD,CAAC,MAAM,MAAM,SAAS;AAE7E,UAAM,gBAAiB,WAAW,IAAI,IAAI,OAAO;AAEjD,UAAM,gBAAgB,eAAe,iBAAiB,IAAI;AAAA,MACxD,cAAc;AAAA,IAAA,CACf;AAED,WAAO,eAAgB,OAAO;AAErB,aAAA,MAAM,mBAAmB,YAAY;;AAE1C,cAAM,OAAO,MAAM,gBAAgB,MAAM,mCAAS,gBAAgB;AAClE,cAAM,SAAmC;AAAA,UACvC,SAAS;AAAA,UACT;AAAA,QACF;AACA,cAAM,UAAU,OAAO,OAAO,MAAM,MAAM;AAE1C,YAAI,cAAc,gBAAgB,CAAC,KAAK,IAAI;AAC1C,gBAAM,uBAAuB,aAAa,oBAAoB,aAAa,mBAAmB;AAAA,QAAA;AAI5F,YAAA,WAAW,IAAI,GAAG;AACb,iBAAA,MAAM,KAAK,OAAO;AAAA,QAAA;AAKrB,cAAA,SAAS,KAAK,UAAU,KAAK;AAE/B,YAAA,CAAC,OAAO,SAAS;AACX,kBAAA,IAAI,OAAO,MAAM,MAAM;AAE/B,gBAAM,UAAS,kBAAO,UAAP,mBAAc,WAAd,mBAAuB;AAGtC,eAAI,iCAAQ,UAAS,SAAU,OAAM,OAAO;AACtC,gBAAA,IAAI,MAAM,SAAS;AAAA,QAAA;AAG3B,eAAO,MAAM,KAAK,SAAS,OAAO,IAAI;AAAA,MAAA,GACrC,KAAK,sBAAsB;AAAA,IAChC;AAAA,EACF;AAEO,SAAA;AACT;AAEA,eAAe,gBACb,YACA,kBACuC;AACvC,QAAM,aAA2C;AAAA,IAC/C,IAAI;AAAA,IACJ,MAAM,CAAC;AAAA,IACP,YAAY,CAAC;AAAA,IACb,SAAS;AAAA,EACX;AAEI,MAAA,CAAC,iBAAyB,QAAA;AAExB,QAAA,QAAQ,iBAAiB,eAAe;AAAA,IAC5C,YAAY,WAAW,cAAc;AAAA,EAAA,CACtC;AAGD,QAAM,CAAC,MAAM,IAAI,IAAI,MAAM,WAAW,MAAM,WAAW,WAAW,cAAmB,KAAA,EAAE,CAAC;AACpF,MAAA,CAAC,KAAa,QAAA;AAGZ,QAAA,CAAC,MAAM,QAAQ,IAAI,WAAW,MAAM,uBAAuB,IAAI,CAAC;AAClE,MAAA,CAAC,SAAiB,QAAA;AAEX,aAAA,KAAK,SAAS,OAAO;AACrB,aAAA,OAAO,SAAS,QAAQ,CAAC;AACzB,aAAA,aAAa,SAAS,cAAc,CAAC;AACrC,aAAA,UAAU,WAAW,KAAK,SAAS,OAAO,KAAK,WAAW,WAAW,WAAW;AAEpF,SAAA;AACT;"}
|