rivetkit 2.0.5 → 2.0.7-rc.1
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/dist/schemas/actor-persist/v1.ts +0 -6
- package/dist/tsup/actor-router-consts-B3Lu87yJ.d.cts +28 -0
- package/dist/tsup/actor-router-consts-B3Lu87yJ.d.ts +28 -0
- package/dist/tsup/{chunk-5YTI25C3.cjs → chunk-3MBP4WNC.cjs} +7 -7
- package/dist/tsup/{chunk-5YTI25C3.cjs.map → chunk-3MBP4WNC.cjs.map} +1 -1
- package/dist/tsup/chunk-3Y45CIF4.cjs +3726 -0
- package/dist/tsup/chunk-3Y45CIF4.cjs.map +1 -0
- package/dist/tsup/chunk-4GP7BZSR.js +102 -0
- package/dist/tsup/chunk-4GP7BZSR.js.map +1 -0
- package/dist/tsup/chunk-5ZOHIKWG.cjs +4071 -0
- package/dist/tsup/chunk-5ZOHIKWG.cjs.map +1 -0
- package/dist/tsup/{chunk-WADSS5X4.cjs → chunk-6EUWRXLT.cjs} +21 -7
- package/dist/tsup/chunk-6EUWRXLT.cjs.map +1 -0
- package/dist/tsup/{chunk-D7NWUCRK.cjs → chunk-6OVKCDSH.cjs} +6 -6
- package/dist/tsup/{chunk-D7NWUCRK.cjs.map → chunk-6OVKCDSH.cjs.map} +1 -1
- package/dist/tsup/{chunk-I5VTWPHW.js → chunk-7N56ZUC7.js} +3 -3
- package/dist/tsup/{chunk-LZIBTLEY.cjs → chunk-B3TLRM4Q.cjs} +13 -25
- package/dist/tsup/chunk-B3TLRM4Q.cjs.map +1 -0
- package/dist/tsup/chunk-BW5DPM6Z.js +4071 -0
- package/dist/tsup/chunk-BW5DPM6Z.js.map +1 -0
- package/dist/tsup/chunk-DFS77KAA.cjs +1046 -0
- package/dist/tsup/chunk-DFS77KAA.cjs.map +1 -0
- package/dist/tsup/{chunk-PG3K2LI7.js → chunk-E4UVJKSV.js} +2 -2
- package/dist/tsup/chunk-G4ABMAQY.cjs +102 -0
- package/dist/tsup/chunk-G4ABMAQY.cjs.map +1 -0
- package/dist/tsup/{chunk-CKA54YQN.js → chunk-GZVBFXBI.js} +3 -15
- package/dist/tsup/chunk-GZVBFXBI.js.map +1 -0
- package/dist/tsup/chunk-HPT3I7UU.js +3726 -0
- package/dist/tsup/chunk-HPT3I7UU.js.map +1 -0
- package/dist/tsup/chunk-JD54PXWP.js +1046 -0
- package/dist/tsup/chunk-JD54PXWP.js.map +1 -0
- package/dist/tsup/{chunk-PHSQJ6QI.cjs → chunk-K4ENQCC4.cjs} +3 -3
- package/dist/tsup/{chunk-PHSQJ6QI.cjs.map → chunk-K4ENQCC4.cjs.map} +1 -1
- package/dist/tsup/{chunk-WNGOBAA7.js → chunk-PUSQNDJG.js} +2 -2
- package/dist/tsup/{chunk-CFFKMUYH.js → chunk-RVP5RUSC.js} +20 -6
- package/dist/tsup/chunk-RVP5RUSC.js.map +1 -0
- package/dist/tsup/chunk-SAZCNSVY.cjs +259 -0
- package/dist/tsup/chunk-SAZCNSVY.cjs.map +1 -0
- package/dist/tsup/{chunk-YW6Y6VNE.js → chunk-SBKRVQS2.js} +9 -5
- package/dist/tsup/chunk-SBKRVQS2.js.map +1 -0
- package/dist/tsup/{chunk-FGFT4FVX.cjs → chunk-TZGUSEIJ.cjs} +14 -10
- package/dist/tsup/chunk-TZGUSEIJ.cjs.map +1 -0
- package/dist/tsup/chunk-YQ4XQYPM.js +259 -0
- package/dist/tsup/chunk-YQ4XQYPM.js.map +1 -0
- package/dist/tsup/client/mod.cjs +9 -9
- package/dist/tsup/client/mod.d.cts +7 -8
- package/dist/tsup/client/mod.d.ts +7 -8
- package/dist/tsup/client/mod.js +8 -8
- package/dist/tsup/common/log.cjs +3 -3
- package/dist/tsup/common/log.js +2 -2
- package/dist/tsup/common/websocket.cjs +4 -4
- package/dist/tsup/common/websocket.js +3 -3
- package/dist/tsup/{connection-BvE-Oq7t.d.ts → conn-DCSQgIlw.d.ts} +1605 -1353
- package/dist/tsup/{connection-DTzmWwU5.d.cts → conn-DdzHTm2E.d.cts} +1605 -1353
- package/dist/tsup/driver-helpers/mod.cjs +31 -5
- package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
- package/dist/tsup/driver-helpers/mod.d.cts +7 -8
- package/dist/tsup/driver-helpers/mod.d.ts +7 -8
- package/dist/tsup/driver-helpers/mod.js +33 -7
- package/dist/tsup/driver-test-suite/mod.cjs +319 -216
- package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/driver-test-suite/mod.d.cts +7 -7
- package/dist/tsup/driver-test-suite/mod.d.ts +7 -7
- package/dist/tsup/driver-test-suite/mod.js +588 -485
- package/dist/tsup/driver-test-suite/mod.js.map +1 -1
- package/dist/tsup/inspector/mod.cjs +17 -5
- package/dist/tsup/inspector/mod.cjs.map +1 -1
- package/dist/tsup/inspector/mod.d.cts +34 -7
- package/dist/tsup/inspector/mod.d.ts +34 -7
- package/dist/tsup/inspector/mod.js +20 -8
- package/dist/tsup/mod.cjs +10 -17
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +56 -9
- package/dist/tsup/mod.d.ts +56 -9
- package/dist/tsup/mod.js +17 -24
- package/dist/tsup/test/mod.cjs +11 -9
- package/dist/tsup/test/mod.cjs.map +1 -1
- package/dist/tsup/test/mod.d.cts +6 -7
- package/dist/tsup/test/mod.d.ts +6 -7
- package/dist/tsup/test/mod.js +10 -8
- package/dist/tsup/utils.cjs +4 -2
- package/dist/tsup/utils.cjs.map +1 -1
- package/dist/tsup/utils.d.cts +11 -1
- package/dist/tsup/utils.d.ts +11 -1
- package/dist/tsup/utils.js +3 -1
- package/package.json +8 -4
- package/src/actor/action.ts +1 -1
- package/src/actor/config.ts +1 -1
- package/src/actor/conn-drivers.ts +205 -0
- package/src/actor/conn-socket.ts +6 -0
- package/src/actor/{connection.ts → conn.ts} +78 -84
- package/src/actor/context.ts +1 -1
- package/src/actor/driver.ts +4 -43
- package/src/actor/instance.ts +162 -86
- package/src/actor/mod.ts +6 -14
- package/src/actor/persisted.ts +2 -5
- package/src/actor/protocol/old.ts +1 -1
- package/src/actor/router-endpoints.ts +147 -138
- package/src/actor/router.ts +89 -52
- package/src/actor/utils.ts +5 -1
- package/src/client/actor-conn.ts +163 -31
- package/src/client/actor-handle.ts +0 -1
- package/src/client/client.ts +2 -2
- package/src/client/config.ts +7 -0
- package/src/client/raw-utils.ts +1 -1
- package/src/client/utils.ts +1 -1
- package/src/common/actor-router-consts.ts +59 -0
- package/src/common/router.ts +2 -1
- package/src/common/versioned-data.ts +5 -5
- package/src/driver-helpers/mod.ts +15 -2
- package/src/driver-test-suite/mod.ts +11 -2
- package/src/driver-test-suite/test-inline-client-driver.ts +40 -22
- package/src/driver-test-suite/tests/actor-conn-state.ts +66 -22
- package/src/driver-test-suite/tests/actor-conn.ts +65 -126
- package/src/driver-test-suite/tests/actor-reconnect.ts +160 -0
- package/src/driver-test-suite/tests/actor-sleep.ts +0 -1
- package/src/driver-test-suite/tests/raw-websocket.ts +0 -35
- package/src/driver-test-suite/utils.ts +8 -3
- package/src/drivers/default.ts +8 -7
- package/src/drivers/engine/actor-driver.ts +67 -44
- package/src/drivers/engine/config.ts +4 -0
- package/src/drivers/file-system/actor.ts +0 -6
- package/src/drivers/file-system/global-state.ts +3 -14
- package/src/drivers/file-system/manager.ts +12 -8
- package/src/inspector/actor.ts +4 -3
- package/src/inspector/config.ts +10 -1
- package/src/inspector/mod.ts +1 -0
- package/src/inspector/utils.ts +23 -4
- package/src/manager/driver.ts +12 -2
- package/src/manager/gateway.ts +407 -0
- package/src/manager/protocol/query.ts +1 -1
- package/src/manager/router.ts +269 -468
- package/src/manager-api/actors.ts +61 -0
- package/src/manager-api/common.ts +4 -0
- package/src/mod.ts +1 -1
- package/src/registry/mod.ts +126 -12
- package/src/registry/serve.ts +8 -3
- package/src/remote-manager-driver/actor-http-client.ts +30 -19
- package/src/remote-manager-driver/actor-websocket-client.ts +45 -18
- package/src/remote-manager-driver/api-endpoints.ts +19 -21
- package/src/remote-manager-driver/api-utils.ts +10 -1
- package/src/remote-manager-driver/mod.ts +53 -53
- package/src/remote-manager-driver/ws-proxy.ts +2 -9
- package/src/test/mod.ts +6 -2
- package/src/utils.ts +21 -2
- package/dist/tsup/chunk-2MD57QF4.js +0 -1794
- package/dist/tsup/chunk-2MD57QF4.js.map +0 -1
- package/dist/tsup/chunk-B2QGJGZQ.js +0 -338
- package/dist/tsup/chunk-B2QGJGZQ.js.map +0 -1
- package/dist/tsup/chunk-CFFKMUYH.js.map +0 -1
- package/dist/tsup/chunk-CKA54YQN.js.map +0 -1
- package/dist/tsup/chunk-FGFT4FVX.cjs.map +0 -1
- package/dist/tsup/chunk-IRMBWX36.cjs +0 -1794
- package/dist/tsup/chunk-IRMBWX36.cjs.map +0 -1
- package/dist/tsup/chunk-L7QRXNWP.js +0 -6562
- package/dist/tsup/chunk-L7QRXNWP.js.map +0 -1
- package/dist/tsup/chunk-LZIBTLEY.cjs.map +0 -1
- package/dist/tsup/chunk-MRZS2J4X.cjs +0 -6562
- package/dist/tsup/chunk-MRZS2J4X.cjs.map +0 -1
- package/dist/tsup/chunk-RM2SVURR.cjs +0 -338
- package/dist/tsup/chunk-RM2SVURR.cjs.map +0 -1
- package/dist/tsup/chunk-WADSS5X4.cjs.map +0 -1
- package/dist/tsup/chunk-YW6Y6VNE.js.map +0 -1
- package/dist/tsup/common-CXCe7s6i.d.cts +0 -218
- package/dist/tsup/common-CXCe7s6i.d.ts +0 -218
- package/dist/tsup/router-endpoints-CctffZNL.d.cts +0 -65
- package/dist/tsup/router-endpoints-DFm1BglJ.d.ts +0 -65
- package/src/actor/generic-conn-driver.ts +0 -246
- package/src/common/fake-event-source.ts +0 -267
- package/src/manager-api/routes/actors-create.ts +0 -16
- package/src/manager-api/routes/actors-delete.ts +0 -4
- package/src/manager-api/routes/actors-get-by-id.ts +0 -7
- package/src/manager-api/routes/actors-get-or-create-by-id.ts +0 -29
- package/src/manager-api/routes/actors-get.ts +0 -7
- package/src/manager-api/routes/common.ts +0 -18
- /package/dist/tsup/{chunk-I5VTWPHW.js.map → chunk-7N56ZUC7.js.map} +0 -0
- /package/dist/tsup/{chunk-PG3K2LI7.js.map → chunk-E4UVJKSV.js.map} +0 -0
- /package/dist/tsup/{chunk-WNGOBAA7.js.map → chunk-PUSQNDJG.js.map} +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as cbor from "cbor-x";
|
|
2
|
-
import type {
|
|
2
|
+
import type { Context as HonoContext } from "hono";
|
|
3
3
|
import invariant from "invariant";
|
|
4
|
-
import { ActorAlreadyExists } from "@/actor/errors";
|
|
5
4
|
import { deserializeActorKey, serializeActorKey } from "@/actor/keys";
|
|
5
|
+
import { generateRandomString } from "@/actor/utils";
|
|
6
6
|
import type { ClientConfig } from "@/client/client";
|
|
7
7
|
import { noopNext } from "@/common/utils";
|
|
8
8
|
import type {
|
|
@@ -14,21 +14,19 @@ import type {
|
|
|
14
14
|
ManagerDisplayInformation,
|
|
15
15
|
ManagerDriver,
|
|
16
16
|
} from "@/driver-helpers/mod";
|
|
17
|
-
import type {
|
|
18
|
-
import type { Encoding, RegistryConfig, UniversalWebSocket } from "@/mod";
|
|
19
|
-
import type { RunConfig } from "@/registry/run-config";
|
|
17
|
+
import type { Encoding, UniversalWebSocket } from "@/mod";
|
|
20
18
|
import { combineUrlPath } from "@/utils";
|
|
21
19
|
import { sendHttpRequestToActor } from "./actor-http-client";
|
|
22
20
|
import {
|
|
23
|
-
|
|
21
|
+
buildWebSocketProtocols,
|
|
24
22
|
openWebSocketToActor,
|
|
25
23
|
} from "./actor-websocket-client";
|
|
26
24
|
import {
|
|
27
25
|
createActor,
|
|
28
26
|
destroyActor,
|
|
29
27
|
getActor,
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
getActorByKey,
|
|
29
|
+
getOrCreateActor,
|
|
32
30
|
} from "./api-endpoints";
|
|
33
31
|
import { EngineApiError, getEndpoint } from "./api-utils";
|
|
34
32
|
import { logger } from "./log";
|
|
@@ -61,39 +59,30 @@ export class RemoteManagerDriver implements ManagerDriver {
|
|
|
61
59
|
actorId,
|
|
62
60
|
}: GetForIdInput): Promise<ActorOutput | undefined> {
|
|
63
61
|
// Fetch from API if not in cache
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
// Validate name matches
|
|
68
|
-
if (response.actor.name !== name) {
|
|
69
|
-
logger().debug({
|
|
70
|
-
msg: "actor name mismatch from api",
|
|
71
|
-
actorId,
|
|
72
|
-
apiName: response.actor.name,
|
|
73
|
-
requestedName: name,
|
|
74
|
-
});
|
|
75
|
-
return undefined;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const keyRaw = response.actor.key;
|
|
79
|
-
invariant(keyRaw, `actor ${actorId} should have key`);
|
|
80
|
-
const key = deserializeActorKey(keyRaw);
|
|
62
|
+
const response = await getActor(this.#config, name, actorId);
|
|
63
|
+
const actor = response.actors[0];
|
|
64
|
+
if (!actor) return undefined;
|
|
81
65
|
|
|
82
|
-
|
|
66
|
+
// Validate name matches
|
|
67
|
+
if (actor.name !== name) {
|
|
68
|
+
logger().debug({
|
|
69
|
+
msg: "actor name mismatch from api",
|
|
83
70
|
actorId,
|
|
84
|
-
name,
|
|
85
|
-
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
if (
|
|
89
|
-
error instanceof EngineApiError &&
|
|
90
|
-
(error as EngineApiError).group === "actor" &&
|
|
91
|
-
(error as EngineApiError).code === "not_found"
|
|
92
|
-
) {
|
|
93
|
-
return undefined;
|
|
94
|
-
}
|
|
95
|
-
throw error;
|
|
71
|
+
apiName: actor.name,
|
|
72
|
+
requestedName: name,
|
|
73
|
+
});
|
|
74
|
+
return undefined;
|
|
96
75
|
}
|
|
76
|
+
|
|
77
|
+
const keyRaw = actor.key;
|
|
78
|
+
invariant(keyRaw, `actor ${actorId} should have key`);
|
|
79
|
+
const key = deserializeActorKey(keyRaw);
|
|
80
|
+
|
|
81
|
+
return {
|
|
82
|
+
actorId,
|
|
83
|
+
name,
|
|
84
|
+
key,
|
|
85
|
+
};
|
|
97
86
|
}
|
|
98
87
|
|
|
99
88
|
async getWithKey({
|
|
@@ -105,13 +94,11 @@ export class RemoteManagerDriver implements ManagerDriver {
|
|
|
105
94
|
|
|
106
95
|
// If not in local cache, fetch by key from API
|
|
107
96
|
try {
|
|
108
|
-
const response = await
|
|
109
|
-
|
|
110
|
-
if (!
|
|
111
|
-
return undefined;
|
|
112
|
-
}
|
|
97
|
+
const response = await getActorByKey(this.#config, name, key);
|
|
98
|
+
const actor = response.actors[0];
|
|
99
|
+
if (!actor) return undefined;
|
|
113
100
|
|
|
114
|
-
const actorId =
|
|
101
|
+
const actorId = actor.actor_id;
|
|
115
102
|
|
|
116
103
|
logger().debug({
|
|
117
104
|
msg: "getWithKey: found actor via api",
|
|
@@ -148,22 +135,24 @@ export class RemoteManagerDriver implements ManagerDriver {
|
|
|
148
135
|
key,
|
|
149
136
|
});
|
|
150
137
|
|
|
151
|
-
const
|
|
138
|
+
const { actor, created } = await getOrCreateActor(this.#config, {
|
|
152
139
|
name,
|
|
153
140
|
key: serializeActorKey(key),
|
|
154
141
|
runner_name_selector: this.#config.runnerName,
|
|
155
|
-
input:
|
|
142
|
+
input: actorInput
|
|
143
|
+
? cbor.encode(actorInput).toString("base64")
|
|
144
|
+
: undefined,
|
|
156
145
|
crash_policy: "sleep",
|
|
157
146
|
});
|
|
158
147
|
|
|
159
|
-
const actorId =
|
|
148
|
+
const actorId = actor.actor_id;
|
|
160
149
|
|
|
161
150
|
logger().info({
|
|
162
151
|
msg: "getOrCreateWithKey: actor ready",
|
|
163
152
|
actorId,
|
|
164
153
|
name,
|
|
165
154
|
key,
|
|
166
|
-
created
|
|
155
|
+
created,
|
|
167
156
|
});
|
|
168
157
|
|
|
169
158
|
return {
|
|
@@ -217,6 +206,8 @@ export class RemoteManagerDriver implements ManagerDriver {
|
|
|
217
206
|
actorId: string,
|
|
218
207
|
encoding: Encoding,
|
|
219
208
|
params: unknown,
|
|
209
|
+
connId?: string,
|
|
210
|
+
connToken?: string,
|
|
220
211
|
): Promise<UniversalWebSocket> {
|
|
221
212
|
return await openWebSocketToActor(
|
|
222
213
|
this.#config,
|
|
@@ -224,6 +215,8 @@ export class RemoteManagerDriver implements ManagerDriver {
|
|
|
224
215
|
actorId,
|
|
225
216
|
encoding,
|
|
226
217
|
params,
|
|
218
|
+
connId,
|
|
219
|
+
connToken,
|
|
227
220
|
);
|
|
228
221
|
}
|
|
229
222
|
|
|
@@ -241,7 +234,8 @@ export class RemoteManagerDriver implements ManagerDriver {
|
|
|
241
234
|
actorId: string,
|
|
242
235
|
encoding: Encoding,
|
|
243
236
|
params: unknown,
|
|
244
|
-
|
|
237
|
+
connId?: string,
|
|
238
|
+
connToken?: string,
|
|
245
239
|
): Promise<Response> {
|
|
246
240
|
const upgradeWebSocket = this.#config.getUpgradeWebSocket?.();
|
|
247
241
|
invariant(upgradeWebSocket, "missing getUpgradeWebSocket");
|
|
@@ -257,14 +251,16 @@ export class RemoteManagerDriver implements ManagerDriver {
|
|
|
257
251
|
guardUrl,
|
|
258
252
|
});
|
|
259
253
|
|
|
260
|
-
// Build
|
|
261
|
-
const
|
|
254
|
+
// Build protocols
|
|
255
|
+
const protocols = buildWebSocketProtocols(
|
|
256
|
+
this.#config,
|
|
262
257
|
actorId,
|
|
263
258
|
encoding,
|
|
264
259
|
params,
|
|
265
|
-
|
|
260
|
+
connId,
|
|
261
|
+
connToken,
|
|
266
262
|
);
|
|
267
|
-
const args = await createWebSocketProxy(c, wsGuardUrl,
|
|
263
|
+
const args = await createWebSocketProxy(c, wsGuardUrl, protocols);
|
|
268
264
|
|
|
269
265
|
return await upgradeWebSocket(() => args)(c, noopNext());
|
|
270
266
|
}
|
|
@@ -272,4 +268,8 @@ export class RemoteManagerDriver implements ManagerDriver {
|
|
|
272
268
|
displayInformation(): ManagerDisplayInformation {
|
|
273
269
|
return { name: "Remote", properties: {} };
|
|
274
270
|
}
|
|
271
|
+
|
|
272
|
+
getOrCreateInspectorAccessToken() {
|
|
273
|
+
return generateRandomString();
|
|
274
|
+
}
|
|
275
275
|
}
|
|
@@ -11,17 +11,10 @@ import { logger } from "./log";
|
|
|
11
11
|
export async function createWebSocketProxy(
|
|
12
12
|
c: HonoContext,
|
|
13
13
|
targetUrl: string,
|
|
14
|
-
|
|
14
|
+
protocols: string[],
|
|
15
15
|
): Promise<UpgradeWebSocketArgs> {
|
|
16
16
|
const WebSocket = await importWebSocket();
|
|
17
17
|
|
|
18
|
-
// HACK: Sanitize WebSocket-specific headers. If we don't do this, some WebSocket implementations (i.e. native WebSocket in Node.js) will fail to connect.
|
|
19
|
-
for (const [k, v] of c.req.raw.headers.entries()) {
|
|
20
|
-
if (!k.startsWith("sec-") && k !== "connection" && k !== "upgrade") {
|
|
21
|
-
headers[k] = v;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
18
|
// WebSocket state
|
|
26
19
|
interface WsState {
|
|
27
20
|
targetWs?: WebSocket;
|
|
@@ -43,7 +36,7 @@ export async function createWebSocketProxy(
|
|
|
43
36
|
}
|
|
44
37
|
|
|
45
38
|
// Create WebSocket
|
|
46
|
-
const targetWs = new WebSocket(targetUrl,
|
|
39
|
+
const targetWs = new WebSocket(targetUrl, protocols);
|
|
47
40
|
state.targetWs = targetWs;
|
|
48
41
|
|
|
49
42
|
// Setup connection promise
|
package/src/test/mod.ts
CHANGED
|
@@ -5,7 +5,10 @@ import { type TestContext, vi } from "vitest";
|
|
|
5
5
|
import { type Client, createClient } from "@/client/mod";
|
|
6
6
|
import { chooseDefaultDriver } from "@/drivers/default";
|
|
7
7
|
import { createFileSystemOrMemoryDriver } from "@/drivers/file-system/mod";
|
|
8
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
configureInspectorAccessToken,
|
|
10
|
+
getInspectorUrl,
|
|
11
|
+
} from "@/inspector/utils";
|
|
9
12
|
import { createManagerRouter } from "@/manager/router";
|
|
10
13
|
import type { Registry } from "@/registry/mod";
|
|
11
14
|
import { RunConfigSchema } from "@/registry/run-config";
|
|
@@ -27,11 +30,12 @@ function serve(registry: Registry<any>, inputConfig?: InputConfig): ServerType {
|
|
|
27
30
|
const runConfig = RunConfigSchema.parse(inputConfig);
|
|
28
31
|
const driver = inputConfig.driver ?? createFileSystemOrMemoryDriver(false);
|
|
29
32
|
const managerDriver = driver.manager(registry.config, config);
|
|
33
|
+
configureInspectorAccessToken(config, managerDriver);
|
|
30
34
|
const { router } = createManagerRouter(
|
|
31
35
|
registry.config,
|
|
32
36
|
runConfig,
|
|
33
37
|
managerDriver,
|
|
34
|
-
|
|
38
|
+
undefined,
|
|
35
39
|
);
|
|
36
40
|
|
|
37
41
|
// Inject WebSocket
|
package/src/utils.ts
CHANGED
|
@@ -77,6 +77,25 @@ const TIMEOUT_MAX = 2147483647; // 2^31-1
|
|
|
77
77
|
|
|
78
78
|
export type LongTimeoutHandle = { abort: () => void };
|
|
79
79
|
|
|
80
|
+
/**
|
|
81
|
+
* Polyfill for Promise.withResolvers().
|
|
82
|
+
*
|
|
83
|
+
* This is specifically for Cloudflare Workers. Their implementation of Promise.withResolvers does not work correctly.
|
|
84
|
+
*/
|
|
85
|
+
export function promiseWithResolvers<T>(): {
|
|
86
|
+
promise: Promise<T>;
|
|
87
|
+
resolve: (value: T | PromiseLike<T>) => void;
|
|
88
|
+
reject: (reason?: any) => void;
|
|
89
|
+
} {
|
|
90
|
+
let resolve!: (value: T | PromiseLike<T>) => void;
|
|
91
|
+
let reject!: (reason?: any) => void;
|
|
92
|
+
const promise = new Promise<T>((res, rej) => {
|
|
93
|
+
resolve = res;
|
|
94
|
+
reject = rej;
|
|
95
|
+
});
|
|
96
|
+
return { promise, resolve, reject };
|
|
97
|
+
}
|
|
98
|
+
|
|
80
99
|
export function setLongTimeout(
|
|
81
100
|
listener: () => void,
|
|
82
101
|
after: number,
|
|
@@ -115,7 +134,7 @@ export class SinglePromiseQueue {
|
|
|
115
134
|
runningDrainLoop?: Promise<void>;
|
|
116
135
|
|
|
117
136
|
/** Pending resolver fro the currently queued entry. */
|
|
118
|
-
#pending?:
|
|
137
|
+
#pending?: ReturnType<typeof promiseWithResolvers<void>>;
|
|
119
138
|
|
|
120
139
|
/** Queue the next operation and return a promise that resolves when it flushes. */
|
|
121
140
|
enqueue(op: () => Promise<void>): Promise<void> {
|
|
@@ -124,7 +143,7 @@ export class SinglePromiseQueue {
|
|
|
124
143
|
|
|
125
144
|
// Ensure a shared resolver exists for all callers in this cycle
|
|
126
145
|
if (!this.#pending) {
|
|
127
|
-
this.#pending =
|
|
146
|
+
this.#pending = promiseWithResolvers<void>();
|
|
128
147
|
}
|
|
129
148
|
|
|
130
149
|
const waitForThisCycle = this.#pending.promise;
|