rivetkit 2.3.19 → 2.3.21
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/browser/client.d.ts +82 -5
- package/dist/browser/client.js +302 -60
- package/dist/browser/client.js.map +1 -1
- package/dist/browser/inspector/client.js +2 -1
- package/dist/browser/inspector/client.js.map +1 -1
- package/dist/tsup/actor/errors.cjs.map +1 -1
- package/dist/tsup/agent-os/index.cjs +35 -1
- package/dist/tsup/agent-os/index.cjs.map +1 -1
- package/dist/tsup/agent-os/index.d.cts +71 -4
- package/dist/tsup/agent-os/index.d.ts +71 -4
- package/dist/tsup/agent-os/index.js +35 -1
- package/dist/tsup/agent-os/index.js.map +1 -1
- package/dist/tsup/{chunk-X7RMJQGY.js → chunk-2CI2IEVN.js} +2 -2
- package/dist/tsup/{chunk-WME6KOXW.js → chunk-5EGLHQJJ.js} +2 -2
- package/dist/tsup/{chunk-464WE4RF.js → chunk-5IBUZFLP.js} +2 -2
- package/dist/tsup/{chunk-PPEIPCW4.cjs → chunk-6LRPYB4Q.cjs} +4 -4
- package/dist/tsup/chunk-6LRPYB4Q.cjs.map +1 -0
- package/dist/tsup/{chunk-7BRRGBRY.cjs → chunk-APOANSDG.cjs} +10 -10
- package/dist/tsup/chunk-APOANSDG.cjs.map +1 -0
- package/dist/tsup/{chunk-G4U5L6AX.cjs → chunk-ARGNQGYG.cjs} +3 -3
- package/dist/tsup/chunk-ARGNQGYG.cjs.map +1 -0
- package/dist/tsup/{chunk-IJUXBWH4.cjs → chunk-B5SNXPSS.cjs} +448 -199
- package/dist/tsup/chunk-B5SNXPSS.cjs.map +1 -0
- package/dist/tsup/{chunk-4SC2NSAV.js → chunk-CJXBGTVT.js} +2 -2
- package/dist/tsup/{chunk-EB77NZL4.js → chunk-CSOHAAZK.js} +33 -1
- package/dist/tsup/chunk-CSOHAAZK.js.map +1 -0
- package/dist/tsup/{chunk-Z4RAXFSD.cjs → chunk-GHKQC4PD.cjs} +3 -3
- package/dist/tsup/chunk-GHKQC4PD.cjs.map +1 -0
- package/dist/tsup/chunk-JX2ITWAV.cjs.map +1 -1
- package/dist/tsup/chunk-KVFIONKQ.cjs.map +1 -1
- package/dist/tsup/{chunk-RJC5O2SD.cjs → chunk-KWGN2ZBJ.cjs} +3 -2
- package/dist/tsup/chunk-KWGN2ZBJ.cjs.map +1 -0
- package/dist/tsup/{chunk-OGPFN6BT.cjs → chunk-LWSLKKZ5.cjs} +3 -3
- package/dist/tsup/chunk-LWSLKKZ5.cjs.map +1 -0
- package/dist/tsup/chunk-MYWZCDML.cjs.map +1 -1
- package/dist/tsup/{chunk-7A5EIXJJ.cjs → chunk-NL2EIKK6.cjs} +7 -7
- package/dist/tsup/chunk-NL2EIKK6.cjs.map +1 -0
- package/dist/tsup/{chunk-EO5UOXXY.cjs → chunk-NWCAIWHL.cjs} +34 -2
- package/dist/tsup/chunk-NWCAIWHL.cjs.map +1 -0
- package/dist/tsup/{chunk-BKX7UDTA.js → chunk-PYRI75DL.js} +314 -65
- package/dist/tsup/chunk-PYRI75DL.js.map +1 -0
- package/dist/tsup/{chunk-7HTST3NX.js → chunk-RFN3BG6D.js} +3 -3
- package/dist/tsup/chunk-RFN3BG6D.js.map +1 -0
- package/dist/tsup/{chunk-DN6MD3KK.js → chunk-RGIZNZYO.js} +3 -2
- package/dist/tsup/chunk-RGIZNZYO.js.map +1 -0
- package/dist/tsup/{chunk-DK3L22R6.js → chunk-VMMXXVDO.js} +4 -4
- package/dist/tsup/client/mod.cjs +5 -5
- package/dist/tsup/client/mod.cjs.map +1 -1
- package/dist/tsup/client/mod.d.cts +12 -3
- package/dist/tsup/client/mod.d.ts +12 -3
- package/dist/tsup/client/mod.js +4 -4
- package/dist/tsup/common/log.cjs +2 -2
- package/dist/tsup/common/log.cjs.map +1 -1
- package/dist/tsup/common/log.js +1 -1
- package/dist/tsup/common/websocket.cjs +3 -3
- package/dist/tsup/common/websocket.cjs.map +1 -1
- package/dist/tsup/common/websocket.js +2 -2
- package/dist/tsup/{config-DEm0yIVV.d.ts → config-Bc1nnvUl.d.ts} +76 -6
- package/dist/tsup/{config-8n2AOhXK.d.cts → config-Do_0guSS.d.cts} +76 -6
- package/dist/tsup/{context-DwjOVvlE.d.cts → context-CgNkhjdY.d.cts} +1 -1
- package/dist/tsup/{context-DGg2-IOm.d.ts → context-oGQxZDPz.d.ts} +1 -1
- package/dist/tsup/db/drizzle.cjs +2 -2
- package/dist/tsup/db/drizzle.cjs.map +1 -1
- package/dist/tsup/db/drizzle.js +1 -1
- package/dist/tsup/db/mod.cjs +3 -3
- package/dist/tsup/db/mod.cjs.map +1 -1
- package/dist/tsup/db/mod.js +2 -2
- package/dist/tsup/dynamic/mod.cjs +2 -2
- package/dist/tsup/dynamic/mod.cjs.map +1 -1
- package/dist/tsup/dynamic/mod.d.cts +2 -1
- package/dist/tsup/dynamic/mod.d.ts +2 -1
- package/dist/tsup/dynamic/mod.js +1 -1
- package/dist/tsup/inspector/mod.cjs +5 -5
- package/dist/tsup/inspector/mod.cjs.map +1 -1
- package/dist/tsup/inspector/mod.js +4 -4
- package/dist/tsup/inspector/workflow.cjs +4 -4
- package/dist/tsup/inspector/workflow.cjs.map +1 -1
- package/dist/tsup/inspector/workflow.js +3 -3
- package/dist/tsup/inspector-tab/mod.cjs +2 -2
- package/dist/tsup/inspector-tab/mod.cjs.map +1 -1
- package/dist/tsup/inspector-tab/mod.d.cts +3 -2
- package/dist/tsup/inspector-tab/mod.d.ts +3 -2
- package/dist/tsup/inspector-tab/mod.js +1 -1
- package/dist/tsup/mod.cjs +140 -136
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +4 -3
- package/dist/tsup/mod.d.ts +4 -3
- package/dist/tsup/mod.js +44 -40
- package/dist/tsup/mod.js.map +1 -1
- package/dist/tsup/test/mod.cjs +6 -6
- package/dist/tsup/test/mod.cjs.map +1 -1
- package/dist/tsup/test/mod.d.cts +2 -1
- package/dist/tsup/test/mod.d.ts +2 -1
- package/dist/tsup/test/mod.js +4 -4
- package/dist/tsup/unstable/migrations.cjs.map +1 -1
- package/dist/tsup/utils.cjs +2 -2
- package/dist/tsup/utils.cjs.map +1 -1
- package/dist/tsup/utils.js +1 -1
- package/dist/tsup/workflow/mod.cjs +10 -10
- package/dist/tsup/workflow/mod.cjs.map +1 -1
- package/dist/tsup/workflow/mod.d.cts +4 -3
- package/dist/tsup/workflow/mod.d.ts +4 -3
- package/dist/tsup/workflow/mod.js +5 -5
- package/package.json +10 -9
- package/src/actor/actions.ts +36 -0
- package/src/actor/config.ts +27 -0
- package/src/actor/definition.ts +6 -1
- package/src/actor/mod.ts +5 -0
- package/src/actor/tracing.ts +28 -0
- package/src/client/actor-conn.ts +34 -1
- package/src/client/actor-handle.ts +29 -1
- package/src/client/auth.ts +37 -0
- package/src/client/client.ts +10 -2
- package/src/client/config.ts +12 -1
- package/src/client/mod.ts +9 -0
- package/src/client/token-provider.test.ts +86 -0
- package/src/client/token-provider.ts +93 -0
- package/src/client/utils.ts +1 -0
- package/src/engine-client/actor-websocket-client.ts +2 -1
- package/src/engine-client/api-endpoints.ts +28 -0
- package/src/engine-client/driver.ts +4 -0
- package/src/engine-client/mod.ts +201 -64
- package/src/registry/config/envoy.ts +1 -17
- package/src/registry/config/index.test.ts +2 -2
- package/src/registry/config/index.ts +7 -2
- package/src/registry/index.ts +28 -0
- package/src/registry/native.ts +18 -0
- package/src/registry/runtime.ts +8 -0
- package/dist/tsup/chunk-7A5EIXJJ.cjs.map +0 -1
- package/dist/tsup/chunk-7BRRGBRY.cjs.map +0 -1
- package/dist/tsup/chunk-7HTST3NX.js.map +0 -1
- package/dist/tsup/chunk-BKX7UDTA.js.map +0 -1
- package/dist/tsup/chunk-DN6MD3KK.js.map +0 -1
- package/dist/tsup/chunk-EB77NZL4.js.map +0 -1
- package/dist/tsup/chunk-EO5UOXXY.cjs.map +0 -1
- package/dist/tsup/chunk-G4U5L6AX.cjs.map +0 -1
- package/dist/tsup/chunk-IJUXBWH4.cjs.map +0 -1
- package/dist/tsup/chunk-OGPFN6BT.cjs.map +0 -1
- package/dist/tsup/chunk-PPEIPCW4.cjs.map +0 -1
- package/dist/tsup/chunk-RJC5O2SD.cjs.map +0 -1
- package/dist/tsup/chunk-Z4RAXFSD.cjs.map +0 -1
- /package/dist/tsup/{chunk-X7RMJQGY.js.map → chunk-2CI2IEVN.js.map} +0 -0
- /package/dist/tsup/{chunk-WME6KOXW.js.map → chunk-5EGLHQJJ.js.map} +0 -0
- /package/dist/tsup/{chunk-464WE4RF.js.map → chunk-5IBUZFLP.js.map} +0 -0
- /package/dist/tsup/{chunk-4SC2NSAV.js.map → chunk-CJXBGTVT.js.map} +0 -0
- /package/dist/tsup/{chunk-DK3L22R6.js.map → chunk-VMMXXVDO.js.map} +0 -0
|
@@ -5,7 +5,7 @@ var _chunkMYWZCDMLcjs = require('./chunk-MYWZCDML.cjs');
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _chunkLWSLKKZ5cjs = require('./chunk-LWSLKKZ5.cjs');
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
var _chunkKVFIONKQcjs = require('./chunk-KVFIONKQ.cjs');
|
|
@@ -35,7 +35,7 @@ var _chunkKVFIONKQcjs = require('./chunk-KVFIONKQ.cjs');
|
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
|
|
38
|
-
var
|
|
38
|
+
var _chunkKWGN2ZBJcjs = require('./chunk-KWGN2ZBJ.cjs');
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
|
|
@@ -2131,7 +2131,7 @@ async function checkForSchedulingError(group, code, actorId, query, driver, rayI
|
|
|
2131
2131
|
try {
|
|
2132
2132
|
const actor = await driver.getForId({ name, actorId });
|
|
2133
2133
|
if (actor == null ? void 0 : actor.error) {
|
|
2134
|
-
|
|
2134
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).info({
|
|
2135
2135
|
msg: "found actor scheduling error",
|
|
2136
2136
|
actorId,
|
|
2137
2137
|
error: actor.error
|
|
@@ -2145,10 +2145,10 @@ async function checkForSchedulingError(group, code, actorId, query, driver, rayI
|
|
|
2145
2145
|
);
|
|
2146
2146
|
}
|
|
2147
2147
|
} catch (err) {
|
|
2148
|
-
|
|
2148
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
|
|
2149
2149
|
msg: "failed to fetch actor details for scheduling error check",
|
|
2150
2150
|
actorId,
|
|
2151
|
-
error:
|
|
2151
|
+
error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
|
|
2152
2152
|
});
|
|
2153
2153
|
}
|
|
2154
2154
|
return null;
|
|
@@ -2456,7 +2456,7 @@ function parseWebSocketCloseReason(reason) {
|
|
|
2456
2456
|
const [mainPart, rayId] = reason.split("#");
|
|
2457
2457
|
const [group, code] = mainPart.split(".");
|
|
2458
2458
|
if (!group || !code) {
|
|
2459
|
-
|
|
2459
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({ msg: "failed to parse close reason", reason });
|
|
2460
2460
|
return void 0;
|
|
2461
2461
|
}
|
|
2462
2462
|
return {
|
|
@@ -2478,11 +2478,11 @@ function messageLength(message) {
|
|
|
2478
2478
|
if (typeof message === "string") {
|
|
2479
2479
|
return message.length;
|
|
2480
2480
|
}
|
|
2481
|
-
|
|
2481
|
+
_chunkKWGN2ZBJcjs.assertUnreachable.call(void 0, message);
|
|
2482
2482
|
}
|
|
2483
2483
|
async function sendHttpRequest(opts) {
|
|
2484
2484
|
var _a, _b, _c;
|
|
2485
|
-
|
|
2485
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
2486
2486
|
msg: "sending http request",
|
|
2487
2487
|
url: opts.url,
|
|
2488
2488
|
encoding: opts.encoding
|
|
@@ -2491,8 +2491,8 @@ async function sendHttpRequest(opts) {
|
|
|
2491
2491
|
let bodyData;
|
|
2492
2492
|
if (opts.method === "POST" || opts.method === "PUT") {
|
|
2493
2493
|
_invariant2.default.call(void 0, opts.body !== void 0, "missing body");
|
|
2494
|
-
contentType =
|
|
2495
|
-
bodyData =
|
|
2494
|
+
contentType = _chunkKWGN2ZBJcjs.contentTypeForEncoding.call(void 0, opts.encoding);
|
|
2495
|
+
bodyData = _chunkKWGN2ZBJcjs.serializeWithEncoding.call(void 0,
|
|
2496
2496
|
opts.encoding,
|
|
2497
2497
|
opts.body,
|
|
2498
2498
|
opts.requestVersionedDataHandler,
|
|
@@ -2512,7 +2512,7 @@ async function sendHttpRequest(opts) {
|
|
|
2512
2512
|
...contentType ? {
|
|
2513
2513
|
"Content-Type": contentType
|
|
2514
2514
|
} : {},
|
|
2515
|
-
"User-Agent":
|
|
2515
|
+
"User-Agent": _chunkKWGN2ZBJcjs.httpUserAgent.call(void 0, )
|
|
2516
2516
|
},
|
|
2517
2517
|
body: bodyData,
|
|
2518
2518
|
credentials: "include",
|
|
@@ -2530,7 +2530,7 @@ async function sendHttpRequest(opts) {
|
|
|
2530
2530
|
const rayId = response.headers.get("x-rivet-ray-id");
|
|
2531
2531
|
const encoding = (contentType2 == null ? void 0 : contentType2.includes("application/json")) ? "json" : opts.encoding;
|
|
2532
2532
|
try {
|
|
2533
|
-
const responseData =
|
|
2533
|
+
const responseData = _chunkKWGN2ZBJcjs.deserializeWithEncoding.call(void 0,
|
|
2534
2534
|
encoding,
|
|
2535
2535
|
new Uint8Array(bufferResponse),
|
|
2536
2536
|
HTTP_RESPONSE_ERROR_VERSIONED,
|
|
@@ -2548,7 +2548,7 @@ async function sendHttpRequest(opts) {
|
|
|
2548
2548
|
group: bare5.group,
|
|
2549
2549
|
code: bare5.code,
|
|
2550
2550
|
message: bare5.message,
|
|
2551
|
-
metadata: bare5.metadata ?
|
|
2551
|
+
metadata: bare5.metadata ? _chunkKWGN2ZBJcjs.decodeCborCompat.call(void 0, new Uint8Array(bare5.metadata)) : void 0,
|
|
2552
2552
|
actor: bare5.actor ? {
|
|
2553
2553
|
actorId: bare5.actor.actorId,
|
|
2554
2554
|
generation: Number(bare5.actor.generation),
|
|
@@ -2556,7 +2556,7 @@ async function sendHttpRequest(opts) {
|
|
|
2556
2556
|
} : void 0
|
|
2557
2557
|
})
|
|
2558
2558
|
);
|
|
2559
|
-
|
|
2559
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
|
|
2560
2560
|
msg: "http error response",
|
|
2561
2561
|
group: responseData.group,
|
|
2562
2562
|
code: responseData.code,
|
|
@@ -2574,7 +2574,8 @@ async function sendHttpRequest(opts) {
|
|
|
2574
2574
|
{
|
|
2575
2575
|
metadata: responseData.metadata,
|
|
2576
2576
|
rayId: _nullishCoalesce(rayId, () => ( void 0)),
|
|
2577
|
-
actor: responseData.actor
|
|
2577
|
+
actor: responseData.actor,
|
|
2578
|
+
statusCode: response.status
|
|
2578
2579
|
}
|
|
2579
2580
|
);
|
|
2580
2581
|
} catch (error) {
|
|
@@ -2602,7 +2603,7 @@ ${textResponse}`
|
|
|
2602
2603
|
}
|
|
2603
2604
|
try {
|
|
2604
2605
|
const buffer = new Uint8Array(await response.arrayBuffer());
|
|
2605
|
-
return
|
|
2606
|
+
return _chunkKWGN2ZBJcjs.deserializeWithEncoding.call(void 0,
|
|
2606
2607
|
opts.encoding,
|
|
2607
2608
|
buffer,
|
|
2608
2609
|
opts.responseVersionedDataHandler,
|
|
@@ -2650,8 +2651,8 @@ function createQueueSender(senderOptions) {
|
|
|
2650
2651
|
}),
|
|
2651
2652
|
requestToBare: (value) => ({
|
|
2652
2653
|
name: _nullishCoalesce(value.name, () => ( name)),
|
|
2653
|
-
body:
|
|
2654
|
-
|
|
2654
|
+
body: _chunkKWGN2ZBJcjs.bufferToArrayBuffer.call(void 0,
|
|
2655
|
+
_chunkKWGN2ZBJcjs.encodeCborCompat.call(void 0, value.body)
|
|
2655
2656
|
),
|
|
2656
2657
|
wait: _nullishCoalesce(value.wait, () => ( false)),
|
|
2657
2658
|
timeout: value.timeout !== void 0 ? BigInt(value.timeout) : null
|
|
@@ -2671,7 +2672,7 @@ function createQueueSender(senderOptions) {
|
|
|
2671
2672
|
}
|
|
2672
2673
|
return {
|
|
2673
2674
|
status: bare5.status,
|
|
2674
|
-
response:
|
|
2675
|
+
response: _chunkKWGN2ZBJcjs.decodeCborCompat.call(void 0, new Uint8Array(bare5.response))
|
|
2675
2676
|
};
|
|
2676
2677
|
}
|
|
2677
2678
|
});
|
|
@@ -2737,7 +2738,7 @@ async function rawHttpFetch(driver, target, params, input, init, options = {}, t
|
|
|
2737
2738
|
throw new TypeError("Invalid input type for fetch");
|
|
2738
2739
|
}
|
|
2739
2740
|
try {
|
|
2740
|
-
|
|
2741
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug(
|
|
2741
2742
|
"directId" in target ? {
|
|
2742
2743
|
msg: "sending raw http request to actor",
|
|
2743
2744
|
actorId: target.directId
|
|
@@ -2763,7 +2764,7 @@ async function rawHttpFetch(driver, target, params, input, init, options = {}, t
|
|
|
2763
2764
|
});
|
|
2764
2765
|
return driver.sendRequest(target, proxyRequest, options);
|
|
2765
2766
|
} catch (err) {
|
|
2766
|
-
const { group, code, message, metadata, rayId, actor } =
|
|
2767
|
+
const { group, code, message, metadata, rayId, actor } = _chunkKWGN2ZBJcjs.deconstructError.call(void 0, err, true);
|
|
2767
2768
|
throw new (0, _chunkJX2ITWAVcjs.RivetError)(group, code, message, { metadata, rayId, actor });
|
|
2768
2769
|
}
|
|
2769
2770
|
}
|
|
@@ -2784,7 +2785,7 @@ async function rawWebSocket(driver, target, params, path, _protocols, options =
|
|
|
2784
2785
|
}
|
|
2785
2786
|
}
|
|
2786
2787
|
const fullPath = `${PATH_WEBSOCKET_PREFIX}${pathPortion}${queryPortion}`;
|
|
2787
|
-
|
|
2788
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
2788
2789
|
msg: "opening websocket",
|
|
2789
2790
|
target,
|
|
2790
2791
|
encoding,
|
|
@@ -2921,7 +2922,7 @@ var ActorHandleRaw = class {
|
|
|
2921
2922
|
}
|
|
2922
2923
|
}).send(name, body, options);
|
|
2923
2924
|
} catch (err) {
|
|
2924
|
-
const { group, code, message, metadata, rayId, actor } =
|
|
2925
|
+
const { group, code, message, metadata, rayId, actor } = _chunkKWGN2ZBJcjs.deconstructError.call(void 0, err, true);
|
|
2925
2926
|
if (this.#shouldRetryQueueDispatchOverload(
|
|
2926
2927
|
group,
|
|
2927
2928
|
code,
|
|
@@ -3036,13 +3037,13 @@ var ActorHandleRaw = class {
|
|
|
3036
3037
|
gatewayOptions
|
|
3037
3038
|
);
|
|
3038
3039
|
actorId = "directId" in target ? target.directId : void 0;
|
|
3039
|
-
|
|
3040
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug(
|
|
3040
3041
|
actorId ? { msg: "using direct actor gateway target", actorId } : {
|
|
3041
3042
|
msg: "using query gateway target for action",
|
|
3042
3043
|
query: this.#actorResolutionState
|
|
3043
3044
|
}
|
|
3044
3045
|
);
|
|
3045
|
-
|
|
3046
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
3046
3047
|
msg: "handling action",
|
|
3047
3048
|
name: opts.name,
|
|
3048
3049
|
encoding: this.#encoding
|
|
@@ -3079,19 +3080,19 @@ var ActorHandleRaw = class {
|
|
|
3079
3080
|
args
|
|
3080
3081
|
}),
|
|
3081
3082
|
requestToBare: (args) => ({
|
|
3082
|
-
args:
|
|
3083
|
-
|
|
3083
|
+
args: _chunkKWGN2ZBJcjs.bufferToArrayBuffer.call(void 0,
|
|
3084
|
+
_chunkKWGN2ZBJcjs.encodeCborCompat.call(void 0, args)
|
|
3084
3085
|
)
|
|
3085
3086
|
}),
|
|
3086
3087
|
responseFromJson: (json) => json.output,
|
|
3087
|
-
responseFromBare: (bare5) =>
|
|
3088
|
+
responseFromBare: (bare5) => _chunkKWGN2ZBJcjs.decodeCborCompat.call(void 0, new Uint8Array(bare5.output))
|
|
3088
3089
|
});
|
|
3089
3090
|
if (opts.name === "destroy" && actorId) {
|
|
3090
3091
|
await this.#waitForDestroyActionToSettle(actorId);
|
|
3091
3092
|
}
|
|
3092
3093
|
return output;
|
|
3093
3094
|
} catch (err) {
|
|
3094
|
-
const { group, code, message, metadata, rayId, actor } =
|
|
3095
|
+
const { group, code, message, metadata, rayId, actor } = _chunkKWGN2ZBJcjs.deconstructError.call(void 0, err, true);
|
|
3095
3096
|
if (await this.#shouldRetrySchedulingError(
|
|
3096
3097
|
group,
|
|
3097
3098
|
code,
|
|
@@ -3247,7 +3248,7 @@ var ActorHandleRaw = class {
|
|
|
3247
3248
|
* @returns {ActorConn<AD>} A connection to the actor.
|
|
3248
3249
|
*/
|
|
3249
3250
|
connect(params, options = {}) {
|
|
3250
|
-
|
|
3251
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
3251
3252
|
msg: "establishing connection from handle",
|
|
3252
3253
|
query: this.#actorResolutionState
|
|
3253
3254
|
});
|
|
@@ -3324,7 +3325,7 @@ var ActorHandleRaw = class {
|
|
|
3324
3325
|
}
|
|
3325
3326
|
return response;
|
|
3326
3327
|
} catch (err) {
|
|
3327
|
-
const { group, code, message, metadata, rayId, actor } =
|
|
3328
|
+
const { group, code, message, metadata, rayId, actor } = _chunkKWGN2ZBJcjs.deconstructError.call(void 0, err, true);
|
|
3328
3329
|
if (await this.#shouldRetrySchedulingError(
|
|
3329
3330
|
group,
|
|
3330
3331
|
code,
|
|
@@ -3420,7 +3421,7 @@ var ActorHandleRaw = class {
|
|
|
3420
3421
|
const contentType = response.headers.get("content-type");
|
|
3421
3422
|
const encoding = (contentType == null ? void 0 : contentType.includes("application/json")) ? "json" : this.#encoding;
|
|
3422
3423
|
try {
|
|
3423
|
-
const error =
|
|
3424
|
+
const error = _chunkKWGN2ZBJcjs.deserializeWithEncoding.call(void 0,
|
|
3424
3425
|
encoding,
|
|
3425
3426
|
new Uint8Array(await response.clone().arrayBuffer()),
|
|
3426
3427
|
HTTP_RESPONSE_ERROR_VERSIONED,
|
|
@@ -3436,7 +3437,7 @@ var ActorHandleRaw = class {
|
|
|
3436
3437
|
group: bare5.group,
|
|
3437
3438
|
code: bare5.code,
|
|
3438
3439
|
message: bare5.message,
|
|
3439
|
-
metadata: bare5.metadata ?
|
|
3440
|
+
metadata: bare5.metadata ? _chunkKWGN2ZBJcjs.decodeCborCompat.call(void 0, new Uint8Array(bare5.metadata)) : void 0,
|
|
3440
3441
|
actor: bare5.actor ? {
|
|
3441
3442
|
actorId: bare5.actor.actorId,
|
|
3442
3443
|
generation: Number(bare5.actor.generation),
|
|
@@ -3490,6 +3491,22 @@ var ActorHandleRaw = class {
|
|
|
3490
3491
|
"dynamic actor resolution did not produce a direct actor id"
|
|
3491
3492
|
);
|
|
3492
3493
|
}
|
|
3494
|
+
/** Issue a token scoped to this actor. Defaults to actor gateway read access. */
|
|
3495
|
+
async issueToken(options = {}) {
|
|
3496
|
+
const actorId = await this.resolve();
|
|
3497
|
+
const permissions = _nullishCoalesce(options.permissions, () => ( {
|
|
3498
|
+
actor_gateway: ["read"]
|
|
3499
|
+
}));
|
|
3500
|
+
const grants = Object.keys(permissions).flatMap((resource) => {
|
|
3501
|
+
const operations = permissions[resource];
|
|
3502
|
+
return operations ? [{ resource, target: { id: actorId }, operations }] : [];
|
|
3503
|
+
});
|
|
3504
|
+
return this.#driver.issueToken({
|
|
3505
|
+
subject: options.subject,
|
|
3506
|
+
expiresIn: options.expiresIn,
|
|
3507
|
+
grants
|
|
3508
|
+
});
|
|
3509
|
+
}
|
|
3493
3510
|
/**
|
|
3494
3511
|
* Returns the raw URL for routing traffic to the actor.
|
|
3495
3512
|
*/
|
|
@@ -3524,6 +3541,8 @@ var ACTOR_CONNS_SYMBOL = /* @__PURE__ */ Symbol("actorConns");
|
|
|
3524
3541
|
var CREATE_ACTOR_CONN_PROXY = /* @__PURE__ */ Symbol("createActorConnProxy");
|
|
3525
3542
|
var ClientRaw = (_class = class {
|
|
3526
3543
|
#disposed = false;
|
|
3544
|
+
/** Issue namespace-scoped tokens with an explicit grant list. */
|
|
3545
|
+
|
|
3527
3546
|
__init() {this[ACTOR_CONNS_SYMBOL] = /* @__PURE__ */ new Set()}
|
|
3528
3547
|
#driver;
|
|
3529
3548
|
#encodingKind;
|
|
@@ -3535,6 +3554,9 @@ var ClientRaw = (_class = class {
|
|
|
3535
3554
|
*/
|
|
3536
3555
|
constructor(driver, options = {}) {;_class.prototype.__init.call(this);
|
|
3537
3556
|
this.#driver = driver;
|
|
3557
|
+
this.auth = {
|
|
3558
|
+
issueToken: (issueOptions) => this.#driver.issueToken(issueOptions)
|
|
3559
|
+
};
|
|
3538
3560
|
this.#encodingKind = _nullishCoalesce(options.encoding, () => ( "bare"));
|
|
3539
3561
|
this.#gatewayOptions = _nullishCoalesce(options.gateway, () => ( {}));
|
|
3540
3562
|
this.#currentActorInvocation = options.currentActorInvocation;
|
|
@@ -3550,7 +3572,7 @@ var ClientRaw = (_class = class {
|
|
|
3550
3572
|
* @returns {ActorHandle<AD>} - A handle to the actor.
|
|
3551
3573
|
*/
|
|
3552
3574
|
getForId(name, actorId, opts) {
|
|
3553
|
-
|
|
3575
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
3554
3576
|
msg: "get handle to actor with id",
|
|
3555
3577
|
name,
|
|
3556
3578
|
actorId,
|
|
@@ -3581,7 +3603,7 @@ var ClientRaw = (_class = class {
|
|
|
3581
3603
|
*/
|
|
3582
3604
|
get(name, key, opts) {
|
|
3583
3605
|
const keyArray = typeof key === "string" ? [key] : key || [];
|
|
3584
|
-
|
|
3606
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
3585
3607
|
msg: "get handle to actor",
|
|
3586
3608
|
name,
|
|
3587
3609
|
key: keyArray,
|
|
@@ -3612,7 +3634,7 @@ var ClientRaw = (_class = class {
|
|
|
3612
3634
|
*/
|
|
3613
3635
|
getOrCreate(name, key, opts) {
|
|
3614
3636
|
const keyArray = typeof key === "string" ? [key] : key || [];
|
|
3615
|
-
|
|
3637
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
3616
3638
|
msg: "get or create handle to actor",
|
|
3617
3639
|
name,
|
|
3618
3640
|
key: keyArray,
|
|
@@ -3656,7 +3678,7 @@ var ClientRaw = (_class = class {
|
|
|
3656
3678
|
key: keyArray
|
|
3657
3679
|
}
|
|
3658
3680
|
};
|
|
3659
|
-
|
|
3681
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
3660
3682
|
msg: "create actor handle",
|
|
3661
3683
|
name,
|
|
3662
3684
|
key: keyArray,
|
|
@@ -3664,7 +3686,7 @@ var ClientRaw = (_class = class {
|
|
|
3664
3686
|
create: createQuery.create
|
|
3665
3687
|
});
|
|
3666
3688
|
const actorId = await resolveGatewayTarget(this.#driver, createQuery);
|
|
3667
|
-
|
|
3689
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
3668
3690
|
msg: "created actor with ID",
|
|
3669
3691
|
name,
|
|
3670
3692
|
key: keyArray,
|
|
@@ -3711,11 +3733,11 @@ var ClientRaw = (_class = class {
|
|
|
3711
3733
|
*/
|
|
3712
3734
|
async dispose() {
|
|
3713
3735
|
if (this.#disposed) {
|
|
3714
|
-
|
|
3736
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({ msg: "client already disconnected" });
|
|
3715
3737
|
return;
|
|
3716
3738
|
}
|
|
3717
3739
|
this.#disposed = true;
|
|
3718
|
-
|
|
3740
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({ msg: "disposing client" });
|
|
3719
3741
|
const disposePromises = [];
|
|
3720
3742
|
for (const conn of this[ACTOR_CONNS_SYMBOL].values()) {
|
|
3721
3743
|
disposePromises.push(conn.dispose());
|
|
@@ -3827,6 +3849,74 @@ function createActorProxy(handle) {
|
|
|
3827
3849
|
});
|
|
3828
3850
|
}
|
|
3829
3851
|
|
|
3852
|
+
// src/client/token-provider.ts
|
|
3853
|
+
function isInvalidToken(group, code) {
|
|
3854
|
+
return group === "auth" && (code === "invalid_token" || code === "token_expired");
|
|
3855
|
+
}
|
|
3856
|
+
function isInvalidTokenResponse(response) {
|
|
3857
|
+
if (response.status !== 401) return false;
|
|
3858
|
+
const error = response.headers.get("x-rivet-error");
|
|
3859
|
+
if (!error) return false;
|
|
3860
|
+
const separator = error.indexOf(".");
|
|
3861
|
+
return separator > 0 && isInvalidToken(error.slice(0, separator), error.slice(separator + 1));
|
|
3862
|
+
}
|
|
3863
|
+
var TokenProvider = class {
|
|
3864
|
+
constructor(getToken) {
|
|
3865
|
+
this.getToken = getToken;
|
|
3866
|
+
}
|
|
3867
|
+
#cached;
|
|
3868
|
+
#pending;
|
|
3869
|
+
#pendingForce = false;
|
|
3870
|
+
async current() {
|
|
3871
|
+
if (this.#cached && (this.#cached.expiresAt === void 0 || Date.now() < this.#cached.expiresAt - 5e3)) {
|
|
3872
|
+
return this.#cached.token;
|
|
3873
|
+
}
|
|
3874
|
+
return this.#load(false);
|
|
3875
|
+
}
|
|
3876
|
+
/** A late rejection for an older token must never erase a newer credential. */
|
|
3877
|
+
async refreshIfCurrent(failedToken) {
|
|
3878
|
+
var _a;
|
|
3879
|
+
if (this.#pending !== void 0) {
|
|
3880
|
+
const wasForced = this.#pendingForce;
|
|
3881
|
+
const refreshed = await this.#pending;
|
|
3882
|
+
if (wasForced || refreshed !== failedToken) return refreshed;
|
|
3883
|
+
}
|
|
3884
|
+
if (((_a = this.#cached) == null ? void 0 : _a.token) !== failedToken) {
|
|
3885
|
+
return this.current();
|
|
3886
|
+
}
|
|
3887
|
+
return this.#load(true);
|
|
3888
|
+
}
|
|
3889
|
+
#load(forceRefresh) {
|
|
3890
|
+
if (this.#pending !== void 0) return this.#pending;
|
|
3891
|
+
const pending = Promise.resolve().then(() => this.getToken({ forceRefresh })).then((token) => {
|
|
3892
|
+
if (typeof token !== "string" || token.length === 0) {
|
|
3893
|
+
throw new Error(
|
|
3894
|
+
"getToken must resolve to a nonempty string"
|
|
3895
|
+
);
|
|
3896
|
+
}
|
|
3897
|
+
this.#cached = { token, expiresAt: jwtExpiration(token) };
|
|
3898
|
+
return token;
|
|
3899
|
+
}).finally(() => {
|
|
3900
|
+
if (this.#pending === pending) this.#pending = void 0;
|
|
3901
|
+
});
|
|
3902
|
+
this.#pending = pending;
|
|
3903
|
+
this.#pendingForce = forceRefresh;
|
|
3904
|
+
return pending;
|
|
3905
|
+
}
|
|
3906
|
+
};
|
|
3907
|
+
function jwtExpiration(token) {
|
|
3908
|
+
try {
|
|
3909
|
+
const payload = token.split(".")[1];
|
|
3910
|
+
if (!payload) return void 0;
|
|
3911
|
+
const claims = JSON.parse(
|
|
3912
|
+
atob(payload.replace(/-/g, "+").replace(/_/g, "/"))
|
|
3913
|
+
);
|
|
3914
|
+
return typeof claims.exp === "number" && Number.isSafeInteger(claims.exp) ? claims.exp * 1e3 : void 0;
|
|
3915
|
+
} catch (e3) {
|
|
3916
|
+
return void 0;
|
|
3917
|
+
}
|
|
3918
|
+
}
|
|
3919
|
+
|
|
3830
3920
|
// src/client/actor-conn.ts
|
|
3831
3921
|
var CONNECT_SYMBOL = /* @__PURE__ */ Symbol("connect");
|
|
3832
3922
|
var ActorConnRaw = class {
|
|
@@ -3856,6 +3946,7 @@ var ActorConnRaw = class {
|
|
|
3856
3946
|
/** Promise used to indicate the socket has connected successfully. This will be rejected if the connection fails. */
|
|
3857
3947
|
#onOpenPromise;
|
|
3858
3948
|
#websocket;
|
|
3949
|
+
#authRetryAvailable = true;
|
|
3859
3950
|
#client;
|
|
3860
3951
|
#driver;
|
|
3861
3952
|
#currentActorInvocation;
|
|
@@ -3884,8 +3975,8 @@ var ActorConnRaw = class {
|
|
|
3884
3975
|
if ("getForId" in actorResolutionState) {
|
|
3885
3976
|
this.#actorId = actorResolutionState.getForId.actorId;
|
|
3886
3977
|
}
|
|
3887
|
-
this.#readyPromise =
|
|
3888
|
-
(reason) =>
|
|
3978
|
+
this.#readyPromise = _chunkKWGN2ZBJcjs.promiseWithResolvers.call(void 0,
|
|
3979
|
+
(reason) => _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
|
|
3889
3980
|
msg: "unhandled ready promise rejection",
|
|
3890
3981
|
reason
|
|
3891
3982
|
})
|
|
@@ -3952,11 +4043,11 @@ var ActorConnRaw = class {
|
|
|
3952
4043
|
`Invalid action call: expected an options object { name, args }, got ${typeof opts}. Use conn.actionName(...args) for the shorthand API.`
|
|
3953
4044
|
);
|
|
3954
4045
|
}
|
|
3955
|
-
|
|
4046
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({ msg: "action", name: opts.name, args: opts.args });
|
|
3956
4047
|
const actionId = this.#actionIdCounter;
|
|
3957
4048
|
this.#actionIdCounter += 1;
|
|
3958
|
-
const { promise, resolve, reject } =
|
|
3959
|
-
(reason) =>
|
|
4049
|
+
const { promise, resolve, reject } = _chunkKWGN2ZBJcjs.promiseWithResolvers.call(void 0,
|
|
4050
|
+
(reason) => _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
|
|
3960
4051
|
msg: "unhandled action promise rejection",
|
|
3961
4052
|
reason
|
|
3962
4053
|
})
|
|
@@ -3966,7 +4057,7 @@ var ActorConnRaw = class {
|
|
|
3966
4057
|
resolve,
|
|
3967
4058
|
reject
|
|
3968
4059
|
});
|
|
3969
|
-
|
|
4060
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
3970
4061
|
msg: "added action to in-flight map",
|
|
3971
4062
|
actionId,
|
|
3972
4063
|
actionName: opts.name,
|
|
@@ -4006,9 +4097,9 @@ var ActorConnRaw = class {
|
|
|
4006
4097
|
try {
|
|
4007
4098
|
handler(status);
|
|
4008
4099
|
} catch (err) {
|
|
4009
|
-
|
|
4100
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
|
|
4010
4101
|
msg: "error in status change handler",
|
|
4011
|
-
error:
|
|
4102
|
+
error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
|
|
4012
4103
|
});
|
|
4013
4104
|
}
|
|
4014
4105
|
}
|
|
@@ -4018,9 +4109,9 @@ var ActorConnRaw = class {
|
|
|
4018
4109
|
try {
|
|
4019
4110
|
handler();
|
|
4020
4111
|
} catch (err) {
|
|
4021
|
-
|
|
4112
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
|
|
4022
4113
|
msg: "error in open handler",
|
|
4023
|
-
error:
|
|
4114
|
+
error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
|
|
4024
4115
|
});
|
|
4025
4116
|
}
|
|
4026
4117
|
}
|
|
@@ -4030,9 +4121,9 @@ var ActorConnRaw = class {
|
|
|
4030
4121
|
try {
|
|
4031
4122
|
handler();
|
|
4032
4123
|
} catch (err) {
|
|
4033
|
-
|
|
4124
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
|
|
4034
4125
|
msg: "error in close handler",
|
|
4035
|
-
error:
|
|
4126
|
+
error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
|
|
4036
4127
|
});
|
|
4037
4128
|
}
|
|
4038
4129
|
}
|
|
@@ -4045,21 +4136,21 @@ var ActorConnRaw = class {
|
|
|
4045
4136
|
minTimeout: 250,
|
|
4046
4137
|
maxTimeout: 3e4,
|
|
4047
4138
|
onFailedAttempt: (error) => {
|
|
4048
|
-
|
|
4139
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
|
|
4049
4140
|
msg: "failed to reconnect",
|
|
4050
4141
|
attempt: error.attemptNumber,
|
|
4051
|
-
error:
|
|
4142
|
+
error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, error)
|
|
4052
4143
|
});
|
|
4053
4144
|
},
|
|
4054
4145
|
// Cancel retry if aborted
|
|
4055
4146
|
signal: this.#abortController.signal
|
|
4056
4147
|
}).catch((err) => {
|
|
4057
4148
|
if (err instanceof _pretry.AbortError || err.name === "AbortError" || !this.#shouldRetryConnectionOpenError(err)) {
|
|
4058
|
-
|
|
4149
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).info({ msg: "connection retry aborted" });
|
|
4059
4150
|
} else {
|
|
4060
|
-
|
|
4151
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
|
|
4061
4152
|
msg: "unexpected error in connection retry",
|
|
4062
|
-
error:
|
|
4153
|
+
error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
|
|
4063
4154
|
});
|
|
4064
4155
|
}
|
|
4065
4156
|
});
|
|
@@ -4068,8 +4159,8 @@ var ActorConnRaw = class {
|
|
|
4068
4159
|
try {
|
|
4069
4160
|
if (this.#onOpenPromise)
|
|
4070
4161
|
throw new Error("#onOpenPromise already defined");
|
|
4071
|
-
this.#onOpenPromise =
|
|
4072
|
-
(reason) =>
|
|
4162
|
+
this.#onOpenPromise = _chunkKWGN2ZBJcjs.promiseWithResolvers.call(void 0,
|
|
4163
|
+
(reason) => _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
|
|
4073
4164
|
msg: "unhandled open promise rejection",
|
|
4074
4165
|
reason
|
|
4075
4166
|
})
|
|
@@ -4083,15 +4174,15 @@ var ActorConnRaw = class {
|
|
|
4083
4174
|
const actorError = error instanceof _chunkJX2ITWAVcjs.RivetError ? error : new (0, _chunkJX2ITWAVcjs.RivetError)(
|
|
4084
4175
|
"client",
|
|
4085
4176
|
"connection_open_failed",
|
|
4086
|
-
`Failed to open connection: ${
|
|
4087
|
-
{ error:
|
|
4177
|
+
`Failed to open connection: ${_chunkKWGN2ZBJcjs.stringifyError.call(void 0, error)}`,
|
|
4178
|
+
{ error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, error) }
|
|
4088
4179
|
);
|
|
4089
4180
|
this.#clearQueuedMessages();
|
|
4090
4181
|
this.#rejectPendingPromises(actorError, false);
|
|
4091
4182
|
this.#dispatchActorError(actorError);
|
|
4092
4183
|
this.#setConnStatus("idle");
|
|
4093
4184
|
throw new (0, _pretry.AbortError)(
|
|
4094
|
-
error instanceof Error ? error : new Error(
|
|
4185
|
+
error instanceof Error ? error : new Error(_chunkKWGN2ZBJcjs.stringifyError.call(void 0, error))
|
|
4095
4186
|
);
|
|
4096
4187
|
} finally {
|
|
4097
4188
|
this.#onOpenPromise = void 0;
|
|
@@ -4101,6 +4192,10 @@ var ActorConnRaw = class {
|
|
|
4101
4192
|
if (error instanceof ActorConnDisposed) {
|
|
4102
4193
|
return false;
|
|
4103
4194
|
}
|
|
4195
|
+
if (error instanceof _chunkJX2ITWAVcjs.RivetError && isInvalidToken(error.group, error.code) && this.#driver.refreshAuthToken && this.#authRetryAvailable) {
|
|
4196
|
+
this.#authRetryAvailable = false;
|
|
4197
|
+
return true;
|
|
4198
|
+
}
|
|
4104
4199
|
if (error instanceof _chunkJX2ITWAVcjs.RivetError && this.#shouldReconnectForStaleActor(error.group, error.code)) {
|
|
4105
4200
|
return true;
|
|
4106
4201
|
}
|
|
@@ -4111,7 +4206,7 @@ var ActorConnRaw = class {
|
|
|
4111
4206
|
}
|
|
4112
4207
|
#clearQueuedMessages() {
|
|
4113
4208
|
if (this.#messageQueue.length === 0) return;
|
|
4114
|
-
|
|
4209
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
4115
4210
|
msg: "clearing queued connection messages",
|
|
4116
4211
|
queueLength: this.#messageQueue.length
|
|
4117
4212
|
});
|
|
@@ -4124,7 +4219,7 @@ var ActorConnRaw = class {
|
|
|
4124
4219
|
try {
|
|
4125
4220
|
return await this.#getParams();
|
|
4126
4221
|
} catch (err) {
|
|
4127
|
-
const errorMessage =
|
|
4222
|
+
const errorMessage = _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err);
|
|
4128
4223
|
const error = new (0, _chunkJX2ITWAVcjs.RivetError)(
|
|
4129
4224
|
"client",
|
|
4130
4225
|
"get_params_failed",
|
|
@@ -4148,7 +4243,7 @@ var ActorConnRaw = class {
|
|
|
4148
4243
|
this.#gatewayOptions
|
|
4149
4244
|
);
|
|
4150
4245
|
_invariant2.default.call(void 0, ws, "websocket should have been created");
|
|
4151
|
-
|
|
4246
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
4152
4247
|
msg: "opened websocket",
|
|
4153
4248
|
connId: this.#connId,
|
|
4154
4249
|
readyState: ws.readyState,
|
|
@@ -4156,7 +4251,7 @@ var ActorConnRaw = class {
|
|
|
4156
4251
|
});
|
|
4157
4252
|
this.#websocket = ws;
|
|
4158
4253
|
ws.addEventListener("open", () => {
|
|
4159
|
-
|
|
4254
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
4160
4255
|
msg: "client websocket open",
|
|
4161
4256
|
connId: this.#connId
|
|
4162
4257
|
});
|
|
@@ -4165,9 +4260,9 @@ var ActorConnRaw = class {
|
|
|
4165
4260
|
try {
|
|
4166
4261
|
await this.#handleOnMessage(ev.data);
|
|
4167
4262
|
} catch (err) {
|
|
4168
|
-
|
|
4263
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
|
|
4169
4264
|
msg: "error in websocket message handler",
|
|
4170
|
-
error:
|
|
4265
|
+
error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
|
|
4171
4266
|
});
|
|
4172
4267
|
}
|
|
4173
4268
|
});
|
|
@@ -4175,9 +4270,9 @@ var ActorConnRaw = class {
|
|
|
4175
4270
|
try {
|
|
4176
4271
|
await this.#handleOnClose(ev);
|
|
4177
4272
|
} catch (err) {
|
|
4178
|
-
|
|
4273
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
|
|
4179
4274
|
msg: "error in websocket close handler",
|
|
4180
|
-
error:
|
|
4275
|
+
error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
|
|
4181
4276
|
});
|
|
4182
4277
|
}
|
|
4183
4278
|
});
|
|
@@ -4185,9 +4280,9 @@ var ActorConnRaw = class {
|
|
|
4185
4280
|
try {
|
|
4186
4281
|
this.#handleOnError();
|
|
4187
4282
|
} catch (err) {
|
|
4188
|
-
|
|
4283
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
|
|
4189
4284
|
msg: "error in websocket error handler",
|
|
4190
|
-
error:
|
|
4285
|
+
error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
|
|
4191
4286
|
});
|
|
4192
4287
|
}
|
|
4193
4288
|
});
|
|
@@ -4195,7 +4290,7 @@ var ActorConnRaw = class {
|
|
|
4195
4290
|
/** Called by the onopen event from drivers. */
|
|
4196
4291
|
#handleOnOpen() {
|
|
4197
4292
|
if (this.#disposed) {
|
|
4198
|
-
|
|
4293
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
4199
4294
|
msg: "handleOnOpen called after dispose, closing websocket"
|
|
4200
4295
|
});
|
|
4201
4296
|
if (this.#websocket) {
|
|
@@ -4211,7 +4306,7 @@ var ActorConnRaw = class {
|
|
|
4211
4306
|
queueMicrotask(() => {
|
|
4212
4307
|
this.#openScheduled = false;
|
|
4213
4308
|
if (this.#disposed) {
|
|
4214
|
-
|
|
4309
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
4215
4310
|
msg: "handleOnOpen scheduled after dispose, closing websocket"
|
|
4216
4311
|
});
|
|
4217
4312
|
if (this.#websocket) {
|
|
@@ -4220,23 +4315,24 @@ var ActorConnRaw = class {
|
|
|
4220
4315
|
}
|
|
4221
4316
|
return;
|
|
4222
4317
|
}
|
|
4223
|
-
|
|
4318
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
4224
4319
|
msg: "socket open",
|
|
4225
4320
|
messageQueueLength: this.#messageQueue.length,
|
|
4226
4321
|
connId: this.#connId
|
|
4227
4322
|
});
|
|
4323
|
+
this.#authRetryAvailable = true;
|
|
4228
4324
|
this.#setConnStatus("connected");
|
|
4229
4325
|
if (this.#onOpenPromise) {
|
|
4230
4326
|
this.#onOpenPromise.resolve(void 0);
|
|
4231
4327
|
} else {
|
|
4232
|
-
|
|
4328
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({ msg: "#onOpenPromise is undefined" });
|
|
4233
4329
|
}
|
|
4234
4330
|
for (const eventName of this.#eventSubscriptions.keys()) {
|
|
4235
4331
|
this.#sendSubscription(eventName, true);
|
|
4236
4332
|
}
|
|
4237
4333
|
const queue = this.#messageQueue;
|
|
4238
4334
|
this.#messageQueue = [];
|
|
4239
|
-
|
|
4335
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
4240
4336
|
msg: "flushing message queue",
|
|
4241
4337
|
queueLength: queue.length
|
|
4242
4338
|
});
|
|
@@ -4248,23 +4344,23 @@ var ActorConnRaw = class {
|
|
|
4248
4344
|
/** Called by the onmessage event from drivers. */
|
|
4249
4345
|
async #handleOnMessage(data) {
|
|
4250
4346
|
var _a;
|
|
4251
|
-
|
|
4347
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).trace({
|
|
4252
4348
|
msg: "received message",
|
|
4253
4349
|
dataType: typeof data,
|
|
4254
4350
|
isBlob: data instanceof Blob,
|
|
4255
4351
|
isArrayBuffer: data instanceof ArrayBuffer
|
|
4256
4352
|
});
|
|
4257
4353
|
const response = await this.#parseMessage(data);
|
|
4258
|
-
|
|
4259
|
-
|
|
4354
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).trace(
|
|
4355
|
+
_chunkKWGN2ZBJcjs.getLogMessage.call(void 0, ) ? {
|
|
4260
4356
|
msg: "parsed message",
|
|
4261
|
-
message:
|
|
4357
|
+
message: _chunkKWGN2ZBJcjs.jsonStringifyCompat.call(void 0, response).substring(0, 100) + "..."
|
|
4262
4358
|
} : { msg: "parsed message" }
|
|
4263
4359
|
);
|
|
4264
4360
|
if (response.body.tag === "Init") {
|
|
4265
4361
|
this.#actorId = response.body.val.actorId;
|
|
4266
4362
|
this.#connId = response.body.val.connectionId;
|
|
4267
|
-
|
|
4363
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).trace({
|
|
4268
4364
|
msg: "received init message",
|
|
4269
4365
|
actorId: this.#actorId,
|
|
4270
4366
|
connId: this.#connId
|
|
@@ -4275,7 +4371,7 @@ var ActorConnRaw = class {
|
|
|
4275
4371
|
if (actionId !== null) {
|
|
4276
4372
|
const inFlight = this.#takeActionInFlight(Number(actionId));
|
|
4277
4373
|
this.#invalidateActorIfStale(group, code);
|
|
4278
|
-
|
|
4374
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
|
|
4279
4375
|
msg: "action error",
|
|
4280
4376
|
actionId,
|
|
4281
4377
|
actionName: inFlight == null ? void 0 : inFlight.name,
|
|
@@ -4294,7 +4390,7 @@ var ActorConnRaw = class {
|
|
|
4294
4390
|
})
|
|
4295
4391
|
);
|
|
4296
4392
|
} else {
|
|
4297
|
-
|
|
4393
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
|
|
4298
4394
|
msg: "connection error",
|
|
4299
4395
|
group,
|
|
4300
4396
|
code,
|
|
@@ -4342,36 +4438,37 @@ var ActorConnRaw = class {
|
|
|
4342
4438
|
}
|
|
4343
4439
|
} else if (response.body.tag === "ActionResponse") {
|
|
4344
4440
|
const { id: actionId } = response.body.val;
|
|
4345
|
-
|
|
4441
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
4346
4442
|
msg: "received action response",
|
|
4347
4443
|
actionId: Number(actionId),
|
|
4348
4444
|
inFlightCount: this.#actionsInFlight.size,
|
|
4349
4445
|
inFlightIds: Array.from(this.#actionsInFlight.keys())
|
|
4350
4446
|
});
|
|
4351
4447
|
const inFlight = this.#takeActionInFlight(Number(actionId));
|
|
4352
|
-
|
|
4448
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).trace({
|
|
4353
4449
|
msg: "resolving action promise",
|
|
4354
4450
|
actionId,
|
|
4355
4451
|
actionName: inFlight == null ? void 0 : inFlight.name
|
|
4356
4452
|
});
|
|
4357
4453
|
inFlight.resolve(response.body.val);
|
|
4358
4454
|
} else if (response.body.tag === "Event") {
|
|
4359
|
-
|
|
4455
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).trace({
|
|
4360
4456
|
msg: "received event",
|
|
4361
4457
|
name: response.body.val.name
|
|
4362
4458
|
});
|
|
4363
4459
|
this.#dispatchEvent(response.body.val);
|
|
4364
4460
|
} else {
|
|
4365
|
-
|
|
4461
|
+
_chunkKWGN2ZBJcjs.assertUnreachable.call(void 0, response.body);
|
|
4366
4462
|
}
|
|
4367
4463
|
}
|
|
4368
4464
|
/** Called by the onclose event from drivers. */
|
|
4369
4465
|
async #handleOnClose(event) {
|
|
4370
|
-
var _a;
|
|
4466
|
+
var _a, _b, _c;
|
|
4467
|
+
const failedSocket = this.#websocket;
|
|
4371
4468
|
const closeEvent = event;
|
|
4372
4469
|
const wasClean = closeEvent.wasClean;
|
|
4373
4470
|
const wasConnected = this.#connStatus === "connected";
|
|
4374
|
-
|
|
4471
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).info({
|
|
4375
4472
|
msg: "socket closed",
|
|
4376
4473
|
code: closeEvent.code,
|
|
4377
4474
|
reason: closeEvent.reason,
|
|
@@ -4389,9 +4486,24 @@ var ActorConnRaw = class {
|
|
|
4389
4486
|
const parsed = parseWebSocketCloseReason(reason);
|
|
4390
4487
|
if (parsed) {
|
|
4391
4488
|
const { group, code, rayId } = parsed;
|
|
4489
|
+
if (isInvalidToken(group, code) && closeEvent.code === 1008 && failedSocket) {
|
|
4490
|
+
try {
|
|
4491
|
+
if (!await ((_b = (_a = this.#driver).refreshAuthToken) == null ? void 0 : _b.call(
|
|
4492
|
+
_a,
|
|
4493
|
+
failedSocket
|
|
4494
|
+
))) {
|
|
4495
|
+
this.#authRetryAvailable = false;
|
|
4496
|
+
}
|
|
4497
|
+
} catch (e4) {
|
|
4498
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).warn("token renewal failed");
|
|
4499
|
+
this.#authRetryAvailable = false;
|
|
4500
|
+
}
|
|
4501
|
+
} else if (isInvalidToken(group, code)) {
|
|
4502
|
+
this.#authRetryAvailable = false;
|
|
4503
|
+
}
|
|
4392
4504
|
if (this.#shouldReconnectForStaleActor(group, code)) {
|
|
4393
4505
|
this.#clearResolvedActorIdentity();
|
|
4394
|
-
(
|
|
4506
|
+
(_c = this.#onOpenPromise) == null ? void 0 : _c.reject(
|
|
4395
4507
|
new (0, _chunkJX2ITWAVcjs.RivetError)(
|
|
4396
4508
|
group,
|
|
4397
4509
|
code,
|
|
@@ -4438,8 +4550,8 @@ var ActorConnRaw = class {
|
|
|
4438
4550
|
if (error instanceof _chunkJX2ITWAVcjs.RivetError) {
|
|
4439
4551
|
this.#dispatchActorError(error);
|
|
4440
4552
|
}
|
|
4441
|
-
if (wasConnected) {
|
|
4442
|
-
|
|
4553
|
+
if (wasConnected && this.#authRetryAvailable) {
|
|
4554
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
4443
4555
|
msg: "triggering reconnect",
|
|
4444
4556
|
connId: this.#connId
|
|
4445
4557
|
});
|
|
@@ -4463,12 +4575,12 @@ var ActorConnRaw = class {
|
|
|
4463
4575
|
/** Called by the onerror event from drivers. */
|
|
4464
4576
|
#handleOnError() {
|
|
4465
4577
|
if (this.#disposed) return;
|
|
4466
|
-
|
|
4578
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).warn("socket error");
|
|
4467
4579
|
}
|
|
4468
4580
|
#takeActionInFlight(id) {
|
|
4469
4581
|
const inFlight = this.#actionsInFlight.get(id);
|
|
4470
4582
|
if (!inFlight) {
|
|
4471
|
-
|
|
4583
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
|
|
4472
4584
|
msg: "action not found in in-flight map",
|
|
4473
4585
|
lookupId: id,
|
|
4474
4586
|
inFlightCount: this.#actionsInFlight.size,
|
|
@@ -4483,7 +4595,7 @@ var ActorConnRaw = class {
|
|
|
4483
4595
|
throw internalClientError(`No in flight response for ${id}`);
|
|
4484
4596
|
}
|
|
4485
4597
|
this.#actionsInFlight.delete(id);
|
|
4486
|
-
|
|
4598
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
4487
4599
|
msg: "removed action from in-flight map",
|
|
4488
4600
|
actionId: id,
|
|
4489
4601
|
actionName: inFlight.name,
|
|
@@ -4510,9 +4622,9 @@ var ActorConnRaw = class {
|
|
|
4510
4622
|
try {
|
|
4511
4623
|
handler(error);
|
|
4512
4624
|
} catch (err) {
|
|
4513
|
-
|
|
4625
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
|
|
4514
4626
|
msg: "error in connection error handler",
|
|
4515
|
-
error:
|
|
4627
|
+
error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
|
|
4516
4628
|
});
|
|
4517
4629
|
}
|
|
4518
4630
|
}
|
|
@@ -4617,9 +4729,9 @@ var ActorConnRaw = class {
|
|
|
4617
4729
|
try {
|
|
4618
4730
|
callback();
|
|
4619
4731
|
} catch (err) {
|
|
4620
|
-
|
|
4732
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).error({
|
|
4621
4733
|
msg: "error in open handler",
|
|
4622
|
-
error:
|
|
4734
|
+
error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, err)
|
|
4623
4735
|
});
|
|
4624
4736
|
}
|
|
4625
4737
|
});
|
|
@@ -4669,7 +4781,7 @@ var ActorConnRaw = class {
|
|
|
4669
4781
|
let queueMessage = false;
|
|
4670
4782
|
if (this.#websocket) {
|
|
4671
4783
|
const readyState = this.#websocket.readyState;
|
|
4672
|
-
|
|
4784
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
4673
4785
|
msg: "websocket send attempt",
|
|
4674
4786
|
readyState,
|
|
4675
4787
|
readyStateString: readyState === 0 ? "CONNECTING" : readyState === 1 ? "OPEN" : readyState === 2 ? "CLOSING" : "CLOSED",
|
|
@@ -4678,7 +4790,7 @@ var ActorConnRaw = class {
|
|
|
4678
4790
|
actionName: (_a = message.body.val) == null ? void 0 : _a.name
|
|
4679
4791
|
});
|
|
4680
4792
|
if (this.#connStatus !== "connected") {
|
|
4681
|
-
|
|
4793
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
4682
4794
|
msg: "websocket init pending, queueing message",
|
|
4683
4795
|
connStatus: this.#connStatus,
|
|
4684
4796
|
messageType: message.body.tag
|
|
@@ -4686,7 +4798,7 @@ var ActorConnRaw = class {
|
|
|
4686
4798
|
queueMessage = true;
|
|
4687
4799
|
} else if (readyState === 1) {
|
|
4688
4800
|
try {
|
|
4689
|
-
const messageSerialized =
|
|
4801
|
+
const messageSerialized = _chunkKWGN2ZBJcjs.serializeWithEncoding.call(void 0,
|
|
4690
4802
|
this.#encoding,
|
|
4691
4803
|
message,
|
|
4692
4804
|
CLIENT_PROTOCOL_TO_SERVER,
|
|
@@ -4703,8 +4815,8 @@ var ActorConnRaw = class {
|
|
|
4703
4815
|
val: {
|
|
4704
4816
|
id: msg.body.val.id,
|
|
4705
4817
|
name: msg.body.val.name,
|
|
4706
|
-
args:
|
|
4707
|
-
|
|
4818
|
+
args: _chunkKWGN2ZBJcjs.bufferToArrayBuffer.call(void 0,
|
|
4819
|
+
_chunkKWGN2ZBJcjs.encodeCborCompat.call(void 0,
|
|
4708
4820
|
msg.body.val.args
|
|
4709
4821
|
)
|
|
4710
4822
|
)
|
|
@@ -4718,12 +4830,12 @@ var ActorConnRaw = class {
|
|
|
4718
4830
|
);
|
|
4719
4831
|
this.#websocket.send(messageSerialized);
|
|
4720
4832
|
const serializedLength = messageLength(messageSerialized);
|
|
4721
|
-
|
|
4833
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).trace({
|
|
4722
4834
|
msg: "sent websocket message",
|
|
4723
4835
|
len: serializedLength
|
|
4724
4836
|
});
|
|
4725
4837
|
} catch (error) {
|
|
4726
|
-
|
|
4838
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
|
|
4727
4839
|
msg: "failed to send message, added to queue",
|
|
4728
4840
|
error,
|
|
4729
4841
|
connId: this.#connId
|
|
@@ -4731,19 +4843,19 @@ var ActorConnRaw = class {
|
|
|
4731
4843
|
queueMessage = true;
|
|
4732
4844
|
}
|
|
4733
4845
|
} else {
|
|
4734
|
-
|
|
4846
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
4735
4847
|
msg: "websocket not open, queueing message",
|
|
4736
4848
|
readyState
|
|
4737
4849
|
});
|
|
4738
4850
|
queueMessage = true;
|
|
4739
4851
|
}
|
|
4740
4852
|
} else {
|
|
4741
|
-
|
|
4853
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({ msg: "no websocket, queueing message" });
|
|
4742
4854
|
queueMessage = true;
|
|
4743
4855
|
}
|
|
4744
4856
|
if (!(opts == null ? void 0 : opts.ephemeral) && queueMessage) {
|
|
4745
4857
|
this.#messageQueue.push(message);
|
|
4746
|
-
|
|
4858
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({
|
|
4747
4859
|
msg: "queued connection message",
|
|
4748
4860
|
queueLength: this.#messageQueue.length,
|
|
4749
4861
|
connId: this.#connId,
|
|
@@ -4754,8 +4866,8 @@ var ActorConnRaw = class {
|
|
|
4754
4866
|
}
|
|
4755
4867
|
async #parseMessage(data) {
|
|
4756
4868
|
_invariant2.default.call(void 0, this.#websocket, "websocket must be defined");
|
|
4757
|
-
const buffer = await
|
|
4758
|
-
return
|
|
4869
|
+
const buffer = await _chunkKWGN2ZBJcjs.inputDataToBuffer.call(void 0, data);
|
|
4870
|
+
return _chunkKWGN2ZBJcjs.deserializeWithEncoding.call(void 0,
|
|
4759
4871
|
this.#encoding,
|
|
4760
4872
|
buffer,
|
|
4761
4873
|
CLIENT_PROTOCOL_TO_CLIENT,
|
|
@@ -4790,7 +4902,7 @@ var ActorConnRaw = class {
|
|
|
4790
4902
|
group: msg.body.val.group,
|
|
4791
4903
|
code: msg.body.val.code,
|
|
4792
4904
|
message: msg.body.val.message,
|
|
4793
|
-
metadata: msg.body.val.metadata ?
|
|
4905
|
+
metadata: msg.body.val.metadata ? _chunkKWGN2ZBJcjs.decodeCborCompat.call(void 0,
|
|
4794
4906
|
new Uint8Array(
|
|
4795
4907
|
msg.body.val.metadata
|
|
4796
4908
|
)
|
|
@@ -4812,7 +4924,7 @@ var ActorConnRaw = class {
|
|
|
4812
4924
|
tag: "ActionResponse",
|
|
4813
4925
|
val: {
|
|
4814
4926
|
id: msg.body.val.id,
|
|
4815
|
-
output:
|
|
4927
|
+
output: _chunkKWGN2ZBJcjs.decodeCborCompat.call(void 0,
|
|
4816
4928
|
new Uint8Array(msg.body.val.output)
|
|
4817
4929
|
)
|
|
4818
4930
|
}
|
|
@@ -4824,7 +4936,7 @@ var ActorConnRaw = class {
|
|
|
4824
4936
|
tag: "Event",
|
|
4825
4937
|
val: {
|
|
4826
4938
|
name: msg.body.val.name,
|
|
4827
|
-
args:
|
|
4939
|
+
args: _chunkKWGN2ZBJcjs.decodeCborCompat.call(void 0,
|
|
4828
4940
|
new Uint8Array(msg.body.val.args)
|
|
4829
4941
|
)
|
|
4830
4942
|
}
|
|
@@ -4865,11 +4977,11 @@ var ActorConnRaw = class {
|
|
|
4865
4977
|
*/
|
|
4866
4978
|
async dispose() {
|
|
4867
4979
|
if (this.#disposed) {
|
|
4868
|
-
|
|
4980
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({ msg: "connection already disconnected" });
|
|
4869
4981
|
return;
|
|
4870
4982
|
}
|
|
4871
4983
|
this.#disposed = true;
|
|
4872
|
-
|
|
4984
|
+
_chunkLWSLKKZ5cjs.logger.call(void 0, ).debug({ msg: "disposing actor conn" });
|
|
4873
4985
|
this.#setConnStatus("idle");
|
|
4874
4986
|
clearInterval(this.#keepNodeAliveInterval);
|
|
4875
4987
|
this.#abortController.abort();
|
|
@@ -4877,8 +4989,8 @@ var ActorConnRaw = class {
|
|
|
4877
4989
|
if (this.#websocket) {
|
|
4878
4990
|
const ws = this.#websocket;
|
|
4879
4991
|
if (ws.readyState !== 2 && ws.readyState !== 3) {
|
|
4880
|
-
const { promise, resolve } =
|
|
4881
|
-
(reason) =>
|
|
4992
|
+
const { promise, resolve } = _chunkKWGN2ZBJcjs.promiseWithResolvers.call(void 0,
|
|
4993
|
+
(reason) => _chunkLWSLKKZ5cjs.logger.call(void 0, ).warn({
|
|
4882
4994
|
msg: "unhandled websocket close promise rejection",
|
|
4883
4995
|
reason
|
|
4884
4996
|
})
|
|
@@ -4911,6 +5023,25 @@ var ActorConnRaw = class {
|
|
|
4911
5023
|
// src/client/config.ts
|
|
4912
5024
|
|
|
4913
5025
|
|
|
5026
|
+
// src/common/engine.ts
|
|
5027
|
+
var ENGINE_HOST = "127.0.0.1";
|
|
5028
|
+
var ENGINE_PORT = 6420;
|
|
5029
|
+
var ENGINE_ENDPOINT = buildEngineEndpoint(ENGINE_HOST, ENGINE_PORT);
|
|
5030
|
+
function buildEngineEndpoint(host, port) {
|
|
5031
|
+
const urlHost = host.includes(":") && !host.startsWith("[") ? `[${host}]` : host;
|
|
5032
|
+
return `http://${urlHost}:${port}`;
|
|
5033
|
+
}
|
|
5034
|
+
function isLocalEngineEndpoint(endpoint) {
|
|
5035
|
+
let url;
|
|
5036
|
+
try {
|
|
5037
|
+
url = new URL(endpoint);
|
|
5038
|
+
} catch (e5) {
|
|
5039
|
+
return false;
|
|
5040
|
+
}
|
|
5041
|
+
const hostname = url.hostname.toLowerCase();
|
|
5042
|
+
return hostname === "localhost" || hostname === "0.0.0.0" || hostname === "::" || hostname === "[::]" || hostname === "::1" || hostname === "[::1]" || /^127(?:\.\d{1,3}){0,3}$/.test(hostname);
|
|
5043
|
+
}
|
|
5044
|
+
|
|
4914
5045
|
// src/utils/endpoint-parser.ts
|
|
4915
5046
|
function tryParseEndpoint(ctx, options) {
|
|
4916
5047
|
const {
|
|
@@ -4922,7 +5053,7 @@ function tryParseEndpoint(ctx, options) {
|
|
|
4922
5053
|
let url;
|
|
4923
5054
|
try {
|
|
4924
5055
|
url = new URL(endpoint);
|
|
4925
|
-
} catch (
|
|
5056
|
+
} catch (e6) {
|
|
4926
5057
|
ctx.addIssue({
|
|
4927
5058
|
code: "custom",
|
|
4928
5059
|
message: `invalid URL: ${endpoint}`,
|
|
@@ -4997,7 +5128,7 @@ var ClientConfigSchemaBase = _v42.default.object({
|
|
|
4997
5128
|
* Defaults to http://localhost:6420.
|
|
4998
5129
|
*/
|
|
4999
5130
|
endpoint: _v42.default.string().optional().transform((val) => {
|
|
5000
|
-
const resolved = _nullishCoalesce(_nullishCoalesce(val, () => (
|
|
5131
|
+
const resolved = _nullishCoalesce(_nullishCoalesce(val, () => ( _chunkKWGN2ZBJcjs.getRivetEngine.call(void 0, ))), () => ( _chunkKWGN2ZBJcjs.getRivetEndpoint.call(void 0, )));
|
|
5001
5132
|
if (!resolved && !hasWarnedMissingEndpoint) {
|
|
5002
5133
|
hasWarnedMissingEndpoint = true;
|
|
5003
5134
|
console.warn(
|
|
@@ -5007,12 +5138,14 @@ var ClientConfigSchemaBase = _v42.default.object({
|
|
|
5007
5138
|
return _nullishCoalesce(resolved, () => ( DEFAULT_ENDPOINT));
|
|
5008
5139
|
}),
|
|
5009
5140
|
/** Token to use to authenticate with the API. */
|
|
5010
|
-
token: _v42.default.string().optional().transform((val) => _nullishCoalesce(val, () => (
|
|
5141
|
+
token: _v42.default.string().optional().transform((val) => _nullishCoalesce(val, () => ( _chunkKWGN2ZBJcjs.getRivetToken.call(void 0, )))),
|
|
5142
|
+
/** Issue and renew a client token on demand. Overrides the static token when provided. */
|
|
5143
|
+
getToken: _v42.default.custom().optional(),
|
|
5011
5144
|
/** Namespace to connect to. */
|
|
5012
|
-
namespace: _v42.default.string().optional().transform((val) => _nullishCoalesce(val, () => (
|
|
5145
|
+
namespace: _v42.default.string().optional().transform((val) => _nullishCoalesce(val, () => ( _chunkKWGN2ZBJcjs.getRivetNamespace.call(void 0, )))),
|
|
5013
5146
|
/** Name of the envoy pool. This is used to group together envoys in to different pools. */
|
|
5014
|
-
poolName: _v42.default.string().default(() => _nullishCoalesce(
|
|
5015
|
-
encoding:
|
|
5147
|
+
poolName: _v42.default.string().default(() => _nullishCoalesce(_chunkKWGN2ZBJcjs.getRivetPool.call(void 0, ), () => ( "default"))),
|
|
5148
|
+
encoding: _chunkKWGN2ZBJcjs.EncodingSchema.default("bare"),
|
|
5016
5149
|
headers: _v42.default.record(_v42.default.string(), _v42.default.string()).optional().default(() => ({})),
|
|
5017
5150
|
gateway: _v42.default.object({
|
|
5018
5151
|
skipReadyWait: _v42.default.boolean().optional().default(false)
|
|
@@ -5052,7 +5185,7 @@ function transformClientConfig(config, ctx) {
|
|
|
5052
5185
|
...config,
|
|
5053
5186
|
endpoint: parsedEndpoint == null ? void 0 : parsedEndpoint.endpoint,
|
|
5054
5187
|
namespace: _nullishCoalesce(_nullishCoalesce((parsedEndpoint == null ? void 0 : parsedEndpoint.namespace), () => ( config.namespace)), () => ( "default")),
|
|
5055
|
-
token: _nullishCoalesce((parsedEndpoint == null ? void 0 : parsedEndpoint.token), () => ( config.token))
|
|
5188
|
+
token: _nullishCoalesce(_nullishCoalesce((parsedEndpoint == null ? void 0 : parsedEndpoint.token), () => ( config.token)), () => ( (config.endpoint && isLocalEngineEndpoint(config.endpoint) ? "default" : void 0)))
|
|
5056
5189
|
};
|
|
5057
5190
|
}
|
|
5058
5191
|
function convertRegistryConfigToClientConfig(config) {
|
|
@@ -5060,6 +5193,7 @@ function convertRegistryConfigToClientConfig(config) {
|
|
|
5060
5193
|
return {
|
|
5061
5194
|
endpoint: config.endpoint,
|
|
5062
5195
|
token: config.token,
|
|
5196
|
+
getToken: void 0,
|
|
5063
5197
|
namespace: config.namespace,
|
|
5064
5198
|
poolName: config.envoy.poolName,
|
|
5065
5199
|
headers: config.headers,
|
|
@@ -5178,7 +5312,7 @@ function setRemoteHibernatableWebSocketAckTestHooks(websocket, token, enabled) {
|
|
|
5178
5312
|
|
|
5179
5313
|
// src/engine-client/log.ts
|
|
5180
5314
|
function logger2() {
|
|
5181
|
-
return
|
|
5315
|
+
return _chunkKWGN2ZBJcjs.getLogger.call(void 0, "engine-client");
|
|
5182
5316
|
}
|
|
5183
5317
|
|
|
5184
5318
|
// src/engine-client/actor-websocket-client.ts
|
|
@@ -5311,7 +5445,7 @@ var BufferedRemoteWebSocket = (_class2 = class {
|
|
|
5311
5445
|
function buildActorGatewayUrl(endpoint, actorId, token, path = "") {
|
|
5312
5446
|
const tokenSegment = token !== void 0 ? `@${encodeURIComponent(token)}` : "";
|
|
5313
5447
|
const gatewayPath = `/gateway/${encodeURIComponent(actorId)}${tokenSegment}${path}`;
|
|
5314
|
-
return
|
|
5448
|
+
return _chunkKWGN2ZBJcjs.combineUrlPath.call(void 0, endpoint, gatewayPath);
|
|
5315
5449
|
}
|
|
5316
5450
|
function buildActorQueryGatewayUrl(endpoint, namespace, query, token, path = "", maxInputSize = DEFAULT_MAX_QUERY_INPUT_SIZE, crashPolicy = void 0, runnerName, options = {}) {
|
|
5317
5451
|
if (namespace.length === 0) {
|
|
@@ -5377,7 +5511,7 @@ function buildActorQueryGatewayUrl(endpoint, namespace, query, token, path = "",
|
|
|
5377
5511
|
separator = "?";
|
|
5378
5512
|
}
|
|
5379
5513
|
const gatewayPath = `/gateway/${encodeURIComponent(name)}${path}${separator}${queryString}`;
|
|
5380
|
-
return
|
|
5514
|
+
return _chunkKWGN2ZBJcjs.combineUrlPath.call(void 0, endpoint, gatewayPath);
|
|
5381
5515
|
}
|
|
5382
5516
|
function pushKeyQueryParams(params, key) {
|
|
5383
5517
|
if (key.length > 0) {
|
|
@@ -5388,7 +5522,7 @@ function pushInputQueryParam(params, input, maxInputSize) {
|
|
|
5388
5522
|
if (input === void 0) {
|
|
5389
5523
|
return;
|
|
5390
5524
|
}
|
|
5391
|
-
const encodedInput =
|
|
5525
|
+
const encodedInput = _chunkKWGN2ZBJcjs.encodeCborCompat.call(void 0, input);
|
|
5392
5526
|
if (encodedInput.byteLength > maxInputSize) {
|
|
5393
5527
|
throw new Error(
|
|
5394
5528
|
`Actor query input exceeds maxInputSize (${encodedInput.byteLength} > ${maxInputSize} bytes). Increase client maxInputSize to allow larger query payloads.`
|
|
@@ -5397,14 +5531,15 @@ function pushInputQueryParam(params, input, maxInputSize) {
|
|
|
5397
5531
|
params.append("rvt-input", uint8ArrayToBase64Url(encodedInput));
|
|
5398
5532
|
}
|
|
5399
5533
|
function uint8ArrayToBase64Url(value) {
|
|
5400
|
-
return
|
|
5534
|
+
return _chunkKWGN2ZBJcjs.uint8ArrayToBase64.call(void 0, value).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, "");
|
|
5401
5535
|
}
|
|
5402
5536
|
async function openWebSocketToGateway(runConfig, gatewayUrl, encoding, params, options = {}) {
|
|
5403
|
-
const WebSocket2 = await
|
|
5537
|
+
const WebSocket2 = await _chunkLWSLKKZ5cjs.importWebSocket.call(void 0, );
|
|
5404
5538
|
const ackHookToken = typeof process !== "undefined" && process.env.VITEST ? crypto.randomUUID() : void 0;
|
|
5405
5539
|
logger2().debug({
|
|
5406
5540
|
msg: "opening websocket to actor via guard",
|
|
5407
|
-
|
|
5541
|
+
// Gateway URLs can embed credentials; never include the path or query in logs.
|
|
5542
|
+
origin: new URL(gatewayUrl).origin
|
|
5408
5543
|
});
|
|
5409
5544
|
const ws = new WebSocket2(
|
|
5410
5545
|
gatewayUrl,
|
|
@@ -5467,7 +5602,7 @@ function getEndpoint(config) {
|
|
|
5467
5602
|
}
|
|
5468
5603
|
async function apiCall(config, method, path, body) {
|
|
5469
5604
|
const endpoint = getEndpoint(config);
|
|
5470
|
-
const url =
|
|
5605
|
+
const url = _chunkKWGN2ZBJcjs.combineUrlPath.call(void 0, endpoint, path, {
|
|
5471
5606
|
namespace: config.namespace
|
|
5472
5607
|
});
|
|
5473
5608
|
logger2().debug({ msg: "making api call", method, url });
|
|
@@ -5499,6 +5634,14 @@ async function apiCall(config, method, path, body) {
|
|
|
5499
5634
|
}
|
|
5500
5635
|
|
|
5501
5636
|
// src/engine-client/api-endpoints.ts
|
|
5637
|
+
async function issueToken(config, options) {
|
|
5638
|
+
return apiCall(config, "POST", "/auth/tokens", {
|
|
5639
|
+
namespace: config.namespace,
|
|
5640
|
+
subject: options.subject,
|
|
5641
|
+
duration: options.expiresIn,
|
|
5642
|
+
grants: options.grants
|
|
5643
|
+
});
|
|
5644
|
+
}
|
|
5502
5645
|
async function getActor(config, _, actorId) {
|
|
5503
5646
|
return apiCall(
|
|
5504
5647
|
config,
|
|
@@ -5592,7 +5735,7 @@ async function lookupMetadataCached(config) {
|
|
|
5592
5735
|
msg: "failed to fetch metadata, retrying",
|
|
5593
5736
|
endpoint,
|
|
5594
5737
|
attempt: error.attemptNumber,
|
|
5595
|
-
error:
|
|
5738
|
+
error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, error)
|
|
5596
5739
|
});
|
|
5597
5740
|
}
|
|
5598
5741
|
}
|
|
@@ -5604,7 +5747,7 @@ async function lookupMetadataCached(config) {
|
|
|
5604
5747
|
|
|
5605
5748
|
// src/engine-client/ws-proxy.ts
|
|
5606
5749
|
async function createWebSocketProxy(_c, targetUrl, protocols) {
|
|
5607
|
-
const WebSocket2 = await
|
|
5750
|
+
const WebSocket2 = await _chunkLWSLKKZ5cjs.importWebSocket.call(void 0, );
|
|
5608
5751
|
const state = {};
|
|
5609
5752
|
return {
|
|
5610
5753
|
onOpen: async (_event, clientWs) => {
|
|
@@ -5669,7 +5812,7 @@ async function createWebSocketProxy(_c, targetUrl, protocols) {
|
|
|
5669
5812
|
logger2().error({
|
|
5670
5813
|
msg: "target websocket error",
|
|
5671
5814
|
targetUrl,
|
|
5672
|
-
error:
|
|
5815
|
+
error: _chunkKWGN2ZBJcjs.stringifyError.call(void 0, error)
|
|
5673
5816
|
});
|
|
5674
5817
|
closeWebSocketIfOpen(clientWs, 1011, "Target WebSocket error");
|
|
5675
5818
|
});
|
|
@@ -5747,14 +5890,18 @@ function closeWebSocketIfOpen(ws, code, reason) {
|
|
|
5747
5890
|
var RemoteEngineControlClient = class {
|
|
5748
5891
|
#config;
|
|
5749
5892
|
#metadataPromise;
|
|
5893
|
+
#tokenProvider;
|
|
5894
|
+
#webSocketTokens = /* @__PURE__ */ new WeakMap();
|
|
5750
5895
|
constructor(runConfig) {
|
|
5751
|
-
if (
|
|
5896
|
+
if (_chunkKWGN2ZBJcjs.getNextPhase.call(void 0, ) === "phase-production-build") {
|
|
5752
5897
|
logger2().info(
|
|
5753
5898
|
"detected next.js build phase, disabling health check"
|
|
5754
5899
|
);
|
|
5755
5900
|
runConfig.disableMetadataLookup = true;
|
|
5756
5901
|
}
|
|
5757
5902
|
this.#config = { ...runConfig };
|
|
5903
|
+
if (runConfig.getToken)
|
|
5904
|
+
this.#tokenProvider = new TokenProvider(runConfig.getToken);
|
|
5758
5905
|
if (!runConfig.disableMetadataLookup) {
|
|
5759
5906
|
this.#metadataPromise = lookupMetadataCached(this.#config).then(
|
|
5760
5907
|
(metadataData) => {
|
|
@@ -5763,14 +5910,13 @@ var RemoteEngineControlClient = class {
|
|
|
5763
5910
|
if (metadataData.clientNamespace) {
|
|
5764
5911
|
this.#config.namespace = metadataData.clientNamespace;
|
|
5765
5912
|
}
|
|
5766
|
-
if (metadataData.clientToken) {
|
|
5913
|
+
if (metadataData.clientToken && !this.#tokenProvider) {
|
|
5767
5914
|
this.#config.token = metadataData.clientToken;
|
|
5768
5915
|
}
|
|
5769
5916
|
logger2().info({
|
|
5770
5917
|
msg: "overriding client endpoint",
|
|
5771
5918
|
endpoint: metadataData.clientEndpoint,
|
|
5772
|
-
namespace: metadataData.clientNamespace
|
|
5773
|
-
token: metadataData.clientToken
|
|
5919
|
+
namespace: metadataData.clientNamespace
|
|
5774
5920
|
});
|
|
5775
5921
|
}
|
|
5776
5922
|
logger2().info({
|
|
@@ -5783,12 +5929,47 @@ var RemoteEngineControlClient = class {
|
|
|
5783
5929
|
);
|
|
5784
5930
|
}
|
|
5785
5931
|
}
|
|
5932
|
+
async #authorizedConfig() {
|
|
5933
|
+
if (!this.#tokenProvider) return this.#config;
|
|
5934
|
+
return { ...this.#config, token: await this.#tokenProvider.current() };
|
|
5935
|
+
}
|
|
5936
|
+
async #withCredential(request, readOnly = false) {
|
|
5937
|
+
const config = await this.#authorizedConfig();
|
|
5938
|
+
try {
|
|
5939
|
+
return await request(config);
|
|
5940
|
+
} catch (error) {
|
|
5941
|
+
if (this.#tokenProvider && config.token && error instanceof _chunkJX2ITWAVcjs.RivetError && error.statusCode === 401 && isInvalidToken(error.group, error.code)) {
|
|
5942
|
+
if (readOnly) {
|
|
5943
|
+
const token = await this.#tokenProvider.refreshIfCurrent(
|
|
5944
|
+
config.token
|
|
5945
|
+
);
|
|
5946
|
+
return request({ ...this.#config, token });
|
|
5947
|
+
}
|
|
5948
|
+
await this.#tokenProvider.refreshIfCurrent(config.token);
|
|
5949
|
+
}
|
|
5950
|
+
throw error;
|
|
5951
|
+
}
|
|
5952
|
+
}
|
|
5953
|
+
async issueToken(options) {
|
|
5954
|
+
await this.#metadataPromise;
|
|
5955
|
+
const response = await this.#withCredential(
|
|
5956
|
+
(config) => issueToken(config, options)
|
|
5957
|
+
);
|
|
5958
|
+
return {
|
|
5959
|
+
token: response.token,
|
|
5960
|
+
issuedAt: response.issued_ts,
|
|
5961
|
+
expiresAt: response.expires_ts
|
|
5962
|
+
};
|
|
5963
|
+
}
|
|
5786
5964
|
async getForId({
|
|
5787
5965
|
name,
|
|
5788
5966
|
actorId
|
|
5789
5967
|
}) {
|
|
5790
5968
|
await this.#metadataPromise;
|
|
5791
|
-
const response = await
|
|
5969
|
+
const response = await this.#withCredential(
|
|
5970
|
+
(config) => getActor(config, name, actorId),
|
|
5971
|
+
true
|
|
5972
|
+
);
|
|
5792
5973
|
const actor = response.actors[0];
|
|
5793
5974
|
if (!actor) return void 0;
|
|
5794
5975
|
if (actor.name !== name) {
|
|
@@ -5809,7 +5990,10 @@ var RemoteEngineControlClient = class {
|
|
|
5809
5990
|
await this.#metadataPromise;
|
|
5810
5991
|
logger2().debug({ msg: "getWithKey: searching for actor", name, key });
|
|
5811
5992
|
try {
|
|
5812
|
-
const response = await
|
|
5993
|
+
const response = await this.#withCredential(
|
|
5994
|
+
(config) => getActorByKey(config, name, key),
|
|
5995
|
+
true
|
|
5996
|
+
);
|
|
5813
5997
|
const actor = response.actors[0];
|
|
5814
5998
|
if (!actor) return void 0;
|
|
5815
5999
|
logger2().debug({
|
|
@@ -5842,16 +6026,18 @@ var RemoteEngineControlClient = class {
|
|
|
5842
6026
|
key
|
|
5843
6027
|
});
|
|
5844
6028
|
try {
|
|
5845
|
-
const { actor, created } = await
|
|
5846
|
-
|
|
5847
|
-
|
|
5848
|
-
|
|
5849
|
-
|
|
5850
|
-
|
|
5851
|
-
|
|
5852
|
-
|
|
5853
|
-
|
|
5854
|
-
|
|
6029
|
+
const { actor, created } = await this.#withCredential(
|
|
6030
|
+
(config) => getOrCreateActor(config, {
|
|
6031
|
+
datacenter: region,
|
|
6032
|
+
name,
|
|
6033
|
+
key: _chunkMYWZCDMLcjs.serializeActorKey.call(void 0, key),
|
|
6034
|
+
runner_name_selector: _nullishCoalesce(poolName, () => ( this.#config.poolName)),
|
|
6035
|
+
input: actorInput ? _chunkKWGN2ZBJcjs.uint8ArrayToBase64.call(void 0,
|
|
6036
|
+
_chunkKWGN2ZBJcjs.encodeCborCompat.call(void 0, actorInput)
|
|
6037
|
+
) : void 0,
|
|
6038
|
+
crash_policy: _nullishCoalesce(crashPolicy, () => ( "sleep"))
|
|
6039
|
+
})
|
|
6040
|
+
);
|
|
5855
6041
|
logger2().info({
|
|
5856
6042
|
msg: "getOrCreateWithKey: actor ready",
|
|
5857
6043
|
actorId: actor.actor_id,
|
|
@@ -5867,7 +6053,10 @@ var RemoteEngineControlClient = class {
|
|
|
5867
6053
|
name,
|
|
5868
6054
|
key
|
|
5869
6055
|
});
|
|
5870
|
-
const response = await
|
|
6056
|
+
const response = await this.#withCredential(
|
|
6057
|
+
(config) => getActorByKey(config, name, key),
|
|
6058
|
+
true
|
|
6059
|
+
);
|
|
5871
6060
|
const existing = response.actors[0];
|
|
5872
6061
|
if (!existing) throw error;
|
|
5873
6062
|
logger2().info({
|
|
@@ -5891,14 +6080,18 @@ var RemoteEngineControlClient = class {
|
|
|
5891
6080
|
}) {
|
|
5892
6081
|
await this.#metadataPromise;
|
|
5893
6082
|
logger2().info({ msg: "creating actor via engine api", name, key });
|
|
5894
|
-
const result = await
|
|
5895
|
-
|
|
5896
|
-
|
|
5897
|
-
|
|
5898
|
-
|
|
5899
|
-
|
|
5900
|
-
|
|
5901
|
-
|
|
6083
|
+
const result = await this.#withCredential(
|
|
6084
|
+
(config) => createActor(config, {
|
|
6085
|
+
datacenter: region,
|
|
6086
|
+
name,
|
|
6087
|
+
runner_name_selector: _nullishCoalesce(poolName, () => ( this.#config.poolName)),
|
|
6088
|
+
key: _chunkMYWZCDMLcjs.serializeActorKey.call(void 0, key),
|
|
6089
|
+
input: input ? _chunkKWGN2ZBJcjs.uint8ArrayToBase64.call(void 0,
|
|
6090
|
+
_chunkKWGN2ZBJcjs.encodeCborCompat.call(void 0, input)
|
|
6091
|
+
) : void 0,
|
|
6092
|
+
crash_policy: _nullishCoalesce(crashPolicy, () => ( "sleep"))
|
|
6093
|
+
})
|
|
6094
|
+
);
|
|
5902
6095
|
logger2().info({
|
|
5903
6096
|
msg: "actor created",
|
|
5904
6097
|
actorId: result.actor.actor_id,
|
|
@@ -5910,43 +6103,61 @@ var RemoteEngineControlClient = class {
|
|
|
5910
6103
|
async listActors({ name }) {
|
|
5911
6104
|
await this.#metadataPromise;
|
|
5912
6105
|
logger2().debug({ msg: "listing actors via engine api", name });
|
|
5913
|
-
const response = await
|
|
6106
|
+
const response = await this.#withCredential(
|
|
6107
|
+
(config) => listActorsByName(config, name),
|
|
6108
|
+
true
|
|
6109
|
+
);
|
|
5914
6110
|
return response.actors.map(apiActorToOutput);
|
|
5915
6111
|
}
|
|
5916
6112
|
async destroyActor(actorId) {
|
|
5917
6113
|
await this.#metadataPromise;
|
|
5918
6114
|
logger2().info({ msg: "destroying actor via engine api", actorId });
|
|
5919
|
-
await
|
|
6115
|
+
await this.#withCredential((config) => destroyActor(config, actorId));
|
|
5920
6116
|
logger2().info({ msg: "actor destroyed", actorId });
|
|
5921
6117
|
}
|
|
5922
6118
|
async sendRequest(target, actorRequest, options = {}) {
|
|
6119
|
+
var _a;
|
|
5923
6120
|
await this.#metadataPromise;
|
|
5924
|
-
const
|
|
5925
|
-
const gatewayUrl = this.#buildGatewayUrlForTarget(
|
|
5926
|
-
target,
|
|
5927
|
-
path,
|
|
5928
|
-
options
|
|
5929
|
-
);
|
|
6121
|
+
const config = await this.#authorizedConfig();
|
|
5930
6122
|
const httpOptions = {
|
|
5931
6123
|
...options,
|
|
5932
6124
|
directActorId: shouldSkipReadyWait(options) ? directActorIdFromTarget(target) : void 0
|
|
5933
6125
|
};
|
|
5934
|
-
|
|
5935
|
-
|
|
5936
|
-
|
|
6126
|
+
const send = (current) => sendHttpRequestToGateway(
|
|
6127
|
+
current,
|
|
6128
|
+
this.#buildGatewayUrlForTarget(
|
|
6129
|
+
current,
|
|
6130
|
+
target,
|
|
6131
|
+
requestPath(actorRequest),
|
|
6132
|
+
options
|
|
6133
|
+
),
|
|
5937
6134
|
actorRequest,
|
|
5938
6135
|
httpOptions
|
|
5939
6136
|
);
|
|
6137
|
+
const response = await send(config);
|
|
6138
|
+
if (!this.#tokenProvider || !config.token || !isInvalidTokenResponse(response))
|
|
6139
|
+
return response;
|
|
6140
|
+
if ((actorRequest.method === "GET" || actorRequest.method === "HEAD") && !("getOrCreateForKey" in target)) {
|
|
6141
|
+
const token = await this.#tokenProvider.refreshIfCurrent(
|
|
6142
|
+
config.token
|
|
6143
|
+
);
|
|
6144
|
+
await ((_a = response.body) == null ? void 0 : _a.cancel());
|
|
6145
|
+
return send({ ...this.#config, token });
|
|
6146
|
+
}
|
|
6147
|
+
await this.#tokenProvider.refreshIfCurrent(config.token);
|
|
6148
|
+
return response;
|
|
5940
6149
|
}
|
|
5941
6150
|
async openWebSocket(path, target, encoding, params, options = {}) {
|
|
5942
6151
|
await this.#metadataPromise;
|
|
6152
|
+
const config = await this.#authorizedConfig();
|
|
5943
6153
|
const gatewayUrl = this.#buildGatewayUrlForTarget(
|
|
6154
|
+
config,
|
|
5944
6155
|
target,
|
|
5945
6156
|
path,
|
|
5946
6157
|
options
|
|
5947
6158
|
);
|
|
5948
|
-
|
|
5949
|
-
|
|
6159
|
+
const ws = await openWebSocketToGateway(
|
|
6160
|
+
config,
|
|
5950
6161
|
gatewayUrl,
|
|
5951
6162
|
encoding,
|
|
5952
6163
|
params,
|
|
@@ -5955,26 +6166,60 @@ var RemoteEngineControlClient = class {
|
|
|
5955
6166
|
directActorId: shouldSkipReadyWait(options) ? directActorIdFromTarget(target) : void 0
|
|
5956
6167
|
}
|
|
5957
6168
|
);
|
|
6169
|
+
this.#watchWebSocketAuth(ws, config.token);
|
|
6170
|
+
return ws;
|
|
6171
|
+
}
|
|
6172
|
+
async refreshAuthToken(ws) {
|
|
6173
|
+
const context2 = this.#webSocketTokens.get(ws);
|
|
6174
|
+
if (!(context2 == null ? void 0 : context2.refresh)) return false;
|
|
6175
|
+
await context2.refresh;
|
|
6176
|
+
return true;
|
|
6177
|
+
}
|
|
6178
|
+
#watchWebSocketAuth(ws, token) {
|
|
6179
|
+
const tokenProvider = this.#tokenProvider;
|
|
6180
|
+
if (!tokenProvider || !token) return;
|
|
6181
|
+
const context2 = {};
|
|
6182
|
+
this.#webSocketTokens.set(ws, context2);
|
|
6183
|
+
ws.addEventListener(
|
|
6184
|
+
"close",
|
|
6185
|
+
(event) => {
|
|
6186
|
+
if (event.code !== 1008 || !event.reason) return;
|
|
6187
|
+
const separator = event.reason.indexOf(".");
|
|
6188
|
+
if (separator < 0) return;
|
|
6189
|
+
const code = event.reason.slice(separator + 1).split(/[\s:#]/, 1)[0];
|
|
6190
|
+
if (isInvalidToken(event.reason.slice(0, separator), code)) {
|
|
6191
|
+
context2.refresh = tokenProvider.refreshIfCurrent(token).catch((error) => {
|
|
6192
|
+
logger2().warn(
|
|
6193
|
+
"failed to renew authentication token"
|
|
6194
|
+
);
|
|
6195
|
+
throw error;
|
|
6196
|
+
});
|
|
6197
|
+
context2.refresh.catch(() => {
|
|
6198
|
+
});
|
|
6199
|
+
}
|
|
6200
|
+
}
|
|
6201
|
+
);
|
|
5958
6202
|
}
|
|
5959
6203
|
async buildGatewayUrl(target, options = {}) {
|
|
5960
6204
|
await this.#metadataPromise;
|
|
5961
|
-
return this.#buildGatewayUrlForTarget(
|
|
6205
|
+
return this.#buildGatewayUrlForTarget(
|
|
6206
|
+
await this.#authorizedConfig(),
|
|
6207
|
+
target,
|
|
6208
|
+
"",
|
|
6209
|
+
options
|
|
6210
|
+
);
|
|
5962
6211
|
}
|
|
5963
6212
|
async proxyRequest(_c, actorRequest, actorId) {
|
|
5964
|
-
|
|
5965
|
-
const gatewayUrl = this.#buildGatewayUrlForTarget(
|
|
5966
|
-
{ directId: actorId },
|
|
5967
|
-
requestPath(actorRequest)
|
|
5968
|
-
);
|
|
5969
|
-
return sendHttpRequestToGateway(this.#config, gatewayUrl, actorRequest);
|
|
6213
|
+
return this.sendRequest({ directId: actorId }, actorRequest);
|
|
5970
6214
|
}
|
|
5971
6215
|
async proxyWebSocket(c, path, actorId, encoding, params) {
|
|
5972
|
-
var _a
|
|
6216
|
+
var _a;
|
|
5973
6217
|
await this.#metadataPromise;
|
|
5974
|
-
const
|
|
6218
|
+
const config = await this.#authorizedConfig();
|
|
6219
|
+
const upgradeWebSocket = (_a = config.getUpgradeWebSocket) == null ? void 0 : _a.call(config);
|
|
5975
6220
|
_invariant2.default.call(void 0, upgradeWebSocket, "missing getUpgradeWebSocket");
|
|
5976
|
-
const endpoint = getEndpoint(
|
|
5977
|
-
const guardUrl =
|
|
6221
|
+
const endpoint = getEndpoint(config);
|
|
6222
|
+
const guardUrl = _chunkKWGN2ZBJcjs.combineUrlPath.call(void 0, endpoint, path);
|
|
5978
6223
|
const wsGuardUrl = guardUrl.replace("http://", "ws://");
|
|
5979
6224
|
logger2().debug({
|
|
5980
6225
|
msg: "forwarding websocket to actor via guard",
|
|
@@ -5983,7 +6228,7 @@ var RemoteEngineControlClient = class {
|
|
|
5983
6228
|
guardUrl
|
|
5984
6229
|
});
|
|
5985
6230
|
const protocols = buildWebSocketProtocols(
|
|
5986
|
-
|
|
6231
|
+
config,
|
|
5987
6232
|
encoding,
|
|
5988
6233
|
params,
|
|
5989
6234
|
void 0,
|
|
@@ -5993,7 +6238,7 @@ var RemoteEngineControlClient = class {
|
|
|
5993
6238
|
}
|
|
5994
6239
|
);
|
|
5995
6240
|
const args = await createWebSocketProxy(c, wsGuardUrl, protocols);
|
|
5996
|
-
return await upgradeWebSocket(() => args)(c,
|
|
6241
|
+
return await upgradeWebSocket(() => args)(c, _chunkKWGN2ZBJcjs.noopNext.call(void 0, ));
|
|
5997
6242
|
}
|
|
5998
6243
|
displayInformation() {
|
|
5999
6244
|
return { properties: {} };
|
|
@@ -6001,16 +6246,16 @@ var RemoteEngineControlClient = class {
|
|
|
6001
6246
|
setGetUpgradeWebSocket(getUpgradeWebSocket) {
|
|
6002
6247
|
this.#config.getUpgradeWebSocket = getUpgradeWebSocket;
|
|
6003
6248
|
}
|
|
6004
|
-
#buildGatewayUrlForTarget(target, path, options = {}) {
|
|
6005
|
-
const endpoint = getEndpoint(
|
|
6249
|
+
#buildGatewayUrlForTarget(config, target, path, options = {}) {
|
|
6250
|
+
const endpoint = getEndpoint(config);
|
|
6006
6251
|
if (shouldSkipReadyWait(options) && directActorIdFromTarget(target) && canUseDirectSkipReadyWaitPath(path)) {
|
|
6007
|
-
return
|
|
6252
|
+
return _chunkKWGN2ZBJcjs.combineUrlPath.call(void 0, endpoint, path);
|
|
6008
6253
|
}
|
|
6009
6254
|
if ("directId" in target) {
|
|
6010
6255
|
return buildActorGatewayUrl(
|
|
6011
6256
|
endpoint,
|
|
6012
6257
|
target.directId,
|
|
6013
|
-
|
|
6258
|
+
config.token,
|
|
6014
6259
|
path
|
|
6015
6260
|
);
|
|
6016
6261
|
}
|
|
@@ -6018,20 +6263,20 @@ var RemoteEngineControlClient = class {
|
|
|
6018
6263
|
return buildActorGatewayUrl(
|
|
6019
6264
|
endpoint,
|
|
6020
6265
|
target.getForId.actorId,
|
|
6021
|
-
|
|
6266
|
+
config.token,
|
|
6022
6267
|
path
|
|
6023
6268
|
);
|
|
6024
6269
|
}
|
|
6025
6270
|
if ("getForKey" in target || "getOrCreateForKey" in target) {
|
|
6026
6271
|
return buildActorQueryGatewayUrl(
|
|
6027
6272
|
endpoint,
|
|
6028
|
-
|
|
6273
|
+
config.namespace,
|
|
6029
6274
|
target,
|
|
6030
|
-
|
|
6275
|
+
config.token,
|
|
6031
6276
|
path,
|
|
6032
|
-
|
|
6277
|
+
config.maxInputSize,
|
|
6033
6278
|
void 0,
|
|
6034
|
-
"getOrCreateForKey" in target ? _nullishCoalesce(target.getOrCreateForKey.poolName, () => (
|
|
6279
|
+
"getOrCreateForKey" in target ? _nullishCoalesce(target.getOrCreateForKey.poolName, () => ( config.poolName)) : void 0,
|
|
6035
6280
|
options
|
|
6036
6281
|
);
|
|
6037
6282
|
}
|
|
@@ -6100,5 +6345,9 @@ function apiActorToOutput(actor) {
|
|
|
6100
6345
|
|
|
6101
6346
|
|
|
6102
6347
|
|
|
6103
|
-
|
|
6104
|
-
|
|
6348
|
+
|
|
6349
|
+
|
|
6350
|
+
|
|
6351
|
+
|
|
6352
|
+
exports.HEADER_CONN_PARAMS = HEADER_CONN_PARAMS; exports.HEADER_ORIGINAL_REQUEST_URL = HEADER_ORIGINAL_REQUEST_URL; exports.ALLOWED_PUBLIC_HEADERS = ALLOWED_PUBLIC_HEADERS; exports.ActorClientError = ActorClientError; exports.ManagerError = ManagerError; exports.MalformedResponseMessage = MalformedResponseMessage; exports.ActorConnDisposed = ActorConnDisposed; exports.readActiveTraceHeaders = readActiveTraceHeaders; exports.runWithActorInvocationSpan = runWithActorInvocationSpan; exports.ActorConnRaw = ActorConnRaw; exports.isResponseLike = isResponseLike; exports.ActorHandleRaw = ActorHandleRaw; exports.createClientWithDriver = createClientWithDriver; exports.ENGINE_HOST = ENGINE_HOST; exports.ENGINE_PORT = ENGINE_PORT; exports.buildEngineEndpoint = buildEngineEndpoint; exports.isLocalEngineEndpoint = isLocalEngineEndpoint; exports.tryParseEndpoint = tryParseEndpoint; exports.ClientConfigSchema = ClientConfigSchema; exports.convertRegistryConfigToClientConfig = convertRegistryConfigToClientConfig; exports.getDatacenters = getDatacenters; exports.updateRunnerConfig = updateRunnerConfig; exports.RemoteEngineControlClient = RemoteEngineControlClient;
|
|
6353
|
+
//# sourceMappingURL=chunk-B5SNXPSS.cjs.map
|