rivetkit 2.0.3 → 2.0.4
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 +11 -0
- package/dist/schemas/actor-persist/v1.ts +21 -24
- package/dist/schemas/client-protocol/v1.ts +6 -0
- package/dist/tsup/actor/errors.cjs +10 -2
- package/dist/tsup/actor/errors.cjs.map +1 -1
- package/dist/tsup/actor/errors.d.cts +17 -4
- package/dist/tsup/actor/errors.d.ts +17 -4
- package/dist/tsup/actor/errors.js +11 -3
- package/dist/tsup/{chunk-6PDXBYI5.js → chunk-3F2YSRJL.js} +8 -23
- package/dist/tsup/chunk-3F2YSRJL.js.map +1 -0
- package/dist/tsup/chunk-4CXBCT26.cjs +250 -0
- package/dist/tsup/chunk-4CXBCT26.cjs.map +1 -0
- package/dist/tsup/chunk-4R73YDN3.cjs +20 -0
- package/dist/tsup/chunk-4R73YDN3.cjs.map +1 -0
- package/dist/tsup/{chunk-OGAPU3UG.cjs → chunk-6LJT3QRL.cjs} +39 -25
- package/dist/tsup/chunk-6LJT3QRL.cjs.map +1 -0
- package/dist/tsup/{chunk-6WKQDDUD.cjs → chunk-GICQ3YCU.cjs} +143 -141
- package/dist/tsup/chunk-GICQ3YCU.cjs.map +1 -0
- package/dist/tsup/{chunk-FLMTTN27.js → chunk-H26RP6GD.js} +15 -8
- package/dist/tsup/chunk-H26RP6GD.js.map +1 -0
- package/dist/tsup/chunk-HI3HWJRC.js +20 -0
- package/dist/tsup/chunk-HI3HWJRC.js.map +1 -0
- package/dist/tsup/{chunk-4NSUQZ2H.js → chunk-HLLF4B4Q.js} +116 -114
- package/dist/tsup/chunk-HLLF4B4Q.js.map +1 -0
- package/dist/tsup/{chunk-FCCPJNMA.cjs → chunk-IH6CKNDW.cjs} +12 -27
- package/dist/tsup/chunk-IH6CKNDW.cjs.map +1 -0
- package/dist/tsup/chunk-LV2S3OU3.js +250 -0
- package/dist/tsup/chunk-LV2S3OU3.js.map +1 -0
- package/dist/tsup/{chunk-R2OPSKIV.cjs → chunk-LWNKVZG5.cjs} +20 -13
- package/dist/tsup/chunk-LWNKVZG5.cjs.map +1 -0
- package/dist/tsup/{chunk-INGJP237.js → chunk-NFU2BBT5.js} +102 -43
- package/dist/tsup/chunk-NFU2BBT5.js.map +1 -0
- package/dist/tsup/{chunk-3H7O2A7I.js → chunk-PQY7KKTL.js} +33 -19
- package/dist/tsup/chunk-PQY7KKTL.js.map +1 -0
- package/dist/tsup/{chunk-PO4VLDWA.js → chunk-QK72M5JB.js} +3 -5
- package/dist/tsup/chunk-QK72M5JB.js.map +1 -0
- package/dist/tsup/{chunk-TZJKSBUQ.cjs → chunk-QNNXFOQV.cjs} +3 -5
- package/dist/tsup/chunk-QNNXFOQV.cjs.map +1 -0
- package/dist/tsup/{chunk-GIR3AFFI.cjs → chunk-SBHHJ6QS.cjs} +102 -43
- package/dist/tsup/chunk-SBHHJ6QS.cjs.map +1 -0
- package/dist/tsup/chunk-TQ62L3X7.js +325 -0
- package/dist/tsup/chunk-TQ62L3X7.js.map +1 -0
- package/dist/tsup/chunk-VO7ZRVVD.cjs +6293 -0
- package/dist/tsup/chunk-VO7ZRVVD.cjs.map +1 -0
- package/dist/tsup/chunk-WHBPJNGW.cjs +325 -0
- package/dist/tsup/chunk-WHBPJNGW.cjs.map +1 -0
- package/dist/tsup/chunk-XJQHKJ4P.js +6293 -0
- package/dist/tsup/chunk-XJQHKJ4P.js.map +1 -0
- package/dist/tsup/client/mod.cjs +10 -10
- package/dist/tsup/client/mod.d.cts +7 -13
- package/dist/tsup/client/mod.d.ts +7 -13
- package/dist/tsup/client/mod.js +9 -9
- package/dist/tsup/common/log.cjs +12 -4
- package/dist/tsup/common/log.cjs.map +1 -1
- package/dist/tsup/common/log.d.cts +23 -17
- package/dist/tsup/common/log.d.ts +23 -17
- package/dist/tsup/common/log.js +15 -7
- package/dist/tsup/common/websocket.cjs +5 -5
- package/dist/tsup/common/websocket.js +4 -4
- package/dist/tsup/{common-CpqORuCq.d.cts → common-CXCe7s6i.d.cts} +2 -2
- package/dist/tsup/{common-CpqORuCq.d.ts → common-CXCe7s6i.d.ts} +2 -2
- package/dist/tsup/{connection-BwUMoe6n.d.ts → connection-BI-6UIBJ.d.ts} +196 -226
- package/dist/tsup/{connection-BR_Ve4ku.d.cts → connection-Dyd4NLGW.d.cts} +196 -226
- package/dist/tsup/driver-helpers/mod.cjs +6 -9
- package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
- package/dist/tsup/driver-helpers/mod.d.cts +5 -6
- package/dist/tsup/driver-helpers/mod.d.ts +5 -6
- package/dist/tsup/driver-helpers/mod.js +6 -9
- package/dist/tsup/driver-test-suite/mod.cjs +155 -1363
- package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/driver-test-suite/mod.d.cts +11 -5
- package/dist/tsup/driver-test-suite/mod.d.ts +11 -5
- package/dist/tsup/driver-test-suite/mod.js +876 -2084
- package/dist/tsup/driver-test-suite/mod.js.map +1 -1
- package/dist/tsup/inspector/mod.cjs +6 -8
- package/dist/tsup/inspector/mod.cjs.map +1 -1
- package/dist/tsup/inspector/mod.d.cts +3 -3
- package/dist/tsup/inspector/mod.d.ts +3 -3
- package/dist/tsup/inspector/mod.js +8 -10
- package/dist/tsup/mod.cjs +9 -15
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +47 -42
- package/dist/tsup/mod.d.ts +47 -42
- package/dist/tsup/mod.js +10 -16
- package/dist/tsup/{router-endpoints-DAbqVFx2.d.ts → router-endpoints-BTe_Rsdn.d.cts} +2 -3
- package/dist/tsup/{router-endpoints-AYkXG8Tl.d.cts → router-endpoints-CBSrKHmo.d.ts} +2 -3
- package/dist/tsup/test/mod.cjs +10 -14
- package/dist/tsup/test/mod.cjs.map +1 -1
- package/dist/tsup/test/mod.d.cts +4 -5
- package/dist/tsup/test/mod.d.ts +4 -5
- package/dist/tsup/test/mod.js +9 -13
- package/dist/tsup/{utils-CT0cv4jd.d.ts → utils-fwx3o3K9.d.cts} +1 -0
- package/dist/tsup/{utils-CT0cv4jd.d.cts → utils-fwx3o3K9.d.ts} +1 -0
- package/dist/tsup/utils.cjs +3 -3
- package/dist/tsup/utils.d.cts +1 -1
- package/dist/tsup/utils.d.ts +1 -1
- package/dist/tsup/utils.js +2 -2
- package/package.json +4 -4
- package/src/actor/action.ts +1 -5
- package/src/actor/config.ts +27 -295
- package/src/actor/connection.ts +9 -12
- package/src/actor/context.ts +1 -4
- package/src/actor/definition.ts +7 -11
- package/src/actor/errors.ts +97 -35
- package/src/actor/generic-conn-driver.ts +28 -16
- package/src/actor/instance.ts +177 -133
- package/src/actor/log.ts +4 -13
- package/src/actor/mod.ts +0 -5
- package/src/actor/protocol/old.ts +42 -26
- package/src/actor/protocol/serde.ts +1 -1
- package/src/actor/router-endpoints.ts +41 -38
- package/src/actor/router.ts +20 -18
- package/src/actor/unstable-react.ts +1 -1
- package/src/actor/utils.ts +6 -2
- package/src/client/actor-common.ts +1 -1
- package/src/client/actor-conn.ts +152 -91
- package/src/client/actor-handle.ts +85 -25
- package/src/client/actor-query.ts +65 -0
- package/src/client/client.ts +29 -98
- package/src/client/config.ts +44 -0
- package/src/client/errors.ts +1 -0
- package/src/client/log.ts +2 -4
- package/src/client/mod.ts +16 -12
- package/src/client/raw-utils.ts +82 -25
- package/src/client/utils.ts +5 -3
- package/src/common/fake-event-source.ts +10 -9
- package/src/common/inline-websocket-adapter2.ts +39 -30
- package/src/common/log.ts +176 -101
- package/src/common/logfmt.ts +21 -30
- package/src/common/router.ts +12 -19
- package/src/common/utils.ts +27 -13
- package/src/common/websocket.ts +0 -1
- package/src/driver-helpers/mod.ts +1 -1
- package/src/driver-test-suite/log.ts +1 -3
- package/src/driver-test-suite/mod.ts +86 -60
- package/src/driver-test-suite/tests/actor-handle.ts +33 -0
- package/src/driver-test-suite/tests/manager-driver.ts +5 -3
- package/src/driver-test-suite/tests/raw-http-direct-registry.ts +227 -226
- package/src/driver-test-suite/tests/raw-websocket-direct-registry.ts +393 -392
- package/src/driver-test-suite/tests/request-access.ts +112 -126
- package/src/driver-test-suite/utils.ts +13 -10
- package/src/drivers/default.ts +7 -4
- package/src/drivers/engine/actor-driver.ts +22 -13
- package/src/drivers/engine/config.ts +2 -10
- package/src/drivers/engine/kv.ts +1 -1
- package/src/drivers/engine/log.ts +1 -3
- package/src/drivers/engine/mod.ts +2 -3
- package/src/drivers/file-system/actor.ts +1 -1
- package/src/drivers/file-system/global-state.ts +33 -20
- package/src/drivers/file-system/log.ts +1 -3
- package/src/drivers/file-system/manager.ts +31 -8
- package/src/inspector/config.ts +9 -4
- package/src/inspector/log.ts +1 -1
- package/src/inspector/manager.ts +2 -2
- package/src/inspector/utils.ts +1 -1
- package/src/manager/driver.ts +10 -2
- package/src/manager/hono-websocket-adapter.ts +21 -12
- package/src/manager/log.ts +2 -4
- package/src/manager/mod.ts +1 -1
- package/src/manager/router.ts +277 -1657
- package/src/manager-api/routes/actors-create.ts +16 -0
- package/src/manager-api/routes/actors-delete.ts +4 -0
- package/src/manager-api/routes/actors-get-by-id.ts +7 -0
- package/src/manager-api/routes/actors-get-or-create-by-id.ts +29 -0
- package/src/manager-api/routes/actors-get.ts +7 -0
- package/src/manager-api/routes/common.ts +18 -0
- package/src/mod.ts +0 -2
- package/src/registry/config.ts +1 -1
- package/src/registry/log.ts +2 -4
- package/src/registry/mod.ts +57 -24
- package/src/registry/run-config.ts +31 -33
- package/src/registry/serve.ts +4 -5
- package/src/remote-manager-driver/actor-http-client.ts +72 -0
- package/src/remote-manager-driver/actor-websocket-client.ts +63 -0
- package/src/remote-manager-driver/api-endpoints.ts +79 -0
- package/src/remote-manager-driver/api-utils.ts +43 -0
- package/src/remote-manager-driver/log.ts +5 -0
- package/src/remote-manager-driver/mod.ts +274 -0
- package/src/{drivers/engine → remote-manager-driver}/ws-proxy.ts +24 -14
- package/src/serde.ts +8 -2
- package/src/test/log.ts +1 -3
- package/src/test/mod.ts +17 -16
- package/dist/tsup/chunk-2CRLFV6Z.cjs +0 -202
- package/dist/tsup/chunk-2CRLFV6Z.cjs.map +0 -1
- package/dist/tsup/chunk-3H7O2A7I.js.map +0 -1
- package/dist/tsup/chunk-42I3OZ3Q.js +0 -15
- package/dist/tsup/chunk-42I3OZ3Q.js.map +0 -1
- package/dist/tsup/chunk-4NSUQZ2H.js.map +0 -1
- package/dist/tsup/chunk-6PDXBYI5.js.map +0 -1
- package/dist/tsup/chunk-6WKQDDUD.cjs.map +0 -1
- package/dist/tsup/chunk-CTBOSFUH.cjs +0 -116
- package/dist/tsup/chunk-CTBOSFUH.cjs.map +0 -1
- package/dist/tsup/chunk-EGVZZFE2.js +0 -2857
- package/dist/tsup/chunk-EGVZZFE2.js.map +0 -1
- package/dist/tsup/chunk-FCCPJNMA.cjs.map +0 -1
- package/dist/tsup/chunk-FLMTTN27.js.map +0 -1
- package/dist/tsup/chunk-GIR3AFFI.cjs.map +0 -1
- package/dist/tsup/chunk-INGJP237.js.map +0 -1
- package/dist/tsup/chunk-KJCJLKRM.js +0 -116
- package/dist/tsup/chunk-KJCJLKRM.js.map +0 -1
- package/dist/tsup/chunk-KUPQZYUQ.cjs +0 -15
- package/dist/tsup/chunk-KUPQZYUQ.cjs.map +0 -1
- package/dist/tsup/chunk-O2MBYIXO.cjs +0 -2857
- package/dist/tsup/chunk-O2MBYIXO.cjs.map +0 -1
- package/dist/tsup/chunk-OGAPU3UG.cjs.map +0 -1
- package/dist/tsup/chunk-OV6AYD4S.js +0 -4406
- package/dist/tsup/chunk-OV6AYD4S.js.map +0 -1
- package/dist/tsup/chunk-PO4VLDWA.js.map +0 -1
- package/dist/tsup/chunk-R2OPSKIV.cjs.map +0 -1
- package/dist/tsup/chunk-TZJKSBUQ.cjs.map +0 -1
- package/dist/tsup/chunk-UBUC5C3G.cjs +0 -189
- package/dist/tsup/chunk-UBUC5C3G.cjs.map +0 -1
- package/dist/tsup/chunk-UIM22YJL.cjs +0 -4406
- package/dist/tsup/chunk-UIM22YJL.cjs.map +0 -1
- package/dist/tsup/chunk-URVFQMYI.cjs +0 -230
- package/dist/tsup/chunk-URVFQMYI.cjs.map +0 -1
- package/dist/tsup/chunk-UVUPOS46.js +0 -230
- package/dist/tsup/chunk-UVUPOS46.js.map +0 -1
- package/dist/tsup/chunk-VRRHBNJC.js +0 -189
- package/dist/tsup/chunk-VRRHBNJC.js.map +0 -1
- package/dist/tsup/chunk-XFSS33EQ.js +0 -202
- package/dist/tsup/chunk-XFSS33EQ.js.map +0 -1
- package/src/client/http-client-driver.ts +0 -326
- package/src/driver-test-suite/test-inline-client-driver.ts +0 -402
- package/src/driver-test-suite/tests/actor-auth.ts +0 -591
- package/src/drivers/engine/api-endpoints.ts +0 -128
- package/src/drivers/engine/api-utils.ts +0 -70
- package/src/drivers/engine/manager-driver.ts +0 -391
- package/src/inline-client-driver/log.ts +0 -7
- package/src/inline-client-driver/mod.ts +0 -385
- package/src/manager/auth.ts +0 -121
- /package/src/{drivers/engine → actor}/keys.test.ts +0 -0
- /package/src/{drivers/engine → actor}/keys.ts +0 -0
|
@@ -1,392 +1,393 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import type {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
}
|
|
1
|
+
// TODO: re-expose this once we can have actor queries on the gateway
|
|
2
|
+
// import { describe, expect, test } from "vitest";
|
|
3
|
+
// import { importWebSocket } from "@/common/websocket";
|
|
4
|
+
// import type { ActorQuery } from "@/manager/protocol/query";
|
|
5
|
+
// import type { DriverTestConfig } from "../mod";
|
|
6
|
+
// import { setupDriverTest } from "../utils";
|
|
7
|
+
//
|
|
8
|
+
// export function runRawWebSocketDirectRegistryTests(
|
|
9
|
+
// driverTestConfig: DriverTestConfig,
|
|
10
|
+
// ) {
|
|
11
|
+
// describe("raw websocket - direct registry access", () => {
|
|
12
|
+
// test("should establish vanilla WebSocket connection with proper subprotocols", async (c) => {
|
|
13
|
+
// const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
14
|
+
// const WebSocket = await importWebSocket();
|
|
15
|
+
//
|
|
16
|
+
// // Build the actor query
|
|
17
|
+
// const actorQuery: ActorQuery = {
|
|
18
|
+
// getOrCreateForKey: {
|
|
19
|
+
// name: "rawWebSocketActor",
|
|
20
|
+
// key: ["vanilla-test"],
|
|
21
|
+
// },
|
|
22
|
+
// };
|
|
23
|
+
//
|
|
24
|
+
// // Encode query as WebSocket subprotocol
|
|
25
|
+
// const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
|
|
26
|
+
//
|
|
27
|
+
// // Build WebSocket URL (convert http to ws)
|
|
28
|
+
// const wsEndpoint = endpoint
|
|
29
|
+
// .replace(/^http:/, "ws:")
|
|
30
|
+
// .replace(/^https:/, "wss:");
|
|
31
|
+
// const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
|
|
32
|
+
//
|
|
33
|
+
// // Create WebSocket connection with subprotocol
|
|
34
|
+
// const ws = new WebSocket(wsUrl, [
|
|
35
|
+
// queryProtocol,
|
|
36
|
+
// // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
37
|
+
// "rivetkit",
|
|
38
|
+
// ]) as any;
|
|
39
|
+
//
|
|
40
|
+
// await new Promise<void>((resolve, reject) => {
|
|
41
|
+
// ws.addEventListener("open", () => {
|
|
42
|
+
// resolve();
|
|
43
|
+
// });
|
|
44
|
+
// ws.addEventListener("error", reject);
|
|
45
|
+
// ws.addEventListener("close", reject);
|
|
46
|
+
// });
|
|
47
|
+
//
|
|
48
|
+
// // Should receive welcome message
|
|
49
|
+
// const welcomeMessage = await new Promise<any>((resolve, reject) => {
|
|
50
|
+
// ws.addEventListener(
|
|
51
|
+
// "message",
|
|
52
|
+
// (event: any) => {
|
|
53
|
+
// resolve(JSON.parse(event.data as string));
|
|
54
|
+
// },
|
|
55
|
+
// { once: true },
|
|
56
|
+
// );
|
|
57
|
+
// ws.addEventListener("close", reject);
|
|
58
|
+
// });
|
|
59
|
+
//
|
|
60
|
+
// expect(welcomeMessage.type).toBe("welcome");
|
|
61
|
+
// expect(welcomeMessage.connectionCount).toBe(1);
|
|
62
|
+
//
|
|
63
|
+
// ws.close();
|
|
64
|
+
// });
|
|
65
|
+
//
|
|
66
|
+
// test("should echo messages with vanilla WebSocket", async (c) => {
|
|
67
|
+
// const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
68
|
+
// const WebSocket = await importWebSocket();
|
|
69
|
+
//
|
|
70
|
+
// const actorQuery: ActorQuery = {
|
|
71
|
+
// getOrCreateForKey: {
|
|
72
|
+
// name: "rawWebSocketActor",
|
|
73
|
+
// key: ["vanilla-echo"],
|
|
74
|
+
// },
|
|
75
|
+
// };
|
|
76
|
+
//
|
|
77
|
+
// const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
|
|
78
|
+
//
|
|
79
|
+
// const wsEndpoint = endpoint
|
|
80
|
+
// .replace(/^http:/, "ws:")
|
|
81
|
+
// .replace(/^https:/, "wss:");
|
|
82
|
+
// const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
|
|
83
|
+
//
|
|
84
|
+
// const ws = new WebSocket(wsUrl, [
|
|
85
|
+
// queryProtocol,
|
|
86
|
+
// // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
87
|
+
// "rivetkit",
|
|
88
|
+
// ]) as any;
|
|
89
|
+
//
|
|
90
|
+
// await new Promise<void>((resolve, reject) => {
|
|
91
|
+
// ws.addEventListener("open", () => resolve(), { once: true });
|
|
92
|
+
// ws.addEventListener("close", reject);
|
|
93
|
+
// });
|
|
94
|
+
//
|
|
95
|
+
// // Skip welcome message
|
|
96
|
+
// await new Promise<void>((resolve, reject) => {
|
|
97
|
+
// ws.addEventListener("message", () => resolve(), { once: true });
|
|
98
|
+
// ws.addEventListener("close", reject);
|
|
99
|
+
// });
|
|
100
|
+
//
|
|
101
|
+
// // Send and receive echo
|
|
102
|
+
// const testMessage = { test: "vanilla", timestamp: Date.now() };
|
|
103
|
+
// ws.send(JSON.stringify(testMessage));
|
|
104
|
+
//
|
|
105
|
+
// const echoMessage = await new Promise<any>((resolve, reject) => {
|
|
106
|
+
// ws.addEventListener(
|
|
107
|
+
// "message",
|
|
108
|
+
// (event: any) => {
|
|
109
|
+
// resolve(JSON.parse(event.data as string));
|
|
110
|
+
// },
|
|
111
|
+
// { once: true },
|
|
112
|
+
// );
|
|
113
|
+
// ws.addEventListener("close", reject);
|
|
114
|
+
// });
|
|
115
|
+
//
|
|
116
|
+
// expect(echoMessage).toEqual(testMessage);
|
|
117
|
+
//
|
|
118
|
+
// ws.close();
|
|
119
|
+
// });
|
|
120
|
+
//
|
|
121
|
+
// test("should handle connection parameters for authentication", async (c) => {
|
|
122
|
+
// const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
123
|
+
// const WebSocket = await importWebSocket();
|
|
124
|
+
//
|
|
125
|
+
// const actorQuery: ActorQuery = {
|
|
126
|
+
// getOrCreateForKey: {
|
|
127
|
+
// name: "rawWebSocketActor",
|
|
128
|
+
// key: ["vanilla-auth"],
|
|
129
|
+
// },
|
|
130
|
+
// };
|
|
131
|
+
//
|
|
132
|
+
// const connParams = { token: "ws-auth-token", userId: "ws-user123" };
|
|
133
|
+
//
|
|
134
|
+
// // Encode both query and connection params as subprotocols
|
|
135
|
+
// const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
|
|
136
|
+
// const connParamsProtocol = `conn_params.${encodeURIComponent(JSON.stringify(connParams))}`;
|
|
137
|
+
//
|
|
138
|
+
// const wsEndpoint = endpoint
|
|
139
|
+
// .replace(/^http:/, "ws:")
|
|
140
|
+
// .replace(/^https:/, "wss:");
|
|
141
|
+
// const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
|
|
142
|
+
//
|
|
143
|
+
// const ws = new WebSocket(wsUrl, [
|
|
144
|
+
// queryProtocol,
|
|
145
|
+
// connParamsProtocol,
|
|
146
|
+
// // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
147
|
+
// "rivetkit",
|
|
148
|
+
// ]) as any;
|
|
149
|
+
//
|
|
150
|
+
// await new Promise<void>((resolve, reject) => {
|
|
151
|
+
// ws.addEventListener("open", () => {
|
|
152
|
+
// resolve();
|
|
153
|
+
// });
|
|
154
|
+
// ws.addEventListener("error", reject);
|
|
155
|
+
// ws.addEventListener("close", reject);
|
|
156
|
+
// });
|
|
157
|
+
//
|
|
158
|
+
// // Connection should succeed with auth params
|
|
159
|
+
// const welcomeMessage = await new Promise<any>((resolve, reject) => {
|
|
160
|
+
// ws.addEventListener(
|
|
161
|
+
// "message",
|
|
162
|
+
// (event: any) => {
|
|
163
|
+
// resolve(JSON.parse(event.data as string));
|
|
164
|
+
// },
|
|
165
|
+
// { once: true },
|
|
166
|
+
// );
|
|
167
|
+
// ws.addEventListener("close", reject);
|
|
168
|
+
// });
|
|
169
|
+
//
|
|
170
|
+
// expect(welcomeMessage.type).toBe("welcome");
|
|
171
|
+
//
|
|
172
|
+
// ws.close();
|
|
173
|
+
// });
|
|
174
|
+
//
|
|
175
|
+
// test("should handle custom user protocols alongside rivetkit protocols", async (c) => {
|
|
176
|
+
// const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
177
|
+
// const WebSocket = await importWebSocket();
|
|
178
|
+
//
|
|
179
|
+
// const actorQuery: ActorQuery = {
|
|
180
|
+
// getOrCreateForKey: {
|
|
181
|
+
// name: "rawWebSocketActor",
|
|
182
|
+
// key: ["vanilla-protocols"],
|
|
183
|
+
// },
|
|
184
|
+
// };
|
|
185
|
+
//
|
|
186
|
+
// // Include user-defined protocols
|
|
187
|
+
// const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
|
|
188
|
+
// const userProtocol1 = "chat-v1";
|
|
189
|
+
// const userProtocol2 = "custom-protocol";
|
|
190
|
+
//
|
|
191
|
+
// const wsEndpoint = endpoint
|
|
192
|
+
// .replace(/^http:/, "ws:")
|
|
193
|
+
// .replace(/^https:/, "wss:");
|
|
194
|
+
// const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
|
|
195
|
+
//
|
|
196
|
+
// const ws = new WebSocket(wsUrl, [
|
|
197
|
+
// queryProtocol,
|
|
198
|
+
// userProtocol1,
|
|
199
|
+
// userProtocol2,
|
|
200
|
+
// // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
201
|
+
// "rivetkit",
|
|
202
|
+
// ]) as any;
|
|
203
|
+
//
|
|
204
|
+
// await new Promise<void>((resolve, reject) => {
|
|
205
|
+
// ws.addEventListener("open", () => {
|
|
206
|
+
// resolve();
|
|
207
|
+
// });
|
|
208
|
+
// ws.addEventListener("error", reject);
|
|
209
|
+
// ws.addEventListener("close", reject);
|
|
210
|
+
// });
|
|
211
|
+
//
|
|
212
|
+
// // Should connect successfully with custom protocols
|
|
213
|
+
// const welcomeMessage = await new Promise<any>((resolve, reject) => {
|
|
214
|
+
// ws.addEventListener(
|
|
215
|
+
// "message",
|
|
216
|
+
// (event: any) => {
|
|
217
|
+
// resolve(JSON.parse(event.data as string));
|
|
218
|
+
// },
|
|
219
|
+
// { once: true },
|
|
220
|
+
// );
|
|
221
|
+
// ws.addEventListener("close", reject);
|
|
222
|
+
// });
|
|
223
|
+
//
|
|
224
|
+
// expect(welcomeMessage.type).toBe("welcome");
|
|
225
|
+
//
|
|
226
|
+
// ws.close();
|
|
227
|
+
// });
|
|
228
|
+
//
|
|
229
|
+
// test("should handle different paths for WebSocket routes", async (c) => {
|
|
230
|
+
// const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
231
|
+
// const WebSocket = await importWebSocket();
|
|
232
|
+
//
|
|
233
|
+
// const actorQuery: ActorQuery = {
|
|
234
|
+
// getOrCreateForKey: {
|
|
235
|
+
// name: "rawWebSocketActor",
|
|
236
|
+
// key: ["vanilla-paths"],
|
|
237
|
+
// },
|
|
238
|
+
// };
|
|
239
|
+
//
|
|
240
|
+
// const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
|
|
241
|
+
//
|
|
242
|
+
// const wsEndpoint = endpoint
|
|
243
|
+
// .replace(/^http:/, "ws:")
|
|
244
|
+
// .replace(/^https:/, "wss:");
|
|
245
|
+
//
|
|
246
|
+
// // Test different paths
|
|
247
|
+
// const paths = ["chat/room1", "updates/feed", "stream/events"];
|
|
248
|
+
//
|
|
249
|
+
// for (const path of paths) {
|
|
250
|
+
// const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/${path}`;
|
|
251
|
+
// const ws = new WebSocket(wsUrl, [
|
|
252
|
+
// queryProtocol,
|
|
253
|
+
// // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
254
|
+
// "rivetkit",
|
|
255
|
+
// ]) as any;
|
|
256
|
+
//
|
|
257
|
+
// await new Promise<void>((resolve, reject) => {
|
|
258
|
+
// ws.addEventListener("open", () => {
|
|
259
|
+
// resolve();
|
|
260
|
+
// });
|
|
261
|
+
// ws.addEventListener("error", reject);
|
|
262
|
+
// });
|
|
263
|
+
//
|
|
264
|
+
// // Should receive welcome message with the path
|
|
265
|
+
// const welcomeMessage = await new Promise<any>((resolve, reject) => {
|
|
266
|
+
// ws.addEventListener(
|
|
267
|
+
// "message",
|
|
268
|
+
// (event: any) => {
|
|
269
|
+
// resolve(JSON.parse(event.data as string));
|
|
270
|
+
// },
|
|
271
|
+
// { once: true },
|
|
272
|
+
// );
|
|
273
|
+
// ws.addEventListener("close", reject);
|
|
274
|
+
// });
|
|
275
|
+
//
|
|
276
|
+
// expect(welcomeMessage.type).toBe("welcome");
|
|
277
|
+
//
|
|
278
|
+
// ws.close();
|
|
279
|
+
// }
|
|
280
|
+
// });
|
|
281
|
+
//
|
|
282
|
+
// test("should return error for actors without onWebSocket handler", async (c) => {
|
|
283
|
+
// const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
284
|
+
// const WebSocket = await importWebSocket();
|
|
285
|
+
//
|
|
286
|
+
// const actorQuery: ActorQuery = {
|
|
287
|
+
// getOrCreateForKey: {
|
|
288
|
+
// name: "rawWebSocketNoHandlerActor",
|
|
289
|
+
// key: ["vanilla-no-handler"],
|
|
290
|
+
// },
|
|
291
|
+
// };
|
|
292
|
+
//
|
|
293
|
+
// const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
|
|
294
|
+
//
|
|
295
|
+
// const wsEndpoint = endpoint
|
|
296
|
+
// .replace(/^http:/, "ws:")
|
|
297
|
+
// .replace(/^https:/, "wss:");
|
|
298
|
+
// const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
|
|
299
|
+
//
|
|
300
|
+
// const ws = new WebSocket(wsUrl, [
|
|
301
|
+
// queryProtocol,
|
|
302
|
+
//
|
|
303
|
+
// // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
304
|
+
// "rivetkit",
|
|
305
|
+
// ]) as any;
|
|
306
|
+
//
|
|
307
|
+
// // Should fail to connect
|
|
308
|
+
// await new Promise<void>((resolve) => {
|
|
309
|
+
// ws.addEventListener("error", () => resolve(), { once: true });
|
|
310
|
+
// ws.addEventListener("close", () => resolve(), { once: true });
|
|
311
|
+
// });
|
|
312
|
+
//
|
|
313
|
+
// expect(ws.readyState).toBe(ws.CLOSED || 3); // WebSocket.CLOSED
|
|
314
|
+
// });
|
|
315
|
+
//
|
|
316
|
+
// test("should handle binary data over vanilla WebSocket", async (c) => {
|
|
317
|
+
// const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
318
|
+
// const WebSocket = await importWebSocket();
|
|
319
|
+
//
|
|
320
|
+
// const actorQuery: ActorQuery = {
|
|
321
|
+
// getOrCreateForKey: {
|
|
322
|
+
// name: "rawWebSocketActor",
|
|
323
|
+
// key: ["vanilla-binary"],
|
|
324
|
+
// },
|
|
325
|
+
// };
|
|
326
|
+
//
|
|
327
|
+
// const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
|
|
328
|
+
//
|
|
329
|
+
// const wsEndpoint = endpoint
|
|
330
|
+
// .replace(/^http:/, "ws:")
|
|
331
|
+
// .replace(/^https:/, "wss:");
|
|
332
|
+
// const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
|
|
333
|
+
//
|
|
334
|
+
// const ws = new WebSocket(wsUrl, [
|
|
335
|
+
// queryProtocol,
|
|
336
|
+
// // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
337
|
+
// "rivetkit",
|
|
338
|
+
// ]) as any;
|
|
339
|
+
// ws.binaryType = "arraybuffer";
|
|
340
|
+
//
|
|
341
|
+
// await new Promise<void>((resolve, reject) => {
|
|
342
|
+
// ws.addEventListener("open", () => resolve(), { once: true });
|
|
343
|
+
// ws.addEventListener("close", reject);
|
|
344
|
+
// });
|
|
345
|
+
//
|
|
346
|
+
// // Skip welcome message
|
|
347
|
+
// await new Promise<void>((resolve, reject) => {
|
|
348
|
+
// ws.addEventListener("message", () => resolve(), { once: true });
|
|
349
|
+
// ws.addEventListener("close", reject);
|
|
350
|
+
// });
|
|
351
|
+
//
|
|
352
|
+
// // Send binary data
|
|
353
|
+
// const binaryData = new Uint8Array([1, 2, 3, 4, 5]);
|
|
354
|
+
// ws.send(binaryData.buffer);
|
|
355
|
+
//
|
|
356
|
+
// // Receive echoed binary data
|
|
357
|
+
// const echoedData = await new Promise<ArrayBuffer>((resolve, reject) => {
|
|
358
|
+
// ws.addEventListener(
|
|
359
|
+
// "message",
|
|
360
|
+
// (event: any) => {
|
|
361
|
+
// // The actor echoes binary data back as-is
|
|
362
|
+
// resolve(event.data as ArrayBuffer);
|
|
363
|
+
// },
|
|
364
|
+
// { once: true },
|
|
365
|
+
// );
|
|
366
|
+
// ws.addEventListener("close", reject);
|
|
367
|
+
// });
|
|
368
|
+
//
|
|
369
|
+
// // Verify the echoed data matches what we sent
|
|
370
|
+
// const echoedArray = new Uint8Array(echoedData);
|
|
371
|
+
// expect(Array.from(echoedArray)).toEqual([1, 2, 3, 4, 5]);
|
|
372
|
+
//
|
|
373
|
+
// // Now test JSON echo
|
|
374
|
+
// ws.send(JSON.stringify({ type: "binary-test", size: binaryData.length }));
|
|
375
|
+
//
|
|
376
|
+
// const echoMessage = await new Promise<any>((resolve, reject) => {
|
|
377
|
+
// ws.addEventListener(
|
|
378
|
+
// "message",
|
|
379
|
+
// (event: any) => {
|
|
380
|
+
// resolve(JSON.parse(event.data as string));
|
|
381
|
+
// },
|
|
382
|
+
// { once: true },
|
|
383
|
+
// );
|
|
384
|
+
// ws.addEventListener("close", reject);
|
|
385
|
+
// });
|
|
386
|
+
//
|
|
387
|
+
// expect(echoMessage.type).toBe("binary-test");
|
|
388
|
+
// expect(echoMessage.size).toBe(5);
|
|
389
|
+
//
|
|
390
|
+
// ws.close();
|
|
391
|
+
// });
|
|
392
|
+
// });
|
|
393
|
+
// }
|