@cloudcome/utils-uni 1.31.0 → 1.32.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 CHANGED
@@ -117,7 +117,7 @@ UniApp 工具库,依赖 `@cloudcome/utils-core`、`@cloudcome/utils-vue`:
117
117
 
118
118
  ## 开发
119
119
 
120
- 详见 [DEVELOPMENT.md](./DEVELOPMENT.md)。
120
+ 详见 [CONTRIBUTING.md](./CONTRIBUTING.md)。
121
121
 
122
122
  ## 许可
123
123
 
package/dist/_helpers.cjs CHANGED
@@ -1,22 +1,45 @@
1
- "use strict";
2
- const error = require("@cloudcome/utils-core/error");
3
- const object = require("@cloudcome/utils-core/object");
1
+ let _cloudcome_utils_core_error = require("@cloudcome/utils-core/error");
2
+ let _cloudcome_utils_core_object = require("@cloudcome/utils-core/object");
3
+ //#region src/_helpers.ts
4
+ /**
5
+ * 解析云对象方法调用的输出结果
6
+ *
7
+ * @template O - 云对象方法返回数据的类型
8
+ * @param output - 云对象方法调用的输出结果
9
+ * @param fallbackErrorMessage - 当输出中没有错误信息时使用的默认错误消息
10
+ * @returns 云对象方法返回成功时的数据部分
11
+ * @throws 当云对象方法调用失败时,抛出包含错误信息的异常
12
+ */
4
13
  function parseCloudMethodOutput(output, fallbackErrorMessage = "") {
5
- if (output.errCode) {
6
- throw error.errorAssign(new Error(output.errMsg || fallbackErrorMessage), output);
7
- }
8
- return output.data;
14
+ if (output.errCode) throw (0, _cloudcome_utils_core_error.errorAssign)(new Error(output.errMsg || fallbackErrorMessage), output);
15
+ return output.data;
9
16
  }
17
+ /**
18
+ * 解析数据库执行结果
19
+ * @param res 客户端、云端响应结果
20
+ * @returns 处理后的结果
21
+ */
10
22
  function parseDatabaseOutput(res) {
11
- const keys = Object.keys(res);
12
- const isClient = keys.length === 1 && keys[0] === "result";
13
- if (isClient) {
14
- const { result } = res;
15
- if (!result.errCode) return object.objectOmit(result, ["errCode", "errMsg"]);
16
- throw error.errorAssign(new Error(result.errMsg), result);
17
- }
18
- return res;
23
+ const keys = Object.keys(res);
24
+ if (keys.length === 1 && keys[0] === "result") {
25
+ const { result } = res;
26
+ if (!result.errCode) return (0, _cloudcome_utils_core_object.objectOmit)(result, ["errCode", "errMsg"]);
27
+ throw (0, _cloudcome_utils_core_error.errorAssign)(new Error(result.errMsg), result);
28
+ }
29
+ return res;
19
30
  }
20
- exports.parseCloudMethodOutput = parseCloudMethodOutput;
21
- exports.parseDatabaseOutput = parseDatabaseOutput;
22
- //# sourceMappingURL=_helpers.cjs.map
31
+ //#endregion
32
+ Object.defineProperty(exports, "parseCloudMethodOutput", {
33
+ enumerable: true,
34
+ get: function() {
35
+ return parseCloudMethodOutput;
36
+ }
37
+ });
38
+ Object.defineProperty(exports, "parseDatabaseOutput", {
39
+ enumerable: true,
40
+ get: function() {
41
+ return parseDatabaseOutput;
42
+ }
43
+ });
44
+
45
+ //# sourceMappingURL=_helpers.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"_helpers.cjs","sources":["../src/_helpers.ts"],"sourcesContent":["import { errorAssign } from '@cloudcome/utils-core/error';\nimport { objectOmit } from '@cloudcome/utils-core/object';\nimport type { CloudMethodOutput } from './cloud';\nimport type { ClientDatabaseOutput, CloudDatabaseOutput } from './database';\n\n/**\n * 解析云对象方法调用的输出结果\n *\n * @template O - 云对象方法返回数据的类型\n * @param output - 云对象方法调用的输出结果\n * @param fallbackErrorMessage - 当输出中没有错误信息时使用的默认错误消息\n * @returns 云对象方法返回成功时的数据部分\n * @throws 当云对象方法调用失败时,抛出包含错误信息的异常\n */\nexport function parseCloudMethodOutput<O>(output: CloudMethodOutput<O>, fallbackErrorMessage = ''): O {\n if (output.errCode) {\n throw errorAssign(new Error(output.errMsg || fallbackErrorMessage), output);\n }\n\n return output.data;\n}\n\n/**\n * 解析数据库执行结果\n * @param res 客户端、云端响应结果\n * @returns 处理后的结果\n */\nexport function parseDatabaseOutput<T>(res: ClientDatabaseOutput<T> | CloudDatabaseOutput<T>) {\n const keys = Object.keys(res as AnyObject);\n // 客户端 { result: {errCode: 0, errMsg: 'ok'} & 数据 }\n const isClient = keys.length === 1 && keys[0] === 'result';\n\n if (isClient) {\n const { result } = res as ClientDatabaseOutput<T>;\n if (!result.errCode) return objectOmit(result, ['errCode', 'errMsg']);\n throw errorAssign(new Error(result.errMsg), result);\n }\n\n // 云端 数据\n return res as T;\n}\n"],"names":["errorAssign","objectOmit"],"mappings":";;;AAcgB,SAAA,uBAA0B,QAA8B,uBAAuB,IAAO;AACpG,MAAI,OAAO,SAAS;AAClB,UAAMA,MAAAA,YAAY,IAAI,MAAM,OAAO,UAAU,oBAAoB,GAAG,MAAM;AAAA,EAAA;AAG5E,SAAO,OAAO;AAChB;AAOO,SAAS,oBAAuB,KAAuD;AACtF,QAAA,OAAO,OAAO,KAAK,GAAgB;AAEzC,QAAM,WAAW,KAAK,WAAW,KAAK,KAAK,CAAC,MAAM;AAElD,MAAI,UAAU;AACN,UAAA,EAAE,WAAW;AACf,QAAA,CAAC,OAAO,QAAS,QAAOC,OAAAA,WAAW,QAAQ,CAAC,WAAW,QAAQ,CAAC;AACpE,UAAMD,MAAAA,YAAY,IAAI,MAAM,OAAO,MAAM,GAAG,MAAM;AAAA,EAAA;AAI7C,SAAA;AACT;;;"}
1
+ {"version":3,"file":"_helpers.cjs","names":[],"sources":["../src/_helpers.ts"],"sourcesContent":["import { errorAssign } from '@cloudcome/utils-core/error';\nimport { objectOmit } from '@cloudcome/utils-core/object';\nimport type { CloudMethodOutput } from './cloud';\nimport type { ClientDatabaseOutput, CloudDatabaseOutput } from './database';\n\n/**\n * 解析云对象方法调用的输出结果\n *\n * @template O - 云对象方法返回数据的类型\n * @param output - 云对象方法调用的输出结果\n * @param fallbackErrorMessage - 当输出中没有错误信息时使用的默认错误消息\n * @returns 云对象方法返回成功时的数据部分\n * @throws 当云对象方法调用失败时,抛出包含错误信息的异常\n */\nexport function parseCloudMethodOutput<O>(\n output: CloudMethodOutput<O>,\n fallbackErrorMessage = '',\n): O {\n if (output.errCode) {\n throw errorAssign(new Error(output.errMsg || fallbackErrorMessage), output);\n }\n\n return output.data;\n}\n\n/**\n * 解析数据库执行结果\n * @param res 客户端、云端响应结果\n * @returns 处理后的结果\n */\nexport function parseDatabaseOutput<T>(\n res: ClientDatabaseOutput<T> | CloudDatabaseOutput<T>,\n) {\n const keys = Object.keys(res as AnyObject);\n // 客户端 { result: {errCode: 0, errMsg: 'ok'} & 数据 }\n const isClient = keys.length === 1 && keys[0] === 'result';\n\n if (isClient) {\n const { result } = res as ClientDatabaseOutput<T>;\n if (!result.errCode) return objectOmit(result, ['errCode', 'errMsg']);\n throw errorAssign(new Error(result.errMsg), result);\n }\n\n // 云端 数据\n return res as T;\n}\n"],"mappings":";;;;;;;;;;;;AAcA,SAAgB,uBACd,QACA,uBAAuB,IACpB;CACH,IAAI,OAAO,SACT,OAAA,GAAA,4BAAA,aAAkB,IAAI,MAAM,OAAO,UAAU,qBAAqB,EAAE,OAAO;CAG7E,OAAO,OAAO;;;;;;;AAQhB,SAAgB,oBACd,KACA;CACA,MAAM,OAAO,OAAO,KAAK,IAAiB;CAI1C,IAFiB,KAAK,WAAW,KAAK,KAAK,OAAO,UAEpC;EACZ,MAAM,EAAE,WAAW;EACnB,IAAI,CAAC,OAAO,SAAS,QAAA,GAAA,6BAAA,YAAkB,QAAQ,CAAC,WAAW,SAAS,CAAC;EACrE,OAAA,GAAA,4BAAA,aAAkB,IAAI,MAAM,OAAO,OAAO,EAAE,OAAO;;CAIrD,OAAO"}
package/dist/_helpers.mjs CHANGED
@@ -1,23 +1,34 @@
1
1
  import { errorAssign } from "@cloudcome/utils-core/error";
2
2
  import { objectOmit } from "@cloudcome/utils-core/object";
3
+ //#region src/_helpers.ts
4
+ /**
5
+ * 解析云对象方法调用的输出结果
6
+ *
7
+ * @template O - 云对象方法返回数据的类型
8
+ * @param output - 云对象方法调用的输出结果
9
+ * @param fallbackErrorMessage - 当输出中没有错误信息时使用的默认错误消息
10
+ * @returns 云对象方法返回成功时的数据部分
11
+ * @throws 当云对象方法调用失败时,抛出包含错误信息的异常
12
+ */
3
13
  function parseCloudMethodOutput(output, fallbackErrorMessage = "") {
4
- if (output.errCode) {
5
- throw errorAssign(new Error(output.errMsg || fallbackErrorMessage), output);
6
- }
7
- return output.data;
14
+ if (output.errCode) throw errorAssign(new Error(output.errMsg || fallbackErrorMessage), output);
15
+ return output.data;
8
16
  }
17
+ /**
18
+ * 解析数据库执行结果
19
+ * @param res 客户端、云端响应结果
20
+ * @returns 处理后的结果
21
+ */
9
22
  function parseDatabaseOutput(res) {
10
- const keys = Object.keys(res);
11
- const isClient = keys.length === 1 && keys[0] === "result";
12
- if (isClient) {
13
- const { result } = res;
14
- if (!result.errCode) return objectOmit(result, ["errCode", "errMsg"]);
15
- throw errorAssign(new Error(result.errMsg), result);
16
- }
17
- return res;
23
+ const keys = Object.keys(res);
24
+ if (keys.length === 1 && keys[0] === "result") {
25
+ const { result } = res;
26
+ if (!result.errCode) return objectOmit(result, ["errCode", "errMsg"]);
27
+ throw errorAssign(new Error(result.errMsg), result);
28
+ }
29
+ return res;
18
30
  }
19
- export {
20
- parseDatabaseOutput as a,
21
- parseCloudMethodOutput as p
22
- };
23
- //# sourceMappingURL=_helpers.mjs.map
31
+ //#endregion
32
+ export { parseDatabaseOutput as n, parseCloudMethodOutput as t };
33
+
34
+ //# sourceMappingURL=_helpers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"_helpers.mjs","sources":["../src/_helpers.ts"],"sourcesContent":["import { errorAssign } from '@cloudcome/utils-core/error';\nimport { objectOmit } from '@cloudcome/utils-core/object';\nimport type { CloudMethodOutput } from './cloud';\nimport type { ClientDatabaseOutput, CloudDatabaseOutput } from './database';\n\n/**\n * 解析云对象方法调用的输出结果\n *\n * @template O - 云对象方法返回数据的类型\n * @param output - 云对象方法调用的输出结果\n * @param fallbackErrorMessage - 当输出中没有错误信息时使用的默认错误消息\n * @returns 云对象方法返回成功时的数据部分\n * @throws 当云对象方法调用失败时,抛出包含错误信息的异常\n */\nexport function parseCloudMethodOutput<O>(output: CloudMethodOutput<O>, fallbackErrorMessage = ''): O {\n if (output.errCode) {\n throw errorAssign(new Error(output.errMsg || fallbackErrorMessage), output);\n }\n\n return output.data;\n}\n\n/**\n * 解析数据库执行结果\n * @param res 客户端、云端响应结果\n * @returns 处理后的结果\n */\nexport function parseDatabaseOutput<T>(res: ClientDatabaseOutput<T> | CloudDatabaseOutput<T>) {\n const keys = Object.keys(res as AnyObject);\n // 客户端 { result: {errCode: 0, errMsg: 'ok'} & 数据 }\n const isClient = keys.length === 1 && keys[0] === 'result';\n\n if (isClient) {\n const { result } = res as ClientDatabaseOutput<T>;\n if (!result.errCode) return objectOmit(result, ['errCode', 'errMsg']);\n throw errorAssign(new Error(result.errMsg), result);\n }\n\n // 云端 数据\n return res as T;\n}\n"],"names":[],"mappings":";;AAcgB,SAAA,uBAA0B,QAA8B,uBAAuB,IAAO;AACpG,MAAI,OAAO,SAAS;AAClB,UAAM,YAAY,IAAI,MAAM,OAAO,UAAU,oBAAoB,GAAG,MAAM;AAAA,EAAA;AAG5E,SAAO,OAAO;AAChB;AAOO,SAAS,oBAAuB,KAAuD;AACtF,QAAA,OAAO,OAAO,KAAK,GAAgB;AAEzC,QAAM,WAAW,KAAK,WAAW,KAAK,KAAK,CAAC,MAAM;AAElD,MAAI,UAAU;AACN,UAAA,EAAE,WAAW;AACf,QAAA,CAAC,OAAO,QAAS,QAAO,WAAW,QAAQ,CAAC,WAAW,QAAQ,CAAC;AACpE,UAAM,YAAY,IAAI,MAAM,OAAO,MAAM,GAAG,MAAM;AAAA,EAAA;AAI7C,SAAA;AACT;"}
1
+ {"version":3,"file":"_helpers.mjs","names":[],"sources":["../src/_helpers.ts"],"sourcesContent":["import { errorAssign } from '@cloudcome/utils-core/error';\nimport { objectOmit } from '@cloudcome/utils-core/object';\nimport type { CloudMethodOutput } from './cloud';\nimport type { ClientDatabaseOutput, CloudDatabaseOutput } from './database';\n\n/**\n * 解析云对象方法调用的输出结果\n *\n * @template O - 云对象方法返回数据的类型\n * @param output - 云对象方法调用的输出结果\n * @param fallbackErrorMessage - 当输出中没有错误信息时使用的默认错误消息\n * @returns 云对象方法返回成功时的数据部分\n * @throws 当云对象方法调用失败时,抛出包含错误信息的异常\n */\nexport function parseCloudMethodOutput<O>(\n output: CloudMethodOutput<O>,\n fallbackErrorMessage = '',\n): O {\n if (output.errCode) {\n throw errorAssign(new Error(output.errMsg || fallbackErrorMessage), output);\n }\n\n return output.data;\n}\n\n/**\n * 解析数据库执行结果\n * @param res 客户端、云端响应结果\n * @returns 处理后的结果\n */\nexport function parseDatabaseOutput<T>(\n res: ClientDatabaseOutput<T> | CloudDatabaseOutput<T>,\n) {\n const keys = Object.keys(res as AnyObject);\n // 客户端 { result: {errCode: 0, errMsg: 'ok'} & 数据 }\n const isClient = keys.length === 1 && keys[0] === 'result';\n\n if (isClient) {\n const { result } = res as ClientDatabaseOutput<T>;\n if (!result.errCode) return objectOmit(result, ['errCode', 'errMsg']);\n throw errorAssign(new Error(result.errMsg), result);\n }\n\n // 云端 数据\n return res as T;\n}\n"],"mappings":";;;;;;;;;;;;AAcA,SAAgB,uBACd,QACA,uBAAuB,IACpB;CACH,IAAI,OAAO,SACT,MAAM,YAAY,IAAI,MAAM,OAAO,UAAU,qBAAqB,EAAE,OAAO;CAG7E,OAAO,OAAO;;;;;;;AAQhB,SAAgB,oBACd,KACA;CACA,MAAM,OAAO,OAAO,KAAK,IAAiB;CAI1C,IAFiB,KAAK,WAAW,KAAK,KAAK,OAAO,UAEpC;EACZ,MAAM,EAAE,WAAW;EACnB,IAAI,CAAC,OAAO,SAAS,OAAO,WAAW,QAAQ,CAAC,WAAW,SAAS,CAAC;EACrE,MAAM,YAAY,IAAI,MAAM,OAAO,OAAO,EAAE,OAAO;;CAIrD,OAAO"}
package/dist/app.cjs CHANGED
@@ -1,9 +1,44 @@
1
- "use strict";
2
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const shared = require("@cloudcome/utils-vue/shared");
4
- const uniApp = require("@dcloudio/uni-app");
2
+ let _cloudcome_utils_vue_shared = require("@cloudcome/utils-vue/shared");
3
+ let _dcloudio_uni_app = require("@dcloudio/uni-app");
4
+ //#region src/app.ts
5
+ /**
6
+ * 应用显示状态生命周期钩子函数
7
+ *
8
+ * 该函数用于监听应用从后台进入前台的生命周期事件。
9
+ * 当应用从后台切换到前台时触发 onShow 回调,
10
+ * 当应用从前台切换到后台时触发 onHide 回调。
11
+ *
12
+ * @param appShow - 应用显示状态变化时的回调函数,可以返回一个清理函数
13
+ *
14
+ * @example
15
+ * // 基本用法
16
+ * useAppShow(() => {
17
+ * console.log('应用进入前台');
18
+ *
19
+ * // 可选:返回一个清理函数,在应用进入后台时执行
20
+ * return () => {
21
+ * console.log('应用进入后台');
22
+ * };
23
+ * });
24
+ *
25
+ * @example
26
+ * // 带有异步操作的用法
27
+ * useAppShow(async () => {
28
+ * // 应用进入前台时刷新数据
29
+ * await refreshUserData();
30
+ *
31
+ * // 返回清理函数
32
+ * return () => {
33
+ * // 应用进入后台时保存数据
34
+ * saveUserData();
35
+ * };
36
+ * });
37
+ */
5
38
  function useAppShow(appShow) {
6
- shared._runLifeHook(uniApp.onShow, uniApp.onHide, appShow);
39
+ (0, _cloudcome_utils_vue_shared._runLifeHook)(_dcloudio_uni_app.onShow, _dcloudio_uni_app.onHide, appShow);
7
40
  }
41
+ //#endregion
8
42
  exports.useAppShow = useAppShow;
9
- //# sourceMappingURL=app.cjs.map
43
+
44
+ //# sourceMappingURL=app.cjs.map
package/dist/app.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.cjs","sources":["../src/app.ts"],"sourcesContent":["import type { HookListenerWithDispose } from '@cloudcome/utils-vue/component';\nimport { _runLifeHook } from '@cloudcome/utils-vue/shared';\nimport { onHide, onShow } from '@dcloudio/uni-app';\n\n/**\n * 应用显示状态生命周期钩子函数\n *\n * 该函数用于监听应用从后台进入前台的生命周期事件。\n * 当应用从后台切换到前台时触发 onShow 回调,\n * 当应用从前台切换到后台时触发 onHide 回调。\n *\n * @param appShow - 应用显示状态变化时的回调函数,可以返回一个清理函数\n *\n * @example\n * // 基本用法\n * useAppShow(() => {\n * console.log('应用进入前台');\n *\n * // 可选:返回一个清理函数,在应用进入后台时执行\n * return () => {\n * console.log('应用进入后台');\n * };\n * });\n *\n * @example\n * // 带有异步操作的用法\n * useAppShow(async () => {\n * // 应用进入前台时刷新数据\n * await refreshUserData();\n *\n * // 返回清理函数\n * return () => {\n * // 应用进入后台时保存数据\n * saveUserData();\n * };\n * });\n */\nexport function useAppShow(appShow: HookListenerWithDispose) {\n _runLifeHook(onShow, onHide, appShow);\n}\n"],"names":["_runLifeHook","onShow","onHide"],"mappings":";;;;AAqCO,SAAS,WAAW,SAAkC;AAC9CA,sBAAAC,OAAAA,QAAQC,eAAQ,OAAO;AACtC;;"}
1
+ {"version":3,"file":"app.cjs","names":[],"sources":["../src/app.ts"],"sourcesContent":["import type { HookListenerWithDispose } from '@cloudcome/utils-vue/component';\nimport { _runLifeHook } from '@cloudcome/utils-vue/shared';\nimport { onHide, onShow } from '@dcloudio/uni-app';\n\n/**\n * 应用显示状态生命周期钩子函数\n *\n * 该函数用于监听应用从后台进入前台的生命周期事件。\n * 当应用从后台切换到前台时触发 onShow 回调,\n * 当应用从前台切换到后台时触发 onHide 回调。\n *\n * @param appShow - 应用显示状态变化时的回调函数,可以返回一个清理函数\n *\n * @example\n * // 基本用法\n * useAppShow(() => {\n * console.log('应用进入前台');\n *\n * // 可选:返回一个清理函数,在应用进入后台时执行\n * return () => {\n * console.log('应用进入后台');\n * };\n * });\n *\n * @example\n * // 带有异步操作的用法\n * useAppShow(async () => {\n * // 应用进入前台时刷新数据\n * await refreshUserData();\n *\n * // 返回清理函数\n * return () => {\n * // 应用进入后台时保存数据\n * saveUserData();\n * };\n * });\n */\nexport function useAppShow(appShow: HookListenerWithDispose) {\n _runLifeHook(onShow, onHide, appShow);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCA,SAAgB,WAAW,SAAkC;CAC3D,CAAA,GAAA,4BAAA,cAAa,kBAAA,QAAQ,kBAAA,QAAQ,QAAQ"}
package/dist/app.mjs CHANGED
@@ -1,9 +1,43 @@
1
1
  import { _runLifeHook } from "@cloudcome/utils-vue/shared";
2
- import { onShow, onHide } from "@dcloudio/uni-app";
2
+ import { onHide, onShow } from "@dcloudio/uni-app";
3
+ //#region src/app.ts
4
+ /**
5
+ * 应用显示状态生命周期钩子函数
6
+ *
7
+ * 该函数用于监听应用从后台进入前台的生命周期事件。
8
+ * 当应用从后台切换到前台时触发 onShow 回调,
9
+ * 当应用从前台切换到后台时触发 onHide 回调。
10
+ *
11
+ * @param appShow - 应用显示状态变化时的回调函数,可以返回一个清理函数
12
+ *
13
+ * @example
14
+ * // 基本用法
15
+ * useAppShow(() => {
16
+ * console.log('应用进入前台');
17
+ *
18
+ * // 可选:返回一个清理函数,在应用进入后台时执行
19
+ * return () => {
20
+ * console.log('应用进入后台');
21
+ * };
22
+ * });
23
+ *
24
+ * @example
25
+ * // 带有异步操作的用法
26
+ * useAppShow(async () => {
27
+ * // 应用进入前台时刷新数据
28
+ * await refreshUserData();
29
+ *
30
+ * // 返回清理函数
31
+ * return () => {
32
+ * // 应用进入后台时保存数据
33
+ * saveUserData();
34
+ * };
35
+ * });
36
+ */
3
37
  function useAppShow(appShow) {
4
- _runLifeHook(onShow, onHide, appShow);
38
+ _runLifeHook(onShow, onHide, appShow);
5
39
  }
6
- export {
7
- useAppShow
8
- };
9
- //# sourceMappingURL=app.mjs.map
40
+ //#endregion
41
+ export { useAppShow };
42
+
43
+ //# sourceMappingURL=app.mjs.map
package/dist/app.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.mjs","sources":["../src/app.ts"],"sourcesContent":["import type { HookListenerWithDispose } from '@cloudcome/utils-vue/component';\nimport { _runLifeHook } from '@cloudcome/utils-vue/shared';\nimport { onHide, onShow } from '@dcloudio/uni-app';\n\n/**\n * 应用显示状态生命周期钩子函数\n *\n * 该函数用于监听应用从后台进入前台的生命周期事件。\n * 当应用从后台切换到前台时触发 onShow 回调,\n * 当应用从前台切换到后台时触发 onHide 回调。\n *\n * @param appShow - 应用显示状态变化时的回调函数,可以返回一个清理函数\n *\n * @example\n * // 基本用法\n * useAppShow(() => {\n * console.log('应用进入前台');\n *\n * // 可选:返回一个清理函数,在应用进入后台时执行\n * return () => {\n * console.log('应用进入后台');\n * };\n * });\n *\n * @example\n * // 带有异步操作的用法\n * useAppShow(async () => {\n * // 应用进入前台时刷新数据\n * await refreshUserData();\n *\n * // 返回清理函数\n * return () => {\n * // 应用进入后台时保存数据\n * saveUserData();\n * };\n * });\n */\nexport function useAppShow(appShow: HookListenerWithDispose) {\n _runLifeHook(onShow, onHide, appShow);\n}\n"],"names":[],"mappings":";;AAqCO,SAAS,WAAW,SAAkC;AAC9C,eAAA,QAAQ,QAAQ,OAAO;AACtC;"}
1
+ {"version":3,"file":"app.mjs","names":[],"sources":["../src/app.ts"],"sourcesContent":["import type { HookListenerWithDispose } from '@cloudcome/utils-vue/component';\nimport { _runLifeHook } from '@cloudcome/utils-vue/shared';\nimport { onHide, onShow } from '@dcloudio/uni-app';\n\n/**\n * 应用显示状态生命周期钩子函数\n *\n * 该函数用于监听应用从后台进入前台的生命周期事件。\n * 当应用从后台切换到前台时触发 onShow 回调,\n * 当应用从前台切换到后台时触发 onHide 回调。\n *\n * @param appShow - 应用显示状态变化时的回调函数,可以返回一个清理函数\n *\n * @example\n * // 基本用法\n * useAppShow(() => {\n * console.log('应用进入前台');\n *\n * // 可选:返回一个清理函数,在应用进入后台时执行\n * return () => {\n * console.log('应用进入后台');\n * };\n * });\n *\n * @example\n * // 带有异步操作的用法\n * useAppShow(async () => {\n * // 应用进入前台时刷新数据\n * await refreshUserData();\n *\n * // 返回清理函数\n * return () => {\n * // 应用进入后台时保存数据\n * saveUserData();\n * };\n * });\n */\nexport function useAppShow(appShow: HookListenerWithDispose) {\n _runLifeHook(onShow, onHide, appShow);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCA,SAAgB,WAAW,SAAkC;CAC3D,aAAa,QAAQ,QAAQ,QAAQ"}
package/dist/client.cjs CHANGED
@@ -1,61 +1,79 @@
1
- "use strict";
2
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const type = require("@cloudcome/utils-core/type");
4
- const request = require("@cloudcome/utils-vue/request");
5
- const _helpers = require("./_helpers.cjs");
2
+ const require__helpers = require("./_helpers.cjs");
3
+ let _cloudcome_utils_core_type = require("@cloudcome/utils-core/type");
4
+ let _cloudcome_utils_vue_request = require("@cloudcome/utils-vue/request");
5
+ //#region src/client.ts
6
+ /**
7
+ * 导入云对象并创建一个用于调用云对象的hook
8
+ * @param objectName 云对象名称
9
+ * @param importOptions 配置选项,包含模拟服务器、回退错误信息等
10
+ * @returns 返回一个可用于调用云对象方法的hook函数
11
+ */
6
12
  function importCloudObject(objectName, importOptions) {
7
- const fallbackErrorMessage = importOptions?.fallbackErrorMessage || "请求失败";
8
- const server = importOptions?._mockServer || uniCloud.importObject(objectName, importOptions);
9
- const onShowLoading = importOptions?.onShowLoading || (() => uni.showLoading({ title: "", mask: true }));
10
- const onHideLoading = importOptions?.onHideLoading || (() => uni.hideLoading());
11
- const onShowError = importOptions?.onShowError || ((err) => uni.showToast({ title: err.message, icon: "none", duration: 3e3, mask: false }));
12
- const useCloudMethod = (method, caller, options) => {
13
- return request.useRequest(
14
- async (...inputs) => {
15
- const methodName = type.isFunction(method) ? method(...inputs) : method;
16
- const request2 = server[methodName];
17
- const output = await caller(request2, ...inputs);
18
- return _helpers.parseCloudMethodOutput(output, fallbackErrorMessage);
19
- },
20
- {
21
- ...options,
22
- async onBefore(...inputs) {
23
- if (options?.showLoading) onShowLoading();
24
- await importOptions?.onBefore?.();
25
- await options?.onBefore?.(...inputs);
26
- },
27
- async onSuccess(data, ...inputs) {
28
- await importOptions?.onSuccess?.();
29
- await options?.onSuccess?.(data, ...inputs);
30
- },
31
- async onError(err, ...inputs) {
32
- await importOptions?.onError?.(err);
33
- await options?.onError?.(err, ...inputs);
34
- if (options?.showError) {
35
- setTimeout(() => {
36
- onShowError(err);
37
- });
38
- }
39
- },
40
- async onAfter(...inputs) {
41
- if (options?.showLoading) onHideLoading();
42
- await importOptions?.onAfter?.();
43
- await options?.onAfter?.(...inputs);
44
- }
45
- }
46
- );
47
- };
48
- return useCloudMethod;
13
+ const fallbackErrorMessage = importOptions?.fallbackErrorMessage || "请求失败";
14
+ const server = importOptions?._mockServer || uniCloud.importObject(objectName, importOptions);
15
+ const onShowLoading = importOptions?.onShowLoading || (() => uni.showLoading({
16
+ title: "",
17
+ mask: true
18
+ }));
19
+ const onHideLoading = importOptions?.onHideLoading || (() => uni.hideLoading());
20
+ const onShowError = importOptions?.onShowError || ((err) => uni.showToast({
21
+ title: err.message,
22
+ icon: "none",
23
+ duration: 3e3,
24
+ mask: false
25
+ }));
26
+ /**
27
+ * 用于调用云对象方法的hook函数
28
+ * @template I 输入参数类型
29
+ * @template O 输出结果类型
30
+ * @param method 云对象方法名
31
+ * @param caller 调用云对象的函数
32
+ * @param options 配置选项,包含请求相关的配置
33
+ * @returns 返回一个请求hook,用于处理云对象调用
34
+ */
35
+ const useCloudMethod = (method, caller, options) => {
36
+ return (0, _cloudcome_utils_vue_request.useRequest)(async (...inputs) => {
37
+ const request = server[(0, _cloudcome_utils_core_type.isFunction)(method) ? method(...inputs) : method];
38
+ return require__helpers.parseCloudMethodOutput(await caller(request, ...inputs), fallbackErrorMessage);
39
+ }, {
40
+ ...options,
41
+ async onBefore(...inputs) {
42
+ if (options?.showLoading) onShowLoading();
43
+ await importOptions?.onBefore?.();
44
+ await options?.onBefore?.(...inputs);
45
+ },
46
+ async onSuccess(data, ...inputs) {
47
+ await importOptions?.onSuccess?.();
48
+ await options?.onSuccess?.(data, ...inputs);
49
+ },
50
+ async onError(err, ...inputs) {
51
+ await importOptions?.onError?.(err);
52
+ await options?.onError?.(err, ...inputs);
53
+ if (options?.showError) setTimeout(() => {
54
+ onShowError(err);
55
+ });
56
+ },
57
+ async onAfter(...inputs) {
58
+ if (options?.showLoading) onHideLoading();
59
+ await importOptions?.onAfter?.();
60
+ await options?.onAfter?.(...inputs);
61
+ }
62
+ });
63
+ };
64
+ return useCloudMethod;
49
65
  }
50
66
  function useDatabase(caller, options) {
51
- const db = options?._mockDatabase || uniCloud.database();
52
- return request.useRequest(async (...inputs) => {
53
- const { result } = await caller(db, ...inputs);
54
- if (!result.errCode) return result;
55
- throw new Error(result.errMsg || "请求失败");
56
- }, options);
67
+ const db = options?._mockDatabase || uniCloud.database();
68
+ return (0, _cloudcome_utils_vue_request.useRequest)(async (...inputs) => {
69
+ const { result } = await caller(db, ...inputs);
70
+ if (!result.errCode) return result;
71
+ throw new Error(result.errMsg || "请求失败");
72
+ }, options);
57
73
  }
58
- exports.parseCloudMethodOutput = _helpers.parseCloudMethodOutput;
74
+ //#endregion
59
75
  exports.importCloudObject = importCloudObject;
76
+ exports.parseCloudMethodOutput = require__helpers.parseCloudMethodOutput;
60
77
  exports.useDatabase = useDatabase;
61
- //# sourceMappingURL=client.cjs.map
78
+
79
+ //# sourceMappingURL=client.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.cjs","sources":["../src/client.ts"],"sourcesContent":["import type { CloudMethodOutput, UniError } from '@/cloud';\nimport type { ClientDatabaseOutput } from '@/database';\nimport { isFunction } from '@cloudcome/utils-core/type';\nimport type { AnyArray, AnyFunction } from '@cloudcome/utils-core/types';\nimport {\n type UseRequestOptions,\n type UseRequestOutput,\n type UseRequestOutputFilled,\n useRequest,\n} from '@cloudcome/utils-vue/request';\nimport { parseCloudMethodOutput } from './_helpers';\n\ntype _ImportObject = UniCloudNamespace.UniCloud['importObject'];\ntype _ImportObjectArgs = Parameters<_ImportObject>;\ntype _ImportObjectOptions = _ImportObjectArgs[1];\n\nexport type CreateUseCloudObjectOptions = _ImportObjectOptions & {\n /**\n * 模拟云对象,用于单元测试\n * @private\n */\n // biome-ignore lint/suspicious/noExplicitAny: <explanation>\n _mockServer?: any;\n\n /**\n * 回退错误信息\n * @default '请求失败'\n */\n fallbackErrorMessage?: string;\n\n /**\n * 请求开始前的回调函数\n */\n onBefore?: () => unknown;\n\n /**\n * 请求成功后的回调函数\n */\n onSuccess?: () => unknown;\n\n /**\n * 请求失败时的回调函数\n * @param err 错误信息\n */\n onError?: (err: UniError) => unknown;\n\n /**\n * 请求完成后的回调函数(无论成功或失败都会执行)\n */\n onAfter?: () => unknown;\n\n /**\n * 显示加载状态的回调函数,当配置了 showLoading 为 true 时会调用\n */\n onShowLoading?: () => unknown;\n\n /**\n * 隐藏加载状态的回调函数,当配置了 showLoading 为 true 时会调用\n */\n onHideLoading?: () => unknown;\n\n /**\n * 显示错误信息的回调函数,当配置了 showError 为 true 时会调用\n * @param err 错误信息\n */\n onShowError?: (err: UniError) => unknown;\n};\n\n/**\n * 云对象请求函数类型定义\n * @template F 云对象方法函数类型\n * @param input 云对象方法的参数数组\n * @returns 返回云对象方法执行结果的Promise\n */\nexport type CloudObjectRequest = <F extends AnyFunction>(\n ...input: Parameters<F>\n) => Promise<CloudMethodOutput<ReturnType<F>>>;\n\n/**\n * 用于调用云对象方法的配置选项类型定义\n * @template I 输入参数类型数组\n * @template O 输出结果类型\n */\nexport type UseCloudMethodOptions<I extends AnyArray, O> = Omit<UseRequestOptions<I, O>, 'onError'> & {\n /**\n * 请求发生错误时的回调函数\n * @param err 错误信息\n * @param inputs 请求输入参数\n */\n onError?: (err: UniError, ...inputs: I) => unknown;\n\n /**\n * 是否显示加载状态\n * @default false\n */\n showLoading?: boolean;\n\n /**\n * 是否显示错误信息\n * @default false\n */\n showError?: boolean;\n};\n\n/**\n * 用于调用云对象方法的hook函数类型定义\n * @template I 输入参数类型数组\n * @template O 输出结果类型\n */\nexport type UseCloudMethod = {\n /**\n * 重载签名:当提供 placeholder 选项时,返回包含初始值的输出类型\n * @param method 云对象方法名\n * @param caller 调用云对象方法的函数\n * @param options 包含 placeholder 的请求配置选项\n * @returns 返回包含初始值的请求输出\n */\n <I extends AnyArray, O>(\n method: string | ((...inputs: I) => string),\n caller: (request: CloudObjectRequest, ...inputs: I) => Promise<CloudMethodOutput<O>>,\n options: Omit<UseCloudMethodOptions<I, O>, 'placeholder'> & { placeholder: () => O },\n ): UseRequestOutputFilled<I, O>;\n\n /**\n * 重载签名:当不提供 placeholder 选项时,返回普通输出类型\n * @param method 云对象方法名\n * @param caller 调用云对象方法的函数\n * @param options 可选的请求配置选项\n * @returns 返回普通的请求输出\n */\n <I extends AnyArray, O>(\n method: string | ((...inputs: I) => string),\n caller: (request: CloudObjectRequest, ...inputs: I) => Promise<CloudMethodOutput<O>>,\n options?: UseCloudMethodOptions<I, O>,\n ): UseRequestOutput<I, O>;\n};\n\n/**\n * 导入云对象并创建一个用于调用云对象的hook\n * @param objectName 云对象名称\n * @param importOptions 配置选项,包含模拟服务器、回退错误信息等\n * @returns 返回一个可用于调用云对象方法的hook函数\n */\nexport function importCloudObject(objectName: _ImportObjectArgs[0], importOptions?: CreateUseCloudObjectOptions) {\n const fallbackErrorMessage = importOptions?.fallbackErrorMessage || '请求失败';\n const server = importOptions?._mockServer || uniCloud.importObject(objectName, importOptions);\n const onShowLoading = importOptions?.onShowLoading || (() => uni.showLoading({ title: '', mask: true }));\n const onHideLoading = importOptions?.onHideLoading || (() => uni.hideLoading());\n const onShowError =\n importOptions?.onShowError ||\n ((err) => uni.showToast({ title: err.message, icon: 'none', duration: 3000, mask: false }));\n\n /**\n * 用于调用云对象方法的hook函数\n * @template I 输入参数类型\n * @template O 输出结果类型\n * @param method 云对象方法名\n * @param caller 调用云对象的函数\n * @param options 配置选项,包含请求相关的配置\n * @returns 返回一个请求hook,用于处理云对象调用\n */\n const useCloudMethod: UseCloudMethod = (method, caller, options) => {\n // 使用请求hook处理云对象调用\n return useRequest(\n async (...inputs) => {\n const methodName = isFunction(method) ? method(...inputs) : method;\n const request = server[methodName];\n const output = await caller(request, ...inputs);\n return parseCloudMethodOutput(output, fallbackErrorMessage);\n },\n {\n ...options,\n async onBefore(...inputs) {\n if (options?.showLoading) onShowLoading();\n\n await importOptions?.onBefore?.();\n await options?.onBefore?.(...inputs);\n },\n async onSuccess(data, ...inputs) {\n await importOptions?.onSuccess?.();\n await options?.onSuccess?.(data, ...inputs);\n },\n async onError(err, ...inputs) {\n await importOptions?.onError?.(err as UniError);\n await options?.onError?.(err as UniError, ...inputs);\n\n if (options?.showError) {\n // 加延迟是尽量保证在 loading 隐藏后再显示错误信息\n setTimeout(() => {\n onShowError(err as UniError);\n });\n }\n },\n async onAfter(...inputs) {\n if (options?.showLoading) onHideLoading();\n\n await importOptions?.onAfter?.();\n await options?.onAfter?.(...inputs);\n },\n },\n );\n };\n\n return useCloudMethod;\n}\n\nexport type UseDatabaseOptions<I extends AnyArray, O> = UseRequestOptions<I, O> & {\n /**\n * 模拟数据库,用于单元测试\n */\n // biome-ignore lint/suspicious/noExplicitAny: <explanation>\n _mockDatabase?: any;\n};\n\n/**\n * 创建一个用于调用云数据库的hook\n * @param caller 调用云数据库的函数,接收数据库实例和输入参数,返回Promise\n * @param options 配置选项\n * @returns 返回一个请求hook,用于处理云数据库调用\n */\nexport function useDatabase<I extends AnyArray, O>(\n caller: (db: UniCloud.Database, ...inputs: I) => Promise<ClientDatabaseOutput<O>>,\n options: Omit<UseDatabaseOptions<I, O>, 'placeholder'> & { placeholder: () => O },\n): UseRequestOutputFilled<I, O>;\nexport function useDatabase<I extends AnyArray, O>(\n caller: (db: UniCloud.Database, ...inputs: I) => Promise<ClientDatabaseOutput<O>>,\n options?: UseDatabaseOptions<I, O>,\n): UseRequestOutput<I, O>;\nexport function useDatabase<I extends AnyArray, O>(\n caller: (db: UniCloud.Database, ...inputs: I) => Promise<ClientDatabaseOutput<O>>,\n options?: UseDatabaseOptions<I, O>,\n): UseRequestOutput<I, O> {\n // 获取数据库实例,优先使用模拟数据库(用于测试),否则使用uniCloud数据库\n const db = options?._mockDatabase || uniCloud.database();\n return useRequest(async (...inputs: I) => {\n const { result } = await caller(db, ...inputs);\n if (!result.errCode) return result;\n throw new Error(result.errMsg || '请求失败');\n }, options);\n}\n\nexport { parseCloudMethodOutput } from './_helpers';\nexport type { UniError } from './_types';\n"],"names":["useRequest","isFunction","request","parseCloudMethodOutput"],"mappings":";;;;;AA+IgB,SAAA,kBAAkB,YAAkC,eAA6C;AACzG,QAAA,uBAAuB,eAAe,wBAAwB;AACpE,QAAM,SAAS,eAAe,eAAe,SAAS,aAAa,YAAY,aAAa;AACtF,QAAA,gBAAgB,eAAe,kBAAkB,MAAM,IAAI,YAAY,EAAE,OAAO,IAAI,MAAM,KAAM,CAAA;AACtG,QAAM,gBAAgB,eAAe,kBAAkB,MAAM,IAAI,YAAY;AAC7E,QAAM,cACJ,eAAe,gBACd,CAAC,QAAQ,IAAI,UAAU,EAAE,OAAO,IAAI,SAAS,MAAM,QAAQ,UAAU,KAAM,MAAM,OAAO;AAW3F,QAAM,iBAAiC,CAAC,QAAQ,QAAQ,YAAY;AAE3D,WAAAA,QAAA;AAAA,MACL,UAAU,WAAW;AACnB,cAAM,aAAaC,KAAAA,WAAW,MAAM,IAAI,OAAO,GAAG,MAAM,IAAI;AACtD,cAAAC,WAAU,OAAO,UAAU;AACjC,cAAM,SAAS,MAAM,OAAOA,UAAS,GAAG,MAAM;AACvC,eAAAC,SAAA,uBAAuB,QAAQ,oBAAoB;AAAA,MAC5D;AAAA,MACA;AAAA,QACE,GAAG;AAAA,QACH,MAAM,YAAY,QAAQ;AACpB,cAAA,SAAS,YAA2B,eAAA;AAExC,gBAAM,eAAe,WAAW;AAC1B,gBAAA,SAAS,WAAW,GAAG,MAAM;AAAA,QACrC;AAAA,QACA,MAAM,UAAU,SAAS,QAAQ;AAC/B,gBAAM,eAAe,YAAY;AACjC,gBAAM,SAAS,YAAY,MAAM,GAAG,MAAM;AAAA,QAC5C;AAAA,QACA,MAAM,QAAQ,QAAQ,QAAQ;AACtB,gBAAA,eAAe,UAAU,GAAe;AAC9C,gBAAM,SAAS,UAAU,KAAiB,GAAG,MAAM;AAEnD,cAAI,SAAS,WAAW;AAEtB,uBAAW,MAAM;AACf,0BAAY,GAAe;AAAA,YAAA,CAC5B;AAAA,UAAA;AAAA,QAEL;AAAA,QACA,MAAM,WAAW,QAAQ;AACnB,cAAA,SAAS,YAA2B,eAAA;AAExC,gBAAM,eAAe,UAAU;AACzB,gBAAA,SAAS,UAAU,GAAG,MAAM;AAAA,QAAA;AAAA,MACpC;AAAA,IAEJ;AAAA,EACF;AAEO,SAAA;AACT;AAwBgB,SAAA,YACd,QACA,SACwB;AAExB,QAAM,KAAK,SAAS,iBAAiB,SAAS,SAAS;AAChD,SAAAH,QAAA,WAAW,UAAU,WAAc;AACxC,UAAM,EAAE,OAAO,IAAI,MAAM,OAAO,IAAI,GAAG,MAAM;AACzC,QAAA,CAAC,OAAO,QAAgB,QAAA;AAC5B,UAAM,IAAI,MAAM,OAAO,UAAU,MAAM;AAAA,KACtC,OAAO;AACZ;;;;"}
1
+ {"version":3,"file":"client.cjs","names":[],"sources":["../src/client.ts"],"sourcesContent":["import { isFunction } from '@cloudcome/utils-core/type';\nimport type { AnyArray, AnyFunction } from '@cloudcome/utils-core/types';\nimport {\n type UseRequestOptions,\n type UseRequestOutput,\n type UseRequestOutputFilled,\n useRequest,\n} from '@cloudcome/utils-vue/request';\nimport type { CloudMethodOutput, UniError } from '@/cloud';\nimport type { ClientDatabaseOutput } from '@/database';\nimport { parseCloudMethodOutput } from './_helpers';\n\ntype _ImportObject = UniCloudNamespace.UniCloud['importObject'];\ntype _ImportObjectArgs = Parameters<_ImportObject>;\ntype _ImportObjectOptions = _ImportObjectArgs[1];\n\nexport type CreateUseCloudObjectOptions = _ImportObjectOptions & {\n /**\n * 模拟云对象,用于单元测试\n * @private\n */\n // biome-ignore lint/suspicious/noExplicitAny: 单测使用 any\n _mockServer?: any;\n\n /**\n * 回退错误信息\n * @default '请求失败'\n */\n fallbackErrorMessage?: string;\n\n /**\n * 请求开始前的回调函数\n */\n onBefore?: () => unknown;\n\n /**\n * 请求成功后的回调函数\n */\n onSuccess?: () => unknown;\n\n /**\n * 请求失败时的回调函数\n * @param err 错误信息\n */\n onError?: (err: UniError) => unknown;\n\n /**\n * 请求完成后的回调函数(无论成功或失败都会执行)\n */\n onAfter?: () => unknown;\n\n /**\n * 显示加载状态的回调函数,当配置了 showLoading 为 true 时会调用\n */\n onShowLoading?: () => unknown;\n\n /**\n * 隐藏加载状态的回调函数,当配置了 showLoading 为 true 时会调用\n */\n onHideLoading?: () => unknown;\n\n /**\n * 显示错误信息的回调函数,当配置了 showError 为 true 时会调用\n * @param err 错误信息\n */\n onShowError?: (err: UniError) => unknown;\n};\n\n/**\n * 云对象请求函数类型定义\n * @template F 云对象方法函数类型\n * @param input 云对象方法的参数数组\n * @returns 返回云对象方法执行结果的Promise\n */\nexport type CloudObjectRequest = <F extends AnyFunction>(\n ...input: Parameters<F>\n) => Promise<CloudMethodOutput<ReturnType<F>>>;\n\n/**\n * 用于调用云对象方法的配置选项类型定义\n * @template I 输入参数类型数组\n * @template O 输出结果类型\n */\nexport type UseCloudMethodOptions<I extends AnyArray, O> = Omit<\n UseRequestOptions<I, O>,\n 'onError'\n> & {\n /**\n * 请求发生错误时的回调函数\n * @param err 错误信息\n * @param inputs 请求输入参数\n */\n onError?: (err: UniError, ...inputs: I) => unknown;\n\n /**\n * 是否显示加载状态\n * @default false\n */\n showLoading?: boolean;\n\n /**\n * 是否显示错误信息\n * @default false\n */\n showError?: boolean;\n};\n\n/**\n * 用于调用云对象方法的hook函数类型定义\n * @template I 输入参数类型数组\n * @template O 输出结果类型\n */\nexport type UseCloudMethod = {\n /**\n * 重载签名:当提供 placeholder 选项时,返回包含初始值的输出类型\n * @param method 云对象方法名\n * @param caller 调用云对象方法的函数\n * @param options 包含 placeholder 的请求配置选项\n * @returns 返回包含初始值的请求输出\n */\n <I extends AnyArray, O>(\n method: string | ((...inputs: I) => string),\n caller: (\n request: CloudObjectRequest,\n ...inputs: I\n ) => Promise<CloudMethodOutput<O>>,\n options: Omit<UseCloudMethodOptions<I, O>, 'placeholder'> & {\n placeholder: () => O;\n },\n ): UseRequestOutputFilled<I, O>;\n\n /**\n * 重载签名:当不提供 placeholder 选项时,返回普通输出类型\n * @param method 云对象方法名\n * @param caller 调用云对象方法的函数\n * @param options 可选的请求配置选项\n * @returns 返回普通的请求输出\n */\n <I extends AnyArray, O>(\n method: string | ((...inputs: I) => string),\n caller: (\n request: CloudObjectRequest,\n ...inputs: I\n ) => Promise<CloudMethodOutput<O>>,\n options?: UseCloudMethodOptions<I, O>,\n ): UseRequestOutput<I, O>;\n};\n\n/**\n * 导入云对象并创建一个用于调用云对象的hook\n * @param objectName 云对象名称\n * @param importOptions 配置选项,包含模拟服务器、回退错误信息等\n * @returns 返回一个可用于调用云对象方法的hook函数\n */\nexport function importCloudObject(\n objectName: _ImportObjectArgs[0],\n importOptions?: CreateUseCloudObjectOptions,\n) {\n const fallbackErrorMessage =\n importOptions?.fallbackErrorMessage || '请求失败';\n const server =\n importOptions?._mockServer ||\n uniCloud.importObject(objectName, importOptions);\n const onShowLoading =\n importOptions?.onShowLoading ||\n (() => uni.showLoading({ title: '', mask: true }));\n const onHideLoading =\n importOptions?.onHideLoading || (() => uni.hideLoading());\n const onShowError =\n importOptions?.onShowError ||\n ((err) =>\n uni.showToast({\n title: err.message,\n icon: 'none',\n duration: 3000,\n mask: false,\n }));\n\n /**\n * 用于调用云对象方法的hook函数\n * @template I 输入参数类型\n * @template O 输出结果类型\n * @param method 云对象方法名\n * @param caller 调用云对象的函数\n * @param options 配置选项,包含请求相关的配置\n * @returns 返回一个请求hook,用于处理云对象调用\n */\n const useCloudMethod: UseCloudMethod = (method, caller, options) => {\n // 使用请求hook处理云对象调用\n return useRequest(\n async (...inputs) => {\n const methodName = isFunction(method) ? method(...inputs) : method;\n const request = server[methodName];\n const output = await caller(request, ...inputs);\n return parseCloudMethodOutput(output, fallbackErrorMessage);\n },\n {\n ...options,\n async onBefore(...inputs) {\n if (options?.showLoading) onShowLoading();\n\n await importOptions?.onBefore?.();\n await options?.onBefore?.(...inputs);\n },\n async onSuccess(data, ...inputs) {\n await importOptions?.onSuccess?.();\n await options?.onSuccess?.(data, ...inputs);\n },\n async onError(err, ...inputs) {\n await importOptions?.onError?.(err as UniError);\n await options?.onError?.(err as UniError, ...inputs);\n\n if (options?.showError) {\n // 加延迟是尽量保证在 loading 隐藏后再显示错误信息\n setTimeout(() => {\n onShowError(err as UniError);\n });\n }\n },\n async onAfter(...inputs) {\n if (options?.showLoading) onHideLoading();\n\n await importOptions?.onAfter?.();\n await options?.onAfter?.(...inputs);\n },\n },\n );\n };\n\n return useCloudMethod;\n}\n\nexport type UseDatabaseOptions<I extends AnyArray, O> = UseRequestOptions<\n I,\n O\n> & {\n /**\n * 模拟数据库,用于单元测试\n */\n // biome-ignore lint/suspicious/noExplicitAny: 单测使用 any\n _mockDatabase?: any;\n};\n\n/**\n * 创建一个用于调用云数据库的hook\n * @param caller 调用云数据库的函数,接收数据库实例和输入参数,返回Promise\n * @param options 配置选项\n * @returns 返回一个请求hook,用于处理云数据库调用\n */\nexport function useDatabase<I extends AnyArray, O>(\n caller: (\n db: UniCloud.Database,\n ...inputs: I\n ) => Promise<ClientDatabaseOutput<O>>,\n options: Omit<UseDatabaseOptions<I, O>, 'placeholder'> & {\n placeholder: () => O;\n },\n): UseRequestOutputFilled<I, O>;\nexport function useDatabase<I extends AnyArray, O>(\n caller: (\n db: UniCloud.Database,\n ...inputs: I\n ) => Promise<ClientDatabaseOutput<O>>,\n options?: UseDatabaseOptions<I, O>,\n): UseRequestOutput<I, O>;\nexport function useDatabase<I extends AnyArray, O>(\n caller: (\n db: UniCloud.Database,\n ...inputs: I\n ) => Promise<ClientDatabaseOutput<O>>,\n options?: UseDatabaseOptions<I, O>,\n): UseRequestOutput<I, O> {\n // 获取数据库实例,优先使用模拟数据库(用于测试),否则使用uniCloud数据库\n const db = options?._mockDatabase || uniCloud.database();\n return useRequest(async (...inputs: I) => {\n const { result } = await caller(db, ...inputs);\n if (!result.errCode) return result;\n throw new Error(result.errMsg || '请求失败');\n }, options);\n}\n\nexport { parseCloudMethodOutput } from './_helpers';\nexport type { UniError } from './_types';\n"],"mappings":";;;;;;;;;;;AA0JA,SAAgB,kBACd,YACA,eACA;CACA,MAAM,uBACJ,eAAe,wBAAwB;CACzC,MAAM,SACJ,eAAe,eACf,SAAS,aAAa,YAAY,cAAc;CAClD,MAAM,gBACJ,eAAe,wBACR,IAAI,YAAY;EAAE,OAAO;EAAI,MAAM;EAAM,CAAC;CACnD,MAAM,gBACJ,eAAe,wBAAwB,IAAI,aAAa;CAC1D,MAAM,cACJ,eAAe,iBACb,QACA,IAAI,UAAU;EACZ,OAAO,IAAI;EACX,MAAM;EACN,UAAU;EACV,MAAM;EACP,CAAC;;;;;;;;;;CAWN,MAAM,kBAAkC,QAAQ,QAAQ,YAAY;EAElE,QAAA,GAAA,6BAAA,YACE,OAAO,GAAG,WAAW;GAEnB,MAAM,UAAU,QAAA,GAAA,2BAAA,YADc,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG;GAG5D,OAAO,iBAAA,uBAAuB,MADT,OAAO,SAAS,GAAG,OAAO,EACT,qBAAqB;KAE7D;GACE,GAAG;GACH,MAAM,SAAS,GAAG,QAAQ;IACxB,IAAI,SAAS,aAAa,eAAe;IAEzC,MAAM,eAAe,YAAY;IACjC,MAAM,SAAS,WAAW,GAAG,OAAO;;GAEtC,MAAM,UAAU,MAAM,GAAG,QAAQ;IAC/B,MAAM,eAAe,aAAa;IAClC,MAAM,SAAS,YAAY,MAAM,GAAG,OAAO;;GAE7C,MAAM,QAAQ,KAAK,GAAG,QAAQ;IAC5B,MAAM,eAAe,UAAU,IAAgB;IAC/C,MAAM,SAAS,UAAU,KAAiB,GAAG,OAAO;IAEpD,IAAI,SAAS,WAEX,iBAAiB;KACf,YAAY,IAAgB;MAC5B;;GAGN,MAAM,QAAQ,GAAG,QAAQ;IACvB,IAAI,SAAS,aAAa,eAAe;IAEzC,MAAM,eAAe,WAAW;IAChC,MAAM,SAAS,UAAU,GAAG,OAAO;;GAEtC,CACF;;CAGH,OAAO;;AAoCT,SAAgB,YACd,QAIA,SACwB;CAExB,MAAM,KAAK,SAAS,iBAAiB,SAAS,UAAU;CACxD,QAAA,GAAA,6BAAA,YAAkB,OAAO,GAAG,WAAc;EACxC,MAAM,EAAE,WAAW,MAAM,OAAO,IAAI,GAAG,OAAO;EAC9C,IAAI,CAAC,OAAO,SAAS,OAAO;EAC5B,MAAM,IAAI,MAAM,OAAO,UAAU,OAAO;IACvC,QAAQ"}
package/dist/client.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { CloudMethodOutput, UniError } from './cloud';
2
- import { ClientDatabaseOutput } from './database';
3
1
  import { AnyArray, AnyFunction } from '@cloudcome/utils-core/types';
4
2
  import { UseRequestOptions, UseRequestOutput, UseRequestOutputFilled } from '@cloudcome/utils-vue/request';
3
+ import { CloudMethodOutput, UniError } from './cloud';
4
+ import { ClientDatabaseOutput } from './database';
5
5
  type _ImportObject = UniCloudNamespace.UniCloud['importObject'];
6
6
  type _ImportObjectArgs = Parameters<_ImportObject>;
7
7
  type _ImportObjectOptions = _ImportObjectArgs[1];
package/dist/client.mjs CHANGED
@@ -1,61 +1,76 @@
1
+ import { t as parseCloudMethodOutput } from "./_helpers.mjs";
1
2
  import { isFunction } from "@cloudcome/utils-core/type";
2
3
  import { useRequest } from "@cloudcome/utils-vue/request";
3
- import { p as parseCloudMethodOutput } from "./_helpers.mjs";
4
+ //#region src/client.ts
5
+ /**
6
+ * 导入云对象并创建一个用于调用云对象的hook
7
+ * @param objectName 云对象名称
8
+ * @param importOptions 配置选项,包含模拟服务器、回退错误信息等
9
+ * @returns 返回一个可用于调用云对象方法的hook函数
10
+ */
4
11
  function importCloudObject(objectName, importOptions) {
5
- const fallbackErrorMessage = importOptions?.fallbackErrorMessage || "请求失败";
6
- const server = importOptions?._mockServer || uniCloud.importObject(objectName, importOptions);
7
- const onShowLoading = importOptions?.onShowLoading || (() => uni.showLoading({ title: "", mask: true }));
8
- const onHideLoading = importOptions?.onHideLoading || (() => uni.hideLoading());
9
- const onShowError = importOptions?.onShowError || ((err) => uni.showToast({ title: err.message, icon: "none", duration: 3e3, mask: false }));
10
- const useCloudMethod = (method, caller, options) => {
11
- return useRequest(
12
- async (...inputs) => {
13
- const methodName = isFunction(method) ? method(...inputs) : method;
14
- const request = server[methodName];
15
- const output = await caller(request, ...inputs);
16
- return parseCloudMethodOutput(output, fallbackErrorMessage);
17
- },
18
- {
19
- ...options,
20
- async onBefore(...inputs) {
21
- if (options?.showLoading) onShowLoading();
22
- await importOptions?.onBefore?.();
23
- await options?.onBefore?.(...inputs);
24
- },
25
- async onSuccess(data, ...inputs) {
26
- await importOptions?.onSuccess?.();
27
- await options?.onSuccess?.(data, ...inputs);
28
- },
29
- async onError(err, ...inputs) {
30
- await importOptions?.onError?.(err);
31
- await options?.onError?.(err, ...inputs);
32
- if (options?.showError) {
33
- setTimeout(() => {
34
- onShowError(err);
35
- });
36
- }
37
- },
38
- async onAfter(...inputs) {
39
- if (options?.showLoading) onHideLoading();
40
- await importOptions?.onAfter?.();
41
- await options?.onAfter?.(...inputs);
42
- }
43
- }
44
- );
45
- };
46
- return useCloudMethod;
12
+ const fallbackErrorMessage = importOptions?.fallbackErrorMessage || "请求失败";
13
+ const server = importOptions?._mockServer || uniCloud.importObject(objectName, importOptions);
14
+ const onShowLoading = importOptions?.onShowLoading || (() => uni.showLoading({
15
+ title: "",
16
+ mask: true
17
+ }));
18
+ const onHideLoading = importOptions?.onHideLoading || (() => uni.hideLoading());
19
+ const onShowError = importOptions?.onShowError || ((err) => uni.showToast({
20
+ title: err.message,
21
+ icon: "none",
22
+ duration: 3e3,
23
+ mask: false
24
+ }));
25
+ /**
26
+ * 用于调用云对象方法的hook函数
27
+ * @template I 输入参数类型
28
+ * @template O 输出结果类型
29
+ * @param method 云对象方法名
30
+ * @param caller 调用云对象的函数
31
+ * @param options 配置选项,包含请求相关的配置
32
+ * @returns 返回一个请求hook,用于处理云对象调用
33
+ */
34
+ const useCloudMethod = (method, caller, options) => {
35
+ return useRequest(async (...inputs) => {
36
+ const request = server[isFunction(method) ? method(...inputs) : method];
37
+ return parseCloudMethodOutput(await caller(request, ...inputs), fallbackErrorMessage);
38
+ }, {
39
+ ...options,
40
+ async onBefore(...inputs) {
41
+ if (options?.showLoading) onShowLoading();
42
+ await importOptions?.onBefore?.();
43
+ await options?.onBefore?.(...inputs);
44
+ },
45
+ async onSuccess(data, ...inputs) {
46
+ await importOptions?.onSuccess?.();
47
+ await options?.onSuccess?.(data, ...inputs);
48
+ },
49
+ async onError(err, ...inputs) {
50
+ await importOptions?.onError?.(err);
51
+ await options?.onError?.(err, ...inputs);
52
+ if (options?.showError) setTimeout(() => {
53
+ onShowError(err);
54
+ });
55
+ },
56
+ async onAfter(...inputs) {
57
+ if (options?.showLoading) onHideLoading();
58
+ await importOptions?.onAfter?.();
59
+ await options?.onAfter?.(...inputs);
60
+ }
61
+ });
62
+ };
63
+ return useCloudMethod;
47
64
  }
48
65
  function useDatabase(caller, options) {
49
- const db = options?._mockDatabase || uniCloud.database();
50
- return useRequest(async (...inputs) => {
51
- const { result } = await caller(db, ...inputs);
52
- if (!result.errCode) return result;
53
- throw new Error(result.errMsg || "请求失败");
54
- }, options);
66
+ const db = options?._mockDatabase || uniCloud.database();
67
+ return useRequest(async (...inputs) => {
68
+ const { result } = await caller(db, ...inputs);
69
+ if (!result.errCode) return result;
70
+ throw new Error(result.errMsg || "请求失败");
71
+ }, options);
55
72
  }
56
- export {
57
- importCloudObject,
58
- parseCloudMethodOutput,
59
- useDatabase
60
- };
61
- //# sourceMappingURL=client.mjs.map
73
+ //#endregion
74
+ export { importCloudObject, parseCloudMethodOutput, useDatabase };
75
+
76
+ //# sourceMappingURL=client.mjs.map