@lsby/net-core 0.6.6 → 0.6.7-beta.10

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 (84) hide show
  1. package/dist/cjs/global/global.cjs +7 -7
  2. package/dist/cjs/global/web-socket-management.cjs +7 -7
  3. package/dist/cjs/{tools/tools.cjs → help/help.cjs} +14 -4
  4. package/dist/cjs/help/help.d.cts +11 -0
  5. package/dist/cjs/index.cjs +202 -309
  6. package/dist/cjs/index.d.cts +7 -10
  7. package/dist/cjs/interface/interface-base.d.cts +5 -42
  8. package/dist/cjs/interface/interface-logic.cjs +12 -193
  9. package/dist/cjs/interface/interface-logic.d.cts +6 -60
  10. package/dist/cjs/interface/interface-result.cjs +4 -4
  11. package/dist/cjs/interface/interface-result.d.cts +6 -39
  12. package/dist/cjs/interface-base-CFXGjV5S.d.cts +176 -0
  13. package/dist/cjs/plugin/extend/chinese-path.d.cts +4 -1
  14. package/dist/cjs/plugin/extend/custom-data.cjs +8 -8
  15. package/dist/cjs/plugin/extend/custom-data.d.cts +4 -1
  16. package/dist/cjs/plugin/extend/json.cjs +9 -9
  17. package/dist/cjs/plugin/extend/json.d.cts +6 -2
  18. package/dist/cjs/plugin/extend/log-headers.cjs +2 -177
  19. package/dist/cjs/plugin/extend/log-headers.d.cts +4 -1
  20. package/dist/cjs/plugin/extend/send-file-plugin.d.cts +4 -1
  21. package/dist/cjs/plugin/extend/urlencoded.cjs +8 -8
  22. package/dist/cjs/plugin/extend/urlencoded.d.cts +4 -1
  23. package/dist/cjs/plugin/extend/web-socket.cjs +8 -8
  24. package/dist/cjs/plugin/extend/web-socket.d.cts +4 -1
  25. package/dist/cjs/plugin/plug.d.cts +7 -29
  26. package/dist/cjs/server/server.cjs +15 -13
  27. package/dist/cjs/server/server.d.cts +4 -27
  28. package/dist/cjs/wrapper/common-wrapper.cjs +89 -0
  29. package/dist/cjs/wrapper/common-wrapper.d.cts +19 -0
  30. package/dist/cjs/wrapper/deferred-result-wrapper.cjs +89 -0
  31. package/dist/cjs/wrapper/deferred-result-wrapper.d.cts +16 -0
  32. package/dist/esm/action/action.bak.js +136 -3
  33. package/dist/esm/{chunk-TU5RBGGM.js → chunk-3QNWAAXS.js} +9 -7
  34. package/dist/esm/{chunk-KCQRJ4JL.js → chunk-47MYYUQZ.js} +2 -2
  35. package/dist/esm/{chunk-JHQKJ7DH.js → chunk-6I3OJQWA.js} +3 -3
  36. package/dist/esm/{chunk-6P6XTMKW.js → chunk-7MHKNSNT.js} +2 -5
  37. package/dist/esm/chunk-BEFZ7IFH.js +21 -0
  38. package/dist/esm/{chunk-DXXX45UR.js → chunk-GKEZ4UTO.js} +3 -3
  39. package/dist/esm/{chunk-L36NOE2J.js → chunk-JB4HVEXB.js} +2 -2
  40. package/dist/esm/{chunk-2E2KK6JA.js → chunk-JQAGEE3X.js} +12 -20
  41. package/dist/esm/{chunk-3FDT2MPR.js → chunk-LDWZKZLU.js} +7 -7
  42. package/dist/esm/{chunk-IGHJCQ2S.js → chunk-RYGSLVLS.js} +9 -1
  43. package/dist/esm/chunk-TNQ5YSCZ.js +21 -0
  44. package/dist/esm/{chunk-Z3PYJGMZ.js → chunk-XPC3O5HH.js} +2 -2
  45. package/dist/esm/global/global.js +1 -1
  46. package/dist/esm/global/web-socket-management.js +1 -1
  47. package/dist/esm/help/help.d.ts +11 -0
  48. package/dist/esm/{tools/tools.js → help/help.js} +5 -1
  49. package/dist/esm/index.d.ts +7 -10
  50. package/dist/esm/index.js +31 -24
  51. package/dist/esm/interface/interface-base.d.ts +5 -42
  52. package/dist/esm/interface/interface-logic.d.ts +6 -60
  53. package/dist/esm/interface/interface-logic.js +1 -2
  54. package/dist/esm/interface/interface-result.d.ts +6 -39
  55. package/dist/esm/interface/interface-result.js +3 -3
  56. package/dist/esm/interface-base-D-Zxt7-a.d.ts +176 -0
  57. package/dist/esm/plugin/extend/chinese-path.d.ts +4 -1
  58. package/dist/esm/plugin/extend/custom-data.d.ts +4 -1
  59. package/dist/esm/plugin/extend/custom-data.js +2 -2
  60. package/dist/esm/plugin/extend/json.d.ts +6 -2
  61. package/dist/esm/plugin/extend/json.js +3 -3
  62. package/dist/esm/plugin/extend/log-headers.d.ts +4 -1
  63. package/dist/esm/plugin/extend/log-headers.js +1 -2
  64. package/dist/esm/plugin/extend/send-file-plugin.d.ts +4 -1
  65. package/dist/esm/plugin/extend/urlencoded.d.ts +4 -1
  66. package/dist/esm/plugin/extend/urlencoded.js +2 -2
  67. package/dist/esm/plugin/extend/web-socket.d.ts +4 -1
  68. package/dist/esm/plugin/extend/web-socket.js +2 -2
  69. package/dist/esm/plugin/plug.d.ts +7 -29
  70. package/dist/esm/server/server.d.ts +4 -27
  71. package/dist/esm/server/server.js +3 -3
  72. package/dist/esm/wrapper/common-wrapper.d.ts +19 -0
  73. package/dist/esm/wrapper/common-wrapper.js +8 -0
  74. package/dist/esm/wrapper/deferred-result-wrapper.d.ts +16 -0
  75. package/dist/esm/wrapper/deferred-result-wrapper.js +8 -0
  76. package/package.json +1 -1
  77. package/dist/cjs/tools/tools.d.cts +0 -4
  78. package/dist/cjs/tools/types.cjs +0 -18
  79. package/dist/cjs/tools/types.d.cts +0 -5
  80. package/dist/esm/chunk-CE4M2QA4.js +0 -140
  81. package/dist/esm/chunk-DAKGERGA.js +0 -0
  82. package/dist/esm/tools/tools.d.ts +0 -4
  83. package/dist/esm/tools/types.d.ts +0 -5
  84. package/dist/esm/tools/types.js +0 -1
@@ -1,7 +1,10 @@
1
1
  import express from 'express';
2
2
  import { z } from 'zod';
3
- import { 插件 as __ } from '../plug.cjs';
3
+ import { as __ } from '../../interface-base-CFXGjV5S.cjs';
4
4
  import '@lsby/ts-fp-data';
5
+ import '../../help/help.cjs';
6
+ import '@lsby/ts-log';
7
+ import 'node:http';
5
8
 
6
9
  declare class 表单解析插件<Result extends z.AnyZodObject> extends __<Result> {
7
10
  private log;
@@ -31,10 +31,10 @@ var import_ts_log = require("@lsby/ts-log");
31
31
 
32
32
  // src/global/web-socket-management.ts
33
33
  var WebSocket\u7BA1\u7406\u5668 = class {
34
- log = Global.getItem("log").then((a) => a.extend("WebSocket\u7BA1\u7406\u5668"));
34
+ log = Global.getItem("log").then((a) => a.extend("@lsby:net-core").extend("WebSocket\u7BA1\u7406\u5668"));
35
35
  \u8FDE\u63A5\u8868 = {};
36
36
  async \u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, code, \u8BF4\u660E) {
37
- let log = (await this.log).extend("\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5").extend(id);
37
+ let log = (await this.log).extend(id).extend("\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5");
38
38
  try {
39
39
  await this.\u8FDE\u63A5\u8868[id]?.\u6E05\u7406\u51FD\u6570?.();
40
40
  } catch (err) {
@@ -44,7 +44,7 @@ var WebSocket\u7BA1\u7406\u5668 = class {
44
44
  delete this.\u8FDE\u63A5\u8868[id];
45
45
  }
46
46
  async \u9500\u6BC1\u5224\u5B9A(id) {
47
- let log = (await this.log).extend("\u9500\u6BC1\u5224\u5B9A").extend(id);
47
+ let log = (await this.log).extend(id).extend("\u9500\u6BC1\u5224\u5B9A");
48
48
  let \u8FDE\u63A5 = this.\u8FDE\u63A5\u8868[id];
49
49
  if (\u8FDE\u63A5 === void 0) {
50
50
  await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
@@ -77,7 +77,7 @@ var WebSocket\u7BA1\u7406\u5668 = class {
77
77
  }
78
78
  }
79
79
  async \u589E\u52A0\u6216\u66FF\u6362\u8FDE\u63A5(id, ws) {
80
- let log = (await this.log).extend("\u589E\u52A0\u6216\u66FF\u6362\u8FDE\u63A5").extend(id);
80
+ let log = (await this.log).extend(id).extend("\u589E\u52A0\u6216\u66FF\u6362\u8FDE\u63A5");
81
81
  if (this.\u8FDE\u63A5\u8868[id] === void 0) {
82
82
  this.\u8FDE\u63A5\u8868[id] = {
83
83
  ws,
@@ -108,7 +108,7 @@ var WebSocket\u7BA1\u7406\u5668 = class {
108
108
  await log.info("\u53D1\u9001\u65E7\u8FDE\u63A5\u7F13\u5B58\u5B8C\u6210");
109
109
  }
110
110
  async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
111
- let log = (await this.log).extend("\u8BBE\u7F6E\u6E05\u7406\u51FD\u6570").extend(id);
111
+ let log = (await this.log).extend(id).extend("\u8BBE\u7F6E\u6E05\u7406\u51FD\u6570");
112
112
  if (this.\u8FDE\u63A5\u8868[id] === void 0) {
113
113
  await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
114
114
  return;
@@ -116,7 +116,7 @@ var WebSocket\u7BA1\u7406\u5668 = class {
116
116
  this.\u8FDE\u63A5\u8868[id].\u6E05\u7406\u51FD\u6570 = \u6E05\u7406\u51FD\u6570;
117
117
  }
118
118
  async \u53D1\u9001\u4FE1\u606F_\u5185\u90E8(id, data) {
119
- let log = (await this.log).extend("\u53D1\u9001\u4FE1\u606F(\u5185\u90E8)").extend(id);
119
+ let log = (await this.log).extend(id).extend("\u53D1\u9001\u4FE1\u606F(\u5185\u90E8)");
120
120
  while (this.\u8FDE\u63A5\u8868[id]?.\u6570\u636E\u53D1\u9001\u4E2D === true) {
121
121
  await log.info("\u6570\u636E\u53D1\u9001\u4E2D, \u5C06\u9000\u907F.");
122
122
  let \u9000\u907F\u65F6\u95F4 = 100;
@@ -147,7 +147,7 @@ var WebSocket\u7BA1\u7406\u5668 = class {
147
147
  });
148
148
  }
149
149
  async \u53D1\u9001\u4FE1\u606F(id, data) {
150
- let log = (await this.log).extend("\u53D1\u9001\u4FE1\u606F").extend(id);
150
+ let log = (await this.log).extend(id).extend("\u53D1\u9001\u4FE1\u606F");
151
151
  if (this.\u8FDE\u63A5\u8868[id]?.\u5DF2\u5B8C\u6210 === true) {
152
152
  await log.error("\u8FDE\u63A5\u5DF2\u5B8C\u6210, \u65E0\u6CD5\u53D1\u9001\u6570\u636E.");
153
153
  return;
@@ -227,7 +227,7 @@ var WebSocket\u63D2\u4EF6 = class extends \u63D2\u4EF6 {
227
227
  }).or(import_zod.z.null())
228
228
  }),
229
229
  async (req, _res, \u9644\u52A0\u53C2\u6570) => {
230
- let log = (await this.log).extend(\u9644\u52A0\u53C2\u6570.\u8BF7\u6C42id).extend("webSocket\u63D2\u4EF6");
230
+ let log = \u9644\u52A0\u53C2\u6570.log.extend("webSocket\u63D2\u4EF6");
231
231
  let WebSocket\u7BA1\u7406\u56682 = await Global.getItem("WebSocket\u7BA1\u7406\u5668");
232
232
  let wsId = req.headers["ws-client-id"];
233
233
  await log.debug("\u68C0\u67E5 ws-client-id \u5934\u4FE1\u606F", { wsId });
@@ -1,7 +1,10 @@
1
1
  import { z } from 'zod';
2
- import { 插件 as __, 包装插件项 as _____, 插件项类型 as _____$1, 取Task插件类型 as _Task____ } from '../plug.cjs';
2
+ import { as __, as _____, v as _____$1, w as _Task____ } from '../../interface-base-CFXGjV5S.cjs';
3
3
  import '@lsby/ts-fp-data';
4
4
  import 'express';
5
+ import '../../help/help.cjs';
6
+ import '@lsby/ts-log';
7
+ import 'node:http';
5
8
 
6
9
  declare class WebSocket插件<信息 extends z.AnyZodObject | z.ZodUnion<any>> extends __<z.ZodObject<{
7
10
  ws操作: z.ZodUnion<[
@@ -1,29 +1,7 @@
1
- import { Task } from '@lsby/ts-fp-data';
2
- import { Request, Response } from 'express';
3
- import { z } from 'zod';
4
-
5
- type 插件附加参数 = {
6
- 请求id: string;
7
- };
8
- /**
9
- * 类似express中的中间件, 做一些前置过程, 例如解析参数, 解析文件等.
10
- *
11
- * 可以被注入在"接口逻辑"中, 为其提供前置数据.
12
- */
13
- declare class 插件<Obj extends z.AnyZodObject> {
14
- private 类型;
15
- private 实现;
16
- protected readonly __类型保持符号?: Obj;
17
- constructor(类型: Obj, 实现: (req: Request, res: Response, 附加参数: 插件附加参数) => Promise<z.infer<Obj>>);
18
- 获得类型(): Obj;
19
- 运行(req: Request, res: Response, 附加参数: 插件附加参数): Promise<z.infer<Obj>>;
20
- }
21
- type 任意插件 = 插件<any>;
22
- type 包装插件项<A> = Task<A>;
23
- type 插件项类型 = 包装插件项<插件<z.AnyZodObject>>;
24
- type 取Task插件内部类型<A> = A extends Task<插件<infer x>> ? x : never;
25
- type 取Task插件类型<A> = A extends Task<infer x> ? x : never;
26
- type 取插件内部ts类型<A> = A extends 插件<infer x> ? z.infer<x> : never;
27
- type 合并插件结果<Arr extends Array<插件项类型>> = Arr extends [] ? {} : Arr extends [infer x, ...infer xs] ? x extends infer 插件项 ? xs extends Array<插件项类型> ? z.infer<取Task插件内部类型<插件项>> & 合并插件结果<xs> : {} : {} : {};
28
-
29
- export { type 任意插件, type 包装插件项, type 取Task插件内部类型, type 取Task插件类型, type 取插件内部ts类型, type 合并插件结果, 插件, type 插件附加参数, type 插件项类型 };
1
+ import '@lsby/ts-fp-data';
2
+ import 'express';
3
+ import 'zod';
4
+ export { u as 任意插件, 包 as 包装插件项, 取 as 取Task插件内部类型, w as 取Task插件类型, x as 取插件内部ts类型, 合 as 合并插件结果, 插 as 插件, v as 插件项类型 } from '../interface-base-CFXGjV5S.cjs';
5
+ import '../help/help.cjs';
6
+ import '@lsby/ts-log';
7
+ import 'node:http';
@@ -45,10 +45,10 @@ var import_ts_log = require("@lsby/ts-log");
45
45
 
46
46
  // src/global/web-socket-management.ts
47
47
  var WebSocket\u7BA1\u7406\u5668 = class {
48
- log = Global.getItem("log").then((a) => a.extend("WebSocket\u7BA1\u7406\u5668"));
48
+ log = Global.getItem("log").then((a) => a.extend("@lsby:net-core").extend("WebSocket\u7BA1\u7406\u5668"));
49
49
  \u8FDE\u63A5\u8868 = {};
50
50
  async \u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5(id, code, \u8BF4\u660E) {
51
- let log = (await this.log).extend("\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5").extend(id);
51
+ let log = (await this.log).extend(id).extend("\u5173\u95ED\u5E76\u5220\u9664\u8FDE\u63A5");
52
52
  try {
53
53
  await this.\u8FDE\u63A5\u8868[id]?.\u6E05\u7406\u51FD\u6570?.();
54
54
  } catch (err) {
@@ -58,7 +58,7 @@ var WebSocket\u7BA1\u7406\u5668 = class {
58
58
  delete this.\u8FDE\u63A5\u8868[id];
59
59
  }
60
60
  async \u9500\u6BC1\u5224\u5B9A(id) {
61
- let log = (await this.log).extend("\u9500\u6BC1\u5224\u5B9A").extend(id);
61
+ let log = (await this.log).extend(id).extend("\u9500\u6BC1\u5224\u5B9A");
62
62
  let \u8FDE\u63A5 = this.\u8FDE\u63A5\u8868[id];
63
63
  if (\u8FDE\u63A5 === void 0) {
64
64
  await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
@@ -91,7 +91,7 @@ var WebSocket\u7BA1\u7406\u5668 = class {
91
91
  }
92
92
  }
93
93
  async \u589E\u52A0\u6216\u66FF\u6362\u8FDE\u63A5(id, ws) {
94
- let log = (await this.log).extend("\u589E\u52A0\u6216\u66FF\u6362\u8FDE\u63A5").extend(id);
94
+ let log = (await this.log).extend(id).extend("\u589E\u52A0\u6216\u66FF\u6362\u8FDE\u63A5");
95
95
  if (this.\u8FDE\u63A5\u8868[id] === void 0) {
96
96
  this.\u8FDE\u63A5\u8868[id] = {
97
97
  ws,
@@ -122,7 +122,7 @@ var WebSocket\u7BA1\u7406\u5668 = class {
122
122
  await log.info("\u53D1\u9001\u65E7\u8FDE\u63A5\u7F13\u5B58\u5B8C\u6210");
123
123
  }
124
124
  async \u8BBE\u7F6E\u6E05\u7406\u51FD\u6570(id, \u6E05\u7406\u51FD\u6570) {
125
- let log = (await this.log).extend("\u8BBE\u7F6E\u6E05\u7406\u51FD\u6570").extend(id);
125
+ let log = (await this.log).extend(id).extend("\u8BBE\u7F6E\u6E05\u7406\u51FD\u6570");
126
126
  if (this.\u8FDE\u63A5\u8868[id] === void 0) {
127
127
  await log.error(`\u65E0\u6CD5\u627E\u5230\u8FDE\u63A5`);
128
128
  return;
@@ -130,7 +130,7 @@ var WebSocket\u7BA1\u7406\u5668 = class {
130
130
  this.\u8FDE\u63A5\u8868[id].\u6E05\u7406\u51FD\u6570 = \u6E05\u7406\u51FD\u6570;
131
131
  }
132
132
  async \u53D1\u9001\u4FE1\u606F_\u5185\u90E8(id, data) {
133
- let log = (await this.log).extend("\u53D1\u9001\u4FE1\u606F(\u5185\u90E8)").extend(id);
133
+ let log = (await this.log).extend(id).extend("\u53D1\u9001\u4FE1\u606F(\u5185\u90E8)");
134
134
  while (this.\u8FDE\u63A5\u8868[id]?.\u6570\u636E\u53D1\u9001\u4E2D === true) {
135
135
  await log.info("\u6570\u636E\u53D1\u9001\u4E2D, \u5C06\u9000\u907F.");
136
136
  let \u9000\u907F\u65F6\u95F4 = 100;
@@ -161,7 +161,7 @@ var WebSocket\u7BA1\u7406\u5668 = class {
161
161
  });
162
162
  }
163
163
  async \u53D1\u9001\u4FE1\u606F(id, data) {
164
- let log = (await this.log).extend("\u53D1\u9001\u4FE1\u606F").extend(id);
164
+ let log = (await this.log).extend(id).extend("\u53D1\u9001\u4FE1\u606F");
165
165
  if (this.\u8FDE\u63A5\u8868[id]?.\u5DF2\u5B8C\u6210 === true) {
166
166
  await log.error("\u8FDE\u63A5\u5DF2\u5B8C\u6210, \u65E0\u6CD5\u53D1\u9001\u6570\u636E.");
167
167
  return;
@@ -214,7 +214,7 @@ var Global = new import_ts_global.GlobalService([
214
214
  })
215
215
  ]);
216
216
 
217
- // src/tools/tools.ts
217
+ // src/help/help.ts
218
218
  function \u622A\u65AD\u5B57\u7B26\u4E32(\u5185\u5BB9) {
219
219
  let \u6700\u5927\u65E5\u5FD7\u957F\u5EA6 = 1e3;
220
220
  if (\u5185\u5BB9.length > \u6700\u5927\u65E5\u5FD7\u957F\u5EA6)
@@ -255,14 +255,15 @@ var \u670D\u52A1\u5668 = class {
255
255
  }
256
256
  async \u5904\u7406\u8BF7\u6C42(req, res) {
257
257
  let \u8BF7\u6C42id = (0, import_short_uuid.default)().new();
258
- let log = (await this.log).extend(\u8BF7\u6C42id).extend("\u63A7\u5236\u5668");
258
+ let \u4E3Blog = (await this.log).extend(\u8BF7\u6C42id);
259
+ let log = \u4E3Blog.extend("\u63A7\u5236\u5668");
259
260
  try {
260
261
  let { path: \u8BF7\u6C42\u8DEF\u5F84, method } = req;
261
262
  let \u8BF7\u6C42\u65B9\u6CD5 = method.toLowerCase();
262
263
  await log.debug("\u6536\u5230\u8BF7\u6C42, \u8DEF\u5F84: %o, \u65B9\u6CD5: %o", \u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5);
263
264
  let \u76EE\u6807\u63A5\u53E3 = this.\u63A5\u53E3\u4EEC.find((\u63A5\u53E3) => \u8BF7\u6C42\u65B9\u6CD5 === \u63A5\u53E3.\u83B7\u5F97\u65B9\u6CD5() && \u8BF7\u6C42\u8DEF\u5F84 === \u63A5\u53E3.\u83B7\u5F97\u8DEF\u5F84()) ?? null;
264
265
  if (\u76EE\u6807\u63A5\u53E3 !== null) {
265
- await this.\u5904\u7406\u63A5\u53E3\u903B\u8F91(req, res, log, \u76EE\u6807\u63A5\u53E3, \u8BF7\u6C42id);
266
+ await this.\u5904\u7406\u63A5\u53E3\u903B\u8F91(req, res, \u76EE\u6807\u63A5\u53E3, { log: \u4E3Blog });
266
267
  return;
267
268
  }
268
269
  let \u9759\u6001\u8D44\u6E90\u8DEF\u5F84 = this.\u9759\u6001\u8D44\u6E90\u8DEF\u5F84 ?? null;
@@ -303,11 +304,12 @@ var \u670D\u52A1\u5668 = class {
303
304
  }
304
305
  return \u547D\u4E2D;
305
306
  }
306
- async \u5904\u7406\u63A5\u53E3\u903B\u8F91(req, res, log, \u76EE\u6807\u63A5\u53E3, \u8BF7\u6C42id) {
307
+ async \u5904\u7406\u63A5\u53E3\u903B\u8F91(req, res, \u76EE\u6807\u63A5\u53E3, \u8BF7\u6C42\u9644\u52A0\u53C2\u6570) {
308
+ let log = \u8BF7\u6C42\u9644\u52A0\u53C2\u6570.log.extend("\u5904\u7406\u63A5\u53E3\u903B\u8F91");
307
309
  let \u63A5\u53E3\u903B\u8F91 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u903B\u8F91();
308
310
  let \u7ED3\u679C\u8F6C\u6362\u5668 = \u76EE\u6807\u63A5\u53E3.\u83B7\u5F97\u7ED3\u679C\u8F6C\u6362\u5668();
309
311
  await log.debug("\u8C03\u7528\u63A5\u53E3\u903B\u8F91...");
310
- let \u63A5\u53E3\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F91.\u8FD0\u884C(req, res, {}, { \u8BF7\u6C42id });
312
+ let \u63A5\u53E3\u7ED3\u679C = await \u63A5\u53E3\u903B\u8F91.\u8FD0\u884C(req, res, {}, \u8BF7\u6C42\u9644\u52A0\u53C2\u6570);
311
313
  await log.debug("\u63A5\u53E3\u903B\u8F91\u6267\u884C\u5B8C\u6BD5");
312
314
  let \u6700\u7EC8\u7ED3\u679C = \u7ED3\u679C\u8F6C\u6362\u5668.\u5B9E\u73B0(\u63A5\u53E3\u7ED3\u679C);
313
315
  await log.debug("\u8FD4\u56DE\u6570\u636E: %o", JSON.stringify(\u9012\u5F52\u622A\u65AD\u5B57\u7B26\u4E32(\u6700\u7EC8\u7ED3\u679C)));
@@ -316,7 +318,7 @@ var \u670D\u52A1\u5668 = class {
316
318
  }
317
319
  async \u521D\u59CB\u5316WebSocket(server) {
318
320
  let wss = new import_ws.WebSocketServer({ server });
319
- let logBase = (await this.log).extend("web-socket");
321
+ let logBase = await this.log;
320
322
  wss.on("connection", async (ws, req) => {
321
323
  let log = logBase.extend((0, import_short_uuid.default)().new()).extend("WebSocket");
322
324
  await log.debug("\u6536\u5230 WebSocket \u8FDE\u63A5\u8BF7\u6C42: %o", req.url);
@@ -1,30 +1,7 @@
1
- import * as http from 'node:http';
2
- import { 任意接口 as ____ } from '../interface/interface-base.cjs';
1
+ import '@lsby/ts-log';
2
+ import 'node:http';
3
+ export { 服 as 服务器, 请 as 请求附加参数类型 } from '../interface-base-CFXGjV5S.cjs';
3
4
  import 'zod';
4
- import '../interface/interface-logic.cjs';
5
5
  import '@lsby/ts-fp-data';
6
6
  import 'express';
7
- import '../plugin/plug.cjs';
8
- import '../interface/interface-result.cjs';
9
-
10
- declare class 服务器 {
11
- private 接口们;
12
- private 端口;
13
- private 静态资源路径?;
14
- private 默认get文件路径?;
15
- private log;
16
- constructor(接口们: ____[], 端口: number, 静态资源路径?: string | undefined, 默认get文件路径?: string | undefined);
17
- run(): Promise<{
18
- ip: string[];
19
- api: string[];
20
- server: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
21
- }>;
22
- private 处理请求;
23
- private 处理静态资源;
24
- private 处理接口逻辑;
25
- private 初始化WebSocket;
26
- private 关闭WebSocket连接;
27
- private 获取本地地址;
28
- }
29
-
30
- export { 服务器 };
7
+ import '../help/help.cjs';
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/wrapper/common-wrapper.ts
21
+ var common_wrapper_exports = {};
22
+ __export(common_wrapper_exports, {
23
+ \u5E38\u7528\u5F62\u5F0F\u63A5\u53E3\u5C01\u88C5: () => \u5E38\u7528\u5F62\u5F0F\u63A5\u53E3\u5C01\u88C5
24
+ });
25
+ module.exports = __toCommonJS(common_wrapper_exports);
26
+ var import_zod = require("zod");
27
+
28
+ // src/interface/interface-base.ts
29
+ var \u63A5\u53E3 = class {
30
+ constructor(\u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5, \u63A5\u53E3\u903B\u8F91, \u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod, \u63A5\u53E3\u6B63\u786E\u5F62\u5F0FZod, \u7ED3\u679C\u8F6C\u6362\u5668) {
31
+ this.\u8BF7\u6C42\u8DEF\u5F84 = \u8BF7\u6C42\u8DEF\u5F84;
32
+ this.\u8BF7\u6C42\u65B9\u6CD5 = \u8BF7\u6C42\u65B9\u6CD5;
33
+ this.\u63A5\u53E3\u903B\u8F91 = \u63A5\u53E3\u903B\u8F91;
34
+ this.\u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod = \u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod;
35
+ this.\u63A5\u53E3\u6B63\u786E\u5F62\u5F0FZod = \u63A5\u53E3\u6B63\u786E\u5F62\u5F0FZod;
36
+ this.\u7ED3\u679C\u8F6C\u6362\u5668 = \u7ED3\u679C\u8F6C\u6362\u5668;
37
+ }
38
+ \u83B7\u5F97\u8DEF\u5F84() {
39
+ return this.\u8BF7\u6C42\u8DEF\u5F84;
40
+ }
41
+ \u83B7\u5F97\u65B9\u6CD5() {
42
+ return this.\u8BF7\u6C42\u65B9\u6CD5;
43
+ }
44
+ \u83B7\u5F97\u903B\u8F91() {
45
+ return this.\u63A5\u53E3\u903B\u8F91;
46
+ }
47
+ \u83B7\u5F97\u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod() {
48
+ return this.\u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod;
49
+ }
50
+ \u83B7\u5F97\u63A5\u53E3\u6B63\u786E\u5F62\u5F0FZod() {
51
+ return this.\u63A5\u53E3\u6B63\u786E\u5F62\u5F0FZod;
52
+ }
53
+ \u83B7\u5F97\u7ED3\u679C\u8F6C\u6362\u5668() {
54
+ return this.\u7ED3\u679C\u8F6C\u6362\u5668;
55
+ }
56
+ };
57
+
58
+ // src/interface/interface-result.ts
59
+ var \u63A5\u53E3\u7ED3\u679C\u8F6C\u6362\u5668 = class {
60
+ };
61
+ var \u5E38\u7528\u5F62\u5F0F\u8F6C\u6362\u5668 = class extends \u63A5\u53E3\u7ED3\u679C\u8F6C\u6362\u5668 {
62
+ \u5B9E\u73B0(\u6570\u636E) {
63
+ switch (\u6570\u636E.getTag()) {
64
+ case "Left": {
65
+ return { status: "fail", data: \u6570\u636E.assertLeft().getLeft() };
66
+ }
67
+ case "Right": {
68
+ return { status: "success", data: \u6570\u636E.assertRight().getRight() };
69
+ }
70
+ default: {
71
+ throw new Error("\u610F\u5916\u7684\u6570\u636E\u6807\u8BB0");
72
+ }
73
+ }
74
+ }
75
+ };
76
+
77
+ // src/wrapper/common-wrapper.ts
78
+ var \u5E38\u7528\u5F62\u5F0F\u63A5\u53E3\u5C01\u88C5 = class extends \u63A5\u53E3 {
79
+ constructor(\u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5, \u63A5\u53E3\u903B\u8F91, \u903B\u8F91\u9519\u8BEF\u7C7B\u578BZod, \u903B\u8F91\u6B63\u786E\u7C7B\u578BZod) {
80
+ let \u63A5\u53E3\u9519\u8BEF\u8F93\u51FA\u5F62\u5F0F = import_zod.z.object({ status: import_zod.z.literal("fail"), data: \u903B\u8F91\u9519\u8BEF\u7C7B\u578BZod });
81
+ let \u63A5\u53E3\u6B63\u786E\u8F93\u51FA\u5F62\u5F0F = import_zod.z.object({ status: import_zod.z.literal("success"), data: \u903B\u8F91\u6B63\u786E\u7C7B\u578BZod });
82
+ let \u63A5\u53E3\u8F6C\u6362\u5668 = new \u5E38\u7528\u5F62\u5F0F\u8F6C\u6362\u5668();
83
+ super(\u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5, \u63A5\u53E3\u903B\u8F91, \u63A5\u53E3\u9519\u8BEF\u8F93\u51FA\u5F62\u5F0F, \u63A5\u53E3\u6B63\u786E\u8F93\u51FA\u5F62\u5F0F, \u63A5\u53E3\u8F6C\u6362\u5668);
84
+ }
85
+ };
86
+ // Annotate the CommonJS export names for ESM import in node:
87
+ 0 && (module.exports = {
88
+ \u5E38\u7528\u5F62\u5F0F\u63A5\u53E3\u5C01\u88C5
89
+ });
@@ -0,0 +1,19 @@
1
+ import { z } from 'zod';
2
+ import { 接 as ______, a as ______$1, k as ____, b as __, 常 as _______, o as __________, p as __________$1 } from '../interface-base-CFXGjV5S.cjs';
3
+ import '@lsby/ts-fp-data';
4
+ import 'express';
5
+ import '../help/help.cjs';
6
+ import '@lsby/ts-log';
7
+ import 'node:http';
8
+
9
+ declare class 常用形式接口封装<路径类型 extends ______, 方法类型 extends ______$1, 逻辑类型 extends ____<any, Record<string, never>, z.infer<接口错误形式Zod>, z.infer<接口正确形式Zod>>, 接口错误形式Zod extends z.ZodTypeAny, 接口正确形式Zod extends z.ZodTypeAny> extends __<路径类型, 方法类型, 逻辑类型, z.ZodObject<{
10
+ status: z.ZodLiteral<'fail'>;
11
+ data: 接口错误形式Zod;
12
+ }>, z.ZodObject<{
13
+ status: z.ZodLiteral<'success'>;
14
+ data: 接口正确形式Zod;
15
+ }>, _______<__________<逻辑类型>, __________$1<逻辑类型>>> {
16
+ constructor(请求路径: 路径类型, 请求方法: 方法类型, 接口逻辑: 逻辑类型, 逻辑错误类型Zod: 接口错误形式Zod, 逻辑正确类型Zod: 接口正确形式Zod);
17
+ }
18
+
19
+ export { 常用形式接口封装 };
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/wrapper/deferred-result-wrapper.ts
21
+ var deferred_result_wrapper_exports = {};
22
+ __export(deferred_result_wrapper_exports, {
23
+ \u5E38\u7528\u5EF6\u65F6\u76F4\u63A5\u5F62\u5F0F\u63A5\u53E3\u5C01\u88C5: () => \u5E38\u7528\u5EF6\u65F6\u76F4\u63A5\u5F62\u5F0F\u63A5\u53E3\u5C01\u88C5
24
+ });
25
+ module.exports = __toCommonJS(deferred_result_wrapper_exports);
26
+ var import_zod = require("zod");
27
+
28
+ // src/interface/interface-base.ts
29
+ var \u63A5\u53E3 = class {
30
+ constructor(\u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5, \u63A5\u53E3\u903B\u8F91, \u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod, \u63A5\u53E3\u6B63\u786E\u5F62\u5F0FZod, \u7ED3\u679C\u8F6C\u6362\u5668) {
31
+ this.\u8BF7\u6C42\u8DEF\u5F84 = \u8BF7\u6C42\u8DEF\u5F84;
32
+ this.\u8BF7\u6C42\u65B9\u6CD5 = \u8BF7\u6C42\u65B9\u6CD5;
33
+ this.\u63A5\u53E3\u903B\u8F91 = \u63A5\u53E3\u903B\u8F91;
34
+ this.\u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod = \u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod;
35
+ this.\u63A5\u53E3\u6B63\u786E\u5F62\u5F0FZod = \u63A5\u53E3\u6B63\u786E\u5F62\u5F0FZod;
36
+ this.\u7ED3\u679C\u8F6C\u6362\u5668 = \u7ED3\u679C\u8F6C\u6362\u5668;
37
+ }
38
+ \u83B7\u5F97\u8DEF\u5F84() {
39
+ return this.\u8BF7\u6C42\u8DEF\u5F84;
40
+ }
41
+ \u83B7\u5F97\u65B9\u6CD5() {
42
+ return this.\u8BF7\u6C42\u65B9\u6CD5;
43
+ }
44
+ \u83B7\u5F97\u903B\u8F91() {
45
+ return this.\u63A5\u53E3\u903B\u8F91;
46
+ }
47
+ \u83B7\u5F97\u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod() {
48
+ return this.\u63A5\u53E3\u9519\u8BEF\u5F62\u5F0FZod;
49
+ }
50
+ \u83B7\u5F97\u63A5\u53E3\u6B63\u786E\u5F62\u5F0FZod() {
51
+ return this.\u63A5\u53E3\u6B63\u786E\u5F62\u5F0FZod;
52
+ }
53
+ \u83B7\u5F97\u7ED3\u679C\u8F6C\u6362\u5668() {
54
+ return this.\u7ED3\u679C\u8F6C\u6362\u5668;
55
+ }
56
+ };
57
+
58
+ // src/interface/interface-result.ts
59
+ var \u63A5\u53E3\u7ED3\u679C\u8F6C\u6362\u5668 = class {
60
+ };
61
+ var \u5E38\u7528\u5EF6\u65F6\u76F4\u63A5\u5F62\u5F0F\u8F6C\u6362\u5668 = class extends \u63A5\u53E3\u7ED3\u679C\u8F6C\u6362\u5668 {
62
+ \u5B9E\u73B0(\u6570\u636E) {
63
+ switch (\u6570\u636E.getTag()) {
64
+ case "Left": {
65
+ return { status: "fail", data: \u6570\u636E.assertLeft().getLeft() };
66
+ }
67
+ case "Right": {
68
+ return \u6570\u636E.assertRight().getRight()();
69
+ }
70
+ default: {
71
+ throw new Error("\u610F\u5916\u7684\u6570\u636E\u6807\u8BB0");
72
+ }
73
+ }
74
+ }
75
+ };
76
+
77
+ // src/wrapper/deferred-result-wrapper.ts
78
+ var \u5E38\u7528\u5EF6\u65F6\u76F4\u63A5\u5F62\u5F0F\u63A5\u53E3\u5C01\u88C5 = class extends \u63A5\u53E3 {
79
+ constructor(\u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5, \u63A5\u53E3\u903B\u8F91, \u903B\u8F91\u9519\u8BEF\u7C7B\u578BZod, \u903B\u8F91\u6B63\u786E\u7C7B\u578BZod) {
80
+ let \u63A5\u53E3\u9519\u8BEF\u8F93\u51FA\u5F62\u5F0F = import_zod.z.object({ status: import_zod.z.literal("fail"), data: \u903B\u8F91\u9519\u8BEF\u7C7B\u578BZod });
81
+ let \u63A5\u53E3\u6B63\u786E\u8F93\u51FA\u5F62\u5F0F = \u903B\u8F91\u6B63\u786E\u7C7B\u578BZod;
82
+ let \u63A5\u53E3\u8F6C\u6362\u5668 = new \u5E38\u7528\u5EF6\u65F6\u76F4\u63A5\u5F62\u5F0F\u8F6C\u6362\u5668();
83
+ super(\u8BF7\u6C42\u8DEF\u5F84, \u8BF7\u6C42\u65B9\u6CD5, \u63A5\u53E3\u903B\u8F91, \u63A5\u53E3\u9519\u8BEF\u8F93\u51FA\u5F62\u5F0F, \u63A5\u53E3\u6B63\u786E\u8F93\u51FA\u5F62\u5F0F, \u63A5\u53E3\u8F6C\u6362\u5668);
84
+ }
85
+ };
86
+ // Annotate the CommonJS export names for ESM import in node:
87
+ 0 && (module.exports = {
88
+ \u5E38\u7528\u5EF6\u65F6\u76F4\u63A5\u5F62\u5F0F\u63A5\u53E3\u5C01\u88C5
89
+ });
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ import { 接 as ______, a as ______$1, k as ____, b as __, t as ___________, o as __________, p as __________$1 } from '../interface-base-CFXGjV5S.cjs';
3
+ import '@lsby/ts-fp-data';
4
+ import 'express';
5
+ import '../help/help.cjs';
6
+ import '@lsby/ts-log';
7
+ import 'node:http';
8
+
9
+ declare class 常用延时直接形式接口封装<路径类型 extends ______, 方法类型 extends ______$1, 逻辑类型 extends ____<any, Record<string, never>, z.infer<接口错误形式Zod>, () => z.infer<接口正确形式Zod>>, 接口错误形式Zod extends z.ZodTypeAny, 接口正确形式Zod extends z.ZodTypeAny> extends __<路径类型, 方法类型, 逻辑类型, z.ZodObject<{
10
+ status: z.ZodLiteral<'fail'>;
11
+ data: 接口错误形式Zod;
12
+ }>, 接口正确形式Zod, ___________<boolean, __________<逻辑类型>, __________$1<逻辑类型>>> {
13
+ constructor(请求路径: 路径类型, 请求方法: 方法类型, 接口逻辑: 逻辑类型, 逻辑错误类型Zod: 接口错误形式Zod, 逻辑正确类型Zod: 接口正确形式Zod);
14
+ }
15
+
16
+ export { 常用延时直接形式接口封装 };
@@ -1,6 +1,139 @@
1
- import {
2
- 业务行为
3
- } from "../chunk-CE4M2QA4.js";
1
+ // src/action/action.bak.ts
2
+ import { Either, Left, Right } from "@lsby/ts-fp-data";
3
+ var \u4E1A\u52A1\u884C\u4E3A = class _\u4E1A\u52A1\u884C\u4E3A {
4
+ // ================================= 静态 =================================
5
+ static \u901A\u8FC7\u5B9E\u73B0\u6784\u9020(\u5B9E\u73B0) {
6
+ return new class extends _\u4E1A\u52A1\u884C\u4E3A {
7
+ async \u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570) {
8
+ return \u5B9E\u73B0(\u53C2\u6570);
9
+ }
10
+ }();
11
+ }
12
+ static \u901A\u8FC7\u6B63\u786E\u503C\u6784\u9020(a) {
13
+ return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async () => new Right(a));
14
+ }
15
+ static \u901A\u8FC7\u9519\u8BEF\u503C\u6784\u9020(a) {
16
+ return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async () => new Left(a));
17
+ }
18
+ static \u6D41\u5F0F\u7EC4\u5408(a, b) {
19
+ return a.\u6D41\u5F0F\u7EC4\u5408(b);
20
+ }
21
+ static \u6DF7\u5408\u7EC4\u5408(a, b) {
22
+ return a.\u6DF7\u5408\u7EC4\u5408(b);
23
+ }
24
+ /**
25
+ * 对多个项混合组合
26
+ */
27
+ static \u6DF7\u5408\u7EC4\u5408\u591A\u9879(arr) {
28
+ return arr.reduce((s, a) => s.\u6DF7\u5408\u7EC4\u5408(a));
29
+ }
30
+ /**
31
+ * 同时运行多个行为, 并提供一个函数处理它们的结果
32
+ * 如果其中任何一个行为发生错误, 则最终行为输出第一个错误
33
+ * 处理函数的类型是: 所有行为的结果合并 => 泛型A
34
+ * 新行为的类型是:
35
+ * - 参数: 所有行为的参数合并
36
+ * - 错误: 所有行为的错误合并
37
+ * - 返回值: 泛型A
38
+ */
39
+ static \u5E76\u884C\u7EC4\u5408(arr, f) {
40
+ return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
41
+ let \u6240\u6709\u7ED3\u679C = await Promise.all(arr.map((a) => a.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570)));
42
+ let \u9519\u8BEF = \u6240\u6709\u7ED3\u679C.filter((a) => a.isLeft())[0] ?? null;
43
+ if (\u9519\u8BEF !== null)
44
+ return \u9519\u8BEF;
45
+ let \u6B63\u786E\u7ED3\u679C\u5408\u5E76 = \u6240\u6709\u7ED3\u679C.map((a) => a.assertRight().getRight()).reduce((s, a) => Object.assign(s, a), {});
46
+ return new Right(await f(\u6B63\u786E\u7ED3\u679C\u5408\u5E76));
47
+ });
48
+ }
49
+ // ================================= 设置 =================================
50
+ \u8BBE\u7F6E\u53C2\u6570(\u8BBE\u7F6E\u53C2\u6570) {
51
+ return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
52
+ return await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0({ ...\u8BBE\u7F6E\u53C2\u6570, ...\u53C2\u6570 });
53
+ });
54
+ }
55
+ // ================================= 运行 =================================
56
+ /**
57
+ * 运行业务行为, 如果抛出错误, 则原封不动向上抛出
58
+ */
59
+ async \u8FD0\u884C\u4E1A\u52A1\u884C\u4E3A(\u53C2\u6570) {
60
+ return await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
61
+ }
62
+ /**
63
+ * 运行业务行为, 如果抛出错误, 则将错误值强制转换为字符串, 并包装为Error抛出
64
+ */
65
+ async \u8FD0\u884C\u4E1A\u52A1\u884C\u4E3A\u5E76\u5305\u88C5(\u53C2\u6570) {
66
+ try {
67
+ return await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
68
+ } catch (e) {
69
+ throw new Error(String(e));
70
+ }
71
+ }
72
+ // ================================= 组合 =================================
73
+ /**
74
+ * 将两个行为串接, 得到一个新行为, 新行为的类型是:
75
+ * - 参数: a行为的参数
76
+ * - 错误: a行为的错误+b行为的错误
77
+ * - 返回值: b行为的返回值
78
+ */
79
+ \u6D41\u5F0F\u7EC4\u5408(b) {
80
+ return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
81
+ let \u6211\u7684\u7ED3\u679C = await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
82
+ if (\u6211\u7684\u7ED3\u679C.isLeft())
83
+ return new Left(\u6211\u7684\u7ED3\u679C.assertLeft().getLeft());
84
+ return b.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u6211\u7684\u7ED3\u679C.assertRight().getRight());
85
+ });
86
+ }
87
+ /**
88
+ * 将两个行为串接, 得到一个新的行为
89
+ * 相比流式组合, 本函数不要求串联位置参数匹配, 缺少的参数将在调用时补全
90
+ * 新行为的类型是:
91
+ * - 参数: a行为的参数+(b行为的参数-a行为的返回值)
92
+ * - 错误: a行为的错误+b行为的错误
93
+ * - 返回值: a行为的返回值+b行为的返回值
94
+ */
95
+ \u6DF7\u5408\u7EC4\u5408(b) {
96
+ return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
97
+ let \u6211\u7684\u7ED3\u679C = await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
98
+ if (\u6211\u7684\u7ED3\u679C.isLeft())
99
+ return new Left(\u6211\u7684\u7ED3\u679C.assertLeft().getLeft());
100
+ let \u5BF9\u65B9\u7ED3\u679C = await b.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0({ ...\u53C2\u6570, ...\u6211\u7684\u7ED3\u679C.assertRight().getRight() });
101
+ return \u5BF9\u65B9\u7ED3\u679C.map((a) => Object.assign(a, \u6211\u7684\u7ED3\u679C.assertRight().getRight()));
102
+ });
103
+ }
104
+ // ================================= 映射 =================================
105
+ \u6620\u5C04\u7ED3\u679C(f) {
106
+ return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
107
+ let \u6211\u7684\u7ED3\u679C = await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
108
+ if (\u6211\u7684\u7ED3\u679C.isLeft())
109
+ return new Left(\u6211\u7684\u7ED3\u679C.assertLeft().getLeft());
110
+ return Either.pure(f(\u6211\u7684\u7ED3\u679C.assertRight().getRight()));
111
+ });
112
+ }
113
+ \u6620\u5C04\u9519\u8BEF(f) {
114
+ return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
115
+ let \u6211\u7684\u7ED3\u679C = await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
116
+ if (\u6211\u7684\u7ED3\u679C.isLeft())
117
+ return new Left(f(\u6211\u7684\u7ED3\u679C.assertLeft().getLeft()));
118
+ return Either.pure(\u6211\u7684\u7ED3\u679C.assertRight().getRight());
119
+ });
120
+ }
121
+ /**
122
+ * 产生一个代数效应, 在效应中执行当前业务行为, 然后将其正确结果映射为新业务行为
123
+ * 新行为的类型是:
124
+ * - 参数: 必须是已有行为的参数的扩展, 因为调用时必须先调用已有行为
125
+ * - 错误: 已有行为的错误+自定义错误, 因为调用已有行为时可能出错
126
+ * - 返回值: 自定义数据
127
+ */
128
+ \u7ED1\u5B9A(f) {
129
+ return _\u4E1A\u52A1\u884C\u4E3A.\u901A\u8FC7\u5B9E\u73B0\u6784\u9020(async (\u53C2\u6570) => {
130
+ let \u6211\u7684\u7ED3\u679C = await this.\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
131
+ if (\u6211\u7684\u7ED3\u679C.isLeft())
132
+ return new Left(\u6211\u7684\u7ED3\u679C.assertLeft().getLeft());
133
+ return f(\u6211\u7684\u7ED3\u679C.assertRight().getRight()).\u4E1A\u52A1\u884C\u4E3A\u5B9E\u73B0(\u53C2\u6570);
134
+ });
135
+ }
136
+ };
4
137
  export {
5
138
  \u4E1A\u52A1\u884C\u4E3A
6
139
  };