rivetkit 2.0.3 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/dist/schemas/actor-persist/v1.ts +21 -24
- package/dist/schemas/client-protocol/v1.ts +6 -0
- package/dist/tsup/actor/errors.cjs +10 -2
- package/dist/tsup/actor/errors.cjs.map +1 -1
- package/dist/tsup/actor/errors.d.cts +17 -4
- package/dist/tsup/actor/errors.d.ts +17 -4
- package/dist/tsup/actor/errors.js +11 -3
- package/dist/tsup/{chunk-6PDXBYI5.js → chunk-3F2YSRJL.js} +8 -23
- package/dist/tsup/chunk-3F2YSRJL.js.map +1 -0
- package/dist/tsup/chunk-4CXBCT26.cjs +250 -0
- package/dist/tsup/chunk-4CXBCT26.cjs.map +1 -0
- package/dist/tsup/chunk-4R73YDN3.cjs +20 -0
- package/dist/tsup/chunk-4R73YDN3.cjs.map +1 -0
- package/dist/tsup/{chunk-OGAPU3UG.cjs → chunk-6LJT3QRL.cjs} +39 -25
- package/dist/tsup/chunk-6LJT3QRL.cjs.map +1 -0
- package/dist/tsup/{chunk-6WKQDDUD.cjs → chunk-GICQ3YCU.cjs} +143 -141
- package/dist/tsup/chunk-GICQ3YCU.cjs.map +1 -0
- package/dist/tsup/{chunk-FLMTTN27.js → chunk-H26RP6GD.js} +15 -8
- package/dist/tsup/chunk-H26RP6GD.js.map +1 -0
- package/dist/tsup/chunk-HI3HWJRC.js +20 -0
- package/dist/tsup/chunk-HI3HWJRC.js.map +1 -0
- package/dist/tsup/{chunk-4NSUQZ2H.js → chunk-HLLF4B4Q.js} +116 -114
- package/dist/tsup/chunk-HLLF4B4Q.js.map +1 -0
- package/dist/tsup/{chunk-FCCPJNMA.cjs → chunk-IH6CKNDW.cjs} +12 -27
- package/dist/tsup/chunk-IH6CKNDW.cjs.map +1 -0
- package/dist/tsup/chunk-LV2S3OU3.js +250 -0
- package/dist/tsup/chunk-LV2S3OU3.js.map +1 -0
- package/dist/tsup/{chunk-R2OPSKIV.cjs → chunk-LWNKVZG5.cjs} +20 -13
- package/dist/tsup/chunk-LWNKVZG5.cjs.map +1 -0
- package/dist/tsup/{chunk-INGJP237.js → chunk-NFU2BBT5.js} +102 -43
- package/dist/tsup/chunk-NFU2BBT5.js.map +1 -0
- package/dist/tsup/{chunk-3H7O2A7I.js → chunk-PQY7KKTL.js} +33 -19
- package/dist/tsup/chunk-PQY7KKTL.js.map +1 -0
- package/dist/tsup/{chunk-PO4VLDWA.js → chunk-QK72M5JB.js} +3 -5
- package/dist/tsup/chunk-QK72M5JB.js.map +1 -0
- package/dist/tsup/{chunk-TZJKSBUQ.cjs → chunk-QNNXFOQV.cjs} +3 -5
- package/dist/tsup/chunk-QNNXFOQV.cjs.map +1 -0
- package/dist/tsup/{chunk-GIR3AFFI.cjs → chunk-SBHHJ6QS.cjs} +102 -43
- package/dist/tsup/chunk-SBHHJ6QS.cjs.map +1 -0
- package/dist/tsup/chunk-TQ62L3X7.js +325 -0
- package/dist/tsup/chunk-TQ62L3X7.js.map +1 -0
- package/dist/tsup/chunk-VO7ZRVVD.cjs +6293 -0
- package/dist/tsup/chunk-VO7ZRVVD.cjs.map +1 -0
- package/dist/tsup/chunk-WHBPJNGW.cjs +325 -0
- package/dist/tsup/chunk-WHBPJNGW.cjs.map +1 -0
- package/dist/tsup/chunk-XJQHKJ4P.js +6293 -0
- package/dist/tsup/chunk-XJQHKJ4P.js.map +1 -0
- package/dist/tsup/client/mod.cjs +10 -10
- package/dist/tsup/client/mod.d.cts +7 -13
- package/dist/tsup/client/mod.d.ts +7 -13
- package/dist/tsup/client/mod.js +9 -9
- package/dist/tsup/common/log.cjs +12 -4
- package/dist/tsup/common/log.cjs.map +1 -1
- package/dist/tsup/common/log.d.cts +23 -17
- package/dist/tsup/common/log.d.ts +23 -17
- package/dist/tsup/common/log.js +15 -7
- package/dist/tsup/common/websocket.cjs +5 -5
- package/dist/tsup/common/websocket.js +4 -4
- package/dist/tsup/{common-CpqORuCq.d.cts → common-CXCe7s6i.d.cts} +2 -2
- package/dist/tsup/{common-CpqORuCq.d.ts → common-CXCe7s6i.d.ts} +2 -2
- package/dist/tsup/{connection-BwUMoe6n.d.ts → connection-BI-6UIBJ.d.ts} +196 -226
- package/dist/tsup/{connection-BR_Ve4ku.d.cts → connection-Dyd4NLGW.d.cts} +196 -226
- package/dist/tsup/driver-helpers/mod.cjs +6 -9
- package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
- package/dist/tsup/driver-helpers/mod.d.cts +5 -6
- package/dist/tsup/driver-helpers/mod.d.ts +5 -6
- package/dist/tsup/driver-helpers/mod.js +6 -9
- package/dist/tsup/driver-test-suite/mod.cjs +155 -1363
- package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/driver-test-suite/mod.d.cts +11 -5
- package/dist/tsup/driver-test-suite/mod.d.ts +11 -5
- package/dist/tsup/driver-test-suite/mod.js +876 -2084
- package/dist/tsup/driver-test-suite/mod.js.map +1 -1
- package/dist/tsup/inspector/mod.cjs +6 -8
- package/dist/tsup/inspector/mod.cjs.map +1 -1
- package/dist/tsup/inspector/mod.d.cts +3 -3
- package/dist/tsup/inspector/mod.d.ts +3 -3
- package/dist/tsup/inspector/mod.js +8 -10
- package/dist/tsup/mod.cjs +9 -15
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +47 -42
- package/dist/tsup/mod.d.ts +47 -42
- package/dist/tsup/mod.js +10 -16
- package/dist/tsup/{router-endpoints-DAbqVFx2.d.ts → router-endpoints-BTe_Rsdn.d.cts} +2 -3
- package/dist/tsup/{router-endpoints-AYkXG8Tl.d.cts → router-endpoints-CBSrKHmo.d.ts} +2 -3
- package/dist/tsup/test/mod.cjs +10 -14
- package/dist/tsup/test/mod.cjs.map +1 -1
- package/dist/tsup/test/mod.d.cts +4 -5
- package/dist/tsup/test/mod.d.ts +4 -5
- package/dist/tsup/test/mod.js +9 -13
- package/dist/tsup/{utils-CT0cv4jd.d.ts → utils-fwx3o3K9.d.cts} +1 -0
- package/dist/tsup/{utils-CT0cv4jd.d.cts → utils-fwx3o3K9.d.ts} +1 -0
- package/dist/tsup/utils.cjs +3 -3
- package/dist/tsup/utils.d.cts +1 -1
- package/dist/tsup/utils.d.ts +1 -1
- package/dist/tsup/utils.js +2 -2
- package/package.json +4 -4
- package/src/actor/action.ts +1 -5
- package/src/actor/config.ts +27 -295
- package/src/actor/connection.ts +9 -12
- package/src/actor/context.ts +1 -4
- package/src/actor/definition.ts +7 -11
- package/src/actor/errors.ts +97 -35
- package/src/actor/generic-conn-driver.ts +28 -16
- package/src/actor/instance.ts +177 -133
- package/src/actor/log.ts +4 -13
- package/src/actor/mod.ts +0 -5
- package/src/actor/protocol/old.ts +42 -26
- package/src/actor/protocol/serde.ts +1 -1
- package/src/actor/router-endpoints.ts +41 -38
- package/src/actor/router.ts +20 -18
- package/src/actor/unstable-react.ts +1 -1
- package/src/actor/utils.ts +6 -2
- package/src/client/actor-common.ts +1 -1
- package/src/client/actor-conn.ts +152 -91
- package/src/client/actor-handle.ts +85 -25
- package/src/client/actor-query.ts +65 -0
- package/src/client/client.ts +29 -98
- package/src/client/config.ts +44 -0
- package/src/client/errors.ts +1 -0
- package/src/client/log.ts +2 -4
- package/src/client/mod.ts +16 -12
- package/src/client/raw-utils.ts +82 -25
- package/src/client/utils.ts +5 -3
- package/src/common/fake-event-source.ts +10 -9
- package/src/common/inline-websocket-adapter2.ts +39 -30
- package/src/common/log.ts +176 -101
- package/src/common/logfmt.ts +21 -30
- package/src/common/router.ts +12 -19
- package/src/common/utils.ts +27 -13
- package/src/common/websocket.ts +0 -1
- package/src/driver-helpers/mod.ts +1 -1
- package/src/driver-test-suite/log.ts +1 -3
- package/src/driver-test-suite/mod.ts +86 -60
- package/src/driver-test-suite/tests/actor-handle.ts +33 -0
- package/src/driver-test-suite/tests/manager-driver.ts +5 -3
- package/src/driver-test-suite/tests/raw-http-direct-registry.ts +227 -226
- package/src/driver-test-suite/tests/raw-websocket-direct-registry.ts +393 -392
- package/src/driver-test-suite/tests/request-access.ts +112 -126
- package/src/driver-test-suite/utils.ts +13 -10
- package/src/drivers/default.ts +7 -4
- package/src/drivers/engine/actor-driver.ts +22 -13
- package/src/drivers/engine/config.ts +2 -10
- package/src/drivers/engine/kv.ts +1 -1
- package/src/drivers/engine/log.ts +1 -3
- package/src/drivers/engine/mod.ts +2 -3
- package/src/drivers/file-system/actor.ts +1 -1
- package/src/drivers/file-system/global-state.ts +33 -20
- package/src/drivers/file-system/log.ts +1 -3
- package/src/drivers/file-system/manager.ts +31 -8
- package/src/inspector/config.ts +9 -4
- package/src/inspector/log.ts +1 -1
- package/src/inspector/manager.ts +2 -2
- package/src/inspector/utils.ts +1 -1
- package/src/manager/driver.ts +10 -2
- package/src/manager/hono-websocket-adapter.ts +21 -12
- package/src/manager/log.ts +2 -4
- package/src/manager/mod.ts +1 -1
- package/src/manager/router.ts +277 -1657
- package/src/manager-api/routes/actors-create.ts +16 -0
- package/src/manager-api/routes/actors-delete.ts +4 -0
- package/src/manager-api/routes/actors-get-by-id.ts +7 -0
- package/src/manager-api/routes/actors-get-or-create-by-id.ts +29 -0
- package/src/manager-api/routes/actors-get.ts +7 -0
- package/src/manager-api/routes/common.ts +18 -0
- package/src/mod.ts +0 -2
- package/src/registry/config.ts +1 -1
- package/src/registry/log.ts +2 -4
- package/src/registry/mod.ts +57 -24
- package/src/registry/run-config.ts +31 -33
- package/src/registry/serve.ts +4 -5
- package/src/remote-manager-driver/actor-http-client.ts +72 -0
- package/src/remote-manager-driver/actor-websocket-client.ts +63 -0
- package/src/remote-manager-driver/api-endpoints.ts +79 -0
- package/src/remote-manager-driver/api-utils.ts +43 -0
- package/src/remote-manager-driver/log.ts +5 -0
- package/src/remote-manager-driver/mod.ts +274 -0
- package/src/{drivers/engine → remote-manager-driver}/ws-proxy.ts +24 -14
- package/src/serde.ts +8 -2
- package/src/test/log.ts +1 -3
- package/src/test/mod.ts +17 -16
- package/dist/tsup/chunk-2CRLFV6Z.cjs +0 -202
- package/dist/tsup/chunk-2CRLFV6Z.cjs.map +0 -1
- package/dist/tsup/chunk-3H7O2A7I.js.map +0 -1
- package/dist/tsup/chunk-42I3OZ3Q.js +0 -15
- package/dist/tsup/chunk-42I3OZ3Q.js.map +0 -1
- package/dist/tsup/chunk-4NSUQZ2H.js.map +0 -1
- package/dist/tsup/chunk-6PDXBYI5.js.map +0 -1
- package/dist/tsup/chunk-6WKQDDUD.cjs.map +0 -1
- package/dist/tsup/chunk-CTBOSFUH.cjs +0 -116
- package/dist/tsup/chunk-CTBOSFUH.cjs.map +0 -1
- package/dist/tsup/chunk-EGVZZFE2.js +0 -2857
- package/dist/tsup/chunk-EGVZZFE2.js.map +0 -1
- package/dist/tsup/chunk-FCCPJNMA.cjs.map +0 -1
- package/dist/tsup/chunk-FLMTTN27.js.map +0 -1
- package/dist/tsup/chunk-GIR3AFFI.cjs.map +0 -1
- package/dist/tsup/chunk-INGJP237.js.map +0 -1
- package/dist/tsup/chunk-KJCJLKRM.js +0 -116
- package/dist/tsup/chunk-KJCJLKRM.js.map +0 -1
- package/dist/tsup/chunk-KUPQZYUQ.cjs +0 -15
- package/dist/tsup/chunk-KUPQZYUQ.cjs.map +0 -1
- package/dist/tsup/chunk-O2MBYIXO.cjs +0 -2857
- package/dist/tsup/chunk-O2MBYIXO.cjs.map +0 -1
- package/dist/tsup/chunk-OGAPU3UG.cjs.map +0 -1
- package/dist/tsup/chunk-OV6AYD4S.js +0 -4406
- package/dist/tsup/chunk-OV6AYD4S.js.map +0 -1
- package/dist/tsup/chunk-PO4VLDWA.js.map +0 -1
- package/dist/tsup/chunk-R2OPSKIV.cjs.map +0 -1
- package/dist/tsup/chunk-TZJKSBUQ.cjs.map +0 -1
- package/dist/tsup/chunk-UBUC5C3G.cjs +0 -189
- package/dist/tsup/chunk-UBUC5C3G.cjs.map +0 -1
- package/dist/tsup/chunk-UIM22YJL.cjs +0 -4406
- package/dist/tsup/chunk-UIM22YJL.cjs.map +0 -1
- package/dist/tsup/chunk-URVFQMYI.cjs +0 -230
- package/dist/tsup/chunk-URVFQMYI.cjs.map +0 -1
- package/dist/tsup/chunk-UVUPOS46.js +0 -230
- package/dist/tsup/chunk-UVUPOS46.js.map +0 -1
- package/dist/tsup/chunk-VRRHBNJC.js +0 -189
- package/dist/tsup/chunk-VRRHBNJC.js.map +0 -1
- package/dist/tsup/chunk-XFSS33EQ.js +0 -202
- package/dist/tsup/chunk-XFSS33EQ.js.map +0 -1
- package/src/client/http-client-driver.ts +0 -326
- package/src/driver-test-suite/test-inline-client-driver.ts +0 -402
- package/src/driver-test-suite/tests/actor-auth.ts +0 -591
- package/src/drivers/engine/api-endpoints.ts +0 -128
- package/src/drivers/engine/api-utils.ts +0 -70
- package/src/drivers/engine/manager-driver.ts +0 -391
- package/src/inline-client-driver/log.ts +0 -7
- package/src/inline-client-driver/mod.ts +0 -385
- package/src/manager/auth.ts +0 -121
- /package/src/{drivers/engine → actor}/keys.test.ts +0 -0
- /package/src/{drivers/engine → actor}/keys.ts +0 -0
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import * as cbor from "cbor-x";
|
|
2
|
+
import type { Hono, Context as HonoContext } from "hono";
|
|
3
|
+
import invariant from "invariant";
|
|
4
|
+
import { ActorAlreadyExists } from "@/actor/errors";
|
|
5
|
+
import { deserializeActorKey, serializeActorKey } from "@/actor/keys";
|
|
6
|
+
import type { ClientConfig } from "@/client/client";
|
|
7
|
+
import { noopNext } from "@/common/utils";
|
|
8
|
+
import type {
|
|
9
|
+
ActorOutput,
|
|
10
|
+
CreateInput,
|
|
11
|
+
GetForIdInput,
|
|
12
|
+
GetOrCreateWithKeyInput,
|
|
13
|
+
GetWithKeyInput,
|
|
14
|
+
ManagerDisplayInformation,
|
|
15
|
+
ManagerDriver,
|
|
16
|
+
} from "@/driver-helpers/mod";
|
|
17
|
+
import type { ManagerInspector } from "@/inspector/manager";
|
|
18
|
+
import type { Encoding, RegistryConfig, UniversalWebSocket } from "@/mod";
|
|
19
|
+
import type { RunConfig } from "@/registry/run-config";
|
|
20
|
+
import { sendHttpRequestToActor } from "./actor-http-client";
|
|
21
|
+
import {
|
|
22
|
+
buildGuardHeadersForWebSocket,
|
|
23
|
+
openWebSocketToActor,
|
|
24
|
+
} from "./actor-websocket-client";
|
|
25
|
+
import {
|
|
26
|
+
createActor,
|
|
27
|
+
destroyActor,
|
|
28
|
+
getActor,
|
|
29
|
+
getActorById,
|
|
30
|
+
getOrCreateActorById,
|
|
31
|
+
} from "./api-endpoints";
|
|
32
|
+
import { EngineApiError, getEndpoint } from "./api-utils";
|
|
33
|
+
import { logger } from "./log";
|
|
34
|
+
import { createWebSocketProxy } from "./ws-proxy";
|
|
35
|
+
|
|
36
|
+
// TODO:
|
|
37
|
+
// // Lazily import the dynamic imports so we don't have to turn `createClient` in to an async fn
|
|
38
|
+
// const dynamicImports = (async () => {
|
|
39
|
+
// // Import dynamic dependencies
|
|
40
|
+
// const [WebSocket, EventSource] = await Promise.all([
|
|
41
|
+
// importWebSocket(),
|
|
42
|
+
// importEventSource(),
|
|
43
|
+
// ]);
|
|
44
|
+
// return {
|
|
45
|
+
// WebSocket,
|
|
46
|
+
// EventSource,
|
|
47
|
+
// };
|
|
48
|
+
// })();
|
|
49
|
+
|
|
50
|
+
export class RemoteManagerDriver implements ManagerDriver {
|
|
51
|
+
#config: ClientConfig;
|
|
52
|
+
|
|
53
|
+
constructor(runConfig: ClientConfig) {
|
|
54
|
+
this.#config = runConfig;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
async getForId({
|
|
58
|
+
c,
|
|
59
|
+
name,
|
|
60
|
+
actorId,
|
|
61
|
+
}: GetForIdInput): Promise<ActorOutput | undefined> {
|
|
62
|
+
// Fetch from API if not in cache
|
|
63
|
+
try {
|
|
64
|
+
const response = await getActor(this.#config, actorId);
|
|
65
|
+
|
|
66
|
+
// Validate name matches
|
|
67
|
+
if (response.actor.name !== name) {
|
|
68
|
+
logger().debug({
|
|
69
|
+
msg: "actor name mismatch from api",
|
|
70
|
+
actorId,
|
|
71
|
+
apiName: response.actor.name,
|
|
72
|
+
requestedName: name,
|
|
73
|
+
});
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const keyRaw = response.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
|
+
};
|
|
86
|
+
} catch (error) {
|
|
87
|
+
if (
|
|
88
|
+
error instanceof EngineApiError &&
|
|
89
|
+
(error as EngineApiError).group === "actor" &&
|
|
90
|
+
(error as EngineApiError).code === "not_found"
|
|
91
|
+
) {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
throw error;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
async getWithKey({
|
|
99
|
+
c,
|
|
100
|
+
name,
|
|
101
|
+
key,
|
|
102
|
+
}: GetWithKeyInput): Promise<ActorOutput | undefined> {
|
|
103
|
+
logger().debug({ msg: "getWithKey: searching for actor", name, key });
|
|
104
|
+
|
|
105
|
+
// If not in local cache, fetch by key from API
|
|
106
|
+
try {
|
|
107
|
+
const response = await getActorById(this.#config, name, key);
|
|
108
|
+
|
|
109
|
+
if (!response.actor_id) {
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const actorId = response.actor_id;
|
|
114
|
+
|
|
115
|
+
logger().debug({
|
|
116
|
+
msg: "getWithKey: found actor via api",
|
|
117
|
+
actorId,
|
|
118
|
+
name,
|
|
119
|
+
key,
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
return {
|
|
123
|
+
actorId,
|
|
124
|
+
name,
|
|
125
|
+
key,
|
|
126
|
+
};
|
|
127
|
+
} catch (error) {
|
|
128
|
+
if (
|
|
129
|
+
error instanceof EngineApiError &&
|
|
130
|
+
(error as EngineApiError).group === "actor" &&
|
|
131
|
+
(error as EngineApiError).code === "not_found"
|
|
132
|
+
) {
|
|
133
|
+
return undefined;
|
|
134
|
+
}
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
async getOrCreateWithKey(
|
|
140
|
+
input: GetOrCreateWithKeyInput,
|
|
141
|
+
): Promise<ActorOutput> {
|
|
142
|
+
const { c, name, key, input: actorInput, region } = input;
|
|
143
|
+
|
|
144
|
+
logger().info({
|
|
145
|
+
msg: "getOrCreateWithKey: getting or creating actor via engine api",
|
|
146
|
+
name,
|
|
147
|
+
key,
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
const response = await getOrCreateActorById(this.#config, {
|
|
151
|
+
name,
|
|
152
|
+
key: serializeActorKey(key),
|
|
153
|
+
runner_name_selector: this.#config.runnerName,
|
|
154
|
+
input: input ? cbor.encode(actorInput).toString("base64") : undefined,
|
|
155
|
+
crash_policy: "sleep",
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
const actorId = response.actor_id;
|
|
159
|
+
|
|
160
|
+
logger().info({
|
|
161
|
+
msg: "getOrCreateWithKey: actor ready",
|
|
162
|
+
actorId,
|
|
163
|
+
name,
|
|
164
|
+
key,
|
|
165
|
+
created: response.created,
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
return {
|
|
169
|
+
actorId,
|
|
170
|
+
name,
|
|
171
|
+
key,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
async createActor({
|
|
176
|
+
c,
|
|
177
|
+
name,
|
|
178
|
+
key,
|
|
179
|
+
input,
|
|
180
|
+
}: CreateInput): Promise<ActorOutput> {
|
|
181
|
+
logger().info({ msg: "creating actor via engine api", name, key });
|
|
182
|
+
|
|
183
|
+
// Create actor via engine API
|
|
184
|
+
const result = await createActor(this.#config, {
|
|
185
|
+
name,
|
|
186
|
+
runner_name_selector: this.#config.runnerName,
|
|
187
|
+
key: serializeActorKey(key),
|
|
188
|
+
input: input ? cbor.encode(input).toString("base64") : null,
|
|
189
|
+
crash_policy: "sleep",
|
|
190
|
+
});
|
|
191
|
+
const actorId = result.actor.actor_id;
|
|
192
|
+
|
|
193
|
+
logger().info({ msg: "actor created", actorId, name, key });
|
|
194
|
+
|
|
195
|
+
return {
|
|
196
|
+
actorId,
|
|
197
|
+
name,
|
|
198
|
+
key,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
async destroyActor(actorId: string): Promise<void> {
|
|
203
|
+
logger().info({ msg: "destroying actor via engine api", actorId });
|
|
204
|
+
|
|
205
|
+
await destroyActor(this.#config, actorId);
|
|
206
|
+
|
|
207
|
+
logger().info({ msg: "actor destroyed", actorId });
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
async sendRequest(actorId: string, actorRequest: Request): Promise<Response> {
|
|
211
|
+
return await sendHttpRequestToActor(this.#config, actorId, actorRequest);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
async openWebSocket(
|
|
215
|
+
path: string,
|
|
216
|
+
actorId: string,
|
|
217
|
+
encoding: Encoding,
|
|
218
|
+
params: unknown,
|
|
219
|
+
): Promise<UniversalWebSocket> {
|
|
220
|
+
return await openWebSocketToActor(
|
|
221
|
+
this.#config,
|
|
222
|
+
path,
|
|
223
|
+
actorId,
|
|
224
|
+
encoding,
|
|
225
|
+
params,
|
|
226
|
+
);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
async proxyRequest(
|
|
230
|
+
_c: HonoContext,
|
|
231
|
+
actorRequest: Request,
|
|
232
|
+
actorId: string,
|
|
233
|
+
): Promise<Response> {
|
|
234
|
+
return await sendHttpRequestToActor(this.#config, actorId, actorRequest);
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
async proxyWebSocket(
|
|
238
|
+
c: HonoContext,
|
|
239
|
+
path: string,
|
|
240
|
+
actorId: string,
|
|
241
|
+
encoding: Encoding,
|
|
242
|
+
params: unknown,
|
|
243
|
+
authData: unknown,
|
|
244
|
+
): Promise<Response> {
|
|
245
|
+
const upgradeWebSocket = this.#config.getUpgradeWebSocket?.();
|
|
246
|
+
invariant(upgradeWebSocket, "missing getUpgradeWebSocket");
|
|
247
|
+
|
|
248
|
+
const endpoint = getEndpoint(this.#config);
|
|
249
|
+
const guardUrl = `${endpoint}${path}`;
|
|
250
|
+
const wsGuardUrl = guardUrl.replace("http://", "ws://");
|
|
251
|
+
|
|
252
|
+
logger().debug({
|
|
253
|
+
msg: "forwarding websocket to actor via guard",
|
|
254
|
+
actorId,
|
|
255
|
+
path,
|
|
256
|
+
guardUrl,
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
// Build headers
|
|
260
|
+
const headers = buildGuardHeadersForWebSocket(
|
|
261
|
+
actorId,
|
|
262
|
+
encoding,
|
|
263
|
+
params,
|
|
264
|
+
authData,
|
|
265
|
+
);
|
|
266
|
+
const args = await createWebSocketProxy(c, wsGuardUrl, headers);
|
|
267
|
+
|
|
268
|
+
return await upgradeWebSocket(() => args)(c, noopNext());
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
displayInformation(): ManagerDisplayInformation {
|
|
272
|
+
return { name: "Remote", properties: {} };
|
|
273
|
+
}
|
|
274
|
+
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { Context as HonoContext } from "hono";
|
|
2
2
|
import type { WSContext } from "hono/ws";
|
|
3
|
-
import
|
|
4
|
-
import type { CloseEvent } from "ws";
|
|
3
|
+
import { stringifyError } from "@/common/utils";
|
|
5
4
|
import { importWebSocket } from "@/common/websocket";
|
|
6
5
|
import type { UpgradeWebSocketArgs } from "@/mod";
|
|
7
6
|
import { logger } from "./log";
|
|
@@ -32,10 +31,11 @@ export async function createWebSocketProxy(
|
|
|
32
31
|
|
|
33
32
|
return {
|
|
34
33
|
onOpen: async (event: any, clientWs: WSContext) => {
|
|
35
|
-
logger().debug("client websocket connected",
|
|
34
|
+
logger().debug({ msg: "client websocket connected", targetUrl });
|
|
36
35
|
|
|
37
36
|
if (clientWs.readyState !== 1) {
|
|
38
|
-
logger().warn(
|
|
37
|
+
logger().warn({
|
|
38
|
+
msg: "client websocket not open on connection",
|
|
39
39
|
targetUrl,
|
|
40
40
|
readyState: clientWs.readyState,
|
|
41
41
|
});
|
|
@@ -49,10 +49,11 @@ export async function createWebSocketProxy(
|
|
|
49
49
|
// Setup connection promise
|
|
50
50
|
state.connectPromise = new Promise<void>((resolve, reject) => {
|
|
51
51
|
targetWs.addEventListener("open", () => {
|
|
52
|
-
logger().debug("target websocket connected",
|
|
52
|
+
logger().debug({ msg: "target websocket connected", targetUrl });
|
|
53
53
|
|
|
54
54
|
if (clientWs.readyState !== 1) {
|
|
55
|
-
logger().warn(
|
|
55
|
+
logger().warn({
|
|
56
|
+
msg: "client websocket closed before target connected",
|
|
56
57
|
targetUrl,
|
|
57
58
|
clientReadyState: clientWs.readyState,
|
|
58
59
|
});
|
|
@@ -64,7 +65,8 @@ export async function createWebSocketProxy(
|
|
|
64
65
|
});
|
|
65
66
|
|
|
66
67
|
targetWs.addEventListener("error", (error) => {
|
|
67
|
-
logger().warn(
|
|
68
|
+
logger().warn({
|
|
69
|
+
msg: "target websocket error during connection",
|
|
68
70
|
targetUrl,
|
|
69
71
|
});
|
|
70
72
|
reject(error);
|
|
@@ -86,7 +88,8 @@ export async function createWebSocketProxy(
|
|
|
86
88
|
});
|
|
87
89
|
|
|
88
90
|
state.targetWs.addEventListener("close", (event) => {
|
|
89
|
-
logger().debug(
|
|
91
|
+
logger().debug({
|
|
92
|
+
msg: "target websocket closed",
|
|
90
93
|
targetUrl,
|
|
91
94
|
code: event.code,
|
|
92
95
|
reason: event.reason,
|
|
@@ -95,14 +98,18 @@ export async function createWebSocketProxy(
|
|
|
95
98
|
});
|
|
96
99
|
|
|
97
100
|
state.targetWs.addEventListener("error", (error) => {
|
|
98
|
-
logger().error(
|
|
101
|
+
logger().error({
|
|
102
|
+
msg: "target websocket error",
|
|
103
|
+
targetUrl,
|
|
104
|
+
error: stringifyError(error),
|
|
105
|
+
});
|
|
99
106
|
closeWebSocketIfOpen(clientWs, 1011, "Target WebSocket error");
|
|
100
107
|
});
|
|
101
108
|
},
|
|
102
109
|
|
|
103
110
|
onMessage: async (event: any, clientWs: WSContext) => {
|
|
104
111
|
if (!state.targetWs || !state.connectPromise) {
|
|
105
|
-
logger().error("websocket state not initialized",
|
|
112
|
+
logger().error({ msg: "websocket state not initialized", targetUrl });
|
|
106
113
|
return;
|
|
107
114
|
}
|
|
108
115
|
|
|
@@ -111,13 +118,15 @@ export async function createWebSocketProxy(
|
|
|
111
118
|
if (state.targetWs.readyState === WebSocket.OPEN) {
|
|
112
119
|
state.targetWs.send(event.data);
|
|
113
120
|
} else {
|
|
114
|
-
logger().warn(
|
|
121
|
+
logger().warn({
|
|
122
|
+
msg: "target websocket not open",
|
|
115
123
|
targetUrl,
|
|
116
124
|
readyState: state.targetWs.readyState,
|
|
117
125
|
});
|
|
118
126
|
}
|
|
119
127
|
} catch (error) {
|
|
120
|
-
logger().error(
|
|
128
|
+
logger().error({
|
|
129
|
+
msg: "failed to connect to target websocket",
|
|
121
130
|
targetUrl,
|
|
122
131
|
error,
|
|
123
132
|
});
|
|
@@ -126,7 +135,8 @@ export async function createWebSocketProxy(
|
|
|
126
135
|
},
|
|
127
136
|
|
|
128
137
|
onClose: (event: any, clientWs: WSContext) => {
|
|
129
|
-
logger().debug(
|
|
138
|
+
logger().debug({
|
|
139
|
+
msg: "client websocket closed",
|
|
130
140
|
targetUrl,
|
|
131
141
|
code: event.code,
|
|
132
142
|
reason: event.reason,
|
|
@@ -144,7 +154,7 @@ export async function createWebSocketProxy(
|
|
|
144
154
|
},
|
|
145
155
|
|
|
146
156
|
onError: (event: any, clientWs: WSContext) => {
|
|
147
|
-
logger().error("client websocket error",
|
|
157
|
+
logger().error({ msg: "client websocket error", targetUrl, event });
|
|
148
158
|
|
|
149
159
|
if (state.targetWs) {
|
|
150
160
|
if (state.targetWs.readyState === WebSocket.OPEN) {
|
package/src/serde.ts
CHANGED
|
@@ -40,13 +40,16 @@ export function wsBinaryTypeForEncoding(
|
|
|
40
40
|
export function serializeWithEncoding<T>(
|
|
41
41
|
encoding: Encoding,
|
|
42
42
|
value: T,
|
|
43
|
-
versionedDataHandler: VersionedDataHandler<T
|
|
43
|
+
versionedDataHandler: VersionedDataHandler<T> | undefined,
|
|
44
44
|
): Uint8Array | string {
|
|
45
45
|
if (encoding === "json") {
|
|
46
46
|
return jsonStringifyCompat(value);
|
|
47
47
|
} else if (encoding === "cbor") {
|
|
48
48
|
return cbor.encode(value);
|
|
49
49
|
} else if (encoding === "bare") {
|
|
50
|
+
if (!versionedDataHandler) {
|
|
51
|
+
throw new Error("VersionedDataHandler is required for 'bare' encoding");
|
|
52
|
+
}
|
|
50
53
|
return versionedDataHandler.serializeWithEmbeddedVersion(value);
|
|
51
54
|
} else {
|
|
52
55
|
assertUnreachable(encoding);
|
|
@@ -56,7 +59,7 @@ export function serializeWithEncoding<T>(
|
|
|
56
59
|
export function deserializeWithEncoding<T>(
|
|
57
60
|
encoding: Encoding,
|
|
58
61
|
buffer: Uint8Array | string,
|
|
59
|
-
versionedDataHandler: VersionedDataHandler<T
|
|
62
|
+
versionedDataHandler: VersionedDataHandler<T> | undefined,
|
|
60
63
|
): T {
|
|
61
64
|
if (encoding === "json") {
|
|
62
65
|
if (typeof buffer === "string") {
|
|
@@ -77,6 +80,9 @@ export function deserializeWithEncoding<T>(
|
|
|
77
80
|
typeof buffer !== "string",
|
|
78
81
|
"buffer cannot be string for bare encoding",
|
|
79
82
|
);
|
|
83
|
+
if (!versionedDataHandler) {
|
|
84
|
+
throw new Error("VersionedDataHandler is required for 'bare' encoding");
|
|
85
|
+
}
|
|
80
86
|
return versionedDataHandler.deserializeWithEmbeddedVersion(buffer);
|
|
81
87
|
} else {
|
|
82
88
|
assertUnreachable(encoding);
|
package/src/test/log.ts
CHANGED
package/src/test/mod.ts
CHANGED
|
@@ -5,7 +5,6 @@ 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 { createInlineClientDriver } from "@/inline-client-driver/mod";
|
|
9
8
|
import { getInspectorUrl } from "@/inspector/utils";
|
|
10
9
|
import { createManagerRouter } from "@/manager/router";
|
|
11
10
|
import type { Registry } from "@/registry/mod";
|
|
@@ -28,11 +27,9 @@ function serve(registry: Registry<any>, inputConfig?: InputConfig): ServerType {
|
|
|
28
27
|
const runConfig = RunConfigSchema.parse(inputConfig);
|
|
29
28
|
const driver = inputConfig.driver ?? createFileSystemOrMemoryDriver(false);
|
|
30
29
|
const managerDriver = driver.manager(registry.config, config);
|
|
31
|
-
const inlineClientDriver = createInlineClientDriver(managerDriver);
|
|
32
30
|
const { router } = createManagerRouter(
|
|
33
31
|
registry.config,
|
|
34
32
|
runConfig,
|
|
35
|
-
inlineClientDriver,
|
|
36
33
|
managerDriver,
|
|
37
34
|
false,
|
|
38
35
|
);
|
|
@@ -48,7 +45,8 @@ function serve(registry: Registry<any>, inputConfig?: InputConfig): ServerType {
|
|
|
48
45
|
});
|
|
49
46
|
nodeWebSocket.injectWebSocket(server);
|
|
50
47
|
|
|
51
|
-
logger().info(
|
|
48
|
+
logger().info({
|
|
49
|
+
msg: "rivetkit started",
|
|
52
50
|
hostname: config.hostname,
|
|
53
51
|
port: config.port,
|
|
54
52
|
definitions: Object.keys(registry.config.use).length,
|
|
@@ -88,18 +86,21 @@ export async function setupTest<A extends Registry<any>>(
|
|
|
88
86
|
async () => await new Promise((resolve) => server.close(() => resolve())),
|
|
89
87
|
);
|
|
90
88
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
89
|
+
throw "TODO: Fix engine port";
|
|
90
|
+
|
|
91
|
+
// // TODO: Figure out how to make this the correct endpoint
|
|
92
|
+
// // Create client
|
|
93
|
+
// const client = createClient<A>(`http://127.0.0.1:${port}`);
|
|
94
|
+
// c.onTestFinished(async () => await client.dispose());
|
|
95
|
+
//
|
|
96
|
+
// return {
|
|
97
|
+
// client,
|
|
98
|
+
// mockDriver: {
|
|
99
|
+
// actorDriver: {
|
|
100
|
+
// setCreateVarsContext: setDriverContextFn,
|
|
101
|
+
// },
|
|
102
|
+
// },
|
|
103
|
+
// };
|
|
103
104
|
}
|
|
104
105
|
|
|
105
106
|
export async function getPort(): Promise<number> {
|
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
|
|
2
|
-
|
|
3
|
-
var _chunkOGAPU3UGcjs = require('./chunk-OGAPU3UG.cjs');
|
|
4
|
-
|
|
5
|
-
// src/common/log-levels.ts
|
|
6
|
-
var LogLevels = {
|
|
7
|
-
TRACE: 0,
|
|
8
|
-
DEBUG: 1,
|
|
9
|
-
INFO: 2,
|
|
10
|
-
WARN: 3,
|
|
11
|
-
ERROR: 4,
|
|
12
|
-
CRITICAL: 5
|
|
13
|
-
};
|
|
14
|
-
var LevelNameMap = {
|
|
15
|
-
0: "TRACE",
|
|
16
|
-
1: "DEBUG",
|
|
17
|
-
2: "INFO",
|
|
18
|
-
3: "WARN",
|
|
19
|
-
4: "ERROR",
|
|
20
|
-
5: "CRITICAL"
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
// src/common/logfmt.ts
|
|
24
|
-
var LOG_LEVEL_COLORS = {
|
|
25
|
-
[LogLevels.CRITICAL]: "\x1B[31m",
|
|
26
|
-
// Red
|
|
27
|
-
[LogLevels.ERROR]: "\x1B[31m",
|
|
28
|
-
// Red
|
|
29
|
-
[LogLevels.WARN]: "\x1B[33m",
|
|
30
|
-
// Yellow
|
|
31
|
-
[LogLevels.INFO]: "\x1B[32m",
|
|
32
|
-
// Green
|
|
33
|
-
[LogLevels.DEBUG]: "\x1B[36m",
|
|
34
|
-
// Cyan
|
|
35
|
-
[LogLevels.TRACE]: "\x1B[36m"
|
|
36
|
-
// Cyan
|
|
37
|
-
};
|
|
38
|
-
var RESET_COLOR = "\x1B[0m";
|
|
39
|
-
function stringify(...data) {
|
|
40
|
-
let line = "";
|
|
41
|
-
for (let i = 0; i < data.length; i++) {
|
|
42
|
-
const [key, valueRaw] = data[i];
|
|
43
|
-
let isNull = false;
|
|
44
|
-
let valueString;
|
|
45
|
-
if (valueRaw == null) {
|
|
46
|
-
isNull = true;
|
|
47
|
-
valueString = "";
|
|
48
|
-
} else {
|
|
49
|
-
valueString = valueRaw.toString();
|
|
50
|
-
}
|
|
51
|
-
if (valueString.length > 512 && key !== "msg" && key !== "error")
|
|
52
|
-
valueString = `${valueString.slice(0, 512)}...`;
|
|
53
|
-
const needsQuoting = valueString.indexOf(" ") > -1 || valueString.indexOf("=") > -1;
|
|
54
|
-
const needsEscaping = valueString.indexOf('"') > -1 || valueString.indexOf("\\") > -1;
|
|
55
|
-
valueString = valueString.replace(/\n/g, "\\n");
|
|
56
|
-
if (needsEscaping) valueString = valueString.replace(/["\\]/g, "\\$&");
|
|
57
|
-
if (needsQuoting || needsEscaping) valueString = `"${valueString}"`;
|
|
58
|
-
if (valueString === "" && !isNull) valueString = '""';
|
|
59
|
-
if (LOGGER_CONFIG.enableColor) {
|
|
60
|
-
let color = "\x1B[2m";
|
|
61
|
-
if (key === "level") {
|
|
62
|
-
const level = LogLevels[valueString];
|
|
63
|
-
const levelColor = LOG_LEVEL_COLORS[level];
|
|
64
|
-
if (levelColor) {
|
|
65
|
-
color = levelColor;
|
|
66
|
-
}
|
|
67
|
-
} else if (key === "msg") {
|
|
68
|
-
color = "\x1B[32m";
|
|
69
|
-
} else if (key === "trace") {
|
|
70
|
-
color = "\x1B[34m";
|
|
71
|
-
}
|
|
72
|
-
line += `\x1B[0m\x1B[1m${key}\x1B[0m\x1B[2m=\x1B[0m${color}${valueString}${RESET_COLOR}`;
|
|
73
|
-
} else {
|
|
74
|
-
line += `${key}=${valueString}`;
|
|
75
|
-
}
|
|
76
|
-
if (i !== data.length - 1) {
|
|
77
|
-
line += " ";
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
return line;
|
|
81
|
-
}
|
|
82
|
-
function formatTimestamp(date) {
|
|
83
|
-
const year = date.getUTCFullYear();
|
|
84
|
-
const month = String(date.getUTCMonth() + 1).padStart(2, "0");
|
|
85
|
-
const day = String(date.getUTCDate()).padStart(2, "0");
|
|
86
|
-
const hours = String(date.getUTCHours()).padStart(2, "0");
|
|
87
|
-
const minutes = String(date.getUTCMinutes()).padStart(2, "0");
|
|
88
|
-
const seconds = String(date.getUTCSeconds()).padStart(2, "0");
|
|
89
|
-
const milliseconds = String(date.getUTCMilliseconds()).padStart(3, "0");
|
|
90
|
-
return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${milliseconds}Z`;
|
|
91
|
-
}
|
|
92
|
-
function castToLogValue(v) {
|
|
93
|
-
if (typeof v === "string" || typeof v === "number" || typeof v === "bigint" || typeof v === "boolean" || v === null || v === void 0) {
|
|
94
|
-
return v;
|
|
95
|
-
}
|
|
96
|
-
if (v instanceof Error) {
|
|
97
|
-
return String(v);
|
|
98
|
-
}
|
|
99
|
-
try {
|
|
100
|
-
return JSON.stringify(v);
|
|
101
|
-
} catch (e) {
|
|
102
|
-
return "[cannot stringify]";
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
var LOGGER_CONFIG = {
|
|
106
|
-
enableColor: false,
|
|
107
|
-
enableSpreadObject: false,
|
|
108
|
-
enableErrorStack: false
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
// src/common/log.ts
|
|
112
|
-
var Logger = class {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
constructor(name, level) {
|
|
116
|
-
this.name = name;
|
|
117
|
-
this.level = level;
|
|
118
|
-
}
|
|
119
|
-
log(level, message, ...args) {
|
|
120
|
-
const record = {
|
|
121
|
-
msg: message,
|
|
122
|
-
args,
|
|
123
|
-
level,
|
|
124
|
-
loggerName: this.name,
|
|
125
|
-
datetime: /* @__PURE__ */ new Date(),
|
|
126
|
-
levelName: LevelNameMap[level]
|
|
127
|
-
};
|
|
128
|
-
if (this.#shouldLog(level)) {
|
|
129
|
-
this.#logRecord(record);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
#shouldLog(level) {
|
|
133
|
-
return level >= LogLevels[this.level];
|
|
134
|
-
}
|
|
135
|
-
#logRecord(record) {
|
|
136
|
-
console.log(formatter(record));
|
|
137
|
-
}
|
|
138
|
-
trace(message, ...args) {
|
|
139
|
-
this.log(LogLevels.TRACE, message, ...args);
|
|
140
|
-
}
|
|
141
|
-
debug(message, ...args) {
|
|
142
|
-
this.log(LogLevels.DEBUG, message, ...args);
|
|
143
|
-
}
|
|
144
|
-
info(message, ...args) {
|
|
145
|
-
this.log(LogLevels.INFO, message, ...args);
|
|
146
|
-
}
|
|
147
|
-
warn(message, ...args) {
|
|
148
|
-
this.log(LogLevels.WARN, message, ...args);
|
|
149
|
-
}
|
|
150
|
-
error(message, ...args) {
|
|
151
|
-
this.log(LogLevels.ERROR, message, ...args);
|
|
152
|
-
}
|
|
153
|
-
critical(message, ...args) {
|
|
154
|
-
this.log(LogLevels.CRITICAL, message, ...args);
|
|
155
|
-
}
|
|
156
|
-
};
|
|
157
|
-
var loggers = {};
|
|
158
|
-
function getLogger(name = "default") {
|
|
159
|
-
const defaultLogLevelEnv = _chunkOGAPU3UGcjs.getEnvUniversal.call(void 0,
|
|
160
|
-
"_LOG_LEVEL"
|
|
161
|
-
);
|
|
162
|
-
const defaultLogLevel = _nullishCoalesce(defaultLogLevelEnv, () => ( "INFO"));
|
|
163
|
-
if (!loggers[name]) {
|
|
164
|
-
loggers[name] = new Logger(name, defaultLogLevel);
|
|
165
|
-
}
|
|
166
|
-
return loggers[name];
|
|
167
|
-
}
|
|
168
|
-
function formatter(log) {
|
|
169
|
-
const args = [];
|
|
170
|
-
for (let i = 0; i < log.args.length; i++) {
|
|
171
|
-
const logArg = log.args[i];
|
|
172
|
-
if (logArg && typeof logArg === "object") {
|
|
173
|
-
for (const k in logArg) {
|
|
174
|
-
const v = logArg[k];
|
|
175
|
-
pushArg(k, v, args);
|
|
176
|
-
}
|
|
177
|
-
} else {
|
|
178
|
-
pushArg(`arg${i}`, logArg, args);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
const logTs = _chunkOGAPU3UGcjs.getEnvUniversal.call(void 0, "_LOG_TIMESTAMP") === "1";
|
|
182
|
-
const logTarget = _chunkOGAPU3UGcjs.getEnvUniversal.call(void 0, "_LOG_TARGET") === "1";
|
|
183
|
-
return stringify(
|
|
184
|
-
...logTs ? [["ts", formatTimestamp(/* @__PURE__ */ new Date())]] : [],
|
|
185
|
-
["level", LevelNameMap[log.level]],
|
|
186
|
-
...logTarget ? [["target", log.loggerName]] : [],
|
|
187
|
-
["msg", log.msg],
|
|
188
|
-
...args
|
|
189
|
-
);
|
|
190
|
-
}
|
|
191
|
-
function pushArg(k, v, args) {
|
|
192
|
-
args.push([k, castToLogValue(v)]);
|
|
193
|
-
}
|
|
194
|
-
function setupLogging() {
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
exports.Logger = Logger; exports.getLogger = getLogger; exports.setupLogging = setupLogging;
|
|
202
|
-
//# sourceMappingURL=chunk-2CRLFV6Z.cjs.map
|