@yuhere/js-jsonrpc2 0.0.0-stage → 2.1.2

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 (174) hide show
  1. package/README.md +277 -2
  2. package/SKILL.md +237 -0
  3. package/dist/cli/cli.d.ts +3 -0
  4. package/dist/cli/cli.d.ts.map +1 -0
  5. package/dist/cli/cli.js +132 -0
  6. package/dist/cli/cli.js.map +1 -0
  7. package/dist/cli/demo-methods.d.ts +10 -0
  8. package/dist/cli/demo-methods.d.ts.map +1 -0
  9. package/dist/cli/demo-methods.js +477 -0
  10. package/dist/cli/demo-methods.js.map +1 -0
  11. package/dist/cli/express.d.ts +2 -0
  12. package/dist/cli/express.d.ts.map +1 -0
  13. package/dist/cli/express.js +42 -0
  14. package/dist/cli/express.js.map +1 -0
  15. package/dist/cli/stdio.d.ts +2 -0
  16. package/dist/cli/stdio.d.ts.map +1 -0
  17. package/dist/cli/stdio.js +5 -0
  18. package/dist/cli/stdio.js.map +1 -0
  19. package/dist/core/Repository.d.ts +24 -0
  20. package/dist/core/Repository.d.ts.map +1 -0
  21. package/dist/core/Repository.js +153 -0
  22. package/dist/core/Repository.js.map +1 -0
  23. package/dist/core/convert.d.ts +4 -0
  24. package/dist/core/convert.d.ts.map +1 -0
  25. package/dist/core/convert.js +29 -0
  26. package/dist/core/convert.js.map +1 -0
  27. package/dist/core/descriptor.d.ts +27 -0
  28. package/dist/core/descriptor.d.ts.map +1 -0
  29. package/dist/core/descriptor.js +83 -0
  30. package/dist/core/descriptor.js.map +1 -0
  31. package/dist/core/index.d.ts +4 -0
  32. package/dist/core/index.d.ts.map +1 -0
  33. package/dist/core/index.js +3 -0
  34. package/dist/core/index.js.map +1 -0
  35. package/dist/core/permission.d.ts +4 -0
  36. package/dist/core/permission.d.ts.map +1 -0
  37. package/dist/core/permission.js +18 -0
  38. package/dist/core/permission.js.map +1 -0
  39. package/dist/core/spec-check.d.ts +3 -0
  40. package/dist/core/spec-check.d.ts.map +1 -0
  41. package/dist/core/spec-check.js +11 -0
  42. package/dist/core/spec-check.js.map +1 -0
  43. package/dist/core/system-methods.d.ts +3 -0
  44. package/dist/core/system-methods.d.ts.map +1 -0
  45. package/dist/core/system-methods.js +76 -0
  46. package/dist/core/system-methods.js.map +1 -0
  47. package/dist/errors/RpcError.d.ts +9 -0
  48. package/dist/errors/RpcError.d.ts.map +1 -0
  49. package/dist/errors/RpcError.js +23 -0
  50. package/dist/errors/RpcError.js.map +1 -0
  51. package/dist/errors/codes.d.ts +7 -0
  52. package/dist/errors/codes.d.ts.map +1 -0
  53. package/dist/errors/codes.js +7 -0
  54. package/dist/errors/codes.js.map +1 -0
  55. package/dist/errors/index.d.ts +3 -0
  56. package/dist/errors/index.d.ts.map +1 -0
  57. package/dist/errors/index.js +3 -0
  58. package/dist/errors/index.js.map +1 -0
  59. package/dist/index.d.ts +18 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +17 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/schema/index.d.ts +4 -0
  64. package/dist/schema/index.d.ts.map +1 -0
  65. package/dist/schema/index.js +4 -0
  66. package/dist/schema/index.js.map +1 -0
  67. package/dist/schema/json/index.d.ts +19 -0
  68. package/dist/schema/json/index.d.ts.map +1 -0
  69. package/dist/schema/json/index.js +6 -0
  70. package/dist/schema/json/index.js.map +1 -0
  71. package/dist/schema/json/marker.d.ts +23 -0
  72. package/dist/schema/json/marker.d.ts.map +1 -0
  73. package/dist/schema/json/marker.js +27 -0
  74. package/dist/schema/json/marker.js.map +1 -0
  75. package/dist/schema/json/primitives.d.ts +202 -0
  76. package/dist/schema/json/primitives.d.ts.map +1 -0
  77. package/dist/schema/json/primitives.js +598 -0
  78. package/dist/schema/json/primitives.js.map +1 -0
  79. package/dist/schema/primitives.d.ts +25 -0
  80. package/dist/schema/primitives.d.ts.map +1 -0
  81. package/dist/schema/primitives.js +153 -0
  82. package/dist/schema/primitives.js.map +1 -0
  83. package/dist/schema/rpc.d.ts +21 -0
  84. package/dist/schema/rpc.d.ts.map +1 -0
  85. package/dist/schema/rpc.js +17 -0
  86. package/dist/schema/rpc.js.map +1 -0
  87. package/dist/schema/z/protocol.d.ts +9 -0
  88. package/dist/schema/z/protocol.d.ts.map +1 -0
  89. package/dist/schema/z/protocol.js +9 -0
  90. package/dist/schema/z/protocol.js.map +1 -0
  91. package/dist/schema/z/register.d.ts +9 -0
  92. package/dist/schema/z/register.d.ts.map +1 -0
  93. package/dist/schema/z/register.js +21 -0
  94. package/dist/schema/z/register.js.map +1 -0
  95. package/dist/stream/index.d.ts +3 -0
  96. package/dist/stream/index.d.ts.map +1 -0
  97. package/dist/stream/index.js +2 -0
  98. package/dist/stream/index.js.map +1 -0
  99. package/dist/stream/stringify-stream.d.ts +15 -0
  100. package/dist/stream/stringify-stream.d.ts.map +1 -0
  101. package/dist/stream/stringify-stream.js +322 -0
  102. package/dist/stream/stringify-stream.js.map +1 -0
  103. package/dist/stream/stringify.d.ts +19 -0
  104. package/dist/stream/stringify.d.ts.map +1 -0
  105. package/dist/stream/stringify.js +217 -0
  106. package/dist/stream/stringify.js.map +1 -0
  107. package/dist/transport/express/body.d.ts +9 -0
  108. package/dist/transport/express/body.d.ts.map +1 -0
  109. package/dist/transport/express/body.js +28 -0
  110. package/dist/transport/express/body.js.map +1 -0
  111. package/dist/transport/express/index.d.ts +3 -0
  112. package/dist/transport/express/index.d.ts.map +1 -0
  113. package/dist/transport/express/index.js +2 -0
  114. package/dist/transport/express/index.js.map +1 -0
  115. package/dist/transport/express/middleware.d.ts +12 -0
  116. package/dist/transport/express/middleware.d.ts.map +1 -0
  117. package/dist/transport/express/middleware.js +73 -0
  118. package/dist/transport/express/middleware.js.map +1 -0
  119. package/dist/transport/express/respond.d.ts +4 -0
  120. package/dist/transport/express/respond.d.ts.map +1 -0
  121. package/dist/transport/express/respond.js +125 -0
  122. package/dist/transport/express/respond.js.map +1 -0
  123. package/dist/transport/stdio/index.d.ts +2 -0
  124. package/dist/transport/stdio/index.d.ts.map +1 -0
  125. package/dist/transport/stdio/index.js +2 -0
  126. package/dist/transport/stdio/index.js.map +1 -0
  127. package/dist/transport/stdio/middleware.d.ts +34 -0
  128. package/dist/transport/stdio/middleware.d.ts.map +1 -0
  129. package/dist/transport/stdio/middleware.js +274 -0
  130. package/dist/transport/stdio/middleware.js.map +1 -0
  131. package/dist/transport/ws/index.d.ts +3 -0
  132. package/dist/transport/ws/index.d.ts.map +1 -0
  133. package/dist/transport/ws/index.js +3 -0
  134. package/dist/transport/ws/index.js.map +1 -0
  135. package/dist/transport/ws/middleware.d.ts +25 -0
  136. package/dist/transport/ws/middleware.d.ts.map +1 -0
  137. package/dist/transport/ws/middleware.js +209 -0
  138. package/dist/transport/ws/middleware.js.map +1 -0
  139. package/dist/transport/ws/standalone.d.ts +22 -0
  140. package/dist/transport/ws/standalone.d.ts.map +1 -0
  141. package/dist/transport/ws/standalone.js +39 -0
  142. package/dist/transport/ws/standalone.js.map +1 -0
  143. package/dist/types.d.ts +75 -0
  144. package/dist/types.d.ts.map +1 -0
  145. package/dist/types.js +2 -0
  146. package/dist/types.js.map +1 -0
  147. package/htdoc/assets/index-CQr-lnlD.js +9286 -0
  148. package/htdoc/assets/index-CQr-lnlD.js.map +1 -0
  149. package/htdoc/assets/index-hcP2-9jw.css +729 -0
  150. package/htdoc/index.html +13 -0
  151. package/package.json +89 -3
  152. package/webui/index.html +12 -0
  153. package/webui/src/App.tsx +56 -0
  154. package/webui/src/api/httpTransport.ts +148 -0
  155. package/webui/src/api/paramForm.ts +79 -0
  156. package/webui/src/api/rpc.ts +57 -0
  157. package/webui/src/api/schema.ts +12 -0
  158. package/webui/src/api/types.ts +16 -0
  159. package/webui/src/api/wsTransport.ts +305 -0
  160. package/webui/src/components/MethodDetail.tsx +43 -0
  161. package/webui/src/components/MethodTree.tsx +118 -0
  162. package/webui/src/components/SchemaForm.tsx +696 -0
  163. package/webui/src/components/SchemaView.tsx +151 -0
  164. package/webui/src/components/TestPanel.tsx +279 -0
  165. package/webui/src/components/Toolbar.tsx +70 -0
  166. package/webui/src/hooks/useMethodDetail.ts +61 -0
  167. package/webui/src/hooks/useMethods.ts +27 -0
  168. package/webui/src/main.tsx +13 -0
  169. package/webui/src/styles/geek.css +729 -0
  170. package/webui/src/theme/ThemeProvider.tsx +79 -0
  171. package/webui/src/vite-env.d.ts +1 -0
  172. package/webui/tsconfig.json +34 -0
  173. package/webui/tsconfig.node.json +13 -0
  174. package/webui/vite.config.ts +15 -0
@@ -0,0 +1,477 @@
1
+ import { s } from '../schema/json';
2
+ /**
3
+ * 注册一整套用于演示/调试的 RPC 方法。
4
+ * 覆盖:基础类型、字面量/枚举、数组/元组、对象、Record、联合、
5
+ * nullable、unknown、注入参数、各种返回形态、深层嵌套、混合大杂烩、流式返回。
6
+ *
7
+ * 被 dev/express.ts 与 src/cli.ts 共用。
8
+ */
9
+ export function installDemoMethods(repository) {
10
+ // ─────────────────────────────────────────────────────────────
11
+ // 0. ping
12
+ // ─────────────────────────────────────────────────────────────
13
+ repository.register({
14
+ namespace: 'ping',
15
+ signature: [s.string(), s.string()],
16
+ }, (msg) => `pong: ${msg}`);
17
+ // ─────────────────────────────────────────────────────────────
18
+ // 1. 基础类型 + 约束 + 描述
19
+ // ─────────────────────────────────────────────────────────────
20
+ repository.register({
21
+ namespace: 'basic.echo',
22
+ document: '回显一个带长度约束和描述的字符串。',
23
+ signature: [
24
+ s.string().describe('返回值:原样返回'),
25
+ s.string().min(1).max(64).describe('消息内容,1~64 字符'),
26
+ ],
27
+ }, (msg) => msg);
28
+ repository.register({
29
+ namespace: 'basic.number',
30
+ document: '接收两个数字并返回其和。',
31
+ signature: [
32
+ s.number().describe('两数之和'),
33
+ s.number().min(-1000).max(1000).describe('被加数'),
34
+ s.number().min(0).describe('加数(非负)'),
35
+ ],
36
+ }, (a, b) => a + b);
37
+ repository.register({
38
+ namespace: 'basic.boolean',
39
+ signature: [s.boolean(), s.boolean().describe('开关')],
40
+ }, (v) => v);
41
+ // ─────────────────────────────────────────────────────────────
42
+ // 2. 字面量 / 枚举
43
+ // ─────────────────────────────────────────────────────────────
44
+ repository.register({
45
+ namespace: 'literal.mixed',
46
+ document: '演示字符串/数字/布尔/null 四种字面量。',
47
+ signature: [
48
+ s.unknown(),
49
+ s.literal('hello').describe('固定字符串'),
50
+ s.literal(42).describe('固定数字'),
51
+ s.literal(true).describe('固定布尔'),
52
+ s.literal(null).describe('固定 null'),
53
+ ],
54
+ }, (...args) => args);
55
+ repository.register({
56
+ namespace: 'enum.color',
57
+ document: '选择一个颜色。',
58
+ signature: [
59
+ s.string(),
60
+ s.enum(['red', 'green', 'blue']).describe('颜色枚举'),
61
+ ],
62
+ }, (c) => `chosen: ${c}`);
63
+ // ─────────────────────────────────────────────────────────────
64
+ // 3. 数组 / 元组
65
+ // ─────────────────────────────────────────────────────────────
66
+ repository.register({
67
+ namespace: 'array.primitives',
68
+ document: '数组的各种约束。',
69
+ signature: [
70
+ s.array(s.string()),
71
+ s.array(s.number()).min(1).max(5).describe('1~5 个数字'),
72
+ s.array(s.boolean()).describe('布尔数组'),
73
+ ],
74
+ }, (a, b, c) => ({ a, b, c }));
75
+ repository.register({
76
+ namespace: 'array.nested',
77
+ document: '嵌套数组。',
78
+ signature: [
79
+ s.array(s.array(s.number())).describe('二维数字数组'),
80
+ s.array(s.array(s.array(s.string()))).describe('三维字符串数组'),
81
+ ],
82
+ }, (m, t) => ({ m, t }));
83
+ repository.register({
84
+ namespace: 'array.ofObjects',
85
+ signature: [
86
+ s.array(s.object({
87
+ id: s.number(),
88
+ name: s.string().describe('名称'),
89
+ active: s.boolean(),
90
+ })).describe('对象数组'),
91
+ ],
92
+ }, (items) => items);
93
+ repository.register({
94
+ namespace: 'tuple.mixed',
95
+ document: '固定长度元组,类型混合。',
96
+ signature: [
97
+ s.unknown(),
98
+ s.tuple([s.string(), s.number(), s.boolean()]).describe('字符串/数字/布尔元组'),
99
+ s.tuple([s.literal('v1'), s.literal(2), s.literal(null)]).describe('字面量元组'),
100
+ ],
101
+ }, (...args) => args);
102
+ // ─────────────────────────────────────────────────────────────
103
+ // 4. 对象(嵌套 / strict)
104
+ // ─────────────────────────────────────────────────────────────
105
+ repository.register({
106
+ namespace: 'object.nested',
107
+ document: '多层嵌套对象。',
108
+ signature: [
109
+ s.object({
110
+ user: s.object({
111
+ id: s.number().describe('用户 ID'),
112
+ profile: s.object({
113
+ name: s.string().describe('姓名'),
114
+ email: s.string().describe('邮箱'),
115
+ tags: s.array(s.string()).describe('标签'),
116
+ }).describe('用户资料'),
117
+ }).describe('用户'),
118
+ meta: s.object({
119
+ createdAt: s.string().describe('ISO 时间'),
120
+ version: s.number(),
121
+ }).describe('元信息'),
122
+ }).describe('顶层对象'),
123
+ s.object({
124
+ user: s.object({
125
+ id: s.number().describe('用户 ID'),
126
+ profile: s.object({
127
+ name: s.string().describe('姓名'),
128
+ email: s.string().describe('邮箱'),
129
+ tags: s.array(s.string()).describe('标签'),
130
+ }).describe('用户资料'),
131
+ }).describe('用户'),
132
+ meta: s.object({
133
+ createdAt: s.string().describe('ISO 时间'),
134
+ version: s.number(),
135
+ }).describe('元信息'),
136
+ }).describe('顶层对象'),
137
+ ],
138
+ }, (payload) => payload);
139
+ repository.register({
140
+ namespace: 'object.strict',
141
+ document: 'strict 对象:属性必须全存在,且拒绝额外属性。',
142
+ signature: [
143
+ s.unknown(),
144
+ s.object({
145
+ a: s.string(),
146
+ b: s.number(),
147
+ }).strict().describe('严格对象'),
148
+ ],
149
+ }, (v) => v);
150
+ // ─────────────────────────────────────────────────────────────
151
+ // 5. Record
152
+ // ─────────────────────────────────────────────────────────────
153
+ repository.register({
154
+ namespace: 'record.basic',
155
+ document: '键值映射。',
156
+ signature: [
157
+ s.record(s.number()).describe('字符串→数字'),
158
+ s.record(s.string()).min(1).max(3).describe('1~3 个键的映射'),
159
+ s.record(s.object({
160
+ x: s.number(),
161
+ y: s.number(),
162
+ })).describe('字符串→坐标对象'),
163
+ ],
164
+ }, (a, b, c) => ({ a, b, c }));
165
+ // ─────────────────────────────────────────────────────────────
166
+ // 6. 联合
167
+ // ─────────────────────────────────────────────────────────────
168
+ repository.register({
169
+ namespace: 'union.various',
170
+ document: '不同形态的联合类型。',
171
+ signature: [
172
+ s.union([s.string(), s.number()]).describe('string | number'),
173
+ s.union([
174
+ s.object({ kind: s.literal('a'), a: s.number() }),
175
+ s.object({ kind: s.literal('b'), b: s.string() }),
176
+ ]).describe('判别联合'),
177
+ s.union([s.string(), s.number(), s.boolean()]).describe('三选一'),
178
+ ],
179
+ }, (...args) => args);
180
+ // ─────────────────────────────────────────────────────────────
181
+ // 7. Nullable
182
+ // ─────────────────────────────────────────────────────────────
183
+ repository.register({
184
+ namespace: 'nullable.various',
185
+ document: '各种可空类型。',
186
+ signature: [
187
+ s.string().nullable().describe('string | null'),
188
+ s.number().nullable().describe('number | null'),
189
+ s.array(s.string()).nullable().describe('string[] | null'),
190
+ s.object({ a: s.number() }).nullable().describe('对象 | null'),
191
+ s.union([s.string(), s.number()]).nullable().describe('联合 | null'),
192
+ ],
193
+ }, (...args) => args);
194
+ // ─────────────────────────────────────────────────────────────
195
+ // 8. Unknown
196
+ // ─────────────────────────────────────────────────────────────
197
+ repository.register({
198
+ namespace: 'unknown.basic',
199
+ document: '任意 JSON 值。',
200
+ signature: [
201
+ s.unknown(),
202
+ s.unknown().describe('任意 JSON'),
203
+ ],
204
+ }, (v) => v);
205
+ repository.register({
206
+ namespace: 'unknown.nested',
207
+ signature: [
208
+ s.object({
209
+ payload: s.unknown().describe('任意负载'),
210
+ extra: s.array(s.unknown()).describe('任意值数组'),
211
+ }).describe('含 unknown 的对象'),
212
+ ],
213
+ }, (v) => v);
214
+ // ─────────────────────────────────────────────────────────────
215
+ // 9. 注入参数(在首位 / 中间 / 末位 / 多个)
216
+ // ─────────────────────────────────────────────────────────────
217
+ repository.register({
218
+ namespace: 'inject.first',
219
+ document: '注入参数在首位。',
220
+ signature: [
221
+ s.string(),
222
+ s.injectable('requestId'),
223
+ s.string().describe('消息'),
224
+ ],
225
+ }, (requestId, msg) => `${String(requestId)}: ${msg}`);
226
+ repository.register({
227
+ namespace: 'inject.middle',
228
+ document: '注入参数在中间。',
229
+ signature: [
230
+ s.string(),
231
+ s.string().describe('左'),
232
+ s.injectable('requestId'),
233
+ s.string().describe('右'),
234
+ ],
235
+ }, (left, requestId, right) => `${left} | ${String(requestId)} | ${right}`);
236
+ repository.register({
237
+ namespace: 'inject.multiple',
238
+ document: '多个注入参数 + 多个普通参数交替。',
239
+ signature: [
240
+ s.unknown(),
241
+ s.string().describe('普通1'),
242
+ s.injectable('requestId'),
243
+ s.number().describe('普通2'),
244
+ s.injectable('session'),
245
+ s.object({ a: s.number() }).describe('普通3'),
246
+ ],
247
+ }, (...args) => args);
248
+ // ─────────────────────────────────────────────────────────────
249
+ // 10. 返回值形态
250
+ // ─────────────────────────────────────────────────────────────
251
+ repository.register({
252
+ namespace: 'return.void',
253
+ document: '无返回值。',
254
+ signature: [s.void(), s.string().describe('仅用于触发')],
255
+ }, (_v) => undefined);
256
+ repository.register({
257
+ namespace: 'return.complex',
258
+ document: '返回嵌套对象。',
259
+ signature: [
260
+ s.object({
261
+ ok: s.boolean(),
262
+ data: s.object({
263
+ items: s.array(s.object({ id: s.number(), name: s.string() })),
264
+ }),
265
+ }),
266
+ s.string().describe('输入'),
267
+ ],
268
+ }, (input) => ({
269
+ ok: true,
270
+ data: { items: [{ id: 1, name: input }] },
271
+ }));
272
+ repository.register({
273
+ namespace: 'return.array',
274
+ document: '返回数组。',
275
+ signature: [
276
+ s.array(s.number()),
277
+ s.number().describe('数量'),
278
+ ],
279
+ }, (n) => Array.from({ length: n }, (_, i) => i));
280
+ // ─────────────────────────────────────────────────────────────
281
+ // 11. 深层嵌套(压测渲染递归)
282
+ // ─────────────────────────────────────────────────────────────
283
+ repository.register({
284
+ namespace: 'deep.nested',
285
+ document: '多层嵌套,验证递归渲染。',
286
+ signature: [
287
+ s.object({
288
+ level1: s.object({
289
+ level2: s.object({
290
+ level3: s.object({
291
+ level4: s.object({
292
+ value: s.string(),
293
+ items: s.array(s.object({
294
+ idx: s.number(),
295
+ tags: s.array(s.string()),
296
+ })),
297
+ }).describe('L4'),
298
+ }).describe('L3'),
299
+ }).describe('L2'),
300
+ }).describe('L1'),
301
+ unionField: s.union([
302
+ s.object({ type: s.literal('a'), a: s.array(s.number()) }),
303
+ s.object({ type: s.literal('b'), b: s.record(s.string()) }),
304
+ ]).describe('联合字段'),
305
+ }).describe('顶层'),
306
+ ],
307
+ }, (v) => v);
308
+ // ─────────────────────────────────────────────────────────────
309
+ // 12. 混合大杂烩
310
+ // ─────────────────────────────────────────────────────────────
311
+ repository.register({
312
+ namespace: 'mix.everything',
313
+ document: '把所有类型塞进一个签名里。',
314
+ signature: [
315
+ s.object({
316
+ str: s.string().min(1).max(10),
317
+ num: s.number().min(0),
318
+ bool: s.boolean(),
319
+ nul: s.string().nullable(),
320
+ arr: s.array(s.number()),
321
+ tup: s.tuple([s.string(), s.number()]),
322
+ obj: s.object({ k: s.string() }),
323
+ rec: s.record(s.boolean()),
324
+ uni: s.union([s.string(), s.number()]),
325
+ en: s.enum(['x', 'y']),
326
+ lit: s.literal('fixed'),
327
+ unk: s.unknown(),
328
+ }).describe('大杂烩对象'),
329
+ s.string().describe('普通字符串参数'),
330
+ s.object({
331
+ str: s.string().min(1).max(10),
332
+ num: s.number().min(0),
333
+ bool: s.boolean(),
334
+ nul: s.string().nullable(),
335
+ arr: s.array(s.number()),
336
+ tup: s.tuple([s.string(), s.number()]),
337
+ obj: s.object({ k: s.string() }),
338
+ rec: s.record(s.boolean()),
339
+ uni: s.union([s.string(), s.number()]),
340
+ en: s.enum(['x', 'y']),
341
+ lit: s.literal('fixed'),
342
+ unk: s.unknown(),
343
+ }).describe('大杂烩参数'),
344
+ ],
345
+ }, (v, s2) => ([v, s2]));
346
+ // ─────────────────────────────────────────────────────────────
347
+ // 13. stream 返回值
348
+ // ─────────────────────────────────────────────────────────────
349
+ // 13.1 基本字符串流:每隔 200ms 发一条,共 n 条
350
+ repository.register({
351
+ namespace: 'stream.strings',
352
+ document: '每秒发一条 "tick #i",共 n 条;用于验证基本流式。',
353
+ signature: [
354
+ s.stream(s.string().describe('字符串流')),
355
+ s.number().min(1).max(100).describe('条数 n'),
356
+ ],
357
+ }, async function* streamStrings(n) {
358
+ for (let i = 0; i < n; i++) {
359
+ await new Promise((r) => setTimeout(r, 200));
360
+ yield `tick #${i}`;
361
+ }
362
+ });
363
+ // 13.2 对象流:带约束和描述,验证 UI 渲染 + 描述输出
364
+ repository.register({
365
+ namespace: 'stream.objects',
366
+ document: '流式返回 { idx, label, ok } 对象。',
367
+ signature: [
368
+ s.stream(s.object({
369
+ idx: s.number().describe('序号'),
370
+ label: s.string().describe('标签'),
371
+ ok: s.boolean(),
372
+ }).describe('对象流')),
373
+ s.number().min(1).max(20).describe('条数 n'),
374
+ ],
375
+ }, async function* streamObjects(n) {
376
+ for (let i = 0; i < n; i++) {
377
+ await new Promise((r) => setTimeout(r, 150));
378
+ yield { idx: i, label: `item-${i}`, ok: i % 2 === 0 };
379
+ }
380
+ });
381
+ // 13.3 任意 JSON 流:s.stream(s.unknown())
382
+ repository.register({
383
+ namespace: 'stream.unknown',
384
+ document: 's.stream(s.unknown()):每帧可以是任意 JSON。',
385
+ signature: [
386
+ s.stream(s.unknown().describe('任意 JSON 流')),
387
+ ],
388
+ }, async function* streamUnknown() {
389
+ const frames = [
390
+ null,
391
+ 'hello',
392
+ 42,
393
+ true,
394
+ [1, 2, 3],
395
+ { nested: { a: 1, b: [true, null] } },
396
+ ];
397
+ for (const v of frames) {
398
+ await new Promise((r) => setTimeout(r, 100));
399
+ yield v;
400
+ }
401
+ });
402
+ // 13.4 无限流:验证客户端断开后 handler 能感知(finally 打印日志)
403
+ repository.register({
404
+ namespace: 'stream.infinite',
405
+ document: '无限流,每 300ms 发一条。浏览器关闭 / fetch abort 后服务端应打印 "stream.infinite finally"。',
406
+ signature: [
407
+ s.stream(s.object({
408
+ n: s.number(),
409
+ at: s.string().describe('ISO 时间'),
410
+ }).describe('无限计数流')),
411
+ ],
412
+ }, async function* streamInfinite() {
413
+ let n = 0;
414
+ try {
415
+ while (true) {
416
+ yield { n, at: new Date().toISOString() };
417
+ n++;
418
+ await new Promise((r) => setTimeout(r, 300));
419
+ }
420
+ }
421
+ finally {
422
+ console.log(`stream.infinite finally, emitted=${n}`);
423
+ }
424
+ });
425
+ // 13.5 中途抛错:验证终止帧 { done: true, error: { code, message } }
426
+ repository.register({
427
+ namespace: 'stream.boom',
428
+ document: '发 3 条后抛错。客户端应收到 3 个数据帧 + 1 个带 error 的终止帧。',
429
+ signature: [
430
+ s.stream(s.string().describe('字符串流')),
431
+ ],
432
+ }, async function* streamBoom() {
433
+ for (let i = 0; i < 3; i++) {
434
+ yield `before-boom-${i}`;
435
+ await new Promise((r) => setTimeout(r, 100));
436
+ }
437
+ throw new Error('boom at stream.boom');
438
+ });
439
+ // 13.6 声明 stream 却返回非 generator:验证 INTERNAL_ERROR
440
+ // 注意:这个 handler 故意写错,用于测试服务端校验。
441
+ repository.register({
442
+ namespace: 'stream.misdeclared',
443
+ document: '声明了 s.stream(...) 但 handler 返回普通值。预期 INVOKE 返回 INTERNAL_ERROR。',
444
+ grantTo: ["a"],
445
+ signature: [
446
+ s.stream(s.string().describe('字符串流')),
447
+ ],
448
+ },
449
+ // 故意返回非 AsyncGenerator
450
+ () => 'not a stream');
451
+ // 13.7 空流:立刻结束,只有 { done: true }
452
+ repository.register({
453
+ namespace: 'stream.empty',
454
+ document: '立即结束的空流,只应收到一个 { done: true } 终止帧。',
455
+ signature: [
456
+ s.stream(s.number().describe('数字流')),
457
+ ],
458
+ }, async function* streamEmpty() {
459
+ // 不 yield
460
+ });
461
+ // 13.8 带注入参数的流方法:验证 convertParams 与流式共存
462
+ repository.register({
463
+ namespace: 'stream.withInject',
464
+ document: '流式方法同时使用注入参数。',
465
+ signature: [
466
+ s.stream(s.string().describe('字符串流')),
467
+ s.injectable('requestId'),
468
+ s.number().min(1).max(10).describe('条数'),
469
+ ],
470
+ }, async function* streamWithInject(requestId, n) {
471
+ for (let i = 0; i < n; i++) {
472
+ yield `${String(requestId)}#${i}`;
473
+ await new Promise((r) => setTimeout(r, 100));
474
+ }
475
+ });
476
+ }
477
+ //# sourceMappingURL=demo-methods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo-methods.js","sourceRoot":"","sources":["../../src/cli/demo-methods.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=express.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../src/cli/express.ts"],"names":[],"mappings":""}
@@ -0,0 +1,42 @@
1
+ import { createServer } from 'node:http';
2
+ import express from 'express';
3
+ import { attachWebSocket, createRepository, createExpressRouter } from '..';
4
+ import { installDemoMethods } from './demo-methods';
5
+ const app = express();
6
+ const repository = createRepository({ withSystemMethods: true });
7
+ installDemoMethods(repository);
8
+ app.use('/', createExpressRouter(repository, {
9
+ mkInjectable: (req, res, repository) => {
10
+ const injections = {
11
+ request: req,
12
+ response: res,
13
+ repository: repository,
14
+ perm_check: () => {
15
+ return (grantTo, descriptor) => {
16
+ console.log("perm_check:", descriptor.namespace, grantTo);
17
+ return true;
18
+ };
19
+ },
20
+ requestId: `ws-${Math.random().toString(36).slice(2, 8)}`,
21
+ };
22
+ return injections;
23
+ },
24
+ useHtdoc: true
25
+ }));
26
+ const server = createServer(app);
27
+ // websocket
28
+ attachWebSocket(server, repository, {
29
+ path: '/',
30
+ mkInjectable: (ws, req, repo) => ({
31
+ socket: ws,
32
+ request: req,
33
+ repository: repo,
34
+ // 给 stream.withInject 提供一个稳定 id
35
+ requestId: `ws-${Math.random().toString(36).slice(2, 8)}`,
36
+ }),
37
+ });
38
+ const port = Number(process.env['PORT'] ?? 5000);
39
+ server.listen(port, () => {
40
+ console.log(`js-jsonrpc2 debug server listening on http://localhost:${port}`);
41
+ });
42
+ //# sourceMappingURL=express.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.js","sourceRoot":"","sources":["../../src/cli/express.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,IAAI,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGpD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AACtB,MAAM,UAAU,GAAG,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;AACjE,kBAAkB,CAAC,UAAU,CAAC,CAAC;AAE/B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,mBAAmB,CAAC,UAAU,EAAE;IACzC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE;QACnC,MAAM,UAAU,GAAG;YACf,OAAO,EAAE,GAAG;YACZ,QAAQ,EAAE,GAAG;YACb,UAAU,EAAE,UAAU;YACtB,UAAU,EAAE,GAAG,EAAE;gBACb,OAAO,CAAC,OAAiB,EAAE,UAA4B,EAAW,EAAE;oBAChE,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBAC1D,OAAO,IAAI,CAAC;gBAChB,CAAC,CAAA;YACL,CAAC;YACD,SAAS,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;SAC5D,CAAC;QACF,OAAO,UAAU,CAAC;IACtB,CAAC;IACD,QAAQ,EAAE,IAAI;CACjB,CAAC,CAAC,CAAC;AAEJ,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AAEjC,YAAY;AACZ,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE;IAChC,IAAI,EAAE,GAAG;IACT,YAAY,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9B,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,GAAG;QACZ,UAAU,EAAE,IAAI;QAChB,gCAAgC;QAChC,SAAS,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;KAC5D,CAAC;CACL,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;AACjD,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACrB,OAAO,CAAC,GAAG,CAAC,0DAA0D,IAAI,EAAE,CAAC,CAAC;AAClF,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stdio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../src/cli/stdio.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { createRepository, serveStdio, s } from '..';
2
+ const repository = createRepository();
3
+ repository.register({ namespace: 'echo', signature: [s.string(), s.string()] }, (v) => v);
4
+ await serveStdio({ repository, framing: 'lines' });
5
+ //# sourceMappingURL=stdio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/cli/stdio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC;AAErD,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;AACtC,UAAU,CAAC,QAAQ,CACf,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAC1D,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CACnB,CAAC;AAEF,MAAM,UAAU,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { MethodDescriptor } from './descriptor';
2
+ import type { RPCDescriptor, RPCHandler, RPCResponse, InvokeOptions, RepositoryOptions } from '../types';
3
+ export declare class Repository {
4
+ private readonly methods;
5
+ constructor(options?: RepositoryOptions);
6
+ register(descriptor: RPCDescriptor, fn: RPCHandler): void;
7
+ has(namespace: string): boolean;
8
+ list(): string[];
9
+ get(namespace: string): MethodDescriptor | undefined;
10
+ signatureOf(descriptor: MethodDescriptor): unknown[];
11
+ invoke(input: unknown, options?: InvokeOptions): Promise<RPCResponse>;
12
+ /**
13
+ * 把 handler 返回的 AsyncGenerator 包装成待消费的 chunk 流。
14
+ * 每帧都是完整的 RPCStreamChunk(含 jsonrpc/id)。
15
+ * 不做 chunk 的 schema 校验(按约定)。
16
+ * 正常结束发 {done:true,index};异常终止发 {done:true,index?,error}。
17
+ */
18
+ private streamChunks;
19
+ private streamSuccess;
20
+ private failure;
21
+ }
22
+ export declare function createRepository(options?: RepositoryOptions): Repository;
23
+ export type { MethodDescriptor };
24
+ //# sourceMappingURL=Repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Repository.d.ts","sourceRoot":"","sources":["../../src/core/Repository.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAQrD,OAAO,KAAK,EACV,aAAa,EAEb,UAAU,EAEV,WAAW,EAGX,aAAa,EACb,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAelB,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;IAE/D,YAAY,OAAO,GAAE,iBAAsB,EAI1C;IAED,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,EAAE,UAAU,GAAG,IAAI,CAOxD;IAED,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE9B;IAED,IAAI,IAAI,MAAM,EAAE,CAEf;IAED,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAEnD;IAED,WAAW,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,EAAE,CAEnD;IAEK,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CA4C9E;IAED;;;;;OAKG;YACY,YAAY;IA+B3B,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,OAAO;CAOhB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,UAAU,CAE5E;AAED,YAAY,EAAE,gBAAgB,EAAE,CAAC"}