rivetkit 2.0.3 → 2.0.5
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-4NSUQZ2H.js → chunk-2MD57QF4.js} +119 -115
- package/dist/tsup/chunk-2MD57QF4.js.map +1 -0
- package/dist/tsup/{chunk-GIR3AFFI.cjs → chunk-5QGQK44L.cjs} +103 -44
- package/dist/tsup/chunk-5QGQK44L.cjs.map +1 -0
- package/dist/tsup/chunk-5YTI25C3.cjs +250 -0
- package/dist/tsup/chunk-5YTI25C3.cjs.map +1 -0
- package/dist/tsup/chunk-B2QGJGZQ.js +338 -0
- package/dist/tsup/chunk-B2QGJGZQ.js.map +1 -0
- package/dist/tsup/{chunk-3H7O2A7I.js → chunk-CFFKMUYH.js} +61 -22
- package/dist/tsup/chunk-CFFKMUYH.js.map +1 -0
- package/dist/tsup/{chunk-FLMTTN27.js → chunk-CKA54YQN.js} +15 -8
- package/dist/tsup/chunk-CKA54YQN.js.map +1 -0
- package/dist/tsup/chunk-D7NWUCRK.cjs +20 -0
- package/dist/tsup/chunk-D7NWUCRK.cjs.map +1 -0
- package/dist/tsup/{chunk-FCCPJNMA.cjs → chunk-FGFT4FVX.cjs} +12 -27
- package/dist/tsup/chunk-FGFT4FVX.cjs.map +1 -0
- package/dist/tsup/chunk-I5VTWPHW.js +20 -0
- package/dist/tsup/chunk-I5VTWPHW.js.map +1 -0
- package/dist/tsup/{chunk-6WKQDDUD.cjs → chunk-IRMBWX36.cjs} +146 -142
- package/dist/tsup/chunk-IRMBWX36.cjs.map +1 -0
- package/dist/tsup/chunk-L7QRXNWP.js +6562 -0
- package/dist/tsup/chunk-L7QRXNWP.js.map +1 -0
- package/dist/tsup/{chunk-R2OPSKIV.cjs → chunk-LZIBTLEY.cjs} +20 -13
- package/dist/tsup/chunk-LZIBTLEY.cjs.map +1 -0
- package/dist/tsup/chunk-MRZS2J4X.cjs +6562 -0
- package/dist/tsup/chunk-MRZS2J4X.cjs.map +1 -0
- package/dist/tsup/{chunk-PO4VLDWA.js → chunk-PG3K2LI7.js} +3 -5
- package/dist/tsup/chunk-PG3K2LI7.js.map +1 -0
- package/dist/tsup/{chunk-TZJKSBUQ.cjs → chunk-PHSQJ6QI.cjs} +3 -5
- package/dist/tsup/chunk-PHSQJ6QI.cjs.map +1 -0
- package/dist/tsup/chunk-RM2SVURR.cjs +338 -0
- package/dist/tsup/chunk-RM2SVURR.cjs.map +1 -0
- package/dist/tsup/{chunk-OGAPU3UG.cjs → chunk-WADSS5X4.cjs} +66 -27
- package/dist/tsup/chunk-WADSS5X4.cjs.map +1 -0
- package/dist/tsup/chunk-WNGOBAA7.js +250 -0
- package/dist/tsup/chunk-WNGOBAA7.js.map +1 -0
- package/dist/tsup/{chunk-INGJP237.js → chunk-YPZFLUO6.js} +103 -44
- package/dist/tsup/chunk-YPZFLUO6.js.map +1 -0
- package/dist/tsup/{chunk-6PDXBYI5.js → chunk-YW6Y6VNE.js} +8 -23
- package/dist/tsup/chunk-YW6Y6VNE.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-BvE-Oq7t.d.ts} +215 -234
- package/dist/tsup/{connection-BR_Ve4ku.d.cts → connection-DTzmWwU5.d.cts} +215 -234
- 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 +615 -1357
- package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/driver-test-suite/mod.d.cts +12 -6
- package/dist/tsup/driver-test-suite/mod.d.ts +12 -6
- package/dist/tsup/driver-test-suite/mod.js +1334 -2076
- 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-CctffZNL.d.cts} +2 -3
- package/dist/tsup/{router-endpoints-AYkXG8Tl.d.cts → router-endpoints-DFm1BglJ.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 +5 -3
- package/dist/tsup/utils.cjs.map +1 -1
- package/dist/tsup/utils.d.cts +19 -2
- package/dist/tsup/utils.d.ts +19 -2
- package/dist/tsup/utils.js +4 -2
- package/package.json +6 -6
- 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 +98 -36
- 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 +47 -39
- package/src/actor/router.ts +22 -19
- 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 +87 -61
- package/src/driver-test-suite/test-inline-client-driver.ts +441 -255
- package/src/driver-test-suite/tests/actor-error-handling.ts +4 -12
- package/src/driver-test-suite/tests/actor-handle.ts +33 -0
- package/src/driver-test-suite/tests/actor-inspector.ts +2 -1
- 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 +10 -6
- 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 +36 -21
- package/src/drivers/file-system/log.ts +1 -3
- package/src/drivers/file-system/manager.ts +33 -15
- 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 +378 -1390
- 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 +63 -34
- package/src/registry/run-config.ts +39 -26
- package/src/registry/serve.ts +4 -5
- package/src/remote-manager-driver/actor-http-client.ts +74 -0
- package/src/remote-manager-driver/actor-websocket-client.ts +64 -0
- package/src/remote-manager-driver/api-endpoints.ts +79 -0
- package/src/remote-manager-driver/api-utils.ts +46 -0
- package/src/remote-manager-driver/log.ts +5 -0
- package/src/remote-manager-driver/mod.ts +275 -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/src/utils.ts +53 -0
- 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/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,44 +1,38 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkFGFT4FVXcjs = require('../chunk-FGFT4FVX.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
var _chunkD7NWUCRKcjs = require('../chunk-D7NWUCRK.cjs');
|
|
6
7
|
|
|
7
8
|
|
|
8
|
-
var _chunkUIM22YJLcjs = require('../chunk-UIM22YJL.cjs');
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _chunkMRZS2J4Xcjs = require('../chunk-MRZS2J4X.cjs');
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
var _chunkURVFQMYIcjs = require('../chunk-URVFQMYI.cjs');
|
|
16
15
|
|
|
16
|
+
var _chunkLZIBTLEYcjs = require('../chunk-LZIBTLEY.cjs');
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
var
|
|
20
|
-
require('../chunk-R2OPSKIV.cjs');
|
|
19
|
+
var _chunkPHSQJ6QIcjs = require('../chunk-PHSQJ6QI.cjs');
|
|
21
20
|
|
|
22
21
|
|
|
23
|
-
var
|
|
22
|
+
var _chunkRM2SVURRcjs = require('../chunk-RM2SVURR.cjs');
|
|
24
23
|
|
|
25
24
|
|
|
26
|
-
var _chunkCTBOSFUHcjs = require('../chunk-CTBOSFUH.cjs');
|
|
27
|
-
require('../chunk-UBUC5C3G.cjs');
|
|
28
25
|
|
|
29
26
|
|
|
27
|
+
var _chunkIRMBWX36cjs = require('../chunk-IRMBWX36.cjs');
|
|
30
28
|
|
|
31
29
|
|
|
30
|
+
var _chunk5YTI25C3cjs = require('../chunk-5YTI25C3.cjs');
|
|
31
|
+
require('../chunk-WADSS5X4.cjs');
|
|
32
32
|
|
|
33
|
-
var _chunk6WKQDDUDcjs = require('../chunk-6WKQDDUD.cjs');
|
|
34
33
|
|
|
35
34
|
|
|
36
|
-
var
|
|
37
|
-
require('../chunk-OGAPU3UG.cjs');
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
var _chunkGIR3AFFIcjs = require('../chunk-GIR3AFFI.cjs');
|
|
35
|
+
var _chunk5QGQK44Lcjs = require('../chunk-5QGQK44L.cjs');
|
|
42
36
|
|
|
43
37
|
// src/driver-test-suite/mod.ts
|
|
44
38
|
var _nodeserver = require('@hono/node-server');
|
|
@@ -47,168 +41,75 @@ var _bundlerequire = require('bundle-require');
|
|
|
47
41
|
var _invariant = require('invariant'); var _invariant2 = _interopRequireDefault(_invariant);
|
|
48
42
|
var _vitest = require('vitest');
|
|
49
43
|
|
|
44
|
+
// src/driver-test-suite/log.ts
|
|
45
|
+
function logger() {
|
|
46
|
+
return _chunk5YTI25C3cjs.getLogger.call(void 0, "test-suite");
|
|
47
|
+
}
|
|
48
|
+
|
|
50
49
|
// src/driver-test-suite/tests/action-features.ts
|
|
51
50
|
|
|
52
51
|
|
|
53
52
|
// src/driver-test-suite/utils.ts
|
|
54
|
-
var _path = require('path');
|
|
55
53
|
|
|
56
54
|
|
|
57
55
|
// src/driver-test-suite/test-inline-client-driver.ts
|
|
58
56
|
var _cborx = require('cbor-x'); var cbor = _interopRequireWildcard(_cborx);
|
|
59
|
-
|
|
60
|
-
// src/driver-test-suite/log.ts
|
|
61
|
-
var LOGGER_NAME = "test-suite";
|
|
62
|
-
function logger() {
|
|
63
|
-
return _chunk2CRLFV6Zcjs.getLogger.call(void 0, LOGGER_NAME);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// src/driver-test-suite/test-inline-client-driver.ts
|
|
67
|
-
function createTestInlineClientDriver(endpoint, transport) {
|
|
57
|
+
function createTestInlineClientDriver(endpoint, encoding, transport) {
|
|
68
58
|
return {
|
|
69
|
-
|
|
70
|
-
return makeInlineRequest(
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
59
|
+
getForId(input) {
|
|
60
|
+
return makeInlineRequest(endpoint, encoding, transport, "getForId", [
|
|
61
|
+
input
|
|
62
|
+
]);
|
|
63
|
+
},
|
|
64
|
+
getWithKey(input) {
|
|
65
|
+
return makeInlineRequest(endpoint, encoding, transport, "getWithKey", [
|
|
66
|
+
input
|
|
67
|
+
]);
|
|
77
68
|
},
|
|
78
|
-
|
|
69
|
+
getOrCreateWithKey(input) {
|
|
79
70
|
return makeInlineRequest(
|
|
80
71
|
endpoint,
|
|
81
|
-
|
|
72
|
+
encoding,
|
|
82
73
|
transport,
|
|
83
|
-
"
|
|
84
|
-
[
|
|
74
|
+
"getOrCreateWithKey",
|
|
75
|
+
[input]
|
|
85
76
|
);
|
|
86
77
|
},
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
actorQuery,
|
|
91
|
-
encodingKind
|
|
92
|
-
});
|
|
93
|
-
const wsUrl = new URL(
|
|
94
|
-
`${endpoint}/registry/.test/inline-driver/connect-websocket`
|
|
95
|
-
);
|
|
96
|
-
wsUrl.searchParams.set("actorQuery", JSON.stringify(actorQuery));
|
|
97
|
-
if (params !== void 0)
|
|
98
|
-
wsUrl.searchParams.set("params", JSON.stringify(params));
|
|
99
|
-
wsUrl.searchParams.set("encodingKind", encodingKind);
|
|
100
|
-
const wsProtocol = wsUrl.protocol === "https:" ? "wss:" : "ws:";
|
|
101
|
-
const finalWsUrl = `${wsProtocol}//${wsUrl.host}${wsUrl.pathname}${wsUrl.search}`;
|
|
102
|
-
logger().debug("connecting to websocket", { url: finalWsUrl });
|
|
103
|
-
const ws = new WebSocket2(finalWsUrl, [
|
|
104
|
-
// HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
105
|
-
"rivetkit"
|
|
78
|
+
createActor(input) {
|
|
79
|
+
return makeInlineRequest(endpoint, encoding, transport, "createActor", [
|
|
80
|
+
input
|
|
106
81
|
]);
|
|
107
|
-
return ws;
|
|
108
|
-
},
|
|
109
|
-
connectSse: async (_c, actorQuery, encodingKind, params) => {
|
|
110
|
-
logger().debug("creating sse connection via test inline driver", {
|
|
111
|
-
actorQuery,
|
|
112
|
-
encodingKind,
|
|
113
|
-
params
|
|
114
|
-
});
|
|
115
|
-
const EventSourceImport = await Promise.resolve().then(() => _interopRequireWildcard(require("eventsource")));
|
|
116
|
-
const EventSourceConstructor = EventSourceImport.default || EventSourceImport;
|
|
117
|
-
const actorQueryParam = encodeURIComponent(JSON.stringify(actorQuery));
|
|
118
|
-
const encodingParam = encodeURIComponent(encodingKind);
|
|
119
|
-
const paramsParam = params ? encodeURIComponent(JSON.stringify(params)) : null;
|
|
120
|
-
const sseUrl = new URL(
|
|
121
|
-
`${endpoint}/registry/.test/inline-driver/connect-sse`
|
|
122
|
-
);
|
|
123
|
-
sseUrl.searchParams.set("actorQueryRaw", actorQueryParam);
|
|
124
|
-
sseUrl.searchParams.set("encodingKind", encodingParam);
|
|
125
|
-
if (paramsParam) {
|
|
126
|
-
sseUrl.searchParams.set("params", paramsParam);
|
|
127
|
-
}
|
|
128
|
-
logger().debug("connecting to sse", { url: sseUrl.toString() });
|
|
129
|
-
const eventSource = new EventSourceConstructor(sseUrl.toString());
|
|
130
|
-
await new Promise((resolve2, reject) => {
|
|
131
|
-
eventSource.onopen = () => {
|
|
132
|
-
logger().debug("sse connection established");
|
|
133
|
-
resolve2();
|
|
134
|
-
};
|
|
135
|
-
eventSource.onerror = (event) => {
|
|
136
|
-
logger().error("sse connection failed", { event });
|
|
137
|
-
reject(new Error("Failed to establish SSE connection"));
|
|
138
|
-
};
|
|
139
|
-
setTimeout(() => {
|
|
140
|
-
if (eventSource.readyState !== EventSourceConstructor.OPEN) {
|
|
141
|
-
reject(new Error("SSE connection timed out"));
|
|
142
|
-
}
|
|
143
|
-
}, 1e4);
|
|
144
|
-
});
|
|
145
|
-
return eventSource;
|
|
146
82
|
},
|
|
147
|
-
|
|
83
|
+
async sendRequest(actorId, actorRequest) {
|
|
148
84
|
var _a;
|
|
149
|
-
|
|
85
|
+
const oldUrl = new URL(actorRequest.url);
|
|
86
|
+
const normalizedPath = oldUrl.pathname.startsWith("/") ? oldUrl.pathname.slice(1) : oldUrl.pathname;
|
|
87
|
+
const pathWithQuery = normalizedPath + oldUrl.search;
|
|
88
|
+
logger().debug({
|
|
89
|
+
msg: "sending raw http request via test inline driver",
|
|
150
90
|
actorId,
|
|
151
91
|
encoding,
|
|
152
|
-
|
|
153
|
-
transport
|
|
92
|
+
path: pathWithQuery
|
|
154
93
|
});
|
|
155
|
-
const
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
args: [
|
|
167
|
-
void 0,
|
|
168
|
-
actorId,
|
|
169
|
-
encoding,
|
|
170
|
-
connectionId,
|
|
171
|
-
connectionToken,
|
|
172
|
-
message
|
|
173
|
-
]
|
|
174
|
-
})
|
|
175
|
-
}
|
|
94
|
+
const url = `${endpoint}/.test/inline-driver/send-request/${pathWithQuery}`;
|
|
95
|
+
logger().debug({ msg: "rewriting http url", from: oldUrl, to: url });
|
|
96
|
+
const headers = new Headers(actorRequest.headers);
|
|
97
|
+
headers.set(_chunkIRMBWX36cjs.HEADER_ACTOR_ID, actorId);
|
|
98
|
+
const response = await fetch(
|
|
99
|
+
new Request(url, {
|
|
100
|
+
method: actorRequest.method,
|
|
101
|
+
headers,
|
|
102
|
+
body: actorRequest.body,
|
|
103
|
+
signal: actorRequest.signal
|
|
104
|
+
})
|
|
176
105
|
);
|
|
177
|
-
if (!result.ok) {
|
|
178
|
-
throw new Error(`Failed to send HTTP message: ${result.statusText}`);
|
|
179
|
-
}
|
|
180
|
-
await ((_a = result.body) == null ? void 0 : _a.cancel());
|
|
181
|
-
},
|
|
182
|
-
rawHttpRequest: async (_c, actorQuery, encoding, params, path, init) => {
|
|
183
|
-
var _a;
|
|
184
|
-
const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
|
|
185
|
-
logger().debug("sending raw http request via test inline driver", {
|
|
186
|
-
actorQuery,
|
|
187
|
-
encoding,
|
|
188
|
-
path: normalizedPath
|
|
189
|
-
});
|
|
190
|
-
const url = `${endpoint}/registry/.test/inline-driver/raw-http/${normalizedPath}`;
|
|
191
|
-
logger().debug("rewriting http url", {
|
|
192
|
-
from: path,
|
|
193
|
-
to: url
|
|
194
|
-
});
|
|
195
|
-
const headers = new Headers(init.headers);
|
|
196
|
-
headers.set(_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY, JSON.stringify(actorQuery));
|
|
197
|
-
headers.set(_chunk6WKQDDUDcjs.HEADER_ENCODING, encoding);
|
|
198
|
-
if (params !== void 0) {
|
|
199
|
-
headers.set(_chunk6WKQDDUDcjs.HEADER_CONN_PARAMS, JSON.stringify(params));
|
|
200
|
-
}
|
|
201
|
-
const response = await fetch(url, {
|
|
202
|
-
...init,
|
|
203
|
-
headers
|
|
204
|
-
});
|
|
205
106
|
if (!response.ok && ((_a = response.headers.get("content-type")) == null ? void 0 : _a.includes("application/json"))) {
|
|
206
107
|
try {
|
|
207
108
|
const clonedResponse = response.clone();
|
|
208
109
|
const errorData = await clonedResponse.json();
|
|
209
110
|
if (errorData.error) {
|
|
210
111
|
if (typeof errorData.error === "object") {
|
|
211
|
-
throw new (0,
|
|
112
|
+
throw new (0, _chunkMRZS2J4Xcjs.ActorError)(
|
|
212
113
|
errorData.error.code,
|
|
213
114
|
errorData.error.message,
|
|
214
115
|
errorData.error.metadata
|
|
@@ -216,7 +117,7 @@ function createTestInlineClientDriver(endpoint, transport) {
|
|
|
216
117
|
}
|
|
217
118
|
}
|
|
218
119
|
} catch (e) {
|
|
219
|
-
if (!(e instanceof
|
|
120
|
+
if (!(e instanceof _chunkMRZS2J4Xcjs.ActorError)) {
|
|
220
121
|
return response;
|
|
221
122
|
}
|
|
222
123
|
throw e;
|
|
@@ -224,70 +125,375 @@ function createTestInlineClientDriver(endpoint, transport) {
|
|
|
224
125
|
}
|
|
225
126
|
return response;
|
|
226
127
|
},
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
const WebSocket2 = await _chunkTZJKSBUQcjs.importWebSocket.call(void 0, );
|
|
128
|
+
async openWebSocket(path, actorId, encoding2, params) {
|
|
129
|
+
const WebSocket2 = await _chunkPHSQJ6QIcjs.importWebSocket.call(void 0, );
|
|
230
130
|
const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
|
|
231
|
-
logger().debug(
|
|
232
|
-
"creating
|
|
233
|
-
|
|
234
|
-
actorQuery,
|
|
235
|
-
encoding,
|
|
236
|
-
path: normalizedPath,
|
|
237
|
-
protocols
|
|
238
|
-
}
|
|
239
|
-
);
|
|
131
|
+
logger().debug({
|
|
132
|
+
msg: "creating websocket connection via test inline driver"
|
|
133
|
+
});
|
|
240
134
|
const wsUrl = new URL(
|
|
241
|
-
`${endpoint}
|
|
135
|
+
`${endpoint}/.test/inline-driver/connect-websocket/ws`
|
|
242
136
|
);
|
|
243
|
-
wsUrl.searchParams.set("
|
|
137
|
+
wsUrl.searchParams.set("path", normalizedPath);
|
|
138
|
+
wsUrl.searchParams.set("actorId", actorId);
|
|
244
139
|
if (params !== void 0)
|
|
245
140
|
wsUrl.searchParams.set("params", JSON.stringify(params));
|
|
246
|
-
wsUrl.searchParams.set("encodingKind",
|
|
247
|
-
wsUrl.searchParams.set("path", normalizedPath);
|
|
248
|
-
if (protocols !== void 0)
|
|
249
|
-
wsUrl.searchParams.set("protocols", JSON.stringify(protocols));
|
|
141
|
+
wsUrl.searchParams.set("encodingKind", encoding2);
|
|
250
142
|
const wsProtocol = wsUrl.protocol === "https:" ? "wss:" : "ws:";
|
|
251
143
|
const finalWsUrl = `${wsProtocol}//${wsUrl.host}${wsUrl.pathname}${wsUrl.search}`;
|
|
252
|
-
logger().debug("connecting to
|
|
253
|
-
logger().debug("rewriting websocket url", {
|
|
254
|
-
from: path,
|
|
255
|
-
to: finalWsUrl
|
|
256
|
-
});
|
|
144
|
+
logger().debug({ msg: "connecting to websocket", url: finalWsUrl });
|
|
257
145
|
const ws = new WebSocket2(finalWsUrl, [
|
|
258
146
|
// HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
259
147
|
"rivetkit"
|
|
260
148
|
]);
|
|
261
|
-
logger().debug("test inline driver created websocket", {
|
|
262
|
-
readyState: ws.readyState,
|
|
263
|
-
url: ws.url
|
|
264
|
-
});
|
|
265
149
|
return ws;
|
|
150
|
+
},
|
|
151
|
+
async proxyRequest(c, actorRequest, actorId) {
|
|
152
|
+
return await this.sendRequest(actorId, actorRequest);
|
|
153
|
+
},
|
|
154
|
+
proxyWebSocket(_c, _path, _actorId, _encoding, _params, _authData) {
|
|
155
|
+
throw "UNIMPLEMENTED";
|
|
156
|
+
},
|
|
157
|
+
displayInformation() {
|
|
158
|
+
return { name: "Test Inline", properties: {} };
|
|
266
159
|
}
|
|
160
|
+
// action: async <Args extends Array<unknown> = unknown[], Response = unknown>(
|
|
161
|
+
// _c: HonoContext | undefined,
|
|
162
|
+
// actorQuery: ActorQuery,
|
|
163
|
+
// encoding: Encoding,
|
|
164
|
+
// params: unknown,
|
|
165
|
+
// name: string,
|
|
166
|
+
// args: Args,
|
|
167
|
+
// ): Promise<Response> => {
|
|
168
|
+
// return makeInlineRequest<Response>(
|
|
169
|
+
// endpoint,
|
|
170
|
+
// encoding,
|
|
171
|
+
// transport,
|
|
172
|
+
// "action",
|
|
173
|
+
// [undefined, actorQuery, encoding, params, name, args],
|
|
174
|
+
// );
|
|
175
|
+
// },
|
|
176
|
+
//
|
|
177
|
+
// resolveActorId: async (
|
|
178
|
+
// _c: HonoContext | undefined,
|
|
179
|
+
// actorQuery: ActorQuery,
|
|
180
|
+
// encodingKind: Encoding,
|
|
181
|
+
// params: unknown,
|
|
182
|
+
// ): Promise<string> => {
|
|
183
|
+
// return makeInlineRequest<string>(
|
|
184
|
+
// endpoint,
|
|
185
|
+
// encodingKind,
|
|
186
|
+
// transport,
|
|
187
|
+
// "resolveActorId",
|
|
188
|
+
// [undefined, actorQuery, encodingKind, params],
|
|
189
|
+
// );
|
|
190
|
+
// },
|
|
191
|
+
//
|
|
192
|
+
// connectWebSocket: async (
|
|
193
|
+
// _c: HonoContext | undefined,
|
|
194
|
+
// actorQuery: ActorQuery,
|
|
195
|
+
// encodingKind: Encoding,
|
|
196
|
+
// params: unknown,
|
|
197
|
+
// ): Promise<WebSocket> => {
|
|
198
|
+
// const WebSocket = await importWebSocket();
|
|
199
|
+
//
|
|
200
|
+
// logger().debug({
|
|
201
|
+
// msg: "creating websocket connection via test inline driver",
|
|
202
|
+
// actorQuery,
|
|
203
|
+
// encodingKind,
|
|
204
|
+
// });
|
|
205
|
+
//
|
|
206
|
+
// // Create WebSocket connection to the test endpoint
|
|
207
|
+
// const wsUrl = new URL(
|
|
208
|
+
// `${endpoint}/registry/.test/inline-driver/connect-websocket`,
|
|
209
|
+
// );
|
|
210
|
+
// wsUrl.searchParams.set("actorQuery", JSON.stringify(actorQuery));
|
|
211
|
+
// if (params !== undefined)
|
|
212
|
+
// wsUrl.searchParams.set("params", JSON.stringify(params));
|
|
213
|
+
// wsUrl.searchParams.set("encodingKind", encodingKind);
|
|
214
|
+
//
|
|
215
|
+
// // Convert http/https to ws/wss
|
|
216
|
+
// const wsProtocol = wsUrl.protocol === "https:" ? "wss:" : "ws:";
|
|
217
|
+
// const finalWsUrl = `${wsProtocol}//${wsUrl.host}${wsUrl.pathname}${wsUrl.search}`;
|
|
218
|
+
//
|
|
219
|
+
// logger().debug({ msg: "connecting to websocket", url: finalWsUrl });
|
|
220
|
+
//
|
|
221
|
+
// // Create and return the WebSocket
|
|
222
|
+
// // Node & browser WebSocket types are incompatible
|
|
223
|
+
// const ws = new WebSocket(finalWsUrl, [
|
|
224
|
+
// // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
225
|
+
// "rivetkit",
|
|
226
|
+
// ]) as any;
|
|
227
|
+
//
|
|
228
|
+
// return ws;
|
|
229
|
+
// },
|
|
230
|
+
//
|
|
231
|
+
// connectSse: async (
|
|
232
|
+
// _c: HonoContext | undefined,
|
|
233
|
+
// actorQuery: ActorQuery,
|
|
234
|
+
// encodingKind: Encoding,
|
|
235
|
+
// params: unknown,
|
|
236
|
+
// ): Promise<UniversalEventSource> => {
|
|
237
|
+
// logger().debug({
|
|
238
|
+
// msg: "creating sse connection via test inline driver",
|
|
239
|
+
// actorQuery,
|
|
240
|
+
// encodingKind,
|
|
241
|
+
// params,
|
|
242
|
+
// });
|
|
243
|
+
//
|
|
244
|
+
// // Dynamically import EventSource if needed
|
|
245
|
+
// const EventSourceImport = await import("eventsource");
|
|
246
|
+
// // Handle both ES modules (default) and CommonJS export patterns
|
|
247
|
+
// const EventSourceConstructor =
|
|
248
|
+
// (EventSourceImport as any).default || EventSourceImport;
|
|
249
|
+
//
|
|
250
|
+
// // Encode parameters for the URL
|
|
251
|
+
// const actorQueryParam = encodeURIComponent(JSON.stringify(actorQuery));
|
|
252
|
+
// const encodingParam = encodeURIComponent(encodingKind);
|
|
253
|
+
// const paramsParam = params
|
|
254
|
+
// ? encodeURIComponent(JSON.stringify(params))
|
|
255
|
+
// : null;
|
|
256
|
+
//
|
|
257
|
+
// // Create SSE connection URL
|
|
258
|
+
// const sseUrl = new URL(
|
|
259
|
+
// `${endpoint}/registry/.test/inline-driver/connect-sse`,
|
|
260
|
+
// );
|
|
261
|
+
// sseUrl.searchParams.set("actorQueryRaw", actorQueryParam);
|
|
262
|
+
// sseUrl.searchParams.set("encodingKind", encodingParam);
|
|
263
|
+
// if (paramsParam) {
|
|
264
|
+
// sseUrl.searchParams.set("params", paramsParam);
|
|
265
|
+
// }
|
|
266
|
+
//
|
|
267
|
+
// logger().debug({ msg: "connecting to sse", url: sseUrl.toString() });
|
|
268
|
+
//
|
|
269
|
+
// // Create and return the EventSource
|
|
270
|
+
// const eventSource = new EventSourceConstructor(sseUrl.toString());
|
|
271
|
+
//
|
|
272
|
+
// // Wait for the connection to be established before returning
|
|
273
|
+
// await new Promise<void>((resolve, reject) => {
|
|
274
|
+
// eventSource.onopen = () => {
|
|
275
|
+
// logger().debug({ msg: "sse connection established" });
|
|
276
|
+
// resolve();
|
|
277
|
+
// };
|
|
278
|
+
//
|
|
279
|
+
// eventSource.onerror = (event: Event) => {
|
|
280
|
+
// logger().error({ msg: "sse connection failed", event });
|
|
281
|
+
// reject(new Error("Failed to establish SSE connection"));
|
|
282
|
+
// };
|
|
283
|
+
//
|
|
284
|
+
// // Set a timeout in case the connection never establishes
|
|
285
|
+
// setTimeout(() => {
|
|
286
|
+
// if (eventSource.readyState !== EventSourceConstructor.OPEN) {
|
|
287
|
+
// reject(new Error("SSE connection timed out"));
|
|
288
|
+
// }
|
|
289
|
+
// }, 10000); // 10 second timeout
|
|
290
|
+
// });
|
|
291
|
+
//
|
|
292
|
+
// return eventSource as UniversalEventSource;
|
|
293
|
+
// },
|
|
294
|
+
//
|
|
295
|
+
// sendHttpMessage: async (
|
|
296
|
+
// _c: HonoContext | undefined,
|
|
297
|
+
// actorId: string,
|
|
298
|
+
// encoding: Encoding,
|
|
299
|
+
// connectionId: string,
|
|
300
|
+
// connectionToken: string,
|
|
301
|
+
// message: protocol.ToServer,
|
|
302
|
+
// ): Promise<void> => {
|
|
303
|
+
// logger().debug({
|
|
304
|
+
// msg: "sending http message via test inline driver",
|
|
305
|
+
// actorId,
|
|
306
|
+
// encoding,
|
|
307
|
+
// connectionId,
|
|
308
|
+
// transport,
|
|
309
|
+
// });
|
|
310
|
+
//
|
|
311
|
+
// const result = await fetch(
|
|
312
|
+
// `${endpoint}/registry/.test/inline-driver/call`,
|
|
313
|
+
// {
|
|
314
|
+
// method: "POST",
|
|
315
|
+
// headers: {
|
|
316
|
+
// "Content-Type": "application/json",
|
|
317
|
+
// },
|
|
318
|
+
// body: JSON.stringify({
|
|
319
|
+
// encoding,
|
|
320
|
+
// transport,
|
|
321
|
+
// method: "sendHttpMessage",
|
|
322
|
+
// args: [
|
|
323
|
+
// undefined,
|
|
324
|
+
// actorId,
|
|
325
|
+
// encoding,
|
|
326
|
+
// connectionId,
|
|
327
|
+
// connectionToken,
|
|
328
|
+
// message,
|
|
329
|
+
// ],
|
|
330
|
+
// } satisfies TestInlineDriverCallRequest),
|
|
331
|
+
// },
|
|
332
|
+
// );
|
|
333
|
+
//
|
|
334
|
+
// if (!result.ok) {
|
|
335
|
+
// throw new Error(`Failed to send HTTP message: ${result.statusText}`);
|
|
336
|
+
// }
|
|
337
|
+
//
|
|
338
|
+
// // Discard response
|
|
339
|
+
// await result.body?.cancel();
|
|
340
|
+
// },
|
|
341
|
+
//
|
|
342
|
+
// rawHttpRequest: async (
|
|
343
|
+
// _c: HonoContext | undefined,
|
|
344
|
+
// actorQuery: ActorQuery,
|
|
345
|
+
// encoding: Encoding,
|
|
346
|
+
// params: unknown,
|
|
347
|
+
// path: string,
|
|
348
|
+
// init: RequestInit,
|
|
349
|
+
// ): Promise<Response> => {
|
|
350
|
+
// // Normalize path to match other drivers
|
|
351
|
+
// const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
|
|
352
|
+
//
|
|
353
|
+
// logger().debug({
|
|
354
|
+
// msg: "sending raw http request via test inline driver",
|
|
355
|
+
// actorQuery,
|
|
356
|
+
// encoding,
|
|
357
|
+
// path: normalizedPath,
|
|
358
|
+
// });
|
|
359
|
+
//
|
|
360
|
+
// // Use the dedicated raw HTTP endpoint
|
|
361
|
+
// const url = `${endpoint}/registry/.test/inline-driver/raw-http/${normalizedPath}`;
|
|
362
|
+
//
|
|
363
|
+
// logger().debug({ msg: "rewriting http url", from: path, to: url });
|
|
364
|
+
//
|
|
365
|
+
// // Merge headers with our metadata
|
|
366
|
+
// const headers = new Headers(init.headers);
|
|
367
|
+
// headers.set(HEADER_ACTOR_QUERY, JSON.stringify(actorQuery));
|
|
368
|
+
// headers.set(HEADER_ENCODING, encoding);
|
|
369
|
+
// if (params !== undefined) {
|
|
370
|
+
// headers.set(HEADER_CONN_PARAMS, JSON.stringify(params));
|
|
371
|
+
// }
|
|
372
|
+
//
|
|
373
|
+
// // Forward the request directly
|
|
374
|
+
// const response = await fetch(url, {
|
|
375
|
+
// ...init,
|
|
376
|
+
// headers,
|
|
377
|
+
// });
|
|
378
|
+
//
|
|
379
|
+
// // Check if it's an error response from our handler
|
|
380
|
+
// if (
|
|
381
|
+
// !response.ok &&
|
|
382
|
+
// response.headers.get("content-type")?.includes("application/json")
|
|
383
|
+
// ) {
|
|
384
|
+
// try {
|
|
385
|
+
// // Clone the response to avoid consuming the body
|
|
386
|
+
// const clonedResponse = response.clone();
|
|
387
|
+
// const errorData = (await clonedResponse.json()) as any;
|
|
388
|
+
// if (errorData.error) {
|
|
389
|
+
// // Handle both error formats:
|
|
390
|
+
// // 1. { error: { code, message, metadata } } - structured format
|
|
391
|
+
// // 2. { error: "message" } - simple string format (from custom onFetch handlers)
|
|
392
|
+
// if (typeof errorData.error === "object") {
|
|
393
|
+
// throw new ClientActorError(
|
|
394
|
+
// errorData.error.code,
|
|
395
|
+
// errorData.error.message,
|
|
396
|
+
// errorData.error.metadata,
|
|
397
|
+
// );
|
|
398
|
+
// }
|
|
399
|
+
// // For simple string errors, just return the response as-is
|
|
400
|
+
// // This allows custom onFetch handlers to return their own error formats
|
|
401
|
+
// }
|
|
402
|
+
// } catch (e) {
|
|
403
|
+
// // If it's not our error format, just return the response as-is
|
|
404
|
+
// if (!(e instanceof ClientActorError)) {
|
|
405
|
+
// return response;
|
|
406
|
+
// }
|
|
407
|
+
// throw e;
|
|
408
|
+
// }
|
|
409
|
+
// }
|
|
410
|
+
//
|
|
411
|
+
// return response;
|
|
412
|
+
// },
|
|
413
|
+
//
|
|
414
|
+
// rawWebSocket: async (
|
|
415
|
+
// _c: HonoContext | undefined,
|
|
416
|
+
// actorQuery: ActorQuery,
|
|
417
|
+
// encoding: Encoding,
|
|
418
|
+
// params: unknown,
|
|
419
|
+
// path: string,
|
|
420
|
+
// protocols: string | string[] | undefined,
|
|
421
|
+
// ): Promise<WebSocket> => {
|
|
422
|
+
// logger().debug({ msg: "test inline driver rawWebSocket called" });
|
|
423
|
+
// const WebSocket = await importWebSocket();
|
|
424
|
+
//
|
|
425
|
+
// // Normalize path to match other drivers
|
|
426
|
+
// const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
|
|
427
|
+
//
|
|
428
|
+
// logger().debug({
|
|
429
|
+
// msg: "creating raw websocket connection via test inline driver",
|
|
430
|
+
// actorQuery,
|
|
431
|
+
// encoding,
|
|
432
|
+
// path: normalizedPath,
|
|
433
|
+
// protocols,
|
|
434
|
+
// });
|
|
435
|
+
//
|
|
436
|
+
// // Create WebSocket connection to the test endpoint
|
|
437
|
+
// const wsUrl = new URL(
|
|
438
|
+
// `${endpoint}/registry/.test/inline-driver/raw-websocket`,
|
|
439
|
+
// );
|
|
440
|
+
// wsUrl.searchParams.set("actorQuery", JSON.stringify(actorQuery));
|
|
441
|
+
// if (params !== undefined)
|
|
442
|
+
// wsUrl.searchParams.set("params", JSON.stringify(params));
|
|
443
|
+
// wsUrl.searchParams.set("encodingKind", encoding);
|
|
444
|
+
// wsUrl.searchParams.set("path", normalizedPath);
|
|
445
|
+
// if (protocols !== undefined)
|
|
446
|
+
// wsUrl.searchParams.set("protocols", JSON.stringify(protocols));
|
|
447
|
+
//
|
|
448
|
+
// // Convert http/https to ws/wss
|
|
449
|
+
// const wsProtocol = wsUrl.protocol === "https:" ? "wss:" : "ws:";
|
|
450
|
+
// const finalWsUrl = `${wsProtocol}//${wsUrl.host}${wsUrl.pathname}${wsUrl.search}`;
|
|
451
|
+
//
|
|
452
|
+
// logger().debug({ msg: "connecting to raw websocket", url: finalWsUrl });
|
|
453
|
+
//
|
|
454
|
+
// logger().debug({
|
|
455
|
+
// msg: "rewriting websocket url",
|
|
456
|
+
// from: path,
|
|
457
|
+
// to: finalWsUrl,
|
|
458
|
+
// });
|
|
459
|
+
//
|
|
460
|
+
// // Create and return the WebSocket
|
|
461
|
+
// // Node & browser WebSocket types are incompatible
|
|
462
|
+
// const ws = new WebSocket(finalWsUrl, [
|
|
463
|
+
// // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
464
|
+
// "rivetkit",
|
|
465
|
+
// ]) as any;
|
|
466
|
+
//
|
|
467
|
+
// logger().debug({
|
|
468
|
+
// msg: "test inline driver created websocket",
|
|
469
|
+
// readyState: ws.readyState,
|
|
470
|
+
// url: ws.url,
|
|
471
|
+
// });
|
|
472
|
+
//
|
|
473
|
+
// return ws;
|
|
474
|
+
// },
|
|
267
475
|
};
|
|
268
476
|
}
|
|
269
477
|
async function makeInlineRequest(endpoint, encoding, transport, method, args) {
|
|
270
|
-
logger().debug(
|
|
478
|
+
logger().debug({
|
|
479
|
+
msg: "sending inline request",
|
|
271
480
|
encoding,
|
|
272
481
|
transport,
|
|
273
482
|
method,
|
|
274
483
|
args
|
|
275
484
|
});
|
|
276
|
-
const response = await fetch(
|
|
277
|
-
|
|
278
|
-
{
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
})
|
|
289
|
-
}
|
|
290
|
-
);
|
|
485
|
+
const response = await fetch(`${endpoint}/.test/inline-driver/call`, {
|
|
486
|
+
method: "POST",
|
|
487
|
+
headers: {
|
|
488
|
+
"Content-Type": "application/json"
|
|
489
|
+
},
|
|
490
|
+
body: cbor.encode({
|
|
491
|
+
encoding,
|
|
492
|
+
transport,
|
|
493
|
+
method,
|
|
494
|
+
args
|
|
495
|
+
})
|
|
496
|
+
});
|
|
291
497
|
if (!response.ok) {
|
|
292
498
|
throw new Error(`Failed to call inline ${method}: ${response.statusText}`);
|
|
293
499
|
}
|
|
@@ -298,13 +504,14 @@ async function makeInlineRequest(endpoint, encoding, transport, method, args) {
|
|
|
298
504
|
if ("ok" in callResponse) {
|
|
299
505
|
return callResponse.ok;
|
|
300
506
|
} else if ("err" in callResponse) {
|
|
301
|
-
throw new (0,
|
|
507
|
+
throw new (0, _chunkMRZS2J4Xcjs.ActorError)(
|
|
508
|
+
callResponse.err.group,
|
|
302
509
|
callResponse.err.code,
|
|
303
510
|
callResponse.err.message,
|
|
304
511
|
callResponse.err.metadata
|
|
305
512
|
);
|
|
306
513
|
} else {
|
|
307
|
-
|
|
514
|
+
_chunkIRMBWX36cjs.assertUnreachable.call(void 0, callResponse);
|
|
308
515
|
}
|
|
309
516
|
}
|
|
310
517
|
|
|
@@ -315,22 +522,25 @@ async function setupDriverTest(c, driverTestConfig) {
|
|
|
315
522
|
_vitest.vi.useFakeTimers();
|
|
316
523
|
_vitest.vi.setSystemTime(FAKE_TIME);
|
|
317
524
|
}
|
|
318
|
-
const
|
|
319
|
-
const { endpoint, cleanup } = await driverTestConfig.start(projectPath);
|
|
525
|
+
const { endpoint, namespace, runnerName, cleanup } = await driverTestConfig.start();
|
|
320
526
|
c.onTestFinished(cleanup);
|
|
321
527
|
let client;
|
|
322
528
|
if (driverTestConfig.clientType === "http") {
|
|
323
|
-
client =
|
|
529
|
+
client = _chunkD7NWUCRKcjs.createClient.call(void 0, {
|
|
530
|
+
endpoint,
|
|
531
|
+
namespace,
|
|
532
|
+
runnerName,
|
|
324
533
|
transport: driverTestConfig.transport
|
|
325
534
|
});
|
|
326
535
|
} else if (driverTestConfig.clientType === "inline") {
|
|
327
|
-
const
|
|
536
|
+
const managerDriver = createTestInlineClientDriver(
|
|
328
537
|
endpoint,
|
|
538
|
+
"bare",
|
|
329
539
|
_nullishCoalesce(driverTestConfig.transport, () => ( "websocket"))
|
|
330
540
|
);
|
|
331
|
-
client =
|
|
541
|
+
client = _chunkMRZS2J4Xcjs.createClientWithDriver.call(void 0, managerDriver);
|
|
332
542
|
} else {
|
|
333
|
-
|
|
543
|
+
_chunkIRMBWX36cjs.assertUnreachable.call(void 0, driverTestConfig.clientType);
|
|
334
544
|
}
|
|
335
545
|
if (!driverTestConfig.HACK_skipCleanupNet) {
|
|
336
546
|
c.onTestFinished(async () => await client.dispose());
|
|
@@ -342,7 +552,7 @@ async function setupDriverTest(c, driverTestConfig) {
|
|
|
342
552
|
}
|
|
343
553
|
async function waitFor(driverTestConfig, ms) {
|
|
344
554
|
if (driverTestConfig.useRealTimers) {
|
|
345
|
-
return new Promise((
|
|
555
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
346
556
|
} else {
|
|
347
557
|
_vitest.vi.advanceTimersByTime(ms);
|
|
348
558
|
return Promise.resolve();
|
|
@@ -430,432 +640,6 @@ function runActionFeaturesTests(driverTestConfig) {
|
|
|
430
640
|
});
|
|
431
641
|
}
|
|
432
642
|
|
|
433
|
-
// src/driver-test-suite/tests/actor-auth.ts
|
|
434
|
-
|
|
435
|
-
function runActorAuthTests(driverTestConfig) {
|
|
436
|
-
_vitest.describe.call(void 0, "Actor Authentication Tests", () => {
|
|
437
|
-
_vitest.describe.call(void 0, "Basic Authentication", () => {
|
|
438
|
-
_vitest.test.call(void 0, "should allow access with valid auth", async (c) => {
|
|
439
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
440
|
-
const instance = client.authActor.getOrCreate(void 0, {
|
|
441
|
-
params: { apiKey: "valid-api-key" }
|
|
442
|
-
});
|
|
443
|
-
const authData = await instance.getUserAuth();
|
|
444
|
-
if (driverTestConfig.clientType === "inline") {
|
|
445
|
-
_vitest.expect.call(void 0, authData).toBeUndefined();
|
|
446
|
-
} else {
|
|
447
|
-
_vitest.expect.call(void 0, authData).toEqual({
|
|
448
|
-
userId: "user123",
|
|
449
|
-
token: "valid-api-key"
|
|
450
|
-
});
|
|
451
|
-
}
|
|
452
|
-
const requests = await instance.getRequests();
|
|
453
|
-
_vitest.expect.call(void 0, requests).toBe(1);
|
|
454
|
-
});
|
|
455
|
-
_vitest.test.call(void 0, "should deny access with invalid auth", async (c) => {
|
|
456
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
457
|
-
const instance = client.authActor.getOrCreate();
|
|
458
|
-
if (driverTestConfig.clientType === "inline") {
|
|
459
|
-
const requests = await instance.getRequests();
|
|
460
|
-
_vitest.expect.call(void 0, typeof requests).toBe("number");
|
|
461
|
-
} else {
|
|
462
|
-
try {
|
|
463
|
-
await instance.getRequests();
|
|
464
|
-
_vitest.expect.fail("Expected authentication error");
|
|
465
|
-
} catch (error) {
|
|
466
|
-
_vitest.expect.call(void 0, error.code).toBe("missing_auth");
|
|
467
|
-
}
|
|
468
|
-
}
|
|
469
|
-
});
|
|
470
|
-
_vitest.test.call(void 0, "should expose auth data on connection", async (c) => {
|
|
471
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
472
|
-
const instance = client.authActor.getOrCreate(void 0, {
|
|
473
|
-
params: { apiKey: "valid-api-key" }
|
|
474
|
-
});
|
|
475
|
-
const authData = await instance.getUserAuth();
|
|
476
|
-
if (driverTestConfig.clientType === "inline") {
|
|
477
|
-
_vitest.expect.call(void 0, authData).toBeUndefined();
|
|
478
|
-
} else {
|
|
479
|
-
_vitest.expect.call(void 0, authData).toBeDefined();
|
|
480
|
-
_vitest.expect.call(void 0, authData.userId).toBe("user123");
|
|
481
|
-
_vitest.expect.call(void 0, authData.token).toBe("valid-api-key");
|
|
482
|
-
}
|
|
483
|
-
});
|
|
484
|
-
});
|
|
485
|
-
_vitest.describe.call(void 0, "Intent-Based Authentication", () => {
|
|
486
|
-
_vitest.test.call(void 0, "should allow get operations for any role", async (c) => {
|
|
487
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
488
|
-
const createdInstance = await client.intentAuthActor.create(["foo"], {
|
|
489
|
-
params: { role: "admin" }
|
|
490
|
-
});
|
|
491
|
-
const actorId = await createdInstance.resolve();
|
|
492
|
-
if (driverTestConfig.clientType === "inline") {
|
|
493
|
-
const instance = client.intentAuthActor.getForId(actorId);
|
|
494
|
-
const value = await instance.getValue();
|
|
495
|
-
_vitest.expect.call(void 0, value).toBe(0);
|
|
496
|
-
} else {
|
|
497
|
-
const instance = client.intentAuthActor.getForId(actorId, {
|
|
498
|
-
params: { role: "user" }
|
|
499
|
-
// Actions require user or admin role
|
|
500
|
-
});
|
|
501
|
-
const value = await instance.getValue();
|
|
502
|
-
_vitest.expect.call(void 0, value).toBe(0);
|
|
503
|
-
}
|
|
504
|
-
});
|
|
505
|
-
_vitest.test.call(void 0, "should require admin role for create operations", async (c) => {
|
|
506
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
507
|
-
if (driverTestConfig.clientType === "inline") {
|
|
508
|
-
const instance = client.intentAuthActor.getOrCreate(void 0, {
|
|
509
|
-
params: { role: "user" }
|
|
510
|
-
});
|
|
511
|
-
const value = await instance.getValue();
|
|
512
|
-
_vitest.expect.call(void 0, value).toBe(0);
|
|
513
|
-
} else {
|
|
514
|
-
try {
|
|
515
|
-
const instance = client.intentAuthActor.getOrCreate(void 0, {
|
|
516
|
-
params: { role: "user" }
|
|
517
|
-
});
|
|
518
|
-
await instance.getValue();
|
|
519
|
-
_vitest.expect.fail("Expected permission error for create operation");
|
|
520
|
-
} catch (error) {
|
|
521
|
-
_vitest.expect.call(void 0, error.code).toBe("insufficient_permissions");
|
|
522
|
-
_vitest.expect.call(void 0, error.message).toContain(
|
|
523
|
-
"Admin role required"
|
|
524
|
-
);
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
});
|
|
528
|
-
_vitest.test.call(void 0, "should allow actions for user and admin roles", async (c) => {
|
|
529
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
530
|
-
const createdInstance = await client.intentAuthActor.create(["foo"], {
|
|
531
|
-
params: { role: "admin" }
|
|
532
|
-
});
|
|
533
|
-
const actorId = await createdInstance.resolve();
|
|
534
|
-
const instance = client.intentAuthActor.getForId(actorId, {
|
|
535
|
-
params: { role: "guest" }
|
|
536
|
-
});
|
|
537
|
-
if (driverTestConfig.clientType === "inline") {
|
|
538
|
-
const result = await instance.setValue(42);
|
|
539
|
-
_vitest.expect.call(void 0, result).toBe(42);
|
|
540
|
-
} else {
|
|
541
|
-
try {
|
|
542
|
-
await instance.setValue(42);
|
|
543
|
-
_vitest.expect.fail("Expected permission error for action");
|
|
544
|
-
} catch (error) {
|
|
545
|
-
_vitest.expect.call(void 0, error.code).toBe("insufficient_permissions");
|
|
546
|
-
_vitest.expect.call(void 0, error.message).toContain(
|
|
547
|
-
"User or admin role required"
|
|
548
|
-
);
|
|
549
|
-
}
|
|
550
|
-
}
|
|
551
|
-
});
|
|
552
|
-
});
|
|
553
|
-
_vitest.describe.call(void 0, "Public Access", () => {
|
|
554
|
-
_vitest.test.call(void 0, "should allow access with empty onAuth", async (c) => {
|
|
555
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
556
|
-
const instance = client.publicActor.getOrCreate();
|
|
557
|
-
const visitors = await instance.visit();
|
|
558
|
-
_vitest.expect.call(void 0, visitors).toBe(1);
|
|
559
|
-
const visitors2 = await instance.visit();
|
|
560
|
-
_vitest.expect.call(void 0, visitors2).toBe(2);
|
|
561
|
-
});
|
|
562
|
-
_vitest.test.call(void 0, "should deny access without onAuth defined", async (c) => {
|
|
563
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
564
|
-
const instance = client.noAuthActor.getOrCreate();
|
|
565
|
-
if (driverTestConfig.clientType === "inline") {
|
|
566
|
-
const value = await instance.getValue();
|
|
567
|
-
_vitest.expect.call(void 0, value).toBe(42);
|
|
568
|
-
} else {
|
|
569
|
-
try {
|
|
570
|
-
await instance.getValue();
|
|
571
|
-
_vitest.expect.fail(
|
|
572
|
-
"Expected access to be denied for actor without onAuth"
|
|
573
|
-
);
|
|
574
|
-
} catch (error) {
|
|
575
|
-
_vitest.expect.call(void 0, error.code).toBe("forbidden");
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
|
-
});
|
|
579
|
-
});
|
|
580
|
-
_vitest.describe.call(void 0, "Async Authentication", () => {
|
|
581
|
-
_vitest.test.call(void 0, "should handle promise-based auth", async (c) => {
|
|
582
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
583
|
-
const instance = client.asyncAuthActor.getOrCreate(void 0, {
|
|
584
|
-
params: { token: "valid" }
|
|
585
|
-
});
|
|
586
|
-
const result = await instance.increment();
|
|
587
|
-
_vitest.expect.call(void 0, result).toBe(1);
|
|
588
|
-
const authData = await instance.getAuthData();
|
|
589
|
-
if (driverTestConfig.clientType === "inline") {
|
|
590
|
-
_vitest.expect.call(void 0, authData).toBeUndefined();
|
|
591
|
-
} else {
|
|
592
|
-
_vitest.expect.call(void 0, authData).toBeDefined();
|
|
593
|
-
_vitest.expect.call(void 0, authData.userId).toBe("user-valid");
|
|
594
|
-
_vitest.expect.call(void 0, authData.validated).toBe(true);
|
|
595
|
-
}
|
|
596
|
-
});
|
|
597
|
-
_vitest.test.call(void 0, "should handle async auth failures", async (c) => {
|
|
598
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
599
|
-
const instance = client.asyncAuthActor.getOrCreate();
|
|
600
|
-
if (driverTestConfig.clientType === "inline") {
|
|
601
|
-
const result = await instance.increment();
|
|
602
|
-
_vitest.expect.call(void 0, result).toBe(1);
|
|
603
|
-
} else {
|
|
604
|
-
try {
|
|
605
|
-
await instance.increment();
|
|
606
|
-
_vitest.expect.fail("Expected async auth failure");
|
|
607
|
-
} catch (error) {
|
|
608
|
-
_vitest.expect.call(void 0, error.code).toBe("missing_token");
|
|
609
|
-
}
|
|
610
|
-
}
|
|
611
|
-
});
|
|
612
|
-
});
|
|
613
|
-
_vitest.describe.call(void 0, "Authentication Across Transports", () => {
|
|
614
|
-
if (driverTestConfig.transport === "websocket") {
|
|
615
|
-
_vitest.test.call(void 0, "should authenticate WebSocket connections", async (c) => {
|
|
616
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
617
|
-
const instance = client.authActor.getOrCreate(void 0, {
|
|
618
|
-
params: { apiKey: "valid-api-key" }
|
|
619
|
-
});
|
|
620
|
-
const authData = await instance.getUserAuth();
|
|
621
|
-
_vitest.expect.call(void 0, authData).toBeDefined();
|
|
622
|
-
_vitest.expect.call(void 0, authData.userId).toBe("user123");
|
|
623
|
-
});
|
|
624
|
-
}
|
|
625
|
-
_vitest.test.call(void 0, "should authenticate HTTP actions", async (c) => {
|
|
626
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
627
|
-
const instance = client.authActor.getOrCreate(void 0, {
|
|
628
|
-
params: { apiKey: "valid-api-key" }
|
|
629
|
-
});
|
|
630
|
-
const requests = await instance.getRequests();
|
|
631
|
-
_vitest.expect.call(void 0, typeof requests).toBe("number");
|
|
632
|
-
});
|
|
633
|
-
});
|
|
634
|
-
_vitest.describe.call(void 0, "Error Handling", () => {
|
|
635
|
-
_vitest.test.call(void 0, "should handle auth errors gracefully", async (c) => {
|
|
636
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
637
|
-
const instance = client.authActor.getOrCreate();
|
|
638
|
-
if (driverTestConfig.clientType === "inline") {
|
|
639
|
-
const requests = await instance.getRequests();
|
|
640
|
-
_vitest.expect.call(void 0, typeof requests).toBe("number");
|
|
641
|
-
} else {
|
|
642
|
-
try {
|
|
643
|
-
await instance.getRequests();
|
|
644
|
-
_vitest.expect.fail("Expected authentication error");
|
|
645
|
-
} catch (error) {
|
|
646
|
-
const actorError = error;
|
|
647
|
-
_vitest.expect.call(void 0, actorError.code).toBeDefined();
|
|
648
|
-
_vitest.expect.call(void 0, actorError.message).toBeDefined();
|
|
649
|
-
}
|
|
650
|
-
}
|
|
651
|
-
});
|
|
652
|
-
_vitest.test.call(void 0, "should preserve error details for debugging", async (c) => {
|
|
653
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
654
|
-
const instance = client.asyncAuthActor.getOrCreate();
|
|
655
|
-
if (driverTestConfig.clientType === "inline") {
|
|
656
|
-
const result = await instance.increment();
|
|
657
|
-
_vitest.expect.call(void 0, result).toBe(1);
|
|
658
|
-
} else {
|
|
659
|
-
try {
|
|
660
|
-
await instance.increment();
|
|
661
|
-
_vitest.expect.fail("Expected token error");
|
|
662
|
-
} catch (error) {
|
|
663
|
-
const actorError = error;
|
|
664
|
-
_vitest.expect.call(void 0, actorError.code).toBe("missing_token");
|
|
665
|
-
_vitest.expect.call(void 0, actorError.message).toBe("Token required");
|
|
666
|
-
}
|
|
667
|
-
}
|
|
668
|
-
});
|
|
669
|
-
});
|
|
670
|
-
_vitest.describe.call(void 0, "Raw HTTP Authentication", () => {
|
|
671
|
-
_vitest.test.call(void 0, "should allow raw HTTP access with valid auth", async (c) => {
|
|
672
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
673
|
-
const instance = client.rawHttpAuthActor.getOrCreate(void 0, {
|
|
674
|
-
params: { apiKey: "valid-api-key" }
|
|
675
|
-
});
|
|
676
|
-
const response = await instance.fetch("api/auth-info");
|
|
677
|
-
_vitest.expect.call(void 0, response.ok).toBe(true);
|
|
678
|
-
const data = await response.json();
|
|
679
|
-
_vitest.expect.call(void 0, data.message).toBe("Authenticated request");
|
|
680
|
-
_vitest.expect.call(void 0, data.requestCount).toBe(1);
|
|
681
|
-
const count = await instance.getRequestCount();
|
|
682
|
-
_vitest.expect.call(void 0, count).toBe(1);
|
|
683
|
-
});
|
|
684
|
-
_vitest.test.call(void 0, "should deny raw HTTP access without auth", async (c) => {
|
|
685
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
686
|
-
const instance = client.rawHttpAuthActor.getOrCreate();
|
|
687
|
-
const response = await instance.fetch("api/protected");
|
|
688
|
-
if (driverTestConfig.clientType === "inline") {
|
|
689
|
-
_vitest.expect.call(void 0, response.ok).toBe(true);
|
|
690
|
-
_vitest.expect.call(void 0, response.status).toBe(200);
|
|
691
|
-
} else {
|
|
692
|
-
_vitest.expect.call(void 0, response.ok).toBe(false);
|
|
693
|
-
_vitest.expect.call(void 0, response.status).toBe(400);
|
|
694
|
-
}
|
|
695
|
-
try {
|
|
696
|
-
const errorData = await response.json();
|
|
697
|
-
_vitest.expect.call(void 0, errorData.c || errorData.code).toBe("missing_auth");
|
|
698
|
-
} catch (e2) {
|
|
699
|
-
}
|
|
700
|
-
});
|
|
701
|
-
_vitest.test.call(void 0, "should deny raw HTTP for actors without onAuth", async (c) => {
|
|
702
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
703
|
-
const instance = client.rawHttpNoAuthActor.getOrCreate();
|
|
704
|
-
const response = await instance.fetch("api/test");
|
|
705
|
-
if (driverTestConfig.clientType === "inline") {
|
|
706
|
-
_vitest.expect.call(void 0, response.ok).toBe(true);
|
|
707
|
-
_vitest.expect.call(void 0, response.status).toBe(200);
|
|
708
|
-
} else {
|
|
709
|
-
_vitest.expect.call(void 0, response.ok).toBe(false);
|
|
710
|
-
_vitest.expect.call(void 0, response.status).toBe(403);
|
|
711
|
-
}
|
|
712
|
-
try {
|
|
713
|
-
const errorData = await response.json();
|
|
714
|
-
_vitest.expect.call(void 0, errorData.c || errorData.code).toBe("forbidden");
|
|
715
|
-
} catch (e3) {
|
|
716
|
-
}
|
|
717
|
-
});
|
|
718
|
-
_vitest.test.call(void 0, "should allow public raw HTTP access", async (c) => {
|
|
719
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
720
|
-
const instance = client.rawHttpPublicActor.getOrCreate();
|
|
721
|
-
const response = await instance.fetch("api/visit");
|
|
722
|
-
_vitest.expect.call(void 0, response.ok).toBe(true);
|
|
723
|
-
const data = await response.json();
|
|
724
|
-
_vitest.expect.call(void 0, data.message).toBe("Welcome visitor!");
|
|
725
|
-
_vitest.expect.call(void 0, data.count).toBe(1);
|
|
726
|
-
const response2 = await instance.fetch("api/visit");
|
|
727
|
-
const data2 = await response2.json();
|
|
728
|
-
_vitest.expect.call(void 0, data2.count).toBe(2);
|
|
729
|
-
});
|
|
730
|
-
_vitest.test.call(void 0, "should handle custom auth in onFetch", async (c) => {
|
|
731
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
732
|
-
const instance = client.rawHttpCustomAuthActor.getOrCreate();
|
|
733
|
-
const response1 = await instance.fetch("api/data");
|
|
734
|
-
_vitest.expect.call(void 0, response1.ok).toBe(false);
|
|
735
|
-
_vitest.expect.call(void 0, response1.status).toBe(401);
|
|
736
|
-
const error1 = await response1.json();
|
|
737
|
-
_vitest.expect.call(void 0, error1.error).toBe("Unauthorized");
|
|
738
|
-
const response2 = await instance.fetch("api/data", {
|
|
739
|
-
headers: {
|
|
740
|
-
Authorization: "Bearer wrong-token"
|
|
741
|
-
}
|
|
742
|
-
});
|
|
743
|
-
_vitest.expect.call(void 0, response2.ok).toBe(false);
|
|
744
|
-
_vitest.expect.call(void 0, response2.status).toBe(403);
|
|
745
|
-
const response3 = await instance.fetch("api/data", {
|
|
746
|
-
headers: {
|
|
747
|
-
Authorization: "Bearer custom-token"
|
|
748
|
-
}
|
|
749
|
-
});
|
|
750
|
-
_vitest.expect.call(void 0, response3.ok).toBe(true);
|
|
751
|
-
const data = await response3.json();
|
|
752
|
-
_vitest.expect.call(void 0, data.message).toBe("Authorized!");
|
|
753
|
-
_vitest.expect.call(void 0, data.authorized).toBe(1);
|
|
754
|
-
const stats = await instance.getStats();
|
|
755
|
-
_vitest.expect.call(void 0, stats.authorized).toBe(1);
|
|
756
|
-
_vitest.expect.call(void 0, stats.unauthorized).toBe(2);
|
|
757
|
-
});
|
|
758
|
-
});
|
|
759
|
-
_vitest.describe.call(void 0, "Raw WebSocket Authentication", () => {
|
|
760
|
-
_vitest.test.call(void 0, "should allow raw WebSocket access with valid auth", async (c) => {
|
|
761
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
762
|
-
const instance = client.rawWebSocketAuthActor.getOrCreate(void 0, {
|
|
763
|
-
params: { apiKey: "valid-api-key" }
|
|
764
|
-
});
|
|
765
|
-
const ws = await instance.websocket();
|
|
766
|
-
const welcomePromise = new Promise((resolve2, reject) => {
|
|
767
|
-
ws.addEventListener("message", (event) => {
|
|
768
|
-
const data = JSON.parse(event.data);
|
|
769
|
-
if (data.type === "welcome") {
|
|
770
|
-
resolve2(data);
|
|
771
|
-
}
|
|
772
|
-
});
|
|
773
|
-
ws.addEventListener("close", () => reject("closed"));
|
|
774
|
-
});
|
|
775
|
-
const welcomeData = await welcomePromise;
|
|
776
|
-
_vitest.expect.call(void 0, welcomeData.message).toBe("Authenticated WebSocket connection");
|
|
777
|
-
_vitest.expect.call(void 0, welcomeData.connectionCount).toBe(1);
|
|
778
|
-
ws.close();
|
|
779
|
-
});
|
|
780
|
-
_vitest.test.call(void 0, "should deny raw WebSocket access without auth", async (c) => {
|
|
781
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
782
|
-
const instance = client.rawWebSocketAuthActor.getOrCreate();
|
|
783
|
-
try {
|
|
784
|
-
await instance.websocket();
|
|
785
|
-
_vitest.expect.fail("Expected authentication error");
|
|
786
|
-
} catch (error) {
|
|
787
|
-
_vitest.expect.call(void 0, error).toBeDefined();
|
|
788
|
-
}
|
|
789
|
-
});
|
|
790
|
-
_vitest.test.call(void 0, "should deny raw WebSocket for actors without onAuth", async (c) => {
|
|
791
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
792
|
-
const instance = client.rawWebSocketNoAuthActor.getOrCreate();
|
|
793
|
-
try {
|
|
794
|
-
await instance.websocket();
|
|
795
|
-
_vitest.expect.fail("Expected forbidden error");
|
|
796
|
-
} catch (error) {
|
|
797
|
-
_vitest.expect.call(void 0, error).toBeDefined();
|
|
798
|
-
}
|
|
799
|
-
});
|
|
800
|
-
_vitest.test.call(void 0, "should allow public raw WebSocket access", async (c) => {
|
|
801
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
802
|
-
const instance = client.rawWebSocketPublicActor.getOrCreate();
|
|
803
|
-
const ws = await instance.websocket();
|
|
804
|
-
const welcomePromise = new Promise((resolve2, reject) => {
|
|
805
|
-
ws.addEventListener("message", (event) => {
|
|
806
|
-
const data = JSON.parse(event.data);
|
|
807
|
-
if (data.type === "welcome") {
|
|
808
|
-
resolve2(data);
|
|
809
|
-
}
|
|
810
|
-
});
|
|
811
|
-
ws.addEventListener("close", reject);
|
|
812
|
-
});
|
|
813
|
-
const welcomeData = await welcomePromise;
|
|
814
|
-
_vitest.expect.call(void 0, welcomeData.message).toBe("Public WebSocket connection");
|
|
815
|
-
_vitest.expect.call(void 0, welcomeData.visitorNumber).toBe(1);
|
|
816
|
-
ws.close();
|
|
817
|
-
});
|
|
818
|
-
_vitest.test.call(void 0, "should handle custom auth in onWebSocket", async (c) => {
|
|
819
|
-
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
820
|
-
const instance = client.rawWebSocketCustomAuthActor.getOrCreate();
|
|
821
|
-
try {
|
|
822
|
-
const ws1 = await instance.websocket();
|
|
823
|
-
const errorPromise = new Promise((resolve2, reject) => {
|
|
824
|
-
ws1.addEventListener("message", (event) => {
|
|
825
|
-
const data = JSON.parse(event.data);
|
|
826
|
-
if (data.type === "error") {
|
|
827
|
-
resolve2(data);
|
|
828
|
-
}
|
|
829
|
-
});
|
|
830
|
-
ws1.addEventListener("close", reject);
|
|
831
|
-
});
|
|
832
|
-
const errorData = await errorPromise;
|
|
833
|
-
_vitest.expect.call(void 0, errorData.type).toBe("error");
|
|
834
|
-
_vitest.expect.call(void 0, errorData.message).toBe("Unauthorized");
|
|
835
|
-
} catch (error) {
|
|
836
|
-
_vitest.expect.call(void 0, error).toBeDefined();
|
|
837
|
-
}
|
|
838
|
-
const ws2 = await instance.websocket("?token=custom-ws-token");
|
|
839
|
-
const authPromise = new Promise((resolve2, reject) => {
|
|
840
|
-
ws2.addEventListener("message", (event) => {
|
|
841
|
-
const data = JSON.parse(event.data);
|
|
842
|
-
if (data.type === "authorized") {
|
|
843
|
-
resolve2(data);
|
|
844
|
-
}
|
|
845
|
-
});
|
|
846
|
-
ws2.addEventListener("close", reject);
|
|
847
|
-
});
|
|
848
|
-
const authData = await authPromise;
|
|
849
|
-
_vitest.expect.call(void 0, authData.message).toBe("Welcome authenticated user!");
|
|
850
|
-
ws2.close();
|
|
851
|
-
const stats = await instance.getStats();
|
|
852
|
-
_vitest.expect.call(void 0, stats.authorized).toBeGreaterThanOrEqual(1);
|
|
853
|
-
_vitest.expect.call(void 0, stats.unauthorized).toBeGreaterThanOrEqual(1);
|
|
854
|
-
});
|
|
855
|
-
});
|
|
856
|
-
});
|
|
857
|
-
}
|
|
858
|
-
|
|
859
643
|
// src/driver-test-suite/tests/actor-conn.ts
|
|
860
644
|
|
|
861
645
|
function runActorConnTests(driverTestConfig) {
|
|
@@ -904,11 +688,11 @@ function runActorConnTests(driverTestConfig) {
|
|
|
904
688
|
const handle = client.counter.getOrCreate(["test-mixed-rpc-ws"]);
|
|
905
689
|
const connection = handle.connect();
|
|
906
690
|
const receivedEvents = [];
|
|
907
|
-
const receivedEventsPromise = new Promise((
|
|
691
|
+
const receivedEventsPromise = new Promise((resolve) => {
|
|
908
692
|
connection.on("newCount", (count) => {
|
|
909
693
|
receivedEvents.push(count);
|
|
910
694
|
if (receivedEvents.includes(1) && receivedEvents.includes(6) && receivedEvents.includes(9))
|
|
911
|
-
|
|
695
|
+
resolve(void 0);
|
|
912
696
|
});
|
|
913
697
|
});
|
|
914
698
|
await connection.increment(1);
|
|
@@ -1287,9 +1071,7 @@ function runActorScheduleTests(driverTestConfig) {
|
|
|
1287
1071
|
|
|
1288
1072
|
// fixtures/driver-test-suite/sleep.ts
|
|
1289
1073
|
var SLEEP_TIMEOUT = 500;
|
|
1290
|
-
var sleep =
|
|
1291
|
-
onAuth: () => {
|
|
1292
|
-
},
|
|
1074
|
+
var sleep = _chunkMRZS2J4Xcjs.actor.call(void 0, {
|
|
1293
1075
|
state: { startCount: 0, sleepCount: 0 },
|
|
1294
1076
|
onStart: (c) => {
|
|
1295
1077
|
c.state.startCount += 1;
|
|
@@ -1315,9 +1097,7 @@ var sleep = _chunkUIM22YJLcjs.actor.call(void 0, {
|
|
|
1315
1097
|
sleepTimeout: SLEEP_TIMEOUT
|
|
1316
1098
|
}
|
|
1317
1099
|
});
|
|
1318
|
-
var sleepWithLongRpc =
|
|
1319
|
-
onAuth: () => {
|
|
1320
|
-
},
|
|
1100
|
+
var sleepWithLongRpc = _chunkMRZS2J4Xcjs.actor.call(void 0, {
|
|
1321
1101
|
state: { startCount: 0, sleepCount: 0 },
|
|
1322
1102
|
createVars: () => ({}),
|
|
1323
1103
|
onStart: (c) => {
|
|
@@ -1346,9 +1126,7 @@ var sleepWithLongRpc = _chunkUIM22YJLcjs.actor.call(void 0, {
|
|
|
1346
1126
|
sleepTimeout: SLEEP_TIMEOUT
|
|
1347
1127
|
}
|
|
1348
1128
|
});
|
|
1349
|
-
var sleepWithRawHttp =
|
|
1350
|
-
onAuth: () => {
|
|
1351
|
-
},
|
|
1129
|
+
var sleepWithRawHttp = _chunkMRZS2J4Xcjs.actor.call(void 0, {
|
|
1352
1130
|
state: { startCount: 0, sleepCount: 0, requestCount: 0 },
|
|
1353
1131
|
onStart: (c) => {
|
|
1354
1132
|
c.state.startCount += 1;
|
|
@@ -1361,8 +1139,8 @@ var sleepWithRawHttp = _chunkUIM22YJLcjs.actor.call(void 0, {
|
|
|
1361
1139
|
const url = new URL(request.url);
|
|
1362
1140
|
if (url.pathname === "/long-request") {
|
|
1363
1141
|
const duration = parseInt(url.searchParams.get("duration") || "1000");
|
|
1364
|
-
c.log.info("starting long fetch request",
|
|
1365
|
-
await new Promise((
|
|
1142
|
+
c.log.info({ msg: "starting long fetch request", duration });
|
|
1143
|
+
await new Promise((resolve) => setTimeout(resolve, duration));
|
|
1366
1144
|
c.log.info("finished long fetch request");
|
|
1367
1145
|
return new Response(JSON.stringify({ completed: true }), {
|
|
1368
1146
|
headers: { "Content-Type": "application/json" }
|
|
@@ -1383,9 +1161,7 @@ var sleepWithRawHttp = _chunkUIM22YJLcjs.actor.call(void 0, {
|
|
|
1383
1161
|
sleepTimeout: SLEEP_TIMEOUT
|
|
1384
1162
|
}
|
|
1385
1163
|
});
|
|
1386
|
-
var sleepWithRawWebSocket =
|
|
1387
|
-
onAuth: () => {
|
|
1388
|
-
},
|
|
1164
|
+
var sleepWithRawWebSocket = _chunkMRZS2J4Xcjs.actor.call(void 0, {
|
|
1389
1165
|
state: { startCount: 0, sleepCount: 0, connectionCount: 0 },
|
|
1390
1166
|
onStart: (c) => {
|
|
1391
1167
|
c.state.startCount += 1;
|
|
@@ -1395,7 +1171,8 @@ var sleepWithRawWebSocket = _chunkUIM22YJLcjs.actor.call(void 0, {
|
|
|
1395
1171
|
},
|
|
1396
1172
|
onWebSocket: (c, websocket, opts) => {
|
|
1397
1173
|
c.state.connectionCount += 1;
|
|
1398
|
-
c.log.info(
|
|
1174
|
+
c.log.info({
|
|
1175
|
+
msg: "websocket connected",
|
|
1399
1176
|
connectionCount: c.state.connectionCount
|
|
1400
1177
|
});
|
|
1401
1178
|
websocket.send(
|
|
@@ -1421,14 +1198,15 @@ var sleepWithRawWebSocket = _chunkUIM22YJLcjs.actor.call(void 0, {
|
|
|
1421
1198
|
} else if (parsed.type === "keepAlive") {
|
|
1422
1199
|
websocket.send(JSON.stringify({ type: "ack" }));
|
|
1423
1200
|
}
|
|
1424
|
-
} catch (
|
|
1201
|
+
} catch (e2) {
|
|
1425
1202
|
websocket.send(data);
|
|
1426
1203
|
}
|
|
1427
1204
|
}
|
|
1428
1205
|
});
|
|
1429
1206
|
websocket.addEventListener("close", () => {
|
|
1430
1207
|
c.state.connectionCount -= 1;
|
|
1431
|
-
c.log.info(
|
|
1208
|
+
c.log.info({
|
|
1209
|
+
msg: "websocket disconnected",
|
|
1432
1210
|
connectionCount: c.state.connectionCount
|
|
1433
1211
|
});
|
|
1434
1212
|
});
|
|
@@ -1446,9 +1224,7 @@ var sleepWithRawWebSocket = _chunkUIM22YJLcjs.actor.call(void 0, {
|
|
|
1446
1224
|
sleepTimeout: SLEEP_TIMEOUT
|
|
1447
1225
|
}
|
|
1448
1226
|
});
|
|
1449
|
-
var sleepWithNoSleepOption =
|
|
1450
|
-
onAuth: () => {
|
|
1451
|
-
},
|
|
1227
|
+
var sleepWithNoSleepOption = _chunkMRZS2J4Xcjs.actor.call(void 0, {
|
|
1452
1228
|
state: { startCount: 0, sleepCount: 0 },
|
|
1453
1229
|
onStart: (c) => {
|
|
1454
1230
|
c.state.startCount += 1;
|
|
@@ -1605,7 +1381,7 @@ function runActorSleepTests(driverTestConfig) {
|
|
|
1605
1381
|
_vitest.expect.call(void 0, startCount).toBe(1);
|
|
1606
1382
|
}
|
|
1607
1383
|
const waitPromise = new Promise(
|
|
1608
|
-
(
|
|
1384
|
+
(resolve) => sleepActor.once("waiting", resolve)
|
|
1609
1385
|
);
|
|
1610
1386
|
const longRunningPromise = sleepActor.longRunningRpc();
|
|
1611
1387
|
await waitPromise;
|
|
@@ -1638,32 +1414,32 @@ function runActorSleepTests(driverTestConfig) {
|
|
|
1638
1414
|
_vitest.expect.call(void 0, startCount).toBe(1);
|
|
1639
1415
|
}
|
|
1640
1416
|
const ws = await sleepActor.websocket();
|
|
1641
|
-
await new Promise((
|
|
1642
|
-
ws.onopen = () =>
|
|
1417
|
+
await new Promise((resolve, reject) => {
|
|
1418
|
+
ws.onopen = () => resolve();
|
|
1643
1419
|
ws.onerror = reject;
|
|
1644
1420
|
});
|
|
1645
|
-
await new Promise((
|
|
1421
|
+
await new Promise((resolve) => {
|
|
1646
1422
|
ws.onmessage = (event) => {
|
|
1647
1423
|
const data = JSON.parse(event.data);
|
|
1648
1424
|
if (data.type === "connected") {
|
|
1649
|
-
|
|
1425
|
+
resolve();
|
|
1650
1426
|
}
|
|
1651
1427
|
};
|
|
1652
1428
|
});
|
|
1653
1429
|
await waitFor(driverTestConfig, SLEEP_TIMEOUT + 100);
|
|
1654
1430
|
ws.send(JSON.stringify({ type: "getCounts" }));
|
|
1655
|
-
const counts = await new Promise((
|
|
1431
|
+
const counts = await new Promise((resolve) => {
|
|
1656
1432
|
ws.onmessage = (event) => {
|
|
1657
1433
|
const data = JSON.parse(event.data);
|
|
1658
1434
|
if (data.type === "counts") {
|
|
1659
|
-
|
|
1435
|
+
resolve(data);
|
|
1660
1436
|
}
|
|
1661
1437
|
};
|
|
1662
1438
|
});
|
|
1663
1439
|
_vitest.expect.call(void 0, counts.sleepCount).toBe(0);
|
|
1664
1440
|
_vitest.expect.call(void 0, counts.startCount).toBe(1);
|
|
1665
1441
|
ws.close();
|
|
1666
|
-
await new Promise((
|
|
1442
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
1667
1443
|
await waitFor(driverTestConfig, SLEEP_TIMEOUT + 100);
|
|
1668
1444
|
{
|
|
1669
1445
|
const { startCount, sleepCount } = await sleepActor.getCounts();
|
|
@@ -1816,15 +1592,8 @@ function runActorErrorHandlingTests(driverTestConfig) {
|
|
|
1816
1592
|
await handle.throwInternalError();
|
|
1817
1593
|
_vitest.expect.call(void 0, true).toBe(false);
|
|
1818
1594
|
} catch (error) {
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
_vitest.expect.call(void 0, error.message).toBe(_chunkGIR3AFFIcjs.INTERNAL_ERROR_DESCRIPTION);
|
|
1822
|
-
} else if (driverTestConfig.clientType === "inline") {
|
|
1823
|
-
_vitest.expect.call(void 0, error.code).toBe(_chunkGIR3AFFIcjs.INTERNAL_ERROR_CODE);
|
|
1824
|
-
_vitest.expect.call(void 0, error.message).toBe("This is an internal error");
|
|
1825
|
-
} else {
|
|
1826
|
-
_chunk6WKQDDUDcjs.assertUnreachable.call(void 0, driverTestConfig.clientType);
|
|
1827
|
-
}
|
|
1595
|
+
_vitest.expect.call(void 0, error.code).toBe(_chunk5QGQK44Lcjs.INTERNAL_ERROR_CODE);
|
|
1596
|
+
_vitest.expect.call(void 0, error.message).toBe(_chunk5QGQK44Lcjs.INTERNAL_ERROR_DESCRIPTION);
|
|
1828
1597
|
}
|
|
1829
1598
|
});
|
|
1830
1599
|
});
|
|
@@ -1919,6 +1688,29 @@ function runActorHandleTests(driverTestConfig) {
|
|
|
1919
1688
|
const retrievedCount = await handle.getCount();
|
|
1920
1689
|
_vitest.expect.call(void 0, retrievedCount).toBe(9);
|
|
1921
1690
|
});
|
|
1691
|
+
_vitest.test.call(void 0, "errors when calling create twice with the same key", async (c) => {
|
|
1692
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
1693
|
+
const key = ["duplicate-create-handle", crypto.randomUUID()];
|
|
1694
|
+
await client.counter.create(key);
|
|
1695
|
+
try {
|
|
1696
|
+
await client.counter.create(key);
|
|
1697
|
+
_vitest.expect.fail("did not error on duplicate create");
|
|
1698
|
+
} catch (err) {
|
|
1699
|
+
_vitest.expect.call(void 0, err.group).toBe("actor");
|
|
1700
|
+
_vitest.expect.call(void 0, err.code).toBe("already_exists");
|
|
1701
|
+
}
|
|
1702
|
+
});
|
|
1703
|
+
_vitest.test.call(void 0, ".get().resolve() errors for non-existent actor", async (c) => {
|
|
1704
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
1705
|
+
const missingId = `nonexistent-${crypto.randomUUID()}`;
|
|
1706
|
+
try {
|
|
1707
|
+
await client.counter.get([missingId]).resolve();
|
|
1708
|
+
_vitest.expect.fail("did not error for get().resolve() on missing actor");
|
|
1709
|
+
} catch (err) {
|
|
1710
|
+
_vitest.expect.call(void 0, err.group).toBe("actor");
|
|
1711
|
+
_vitest.expect.call(void 0, err.code).toBe("not_found");
|
|
1712
|
+
}
|
|
1713
|
+
});
|
|
1922
1714
|
});
|
|
1923
1715
|
_vitest.describe.call(void 0, "Action Functionality", () => {
|
|
1924
1716
|
_vitest.test.call(void 0, "should call actions directly on the handle", async (c) => {
|
|
@@ -2139,11 +1931,11 @@ function runActorInlineClientTests(driverTestConfig) {
|
|
|
2139
1931
|
// src/driver-test-suite/tests/actor-inspector.ts
|
|
2140
1932
|
|
|
2141
1933
|
function runActorInspectorTests(driverTestConfig) {
|
|
2142
|
-
_vitest.describe.
|
|
1934
|
+
_vitest.describe.skip("Actor Inspector Tests", () => {
|
|
2143
1935
|
_vitest.describe.call(void 0, "Manager Inspector", () => {
|
|
2144
1936
|
_vitest.test.call(void 0, "should respond to ping", async (c) => {
|
|
2145
1937
|
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
2146
|
-
const http =
|
|
1938
|
+
const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
|
|
2147
1939
|
headers: {
|
|
2148
1940
|
Authorization: `Bearer token`
|
|
2149
1941
|
}
|
|
@@ -2157,7 +1949,7 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2157
1949
|
const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
2158
1950
|
await client.counter.create(["test-actor-1"]);
|
|
2159
1951
|
await client.counter.create(["test-actor-2"]);
|
|
2160
|
-
const http =
|
|
1952
|
+
const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
|
|
2161
1953
|
headers: {
|
|
2162
1954
|
Authorization: `Bearer token`
|
|
2163
1955
|
}
|
|
@@ -2180,7 +1972,7 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2180
1972
|
const actorKey2 = ["test-cursor-2"];
|
|
2181
1973
|
await client.counter.create(actorKey1);
|
|
2182
1974
|
await client.counter.create(actorKey2);
|
|
2183
|
-
const http =
|
|
1975
|
+
const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
|
|
2184
1976
|
headers: {
|
|
2185
1977
|
Authorization: `Bearer token`
|
|
2186
1978
|
}
|
|
@@ -2205,7 +1997,7 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2205
1997
|
});
|
|
2206
1998
|
_vitest.test.call(void 0, "should handle invalid limit parameter", async (c) => {
|
|
2207
1999
|
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
2208
|
-
const http =
|
|
2000
|
+
const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
|
|
2209
2001
|
headers: {
|
|
2210
2002
|
Authorization: `Bearer token`
|
|
2211
2003
|
}
|
|
@@ -2217,7 +2009,7 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2217
2009
|
});
|
|
2218
2010
|
_vitest.test.call(void 0, "should create a new actor", async (c) => {
|
|
2219
2011
|
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
2220
|
-
const http =
|
|
2012
|
+
const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
|
|
2221
2013
|
headers: {
|
|
2222
2014
|
Authorization: `Bearer token`
|
|
2223
2015
|
}
|
|
@@ -2241,7 +2033,7 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2241
2033
|
});
|
|
2242
2034
|
_vitest.test.call(void 0, "should get builds", async (c) => {
|
|
2243
2035
|
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
2244
|
-
const http =
|
|
2036
|
+
const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
|
|
2245
2037
|
headers: {
|
|
2246
2038
|
Authorization: `Bearer token`
|
|
2247
2039
|
}
|
|
@@ -2259,7 +2051,7 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2259
2051
|
const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
2260
2052
|
const handle = await client.counter.create(["test-get-by-id"]);
|
|
2261
2053
|
const actorId = await handle.resolve();
|
|
2262
|
-
const http =
|
|
2054
|
+
const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
|
|
2263
2055
|
headers: {
|
|
2264
2056
|
Authorization: `Bearer token`
|
|
2265
2057
|
}
|
|
@@ -2273,7 +2065,7 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2273
2065
|
});
|
|
2274
2066
|
_vitest.test.call(void 0, "should return 404 for non-existent actor", async (c) => {
|
|
2275
2067
|
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
2276
|
-
const http =
|
|
2068
|
+
const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
|
|
2277
2069
|
headers: {
|
|
2278
2070
|
Authorization: `Bearer token`
|
|
2279
2071
|
}
|
|
@@ -2289,7 +2081,7 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2289
2081
|
const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
2290
2082
|
const handle = await client.counter.create(["test-bootstrap"]);
|
|
2291
2083
|
await handle.resolve();
|
|
2292
|
-
const http =
|
|
2084
|
+
const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
|
|
2293
2085
|
headers: {
|
|
2294
2086
|
Authorization: `Bearer token`
|
|
2295
2087
|
}
|
|
@@ -2311,10 +2103,10 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2311
2103
|
_vitest.test.call(void 0, "should handle actor not found", async (c) => {
|
|
2312
2104
|
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
2313
2105
|
const actorId = "non-existing";
|
|
2314
|
-
const http =
|
|
2106
|
+
const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
|
|
2315
2107
|
headers: {
|
|
2316
2108
|
Authorization: `Bearer token`,
|
|
2317
|
-
[
|
|
2109
|
+
[_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
|
|
2318
2110
|
getForId: { name: "counter", actorId }
|
|
2319
2111
|
})
|
|
2320
2112
|
}
|
|
@@ -2326,10 +2118,10 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2326
2118
|
const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
2327
2119
|
const handle = await client.counter.create(["test-ping"]);
|
|
2328
2120
|
const actorId = await handle.resolve();
|
|
2329
|
-
const http =
|
|
2121
|
+
const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
|
|
2330
2122
|
headers: {
|
|
2331
2123
|
Authorization: `Bearer token`,
|
|
2332
|
-
[
|
|
2124
|
+
[_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
|
|
2333
2125
|
getForId: { name: "counter", actorId }
|
|
2334
2126
|
})
|
|
2335
2127
|
}
|
|
@@ -2344,10 +2136,10 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2344
2136
|
const handle = await client.counter.create(["test-state"]);
|
|
2345
2137
|
const actorId = await handle.resolve();
|
|
2346
2138
|
await handle.increment(5);
|
|
2347
|
-
const http =
|
|
2139
|
+
const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
|
|
2348
2140
|
headers: {
|
|
2349
2141
|
Authorization: `Bearer token`,
|
|
2350
|
-
[
|
|
2142
|
+
[_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
|
|
2351
2143
|
getForId: { name: "counter", actorId }
|
|
2352
2144
|
})
|
|
2353
2145
|
}
|
|
@@ -2366,10 +2158,10 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2366
2158
|
const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
2367
2159
|
const handle = await client.counter.create(["test-state-replace"]);
|
|
2368
2160
|
const actorId = await handle.resolve();
|
|
2369
|
-
const http =
|
|
2161
|
+
const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
|
|
2370
2162
|
headers: {
|
|
2371
2163
|
Authorization: `Bearer token`,
|
|
2372
|
-
[
|
|
2164
|
+
[_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
|
|
2373
2165
|
getForId: { name: "counter", actorId }
|
|
2374
2166
|
})
|
|
2375
2167
|
}
|
|
@@ -2391,10 +2183,10 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2391
2183
|
const handle = await client.counter.create(["test-state-patch"]);
|
|
2392
2184
|
const actorId = await handle.resolve();
|
|
2393
2185
|
await handle.increment(3);
|
|
2394
|
-
const http =
|
|
2186
|
+
const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
|
|
2395
2187
|
headers: {
|
|
2396
2188
|
Authorization: `Bearer token`,
|
|
2397
|
-
[
|
|
2189
|
+
[_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
|
|
2398
2190
|
getForId: { name: "counter", actorId }
|
|
2399
2191
|
})
|
|
2400
2192
|
}
|
|
@@ -2425,10 +2217,10 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2425
2217
|
const actorId = await handle.resolve();
|
|
2426
2218
|
handle.connect();
|
|
2427
2219
|
await handle.increment(10);
|
|
2428
|
-
const http =
|
|
2220
|
+
const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
|
|
2429
2221
|
headers: {
|
|
2430
2222
|
Authorization: `Bearer token`,
|
|
2431
|
-
[
|
|
2223
|
+
[_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
|
|
2432
2224
|
getForId: { name: "counter", actorId }
|
|
2433
2225
|
})
|
|
2434
2226
|
}
|
|
@@ -2450,10 +2242,10 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2450
2242
|
const actorId = await handle.resolve();
|
|
2451
2243
|
handle.connect();
|
|
2452
2244
|
await handle.increment(10);
|
|
2453
|
-
const http =
|
|
2245
|
+
const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
|
|
2454
2246
|
headers: {
|
|
2455
2247
|
Authorization: `Bearer token`,
|
|
2456
|
-
[
|
|
2248
|
+
[_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
|
|
2457
2249
|
getForId: { name: "counter", actorId }
|
|
2458
2250
|
})
|
|
2459
2251
|
}
|
|
@@ -2476,10 +2268,10 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2476
2268
|
const actorId = await handle.resolve();
|
|
2477
2269
|
handle.connect();
|
|
2478
2270
|
await handle.increment(10);
|
|
2479
|
-
const http =
|
|
2271
|
+
const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
|
|
2480
2272
|
headers: {
|
|
2481
2273
|
Authorization: `Bearer token`,
|
|
2482
|
-
[
|
|
2274
|
+
[_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
|
|
2483
2275
|
getForId: { name: "counter", actorId }
|
|
2484
2276
|
})
|
|
2485
2277
|
}
|
|
@@ -2504,10 +2296,10 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2504
2296
|
const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
2505
2297
|
const handle = await client.counter.create(["test-rpcs"]);
|
|
2506
2298
|
const actorId = await handle.resolve();
|
|
2507
|
-
const http =
|
|
2299
|
+
const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
|
|
2508
2300
|
headers: {
|
|
2509
2301
|
Authorization: `Bearer token`,
|
|
2510
|
-
[
|
|
2302
|
+
[_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
|
|
2511
2303
|
getForId: { name: "counter", actorId }
|
|
2512
2304
|
})
|
|
2513
2305
|
}
|
|
@@ -2525,10 +2317,10 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2525
2317
|
const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
2526
2318
|
const handle = await client.counter.create(["test-db"]);
|
|
2527
2319
|
const actorId = await handle.resolve();
|
|
2528
|
-
const http =
|
|
2320
|
+
const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
|
|
2529
2321
|
headers: {
|
|
2530
2322
|
Authorization: `Bearer token`,
|
|
2531
|
-
[
|
|
2323
|
+
[_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
|
|
2532
2324
|
getForId: { name: "counter", actorId }
|
|
2533
2325
|
})
|
|
2534
2326
|
}
|
|
@@ -2549,10 +2341,10 @@ function runActorInspectorTests(driverTestConfig) {
|
|
|
2549
2341
|
const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
2550
2342
|
const handle = await client.counter.create(["test-db-query"]);
|
|
2551
2343
|
const actorId = await handle.resolve();
|
|
2552
|
-
const http =
|
|
2344
|
+
const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
|
|
2553
2345
|
headers: {
|
|
2554
2346
|
Authorization: `Bearer token`,
|
|
2555
|
-
[
|
|
2347
|
+
[_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
|
|
2556
2348
|
getForId: { name: "counter", actorId }
|
|
2557
2349
|
})
|
|
2558
2350
|
}
|
|
@@ -2801,7 +2593,8 @@ function runManagerDriverTests(driverTestConfig) {
|
|
|
2801
2593
|
await client.counter.create(uniqueKey);
|
|
2802
2594
|
_vitest.expect.fail("did not error on duplicate create");
|
|
2803
2595
|
} catch (err) {
|
|
2804
|
-
_vitest.expect.call(void 0, err.
|
|
2596
|
+
_vitest.expect.call(void 0, err.group).toBe("actor");
|
|
2597
|
+
_vitest.expect.call(void 0, err.code).toBe("already_exists");
|
|
2805
2598
|
}
|
|
2806
2599
|
const count = await counter.increment(0);
|
|
2807
2600
|
_vitest.expect.call(void 0, count).toBe(5);
|
|
@@ -2815,7 +2608,8 @@ function runManagerDriverTests(driverTestConfig) {
|
|
|
2815
2608
|
await client.counter.get([nonexistentId]).resolve();
|
|
2816
2609
|
_vitest.expect.fail("did not error for get");
|
|
2817
2610
|
} catch (err) {
|
|
2818
|
-
_vitest.expect.call(void 0, err.
|
|
2611
|
+
_vitest.expect.call(void 0, err.group).toBe("actor");
|
|
2612
|
+
_vitest.expect.call(void 0, err.code).toBe("not_found");
|
|
2819
2613
|
}
|
|
2820
2614
|
const createdCounter = client.counter.getOrCreate(nonexistentId);
|
|
2821
2615
|
await createdCounter.increment(3);
|
|
@@ -3062,7 +2856,7 @@ function runRawHttpTests(driverTestConfig) {
|
|
|
3062
2856
|
_vitest.expect.call(void 0, errorData.message).toContain(
|
|
3063
2857
|
"onFetch handler must return a Response"
|
|
3064
2858
|
);
|
|
3065
|
-
} catch (
|
|
2859
|
+
} catch (e3) {
|
|
3066
2860
|
}
|
|
3067
2861
|
});
|
|
3068
2862
|
_vitest.test.call(void 0, "should handle different HTTP methods", async (c) => {
|
|
@@ -3236,186 +3030,7 @@ function runRawHttpTests(driverTestConfig) {
|
|
|
3236
3030
|
});
|
|
3237
3031
|
}
|
|
3238
3032
|
|
|
3239
|
-
// src/driver-test-suite/tests/raw-http-
|
|
3240
|
-
|
|
3241
|
-
function runRawHttpDirectRegistryTests(driverTestConfig) {
|
|
3242
|
-
_vitest.describe.call(void 0, "raw http - direct registry access", () => {
|
|
3243
|
-
_vitest.test.call(void 0, "should handle direct fetch requests to registry with proper headers", async (c) => {
|
|
3244
|
-
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
3245
|
-
const actorQuery = {
|
|
3246
|
-
getOrCreateForKey: {
|
|
3247
|
-
name: "rawHttpActor",
|
|
3248
|
-
key: ["direct-test"]
|
|
3249
|
-
}
|
|
3250
|
-
};
|
|
3251
|
-
const response = await fetch(
|
|
3252
|
-
`${endpoint}/registry/actors/raw/http/api/hello`,
|
|
3253
|
-
{
|
|
3254
|
-
method: "GET",
|
|
3255
|
-
headers: {
|
|
3256
|
-
[_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery)
|
|
3257
|
-
}
|
|
3258
|
-
}
|
|
3259
|
-
);
|
|
3260
|
-
_vitest.expect.call(void 0, response.ok).toBe(true);
|
|
3261
|
-
_vitest.expect.call(void 0, response.status).toBe(200);
|
|
3262
|
-
const data = await response.json();
|
|
3263
|
-
_vitest.expect.call(void 0, data).toEqual({ message: "Hello from actor!" });
|
|
3264
|
-
});
|
|
3265
|
-
_vitest.test.call(void 0, "should handle POST requests with body to registry", async (c) => {
|
|
3266
|
-
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
3267
|
-
const actorQuery = {
|
|
3268
|
-
getOrCreateForKey: {
|
|
3269
|
-
name: "rawHttpActor",
|
|
3270
|
-
key: ["direct-post-test"]
|
|
3271
|
-
}
|
|
3272
|
-
};
|
|
3273
|
-
const testData = { test: "direct", number: 456 };
|
|
3274
|
-
const response = await fetch(
|
|
3275
|
-
`${endpoint}/registry/actors/raw/http/api/echo`,
|
|
3276
|
-
{
|
|
3277
|
-
method: "POST",
|
|
3278
|
-
headers: {
|
|
3279
|
-
[_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),
|
|
3280
|
-
"Content-Type": "application/json"
|
|
3281
|
-
},
|
|
3282
|
-
body: JSON.stringify(testData)
|
|
3283
|
-
}
|
|
3284
|
-
);
|
|
3285
|
-
_vitest.expect.call(void 0, response.ok).toBe(true);
|
|
3286
|
-
_vitest.expect.call(void 0, response.status).toBe(200);
|
|
3287
|
-
const data = await response.json();
|
|
3288
|
-
_vitest.expect.call(void 0, data).toEqual(testData);
|
|
3289
|
-
});
|
|
3290
|
-
_vitest.test.call(void 0, "should pass custom headers through to actor", async (c) => {
|
|
3291
|
-
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
3292
|
-
const actorQuery = {
|
|
3293
|
-
getOrCreateForKey: {
|
|
3294
|
-
name: "rawHttpActor",
|
|
3295
|
-
key: ["direct-headers-test"]
|
|
3296
|
-
}
|
|
3297
|
-
};
|
|
3298
|
-
const customHeaders = {
|
|
3299
|
-
"X-Custom-Header": "direct-test-value",
|
|
3300
|
-
"X-Another-Header": "another-direct-value"
|
|
3301
|
-
};
|
|
3302
|
-
const response = await fetch(
|
|
3303
|
-
`${endpoint}/registry/actors/raw/http/api/headers`,
|
|
3304
|
-
{
|
|
3305
|
-
method: "GET",
|
|
3306
|
-
headers: {
|
|
3307
|
-
[_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),
|
|
3308
|
-
...customHeaders
|
|
3309
|
-
}
|
|
3310
|
-
}
|
|
3311
|
-
);
|
|
3312
|
-
_vitest.expect.call(void 0, response.ok).toBe(true);
|
|
3313
|
-
const headers = await response.json();
|
|
3314
|
-
_vitest.expect.call(void 0, headers["x-custom-header"]).toBe("direct-test-value");
|
|
3315
|
-
_vitest.expect.call(void 0, headers["x-another-header"]).toBe("another-direct-value");
|
|
3316
|
-
});
|
|
3317
|
-
_vitest.test.call(void 0, "should handle connection parameters for authentication", async (c) => {
|
|
3318
|
-
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
3319
|
-
const actorQuery = {
|
|
3320
|
-
getOrCreateForKey: {
|
|
3321
|
-
name: "rawHttpActor",
|
|
3322
|
-
key: ["direct-auth-test"]
|
|
3323
|
-
}
|
|
3324
|
-
};
|
|
3325
|
-
const connParams = { token: "test-auth-token", userId: "user123" };
|
|
3326
|
-
const response = await fetch(
|
|
3327
|
-
`${endpoint}/registry/actors/raw/http/api/hello`,
|
|
3328
|
-
{
|
|
3329
|
-
method: "GET",
|
|
3330
|
-
headers: {
|
|
3331
|
-
[_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),
|
|
3332
|
-
[_chunk6WKQDDUDcjs.HEADER_CONN_PARAMS]: JSON.stringify(connParams)
|
|
3333
|
-
}
|
|
3334
|
-
}
|
|
3335
|
-
);
|
|
3336
|
-
_vitest.expect.call(void 0, response.ok).toBe(true);
|
|
3337
|
-
const data = await response.json();
|
|
3338
|
-
_vitest.expect.call(void 0, data).toEqual({ message: "Hello from actor!" });
|
|
3339
|
-
});
|
|
3340
|
-
_vitest.test.call(void 0, "should return 404 for actors without onFetch handler", async (c) => {
|
|
3341
|
-
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
3342
|
-
const actorQuery = {
|
|
3343
|
-
getOrCreateForKey: {
|
|
3344
|
-
name: "rawHttpNoHandlerActor",
|
|
3345
|
-
key: ["direct-no-handler"]
|
|
3346
|
-
}
|
|
3347
|
-
};
|
|
3348
|
-
const response = await fetch(
|
|
3349
|
-
`${endpoint}/registry/actors/raw/http/api/anything`,
|
|
3350
|
-
{
|
|
3351
|
-
method: "GET",
|
|
3352
|
-
headers: {
|
|
3353
|
-
[_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery)
|
|
3354
|
-
}
|
|
3355
|
-
}
|
|
3356
|
-
);
|
|
3357
|
-
_vitest.expect.call(void 0, response.ok).toBe(false);
|
|
3358
|
-
_vitest.expect.call(void 0, response.status).toBe(404);
|
|
3359
|
-
});
|
|
3360
|
-
_vitest.test.call(void 0, "should handle different HTTP methods", async (c) => {
|
|
3361
|
-
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
3362
|
-
const actorQuery = {
|
|
3363
|
-
getOrCreateForKey: {
|
|
3364
|
-
name: "rawHttpActor",
|
|
3365
|
-
key: ["direct-methods-test"]
|
|
3366
|
-
}
|
|
3367
|
-
};
|
|
3368
|
-
const methods = ["GET", "POST", "PUT", "DELETE", "PATCH"];
|
|
3369
|
-
for (const method of methods) {
|
|
3370
|
-
const response = await fetch(
|
|
3371
|
-
`${endpoint}/registry/actors/raw/http/api/echo`,
|
|
3372
|
-
{
|
|
3373
|
-
method,
|
|
3374
|
-
headers: {
|
|
3375
|
-
[_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),
|
|
3376
|
-
...method !== "GET" ? { "Content-Type": "application/json" } : {}
|
|
3377
|
-
},
|
|
3378
|
-
body: ["POST", "PUT", "PATCH"].includes(method) ? JSON.stringify({ method }) : void 0
|
|
3379
|
-
}
|
|
3380
|
-
);
|
|
3381
|
-
if (method === "POST") {
|
|
3382
|
-
_vitest.expect.call(void 0, response.ok).toBe(true);
|
|
3383
|
-
const data = await response.json();
|
|
3384
|
-
_vitest.expect.call(void 0, data).toEqual({ method });
|
|
3385
|
-
} else {
|
|
3386
|
-
_vitest.expect.call(void 0, response.status).toBe(404);
|
|
3387
|
-
}
|
|
3388
|
-
}
|
|
3389
|
-
});
|
|
3390
|
-
_vitest.test.call(void 0, "should handle binary data", async (c) => {
|
|
3391
|
-
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
3392
|
-
const actorQuery = {
|
|
3393
|
-
getOrCreateForKey: {
|
|
3394
|
-
name: "rawHttpActor",
|
|
3395
|
-
key: ["direct-binary-test"]
|
|
3396
|
-
}
|
|
3397
|
-
};
|
|
3398
|
-
const binaryData = new Uint8Array([1, 2, 3, 4, 5]);
|
|
3399
|
-
const response = await fetch(
|
|
3400
|
-
`${endpoint}/registry/actors/raw/http/api/echo`,
|
|
3401
|
-
{
|
|
3402
|
-
method: "POST",
|
|
3403
|
-
headers: {
|
|
3404
|
-
[_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),
|
|
3405
|
-
"Content-Type": "application/octet-stream"
|
|
3406
|
-
},
|
|
3407
|
-
body: binaryData
|
|
3408
|
-
}
|
|
3409
|
-
);
|
|
3410
|
-
_vitest.expect.call(void 0, response.ok).toBe(true);
|
|
3411
|
-
const responseBuffer = await response.arrayBuffer();
|
|
3412
|
-
const responseArray = new Uint8Array(responseBuffer);
|
|
3413
|
-
_vitest.expect.call(void 0, Array.from(responseArray)).toEqual([1, 2, 3, 4, 5]);
|
|
3414
|
-
});
|
|
3415
|
-
});
|
|
3416
|
-
}
|
|
3417
|
-
|
|
3418
|
-
// src/driver-test-suite/tests/raw-http-request-properties.ts
|
|
3033
|
+
// src/driver-test-suite/tests/raw-http-request-properties.ts
|
|
3419
3034
|
|
|
3420
3035
|
function runRawHttpRequestPropertiesTests(driverTestConfig) {
|
|
3421
3036
|
_vitest.describe.call(void 0, "raw http request properties", () => {
|
|
@@ -3738,24 +3353,24 @@ function runRawWebSocketTests(driverTestConfig) {
|
|
|
3738
3353
|
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
3739
3354
|
const actor2 = client.rawWebSocketActor.getOrCreate(["basic"]);
|
|
3740
3355
|
const ws = await actor2.websocket();
|
|
3741
|
-
await new Promise((
|
|
3356
|
+
await new Promise((resolve) => {
|
|
3742
3357
|
if (ws.readyState === WebSocket.OPEN) {
|
|
3743
|
-
|
|
3358
|
+
resolve();
|
|
3744
3359
|
} else {
|
|
3745
3360
|
ws.addEventListener(
|
|
3746
3361
|
"open",
|
|
3747
3362
|
() => {
|
|
3748
|
-
|
|
3363
|
+
resolve();
|
|
3749
3364
|
},
|
|
3750
3365
|
{ once: true }
|
|
3751
3366
|
);
|
|
3752
3367
|
}
|
|
3753
3368
|
});
|
|
3754
|
-
const welcomeMessage = await new Promise((
|
|
3369
|
+
const welcomeMessage = await new Promise((resolve, reject) => {
|
|
3755
3370
|
ws.addEventListener(
|
|
3756
3371
|
"message",
|
|
3757
3372
|
(event) => {
|
|
3758
|
-
|
|
3373
|
+
resolve(JSON.parse(event.data));
|
|
3759
3374
|
},
|
|
3760
3375
|
{ once: true }
|
|
3761
3376
|
);
|
|
@@ -3770,22 +3385,22 @@ function runRawWebSocketTests(driverTestConfig) {
|
|
|
3770
3385
|
const actor2 = client.rawWebSocketActor.getOrCreate(["echo"]);
|
|
3771
3386
|
const ws = await actor2.websocket();
|
|
3772
3387
|
if (ws.readyState !== WebSocket.OPEN) {
|
|
3773
|
-
await new Promise((
|
|
3774
|
-
ws.addEventListener("open", () =>
|
|
3388
|
+
await new Promise((resolve, reject) => {
|
|
3389
|
+
ws.addEventListener("open", () => resolve(), { once: true });
|
|
3775
3390
|
ws.addEventListener("close", reject);
|
|
3776
3391
|
});
|
|
3777
3392
|
}
|
|
3778
|
-
await new Promise((
|
|
3779
|
-
ws.addEventListener("message", () =>
|
|
3393
|
+
await new Promise((resolve, reject) => {
|
|
3394
|
+
ws.addEventListener("message", () => resolve(), { once: true });
|
|
3780
3395
|
ws.addEventListener("close", reject);
|
|
3781
3396
|
});
|
|
3782
3397
|
const testMessage = { test: "data", timestamp: Date.now() };
|
|
3783
3398
|
ws.send(JSON.stringify(testMessage));
|
|
3784
|
-
const echoMessage = await new Promise((
|
|
3399
|
+
const echoMessage = await new Promise((resolve, reject) => {
|
|
3785
3400
|
ws.addEventListener(
|
|
3786
3401
|
"message",
|
|
3787
3402
|
(event) => {
|
|
3788
|
-
|
|
3403
|
+
resolve(JSON.parse(event.data));
|
|
3789
3404
|
},
|
|
3790
3405
|
{ once: true }
|
|
3791
3406
|
);
|
|
@@ -3799,21 +3414,21 @@ function runRawWebSocketTests(driverTestConfig) {
|
|
|
3799
3414
|
const actor2 = client.rawWebSocketActor.getOrCreate(["ping"]);
|
|
3800
3415
|
const ws = await actor2.websocket();
|
|
3801
3416
|
if (ws.readyState !== WebSocket.OPEN) {
|
|
3802
|
-
await new Promise((
|
|
3803
|
-
ws.addEventListener("open", () =>
|
|
3417
|
+
await new Promise((resolve, reject) => {
|
|
3418
|
+
ws.addEventListener("open", () => resolve(), { once: true });
|
|
3804
3419
|
ws.addEventListener("close", reject);
|
|
3805
3420
|
});
|
|
3806
3421
|
}
|
|
3807
|
-
await new Promise((
|
|
3808
|
-
ws.addEventListener("message", () =>
|
|
3422
|
+
await new Promise((resolve, reject) => {
|
|
3423
|
+
ws.addEventListener("message", () => resolve(), { once: true });
|
|
3809
3424
|
ws.addEventListener("close", reject);
|
|
3810
3425
|
});
|
|
3811
3426
|
ws.send(JSON.stringify({ type: "ping" }));
|
|
3812
|
-
const pongMessage = await new Promise((
|
|
3427
|
+
const pongMessage = await new Promise((resolve, reject) => {
|
|
3813
3428
|
ws.addEventListener("message", (event) => {
|
|
3814
3429
|
const data = JSON.parse(event.data);
|
|
3815
3430
|
if (data.type === "pong") {
|
|
3816
|
-
|
|
3431
|
+
resolve(data);
|
|
3817
3432
|
}
|
|
3818
3433
|
});
|
|
3819
3434
|
ws.addEventListener("close", reject);
|
|
@@ -3826,23 +3441,23 @@ function runRawWebSocketTests(driverTestConfig) {
|
|
|
3826
3441
|
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
3827
3442
|
const actor1 = client.rawWebSocketActor.getOrCreate(["stats"]);
|
|
3828
3443
|
const ws1 = await actor1.websocket();
|
|
3829
|
-
const ws1MessagePromise = new Promise((
|
|
3830
|
-
ws1.addEventListener("message", () =>
|
|
3444
|
+
const ws1MessagePromise = new Promise((resolve, reject) => {
|
|
3445
|
+
ws1.addEventListener("message", () => resolve(), { once: true });
|
|
3831
3446
|
ws1.addEventListener("close", reject);
|
|
3832
3447
|
});
|
|
3833
3448
|
await ws1MessagePromise;
|
|
3834
3449
|
const actor2 = client.rawWebSocketActor.get(["stats"]);
|
|
3835
3450
|
const ws2 = await actor2.websocket();
|
|
3836
|
-
const ws2MessagePromise = new Promise((
|
|
3837
|
-
ws2.addEventListener("message", () =>
|
|
3451
|
+
const ws2MessagePromise = new Promise((resolve, reject) => {
|
|
3452
|
+
ws2.addEventListener("message", () => resolve(), { once: true });
|
|
3838
3453
|
ws2.addEventListener("close", reject);
|
|
3839
3454
|
});
|
|
3840
3455
|
await Promise.all([ws1MessagePromise, ws2MessagePromise]);
|
|
3841
|
-
const pingPromise = new Promise((
|
|
3456
|
+
const pingPromise = new Promise((resolve, reject) => {
|
|
3842
3457
|
ws2.addEventListener("message", (event) => {
|
|
3843
3458
|
const data = JSON.parse(event.data);
|
|
3844
3459
|
if (data.type === "pong") {
|
|
3845
|
-
|
|
3460
|
+
resolve(void 0);
|
|
3846
3461
|
}
|
|
3847
3462
|
});
|
|
3848
3463
|
ws2.addEventListener("close", reject);
|
|
@@ -3851,11 +3466,11 @@ function runRawWebSocketTests(driverTestConfig) {
|
|
|
3851
3466
|
ws1.send(JSON.stringify({ data: "test3" }));
|
|
3852
3467
|
ws2.send(JSON.stringify({ type: "ping" }));
|
|
3853
3468
|
await pingPromise;
|
|
3854
|
-
const statsPromise = new Promise((
|
|
3469
|
+
const statsPromise = new Promise((resolve, reject) => {
|
|
3855
3470
|
ws1.addEventListener("message", (event) => {
|
|
3856
3471
|
const data = JSON.parse(event.data);
|
|
3857
3472
|
if (data.type === "stats") {
|
|
3858
|
-
|
|
3473
|
+
resolve(data);
|
|
3859
3474
|
}
|
|
3860
3475
|
});
|
|
3861
3476
|
ws1.addEventListener("close", reject);
|
|
@@ -3875,18 +3490,18 @@ function runRawWebSocketTests(driverTestConfig) {
|
|
|
3875
3490
|
const actor2 = client.rawWebSocketBinaryActor.getOrCreate(["binary"]);
|
|
3876
3491
|
const ws = await actor2.websocket();
|
|
3877
3492
|
if (ws.readyState !== WebSocket.OPEN) {
|
|
3878
|
-
await new Promise((
|
|
3879
|
-
ws.addEventListener("open", () =>
|
|
3493
|
+
await new Promise((resolve, reject) => {
|
|
3494
|
+
ws.addEventListener("open", () => resolve(), { once: true });
|
|
3880
3495
|
ws.addEventListener("close", reject);
|
|
3881
3496
|
});
|
|
3882
3497
|
}
|
|
3883
3498
|
const receiveBinaryMessage = async () => {
|
|
3884
3499
|
const response = await new Promise(
|
|
3885
|
-
(
|
|
3500
|
+
(resolve, reject) => {
|
|
3886
3501
|
ws.addEventListener(
|
|
3887
3502
|
"message",
|
|
3888
3503
|
(event) => {
|
|
3889
|
-
|
|
3504
|
+
resolve(event.data);
|
|
3890
3505
|
},
|
|
3891
3506
|
{ once: true }
|
|
3892
3507
|
);
|
|
@@ -3915,18 +3530,18 @@ function runRawWebSocketTests(driverTestConfig) {
|
|
|
3915
3530
|
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
3916
3531
|
const actor2 = client.rawWebSocketActor.getOrCreate(["paths"]);
|
|
3917
3532
|
const ws = await actor2.websocket("custom/path");
|
|
3918
|
-
await new Promise((
|
|
3533
|
+
await new Promise((resolve, reject) => {
|
|
3919
3534
|
ws.addEventListener("open", () => {
|
|
3920
|
-
|
|
3535
|
+
resolve();
|
|
3921
3536
|
});
|
|
3922
3537
|
ws.addEventListener("error", reject);
|
|
3923
3538
|
ws.addEventListener("close", reject);
|
|
3924
3539
|
});
|
|
3925
|
-
const welcomeMessage = await new Promise((
|
|
3540
|
+
const welcomeMessage = await new Promise((resolve) => {
|
|
3926
3541
|
ws.addEventListener(
|
|
3927
3542
|
"message",
|
|
3928
3543
|
(event) => {
|
|
3929
|
-
|
|
3544
|
+
resolve(JSON.parse(event.data));
|
|
3930
3545
|
},
|
|
3931
3546
|
{ once: true }
|
|
3932
3547
|
);
|
|
@@ -3941,15 +3556,15 @@ function runRawWebSocketTests(driverTestConfig) {
|
|
|
3941
3556
|
params: testParams
|
|
3942
3557
|
});
|
|
3943
3558
|
const ws = await actor2.websocket();
|
|
3944
|
-
await new Promise((
|
|
3945
|
-
ws.addEventListener("open", () =>
|
|
3559
|
+
await new Promise((resolve) => {
|
|
3560
|
+
ws.addEventListener("open", () => resolve(), { once: true });
|
|
3946
3561
|
});
|
|
3947
3562
|
ws.send(JSON.stringify({ type: "getAuthData" }));
|
|
3948
|
-
const response = await new Promise((
|
|
3563
|
+
const response = await new Promise((resolve, reject) => {
|
|
3949
3564
|
ws.addEventListener("message", (event) => {
|
|
3950
3565
|
const data = JSON.parse(event.data);
|
|
3951
3566
|
if (data.type === "authData") {
|
|
3952
|
-
|
|
3567
|
+
resolve(data);
|
|
3953
3568
|
}
|
|
3954
3569
|
});
|
|
3955
3570
|
ws.addEventListener("close", reject);
|
|
@@ -3962,15 +3577,15 @@ function runRawWebSocketTests(driverTestConfig) {
|
|
|
3962
3577
|
const actor2 = client.rawWebSocketActor.getOrCreate(["close-test"]);
|
|
3963
3578
|
const ws = await actor2.websocket();
|
|
3964
3579
|
if (ws.readyState !== WebSocket.OPEN) {
|
|
3965
|
-
await new Promise((
|
|
3966
|
-
ws.addEventListener("open", () =>
|
|
3580
|
+
await new Promise((resolve, reject) => {
|
|
3581
|
+
ws.addEventListener("open", () => resolve(), { once: true });
|
|
3967
3582
|
ws.addEventListener("close", reject);
|
|
3968
3583
|
});
|
|
3969
3584
|
}
|
|
3970
3585
|
const initialStats = await actor2.getStats();
|
|
3971
3586
|
_vitest.expect.call(void 0, initialStats.connectionCount).toBe(1);
|
|
3972
|
-
const closePromise = new Promise((
|
|
3973
|
-
ws.addEventListener("close", () =>
|
|
3587
|
+
const closePromise = new Promise((resolve) => {
|
|
3588
|
+
ws.addEventListener("close", () => resolve(), { once: true });
|
|
3974
3589
|
});
|
|
3975
3590
|
ws.close();
|
|
3976
3591
|
await closePromise;
|
|
@@ -3980,7 +3595,7 @@ function runRawWebSocketTests(driverTestConfig) {
|
|
|
3980
3595
|
if (finalStats.connectionCount === 0) {
|
|
3981
3596
|
break;
|
|
3982
3597
|
}
|
|
3983
|
-
await new Promise((
|
|
3598
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
3984
3599
|
}
|
|
3985
3600
|
_vitest.expect.call(void 0, finalStats == null ? void 0 : finalStats.connectionCount).toBe(0);
|
|
3986
3601
|
});
|
|
@@ -3988,15 +3603,15 @@ function runRawWebSocketTests(driverTestConfig) {
|
|
|
3988
3603
|
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
3989
3604
|
const actor2 = client.rawWebSocketActor.getOrCreate(["open-close-test"]);
|
|
3990
3605
|
const ws1 = await actor2.websocket();
|
|
3991
|
-
await new Promise((
|
|
3992
|
-
ws1.addEventListener("open", () =>
|
|
3606
|
+
await new Promise((resolve, reject) => {
|
|
3607
|
+
ws1.addEventListener("open", () => resolve(), { once: true });
|
|
3993
3608
|
ws1.addEventListener("close", reject);
|
|
3994
3609
|
});
|
|
3995
|
-
const welcome1 = await new Promise((
|
|
3610
|
+
const welcome1 = await new Promise((resolve, reject) => {
|
|
3996
3611
|
ws1.addEventListener(
|
|
3997
3612
|
"message",
|
|
3998
3613
|
(event) => {
|
|
3999
|
-
|
|
3614
|
+
resolve(JSON.parse(event.data));
|
|
4000
3615
|
},
|
|
4001
3616
|
{ once: true }
|
|
4002
3617
|
);
|
|
@@ -4005,15 +3620,15 @@ function runRawWebSocketTests(driverTestConfig) {
|
|
|
4005
3620
|
_vitest.expect.call(void 0, welcome1.type).toBe("welcome");
|
|
4006
3621
|
_vitest.expect.call(void 0, welcome1.connectionCount).toBe(1);
|
|
4007
3622
|
const ws2 = await actor2.websocket();
|
|
4008
|
-
await new Promise((
|
|
4009
|
-
ws2.addEventListener("open", () =>
|
|
3623
|
+
await new Promise((resolve, reject) => {
|
|
3624
|
+
ws2.addEventListener("open", () => resolve(), { once: true });
|
|
4010
3625
|
ws2.addEventListener("close", reject);
|
|
4011
3626
|
});
|
|
4012
|
-
const welcome2 = await new Promise((
|
|
3627
|
+
const welcome2 = await new Promise((resolve, reject) => {
|
|
4013
3628
|
ws2.addEventListener(
|
|
4014
3629
|
"message",
|
|
4015
3630
|
(event) => {
|
|
4016
|
-
|
|
3631
|
+
resolve(JSON.parse(event.data));
|
|
4017
3632
|
},
|
|
4018
3633
|
{ once: true }
|
|
4019
3634
|
);
|
|
@@ -4024,8 +3639,8 @@ function runRawWebSocketTests(driverTestConfig) {
|
|
|
4024
3639
|
const midStats = await actor2.getStats();
|
|
4025
3640
|
_vitest.expect.call(void 0, midStats.connectionCount).toBe(2);
|
|
4026
3641
|
ws1.close();
|
|
4027
|
-
await new Promise((
|
|
4028
|
-
ws1.addEventListener("close", () =>
|
|
3642
|
+
await new Promise((resolve) => {
|
|
3643
|
+
ws1.addEventListener("close", () => resolve(), { once: true });
|
|
4029
3644
|
});
|
|
4030
3645
|
let afterFirstClose;
|
|
4031
3646
|
for (let i = 0; i < 20; i++) {
|
|
@@ -4033,12 +3648,12 @@ function runRawWebSocketTests(driverTestConfig) {
|
|
|
4033
3648
|
if (afterFirstClose.connectionCount === 1) {
|
|
4034
3649
|
break;
|
|
4035
3650
|
}
|
|
4036
|
-
await new Promise((
|
|
3651
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
4037
3652
|
}
|
|
4038
3653
|
_vitest.expect.call(void 0, afterFirstClose == null ? void 0 : afterFirstClose.connectionCount).toBe(1);
|
|
4039
3654
|
ws2.close();
|
|
4040
|
-
await new Promise((
|
|
4041
|
-
ws2.addEventListener("close", () =>
|
|
3655
|
+
await new Promise((resolve) => {
|
|
3656
|
+
ws2.addEventListener("close", () => resolve(), { once: true });
|
|
4042
3657
|
});
|
|
4043
3658
|
let finalStats;
|
|
4044
3659
|
for (let i = 0; i < 20; i++) {
|
|
@@ -4046,7 +3661,7 @@ function runRawWebSocketTests(driverTestConfig) {
|
|
|
4046
3661
|
if (finalStats.connectionCount === 0) {
|
|
4047
3662
|
break;
|
|
4048
3663
|
}
|
|
4049
|
-
await new Promise((
|
|
3664
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
4050
3665
|
}
|
|
4051
3666
|
_vitest.expect.call(void 0, finalStats == null ? void 0 : finalStats.connectionCount).toBe(0);
|
|
4052
3667
|
});
|
|
@@ -4054,15 +3669,15 @@ function runRawWebSocketTests(driverTestConfig) {
|
|
|
4054
3669
|
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
4055
3670
|
const actor2 = client.rawWebSocketActor.getOrCreate(["query-params"]);
|
|
4056
3671
|
const ws = await actor2.websocket("api/v1/stream?token=abc123&user=test");
|
|
4057
|
-
await new Promise((
|
|
4058
|
-
ws.addEventListener("open", () =>
|
|
3672
|
+
await new Promise((resolve, reject) => {
|
|
3673
|
+
ws.addEventListener("open", () => resolve(), { once: true });
|
|
4059
3674
|
ws.addEventListener("error", reject);
|
|
4060
3675
|
});
|
|
4061
|
-
const requestInfoPromise = new Promise((
|
|
3676
|
+
const requestInfoPromise = new Promise((resolve, reject) => {
|
|
4062
3677
|
ws.addEventListener("message", (event) => {
|
|
4063
3678
|
const data = JSON.parse(event.data);
|
|
4064
3679
|
if (data.type === "requestInfo") {
|
|
4065
|
-
|
|
3680
|
+
resolve(data);
|
|
4066
3681
|
}
|
|
4067
3682
|
});
|
|
4068
3683
|
ws.addEventListener("close", reject);
|
|
@@ -4077,289 +3692,6 @@ function runRawWebSocketTests(driverTestConfig) {
|
|
|
4077
3692
|
});
|
|
4078
3693
|
}
|
|
4079
3694
|
|
|
4080
|
-
// src/driver-test-suite/tests/raw-websocket-direct-registry.ts
|
|
4081
|
-
|
|
4082
|
-
function runRawWebSocketDirectRegistryTests(driverTestConfig) {
|
|
4083
|
-
_vitest.describe.call(void 0, "raw websocket - direct registry access", () => {
|
|
4084
|
-
_vitest.test.call(void 0, "should establish vanilla WebSocket connection with proper subprotocols", async (c) => {
|
|
4085
|
-
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
4086
|
-
const WebSocket2 = await _chunkTZJKSBUQcjs.importWebSocket.call(void 0, );
|
|
4087
|
-
const actorQuery = {
|
|
4088
|
-
getOrCreateForKey: {
|
|
4089
|
-
name: "rawWebSocketActor",
|
|
4090
|
-
key: ["vanilla-test"]
|
|
4091
|
-
}
|
|
4092
|
-
};
|
|
4093
|
-
const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
|
|
4094
|
-
const wsEndpoint = endpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
|
|
4095
|
-
const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
|
|
4096
|
-
const ws = new WebSocket2(wsUrl, [
|
|
4097
|
-
queryProtocol,
|
|
4098
|
-
// HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
4099
|
-
"rivetkit"
|
|
4100
|
-
]);
|
|
4101
|
-
await new Promise((resolve2, reject) => {
|
|
4102
|
-
ws.addEventListener("open", () => {
|
|
4103
|
-
resolve2();
|
|
4104
|
-
});
|
|
4105
|
-
ws.addEventListener("error", reject);
|
|
4106
|
-
ws.addEventListener("close", reject);
|
|
4107
|
-
});
|
|
4108
|
-
const welcomeMessage = await new Promise((resolve2, reject) => {
|
|
4109
|
-
ws.addEventListener(
|
|
4110
|
-
"message",
|
|
4111
|
-
(event) => {
|
|
4112
|
-
resolve2(JSON.parse(event.data));
|
|
4113
|
-
},
|
|
4114
|
-
{ once: true }
|
|
4115
|
-
);
|
|
4116
|
-
ws.addEventListener("close", reject);
|
|
4117
|
-
});
|
|
4118
|
-
_vitest.expect.call(void 0, welcomeMessage.type).toBe("welcome");
|
|
4119
|
-
_vitest.expect.call(void 0, welcomeMessage.connectionCount).toBe(1);
|
|
4120
|
-
ws.close();
|
|
4121
|
-
});
|
|
4122
|
-
_vitest.test.call(void 0, "should echo messages with vanilla WebSocket", async (c) => {
|
|
4123
|
-
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
4124
|
-
const WebSocket2 = await _chunkTZJKSBUQcjs.importWebSocket.call(void 0, );
|
|
4125
|
-
const actorQuery = {
|
|
4126
|
-
getOrCreateForKey: {
|
|
4127
|
-
name: "rawWebSocketActor",
|
|
4128
|
-
key: ["vanilla-echo"]
|
|
4129
|
-
}
|
|
4130
|
-
};
|
|
4131
|
-
const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
|
|
4132
|
-
const wsEndpoint = endpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
|
|
4133
|
-
const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
|
|
4134
|
-
const ws = new WebSocket2(wsUrl, [
|
|
4135
|
-
queryProtocol,
|
|
4136
|
-
// HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
4137
|
-
"rivetkit"
|
|
4138
|
-
]);
|
|
4139
|
-
await new Promise((resolve2, reject) => {
|
|
4140
|
-
ws.addEventListener("open", () => resolve2(), { once: true });
|
|
4141
|
-
ws.addEventListener("close", reject);
|
|
4142
|
-
});
|
|
4143
|
-
await new Promise((resolve2, reject) => {
|
|
4144
|
-
ws.addEventListener("message", () => resolve2(), { once: true });
|
|
4145
|
-
ws.addEventListener("close", reject);
|
|
4146
|
-
});
|
|
4147
|
-
const testMessage = { test: "vanilla", timestamp: Date.now() };
|
|
4148
|
-
ws.send(JSON.stringify(testMessage));
|
|
4149
|
-
const echoMessage = await new Promise((resolve2, reject) => {
|
|
4150
|
-
ws.addEventListener(
|
|
4151
|
-
"message",
|
|
4152
|
-
(event) => {
|
|
4153
|
-
resolve2(JSON.parse(event.data));
|
|
4154
|
-
},
|
|
4155
|
-
{ once: true }
|
|
4156
|
-
);
|
|
4157
|
-
ws.addEventListener("close", reject);
|
|
4158
|
-
});
|
|
4159
|
-
_vitest.expect.call(void 0, echoMessage).toEqual(testMessage);
|
|
4160
|
-
ws.close();
|
|
4161
|
-
});
|
|
4162
|
-
_vitest.test.call(void 0, "should handle connection parameters for authentication", async (c) => {
|
|
4163
|
-
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
4164
|
-
const WebSocket2 = await _chunkTZJKSBUQcjs.importWebSocket.call(void 0, );
|
|
4165
|
-
const actorQuery = {
|
|
4166
|
-
getOrCreateForKey: {
|
|
4167
|
-
name: "rawWebSocketActor",
|
|
4168
|
-
key: ["vanilla-auth"]
|
|
4169
|
-
}
|
|
4170
|
-
};
|
|
4171
|
-
const connParams = { token: "ws-auth-token", userId: "ws-user123" };
|
|
4172
|
-
const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
|
|
4173
|
-
const connParamsProtocol = `conn_params.${encodeURIComponent(JSON.stringify(connParams))}`;
|
|
4174
|
-
const wsEndpoint = endpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
|
|
4175
|
-
const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
|
|
4176
|
-
const ws = new WebSocket2(wsUrl, [
|
|
4177
|
-
queryProtocol,
|
|
4178
|
-
connParamsProtocol,
|
|
4179
|
-
// HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
4180
|
-
"rivetkit"
|
|
4181
|
-
]);
|
|
4182
|
-
await new Promise((resolve2, reject) => {
|
|
4183
|
-
ws.addEventListener("open", () => {
|
|
4184
|
-
resolve2();
|
|
4185
|
-
});
|
|
4186
|
-
ws.addEventListener("error", reject);
|
|
4187
|
-
ws.addEventListener("close", reject);
|
|
4188
|
-
});
|
|
4189
|
-
const welcomeMessage = await new Promise((resolve2, reject) => {
|
|
4190
|
-
ws.addEventListener(
|
|
4191
|
-
"message",
|
|
4192
|
-
(event) => {
|
|
4193
|
-
resolve2(JSON.parse(event.data));
|
|
4194
|
-
},
|
|
4195
|
-
{ once: true }
|
|
4196
|
-
);
|
|
4197
|
-
ws.addEventListener("close", reject);
|
|
4198
|
-
});
|
|
4199
|
-
_vitest.expect.call(void 0, welcomeMessage.type).toBe("welcome");
|
|
4200
|
-
ws.close();
|
|
4201
|
-
});
|
|
4202
|
-
_vitest.test.call(void 0, "should handle custom user protocols alongside rivetkit protocols", async (c) => {
|
|
4203
|
-
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
4204
|
-
const WebSocket2 = await _chunkTZJKSBUQcjs.importWebSocket.call(void 0, );
|
|
4205
|
-
const actorQuery = {
|
|
4206
|
-
getOrCreateForKey: {
|
|
4207
|
-
name: "rawWebSocketActor",
|
|
4208
|
-
key: ["vanilla-protocols"]
|
|
4209
|
-
}
|
|
4210
|
-
};
|
|
4211
|
-
const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
|
|
4212
|
-
const userProtocol1 = "chat-v1";
|
|
4213
|
-
const userProtocol2 = "custom-protocol";
|
|
4214
|
-
const wsEndpoint = endpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
|
|
4215
|
-
const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
|
|
4216
|
-
const ws = new WebSocket2(wsUrl, [
|
|
4217
|
-
queryProtocol,
|
|
4218
|
-
userProtocol1,
|
|
4219
|
-
userProtocol2,
|
|
4220
|
-
// HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
4221
|
-
"rivetkit"
|
|
4222
|
-
]);
|
|
4223
|
-
await new Promise((resolve2, reject) => {
|
|
4224
|
-
ws.addEventListener("open", () => {
|
|
4225
|
-
resolve2();
|
|
4226
|
-
});
|
|
4227
|
-
ws.addEventListener("error", reject);
|
|
4228
|
-
ws.addEventListener("close", reject);
|
|
4229
|
-
});
|
|
4230
|
-
const welcomeMessage = await new Promise((resolve2, reject) => {
|
|
4231
|
-
ws.addEventListener(
|
|
4232
|
-
"message",
|
|
4233
|
-
(event) => {
|
|
4234
|
-
resolve2(JSON.parse(event.data));
|
|
4235
|
-
},
|
|
4236
|
-
{ once: true }
|
|
4237
|
-
);
|
|
4238
|
-
ws.addEventListener("close", reject);
|
|
4239
|
-
});
|
|
4240
|
-
_vitest.expect.call(void 0, welcomeMessage.type).toBe("welcome");
|
|
4241
|
-
ws.close();
|
|
4242
|
-
});
|
|
4243
|
-
_vitest.test.call(void 0, "should handle different paths for WebSocket routes", async (c) => {
|
|
4244
|
-
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
4245
|
-
const WebSocket2 = await _chunkTZJKSBUQcjs.importWebSocket.call(void 0, );
|
|
4246
|
-
const actorQuery = {
|
|
4247
|
-
getOrCreateForKey: {
|
|
4248
|
-
name: "rawWebSocketActor",
|
|
4249
|
-
key: ["vanilla-paths"]
|
|
4250
|
-
}
|
|
4251
|
-
};
|
|
4252
|
-
const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
|
|
4253
|
-
const wsEndpoint = endpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
|
|
4254
|
-
const paths = ["chat/room1", "updates/feed", "stream/events"];
|
|
4255
|
-
for (const path of paths) {
|
|
4256
|
-
const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/${path}`;
|
|
4257
|
-
const ws = new WebSocket2(wsUrl, [
|
|
4258
|
-
queryProtocol,
|
|
4259
|
-
// HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
4260
|
-
"rivetkit"
|
|
4261
|
-
]);
|
|
4262
|
-
await new Promise((resolve2, reject) => {
|
|
4263
|
-
ws.addEventListener("open", () => {
|
|
4264
|
-
resolve2();
|
|
4265
|
-
});
|
|
4266
|
-
ws.addEventListener("error", reject);
|
|
4267
|
-
});
|
|
4268
|
-
const welcomeMessage = await new Promise((resolve2, reject) => {
|
|
4269
|
-
ws.addEventListener(
|
|
4270
|
-
"message",
|
|
4271
|
-
(event) => {
|
|
4272
|
-
resolve2(JSON.parse(event.data));
|
|
4273
|
-
},
|
|
4274
|
-
{ once: true }
|
|
4275
|
-
);
|
|
4276
|
-
ws.addEventListener("close", reject);
|
|
4277
|
-
});
|
|
4278
|
-
_vitest.expect.call(void 0, welcomeMessage.type).toBe("welcome");
|
|
4279
|
-
ws.close();
|
|
4280
|
-
}
|
|
4281
|
-
});
|
|
4282
|
-
_vitest.test.call(void 0, "should return error for actors without onWebSocket handler", async (c) => {
|
|
4283
|
-
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
4284
|
-
const WebSocket2 = await _chunkTZJKSBUQcjs.importWebSocket.call(void 0, );
|
|
4285
|
-
const actorQuery = {
|
|
4286
|
-
getOrCreateForKey: {
|
|
4287
|
-
name: "rawWebSocketNoHandlerActor",
|
|
4288
|
-
key: ["vanilla-no-handler"]
|
|
4289
|
-
}
|
|
4290
|
-
};
|
|
4291
|
-
const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
|
|
4292
|
-
const wsEndpoint = endpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
|
|
4293
|
-
const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
|
|
4294
|
-
const ws = new WebSocket2(wsUrl, [
|
|
4295
|
-
queryProtocol,
|
|
4296
|
-
// HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
4297
|
-
"rivetkit"
|
|
4298
|
-
]);
|
|
4299
|
-
await new Promise((resolve2) => {
|
|
4300
|
-
ws.addEventListener("error", () => resolve2(), { once: true });
|
|
4301
|
-
ws.addEventListener("close", () => resolve2(), { once: true });
|
|
4302
|
-
});
|
|
4303
|
-
_vitest.expect.call(void 0, ws.readyState).toBe(ws.CLOSED || 3);
|
|
4304
|
-
});
|
|
4305
|
-
_vitest.test.call(void 0, "should handle binary data over vanilla WebSocket", async (c) => {
|
|
4306
|
-
const { endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
4307
|
-
const WebSocket2 = await _chunkTZJKSBUQcjs.importWebSocket.call(void 0, );
|
|
4308
|
-
const actorQuery = {
|
|
4309
|
-
getOrCreateForKey: {
|
|
4310
|
-
name: "rawWebSocketActor",
|
|
4311
|
-
key: ["vanilla-binary"]
|
|
4312
|
-
}
|
|
4313
|
-
};
|
|
4314
|
-
const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
|
|
4315
|
-
const wsEndpoint = endpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
|
|
4316
|
-
const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
|
|
4317
|
-
const ws = new WebSocket2(wsUrl, [
|
|
4318
|
-
queryProtocol,
|
|
4319
|
-
// HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
|
|
4320
|
-
"rivetkit"
|
|
4321
|
-
]);
|
|
4322
|
-
ws.binaryType = "arraybuffer";
|
|
4323
|
-
await new Promise((resolve2, reject) => {
|
|
4324
|
-
ws.addEventListener("open", () => resolve2(), { once: true });
|
|
4325
|
-
ws.addEventListener("close", reject);
|
|
4326
|
-
});
|
|
4327
|
-
await new Promise((resolve2, reject) => {
|
|
4328
|
-
ws.addEventListener("message", () => resolve2(), { once: true });
|
|
4329
|
-
ws.addEventListener("close", reject);
|
|
4330
|
-
});
|
|
4331
|
-
const binaryData = new Uint8Array([1, 2, 3, 4, 5]);
|
|
4332
|
-
ws.send(binaryData.buffer);
|
|
4333
|
-
const echoedData = await new Promise((resolve2, reject) => {
|
|
4334
|
-
ws.addEventListener(
|
|
4335
|
-
"message",
|
|
4336
|
-
(event) => {
|
|
4337
|
-
resolve2(event.data);
|
|
4338
|
-
},
|
|
4339
|
-
{ once: true }
|
|
4340
|
-
);
|
|
4341
|
-
ws.addEventListener("close", reject);
|
|
4342
|
-
});
|
|
4343
|
-
const echoedArray = new Uint8Array(echoedData);
|
|
4344
|
-
_vitest.expect.call(void 0, Array.from(echoedArray)).toEqual([1, 2, 3, 4, 5]);
|
|
4345
|
-
ws.send(JSON.stringify({ type: "binary-test", size: binaryData.length }));
|
|
4346
|
-
const echoMessage = await new Promise((resolve2, reject) => {
|
|
4347
|
-
ws.addEventListener(
|
|
4348
|
-
"message",
|
|
4349
|
-
(event) => {
|
|
4350
|
-
resolve2(JSON.parse(event.data));
|
|
4351
|
-
},
|
|
4352
|
-
{ once: true }
|
|
4353
|
-
);
|
|
4354
|
-
ws.addEventListener("close", reject);
|
|
4355
|
-
});
|
|
4356
|
-
_vitest.expect.call(void 0, echoMessage.type).toBe("binary-test");
|
|
4357
|
-
_vitest.expect.call(void 0, echoMessage.size).toBe(5);
|
|
4358
|
-
ws.close();
|
|
4359
|
-
});
|
|
4360
|
-
});
|
|
4361
|
-
}
|
|
4362
|
-
|
|
4363
3695
|
// src/driver-test-suite/tests/request-access.ts
|
|
4364
3696
|
|
|
4365
3697
|
function runRequestAccessTests(driverTestConfig) {
|
|
@@ -4434,95 +3766,6 @@ function runRequestAccessTests(driverTestConfig) {
|
|
|
4434
3766
|
}
|
|
4435
3767
|
await connection.dispose();
|
|
4436
3768
|
});
|
|
4437
|
-
_vitest.test.call(void 0, "should have access to request object in onAuth", async (c) => {
|
|
4438
|
-
const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
4439
|
-
if (driverTestConfig.clientType === "http") {
|
|
4440
|
-
console.log("Skipping onAuth test - requires public endpoint setup");
|
|
4441
|
-
}
|
|
4442
|
-
});
|
|
4443
|
-
_vitest.test.call(void 0, "should have access to request object in onFetch", async (c) => {
|
|
4444
|
-
const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
4445
|
-
const handle = client.requestAccessActor.getOrCreate(["test-fetch"]);
|
|
4446
|
-
await handle.resolve();
|
|
4447
|
-
const actorQuery = {
|
|
4448
|
-
getOrCreateForKey: {
|
|
4449
|
-
name: "requestAccessActor",
|
|
4450
|
-
key: ["test-fetch"]
|
|
4451
|
-
}
|
|
4452
|
-
};
|
|
4453
|
-
const url = `${endpoint}/registry/actors/raw/http/test-path`;
|
|
4454
|
-
const response = await fetch(url, {
|
|
4455
|
-
method: "POST",
|
|
4456
|
-
headers: {
|
|
4457
|
-
"Content-Type": "application/json",
|
|
4458
|
-
"X-Test-Header": "test-value",
|
|
4459
|
-
"X-RivetKit-Query": JSON.stringify(actorQuery)
|
|
4460
|
-
},
|
|
4461
|
-
body: JSON.stringify({ test: "data" })
|
|
4462
|
-
});
|
|
4463
|
-
if (!response.ok) {
|
|
4464
|
-
const errorText = await response.text();
|
|
4465
|
-
console.error(
|
|
4466
|
-
`HTTP request failed: ${response.status} ${response.statusText}`,
|
|
4467
|
-
errorText
|
|
4468
|
-
);
|
|
4469
|
-
}
|
|
4470
|
-
_vitest.expect.call(void 0, response.ok).toBe(true);
|
|
4471
|
-
const data = await response.json();
|
|
4472
|
-
_vitest.expect.call(void 0, data.hasRequest).toBe(true);
|
|
4473
|
-
_vitest.expect.call(void 0, data.requestUrl).toContain("/test-path");
|
|
4474
|
-
_vitest.expect.call(void 0, data.requestMethod).toBe("POST");
|
|
4475
|
-
_vitest.expect.call(void 0, data.requestHeaders).toBeDefined();
|
|
4476
|
-
_vitest.expect.call(void 0, data.requestHeaders["content-type"]).toBe(
|
|
4477
|
-
"application/json"
|
|
4478
|
-
);
|
|
4479
|
-
_vitest.expect.call(void 0, data.requestHeaders["x-test-header"]).toBe("test-value");
|
|
4480
|
-
});
|
|
4481
|
-
_vitest.test.call(void 0, "should have access to request object in onWebSocket", async (c) => {
|
|
4482
|
-
const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
|
|
4483
|
-
if (typeof WebSocket !== "undefined") {
|
|
4484
|
-
const handle = client.requestAccessActor.getOrCreate([
|
|
4485
|
-
"test-websocket"
|
|
4486
|
-
]);
|
|
4487
|
-
await handle.resolve();
|
|
4488
|
-
const actorQuery = {
|
|
4489
|
-
getOrCreateForKey: {
|
|
4490
|
-
name: "requestAccessActor",
|
|
4491
|
-
key: ["test-websocket"]
|
|
4492
|
-
}
|
|
4493
|
-
};
|
|
4494
|
-
const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
|
|
4495
|
-
const wsUrl = endpoint.replace("http://", "ws://").replace("https://", "wss://");
|
|
4496
|
-
const ws = new WebSocket(
|
|
4497
|
-
`${wsUrl}/registry/actors/raw/websocket/test-path`,
|
|
4498
|
-
[
|
|
4499
|
-
queryProtocol,
|
|
4500
|
-
"rivetkit"
|
|
4501
|
-
// Required protocol
|
|
4502
|
-
]
|
|
4503
|
-
);
|
|
4504
|
-
await new Promise((resolve2, reject) => {
|
|
4505
|
-
ws.onopen = () => {
|
|
4506
|
-
};
|
|
4507
|
-
ws.onmessage = (event) => {
|
|
4508
|
-
try {
|
|
4509
|
-
const data = JSON.parse(event.data);
|
|
4510
|
-
_vitest.expect.call(void 0, data.hasRequest).toBe(true);
|
|
4511
|
-
_vitest.expect.call(void 0, data.requestUrl).toContain("/test-path");
|
|
4512
|
-
_vitest.expect.call(void 0, data.requestMethod).toBe("GET");
|
|
4513
|
-
_vitest.expect.call(void 0, data.requestHeaders).toBeDefined();
|
|
4514
|
-
ws.close();
|
|
4515
|
-
resolve2();
|
|
4516
|
-
} catch (error) {
|
|
4517
|
-
reject(error);
|
|
4518
|
-
}
|
|
4519
|
-
};
|
|
4520
|
-
ws.onerror = (error) => {
|
|
4521
|
-
reject(error);
|
|
4522
|
-
};
|
|
4523
|
-
});
|
|
4524
|
-
}
|
|
4525
|
-
});
|
|
4526
3769
|
});
|
|
4527
3770
|
}
|
|
4528
3771
|
|
|
@@ -4553,13 +3796,10 @@ function runDriverTests(driverTestConfigPartial) {
|
|
|
4553
3796
|
runActorMetadataTests(driverTestConfig);
|
|
4554
3797
|
runActorOnStateChangeTests(driverTestConfig);
|
|
4555
3798
|
runActorErrorHandlingTests(driverTestConfig);
|
|
4556
|
-
runActorAuthTests(driverTestConfig);
|
|
4557
3799
|
runActorInlineClientTests(driverTestConfig);
|
|
4558
3800
|
runRawHttpTests(driverTestConfig);
|
|
4559
3801
|
runRawHttpRequestPropertiesTests(driverTestConfig);
|
|
4560
3802
|
runRawWebSocketTests(driverTestConfig);
|
|
4561
|
-
runRawHttpDirectRegistryTests(driverTestConfig);
|
|
4562
|
-
runRawWebSocketDirectRegistryTests(driverTestConfig);
|
|
4563
3803
|
runActorInspectorTests(driverTestConfig);
|
|
4564
3804
|
});
|
|
4565
3805
|
}
|
|
@@ -4571,46 +3811,64 @@ async function createTestRuntime(registryPath, driverFactory) {
|
|
|
4571
3811
|
filepath: registryPath
|
|
4572
3812
|
});
|
|
4573
3813
|
registry.config.test.enabled = true;
|
|
4574
|
-
const {
|
|
4575
|
-
let injectWebSocket;
|
|
4576
|
-
let upgradeWebSocket;
|
|
4577
|
-
const config = _chunkCTBOSFUHcjs.RunConfigSchema.parse({
|
|
3814
|
+
const {
|
|
4578
3815
|
driver,
|
|
4579
|
-
|
|
4580
|
-
|
|
4581
|
-
|
|
4582
|
-
|
|
4583
|
-
|
|
4584
|
-
|
|
4585
|
-
|
|
4586
|
-
|
|
4587
|
-
|
|
4588
|
-
|
|
4589
|
-
|
|
4590
|
-
|
|
4591
|
-
|
|
4592
|
-
|
|
4593
|
-
|
|
4594
|
-
|
|
4595
|
-
|
|
4596
|
-
|
|
4597
|
-
|
|
4598
|
-
|
|
4599
|
-
|
|
4600
|
-
|
|
4601
|
-
|
|
4602
|
-
|
|
4603
|
-
|
|
4604
|
-
|
|
4605
|
-
|
|
4606
|
-
|
|
4607
|
-
|
|
4608
|
-
|
|
4609
|
-
|
|
4610
|
-
|
|
4611
|
-
|
|
4612
|
-
|
|
4613
|
-
|
|
3816
|
+
cleanup: driverCleanup,
|
|
3817
|
+
rivetEngine
|
|
3818
|
+
} = await driverFactory(registry);
|
|
3819
|
+
if (rivetEngine) {
|
|
3820
|
+
const cleanup = async () => {
|
|
3821
|
+
await (driverCleanup == null ? void 0 : driverCleanup());
|
|
3822
|
+
};
|
|
3823
|
+
return {
|
|
3824
|
+
endpoint: rivetEngine.endpoint,
|
|
3825
|
+
namespace: rivetEngine.namespace,
|
|
3826
|
+
runnerName: rivetEngine.runnerName,
|
|
3827
|
+
cleanup
|
|
3828
|
+
};
|
|
3829
|
+
} else {
|
|
3830
|
+
let upgradeWebSocket;
|
|
3831
|
+
const config = _chunkRM2SVURRcjs.RunConfigSchema.parse({
|
|
3832
|
+
driver,
|
|
3833
|
+
getUpgradeWebSocket: () => upgradeWebSocket,
|
|
3834
|
+
inspector: {
|
|
3835
|
+
enabled: true,
|
|
3836
|
+
token: () => "token"
|
|
3837
|
+
}
|
|
3838
|
+
});
|
|
3839
|
+
const managerDriver = driver.manager(registry.config, config);
|
|
3840
|
+
const { router } = _chunkMRZS2J4Xcjs.createManagerRouter.call(void 0,
|
|
3841
|
+
registry.config,
|
|
3842
|
+
config,
|
|
3843
|
+
managerDriver,
|
|
3844
|
+
false
|
|
3845
|
+
);
|
|
3846
|
+
const nodeWebSocket = _nodews.createNodeWebSocket.call(void 0, { app: router });
|
|
3847
|
+
upgradeWebSocket = nodeWebSocket.upgradeWebSocket;
|
|
3848
|
+
const port = await _chunkFGFT4FVXcjs.getPort.call(void 0, );
|
|
3849
|
+
const server = _nodeserver.serve.call(void 0, {
|
|
3850
|
+
fetch: router.fetch,
|
|
3851
|
+
hostname: "127.0.0.1",
|
|
3852
|
+
port
|
|
3853
|
+
});
|
|
3854
|
+
_invariant2.default.call(void 0,
|
|
3855
|
+
nodeWebSocket.injectWebSocket !== void 0,
|
|
3856
|
+
"should have injectWebSocket"
|
|
3857
|
+
);
|
|
3858
|
+
nodeWebSocket.injectWebSocket(server);
|
|
3859
|
+
const serverEndpoint = `http://127.0.0.1:${port}`;
|
|
3860
|
+
logger().info({ msg: "test serer listening", port });
|
|
3861
|
+
const cleanup = async () => {
|
|
3862
|
+
await new Promise((resolve) => server.close(() => resolve(void 0)));
|
|
3863
|
+
await (driverCleanup == null ? void 0 : driverCleanup());
|
|
3864
|
+
};
|
|
3865
|
+
return {
|
|
3866
|
+
endpoint: serverEndpoint,
|
|
3867
|
+
namespace: "default",
|
|
3868
|
+
runnerName: "rivetkit",
|
|
3869
|
+
cleanup
|
|
3870
|
+
};
|
|
3871
|
+
}
|
|
4614
3872
|
}
|
|
4615
3873
|
|
|
4616
3874
|
|