durable-actors 0.7.4 → 0.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/actor/actor.d.ts +3 -0
- package/dist/actor/actor.d.ts.map +1 -1
- package/dist/actor/actor.js +8 -1
- package/dist/actor/actor.js.map +1 -1
- package/dist/actor/database.d.ts +11 -0
- package/dist/actor/database.d.ts.map +1 -0
- package/dist/actor/database.js +31 -0
- package/dist/actor/database.js.map +1 -0
- package/dist/compiler/features/persistence.d.ts.map +1 -1
- package/dist/compiler/features/persistence.js +2 -0
- package/dist/compiler/features/persistence.js.map +1 -1
- package/dist/compiler/rpc-contract.js +1 -1
- package/dist/compiler/rpc-contract.js.map +1 -1
- package/dist/compiler/validate-public-contract.js +1 -1
- package/dist/compiler/validate-public-contract.js.map +1 -1
- package/dist/host/actor-host.js +1 -1
- package/dist/host/actor-runtime.d.ts +8 -1
- package/dist/host/actor-runtime.d.ts.map +1 -1
- package/dist/host/actor-runtime.js +73 -28
- package/dist/host/actor-runtime.js.map +1 -1
- package/dist/host/actor-worker.js +2 -1
- package/dist/host/actor-worker.js.map +1 -1
- package/dist/host/generic-host.js +1 -1
- package/dist/host/litestream.d.ts +8 -0
- package/dist/host/litestream.d.ts.map +1 -0
- package/dist/host/litestream.js +40 -0
- package/dist/host/litestream.js.map +1 -0
- package/dist/host/protocol.d.ts +51 -14
- package/dist/host/protocol.d.ts.map +1 -1
- package/dist/host/protocol.js +9 -4
- package/dist/host/protocol.js.map +1 -1
- package/dist/host/sqlite.d.ts +50 -0
- package/dist/host/sqlite.d.ts.map +1 -0
- package/dist/host/sqlite.js +160 -0
- package/dist/host/sqlite.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtimeInstaller.d.ts.map +1 -1
- package/dist/runtimeInstaller.js +5 -4
- package/dist/runtimeInstaller.js.map +1 -1
- package/dist/templates/actor/package.json +1 -1
- package/dist/templates/ai-chat/package.json +1 -1
- package/dist/templates/chat/package.json +1 -1
- package/dist/templates/documents/package.json +1 -1
- package/dist/templates/python/package.json +1 -1
- package/dist/templates/python/pyproject.toml +1 -1
- package/package.json +2 -2
|
@@ -9,9 +9,11 @@ const port = parentPort;
|
|
|
9
9
|
if (port === null)
|
|
10
10
|
throw new Error("actor Worker requires a parent message port");
|
|
11
11
|
let exiting = false;
|
|
12
|
+
let runtime;
|
|
12
13
|
// Bun 1.3 can drain microtasks after process.exit().
|
|
13
14
|
process.once("exit", () => {
|
|
14
15
|
exiting = true;
|
|
16
|
+
runtime?.close();
|
|
15
17
|
});
|
|
16
18
|
let assigned = false;
|
|
17
19
|
const invocation = new AsyncLocalStorage();
|
|
@@ -34,7 +36,6 @@ async function initialize(data) {
|
|
|
34
36
|
assigned = true;
|
|
35
37
|
Object.assign(process.env, data.environment);
|
|
36
38
|
const actorNames = await loadActorEntrypoint(data.moduleUrl);
|
|
37
|
-
let runtime;
|
|
38
39
|
port.on("message", (message) => {
|
|
39
40
|
if (message.type === "load")
|
|
40
41
|
throw new Error("customer code already assigned");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actor-worker.js","sourceRoot":"","sources":["../../src/host/actor-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAE5D,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAElF,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAG3D,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE1F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAG3C,MAAM,IAAI,GAAG,UAAU,CAAA;AACvB,IAAI,IAAI,KAAK,IAAI;IAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;AAEjF,IAAI,OAAO,GAAG,KAAK,CAAA;AACnB,qDAAqD;AACrD,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;IACtB,OAAO,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"actor-worker.js","sourceRoot":"","sources":["../../src/host/actor-worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ async function runGenericHost() {
|
|
|
10
10
|
const settings = parseHostSettings(process.env);
|
|
11
11
|
const socket = await connectSocket(settings.socketPath);
|
|
12
12
|
const assignment = readAssignment(socket);
|
|
13
|
-
socket.write(`${JSON.stringify({ type: "warm", protocol:
|
|
13
|
+
socket.write(`${JSON.stringify({ type: "warm", protocol: 21 })}\n`);
|
|
14
14
|
const { entrypoint, environment } = await assignment;
|
|
15
15
|
await access(entrypoint);
|
|
16
16
|
let available = true;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface LitestreamDatabase {
|
|
2
|
+
readonly path: string;
|
|
3
|
+
readonly socket: string;
|
|
4
|
+
}
|
|
5
|
+
declare function syncLitestream(database: LitestreamDatabase): Promise<number>;
|
|
6
|
+
export { syncLitestream };
|
|
7
|
+
export type { LitestreamDatabase };
|
|
8
|
+
//# sourceMappingURL=litestream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"litestream.d.ts","sourceRoot":"","sources":["../../src/host/litestream.ts"],"names":[],"mappings":"AAEA,UAAU,kBAAkB;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAC1B;AAED,iBAAe,cAAc,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ3E;AA+BD,OAAO,EAAE,cAAc,EAAE,CAAA;AACzB,YAAY,EAAE,kBAAkB,EAAE,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { request } from "node:http";
|
|
2
|
+
async function syncLitestream(database) {
|
|
3
|
+
const reply = JSON.parse(await sync(database));
|
|
4
|
+
if (reply.path !== database.path)
|
|
5
|
+
throw new Error("Litestream synced another database");
|
|
6
|
+
if (!Number.isSafeInteger(reply.txid) || Number(reply.txid) < 1)
|
|
7
|
+
throw new Error("Litestream returned an invalid position");
|
|
8
|
+
if (!Number.isSafeInteger(reply.replicated_txid) || Number(reply.replicated_txid) < Number(reply.txid))
|
|
9
|
+
throw new Error("Litestream has not replicated the commit");
|
|
10
|
+
return Number(reply.txid);
|
|
11
|
+
}
|
|
12
|
+
function sync(database) {
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
const body = JSON.stringify({ path: database.path, wait: true, timeout: 30 });
|
|
15
|
+
const operation = request({
|
|
16
|
+
socketPath: database.socket,
|
|
17
|
+
path: "/sync",
|
|
18
|
+
method: "POST",
|
|
19
|
+
signal: AbortSignal.timeout(35_000),
|
|
20
|
+
headers: { "content-type": "application/json", "content-length": Buffer.byteLength(body) }
|
|
21
|
+
}, response => {
|
|
22
|
+
let document = "";
|
|
23
|
+
response.setEncoding("utf8");
|
|
24
|
+
response.on("data", chunk => {
|
|
25
|
+
document += String(chunk);
|
|
26
|
+
});
|
|
27
|
+
response.on("error", reject);
|
|
28
|
+
response.on("end", () => {
|
|
29
|
+
if (response.statusCode !== 200)
|
|
30
|
+
reject(new Error(`Litestream sync failed: ${response.statusCode}`));
|
|
31
|
+
else
|
|
32
|
+
resolve(document);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
operation.on("error", reject);
|
|
36
|
+
operation.end(body);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
export { syncLitestream };
|
|
40
|
+
//# sourceMappingURL=litestream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"litestream.js","sourceRoot":"","sources":["../../src/host/litestream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOnC,KAAK,UAAU,cAAc,CAAC,QAA4B;IACtD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAA4B,CAAA;IACzE,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvF,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAC9D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QAClG,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAC/D,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC;AAED,SAAS,IAAI,CAAC,QAA4B;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;QAC7E,MAAM,SAAS,GAAG,OAAO,CACrB;YACI,UAAU,EAAE,QAAQ,CAAC,MAAM;YAC3B,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;YACnC,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;SAC7F,EACD,QAAQ,CAAC,EAAE;YACP,IAAI,QAAQ,GAAG,EAAE,CAAA;YACjB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YAC5B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;gBACxB,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,CAAA;YAC7B,CAAC,CAAC,CAAA;YACF,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YAC5B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACpB,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG;oBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;;oBAC/F,OAAO,CAAC,QAAQ,CAAC,CAAA;YAC1B,CAAC,CAAC,CAAA;QACN,CAAC,CACJ,CAAA;QACD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC7B,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;AACN,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
|
package/dist/host/protocol.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import type { ActorIdentity } from "../actor/identity.js";
|
|
3
3
|
import type { SocketConnection, SocketEffect } from "../actor/socketProtocol.js";
|
|
4
|
-
import type {
|
|
4
|
+
import type { JsonValue } from "../json.js";
|
|
5
|
+
import type { SqliteState } from "./sqlite.js";
|
|
5
6
|
declare function parseActorSessionServerMessage(document: string): ActorSessionServerMessage;
|
|
6
7
|
declare function failedReply(code: string, message: string): FailedReply;
|
|
7
8
|
declare const invokeCommandSchema: z.ZodObject<{
|
|
@@ -14,7 +15,11 @@ declare const invokeCommandSchema: z.ZodObject<{
|
|
|
14
15
|
}, z.core.$strict>;
|
|
15
16
|
method: z.ZodString;
|
|
16
17
|
args: z.ZodArray<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
|
|
17
|
-
|
|
18
|
+
sqlite: z.ZodOptional<z.ZodObject<{
|
|
19
|
+
txid: z.ZodNumber;
|
|
20
|
+
path: z.ZodOptional<z.ZodString>;
|
|
21
|
+
socket: z.ZodOptional<z.ZodString>;
|
|
22
|
+
}, z.core.$strip>>;
|
|
18
23
|
resident_only: z.ZodOptional<z.ZodBoolean>;
|
|
19
24
|
}, z.core.$strip>;
|
|
20
25
|
declare const websocketEventCommandSchema: z.ZodObject<{
|
|
@@ -58,7 +63,11 @@ declare const websocketEventCommandSchema: z.ZodObject<{
|
|
|
58
63
|
metadata: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
59
64
|
tags: z.ZodArray<z.ZodString>;
|
|
60
65
|
}, z.core.$strip>>;
|
|
61
|
-
|
|
66
|
+
sqlite: z.ZodOptional<z.ZodObject<{
|
|
67
|
+
txid: z.ZodNumber;
|
|
68
|
+
path: z.ZodOptional<z.ZodString>;
|
|
69
|
+
socket: z.ZodOptional<z.ZodString>;
|
|
70
|
+
}, z.core.$strip>>;
|
|
62
71
|
resident_only: z.ZodOptional<z.ZodBoolean>;
|
|
63
72
|
}, z.core.$strip>;
|
|
64
73
|
declare const evictCommandSchema: z.ZodObject<{
|
|
@@ -76,7 +85,11 @@ declare const hydrateCommandSchema: z.ZodObject<{
|
|
|
76
85
|
actor_name: z.ZodString;
|
|
77
86
|
actor_id: z.ZodString;
|
|
78
87
|
}, z.core.$strict>;
|
|
79
|
-
|
|
88
|
+
sqlite: z.ZodOptional<z.ZodObject<{
|
|
89
|
+
txid: z.ZodNumber;
|
|
90
|
+
path: z.ZodOptional<z.ZodString>;
|
|
91
|
+
socket: z.ZodOptional<z.ZodString>;
|
|
92
|
+
}, z.core.$strip>>;
|
|
80
93
|
resident_only: z.ZodOptional<z.ZodBoolean>;
|
|
81
94
|
}, z.core.$strip>;
|
|
82
95
|
declare const executorCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
@@ -89,7 +102,11 @@ declare const executorCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
89
102
|
}, z.core.$strict>;
|
|
90
103
|
method: z.ZodString;
|
|
91
104
|
args: z.ZodArray<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
|
|
92
|
-
|
|
105
|
+
sqlite: z.ZodOptional<z.ZodObject<{
|
|
106
|
+
txid: z.ZodNumber;
|
|
107
|
+
path: z.ZodOptional<z.ZodString>;
|
|
108
|
+
socket: z.ZodOptional<z.ZodString>;
|
|
109
|
+
}, z.core.$strip>>;
|
|
93
110
|
resident_only: z.ZodOptional<z.ZodBoolean>;
|
|
94
111
|
}, z.core.$strip>, z.ZodObject<{
|
|
95
112
|
type: z.ZodLiteral<"websocket_event">;
|
|
@@ -132,7 +149,11 @@ declare const executorCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
132
149
|
metadata: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
133
150
|
tags: z.ZodArray<z.ZodString>;
|
|
134
151
|
}, z.core.$strip>>;
|
|
135
|
-
|
|
152
|
+
sqlite: z.ZodOptional<z.ZodObject<{
|
|
153
|
+
txid: z.ZodNumber;
|
|
154
|
+
path: z.ZodOptional<z.ZodString>;
|
|
155
|
+
socket: z.ZodOptional<z.ZodString>;
|
|
156
|
+
}, z.core.$strip>>;
|
|
136
157
|
resident_only: z.ZodOptional<z.ZodBoolean>;
|
|
137
158
|
}, z.core.$strip>, z.ZodObject<{
|
|
138
159
|
type: z.ZodLiteral<"evict">;
|
|
@@ -148,12 +169,16 @@ declare const executorCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
148
169
|
actor_name: z.ZodString;
|
|
149
170
|
actor_id: z.ZodString;
|
|
150
171
|
}, z.core.$strict>;
|
|
151
|
-
|
|
172
|
+
sqlite: z.ZodOptional<z.ZodObject<{
|
|
173
|
+
txid: z.ZodNumber;
|
|
174
|
+
path: z.ZodOptional<z.ZodString>;
|
|
175
|
+
socket: z.ZodOptional<z.ZodString>;
|
|
176
|
+
}, z.core.$strip>>;
|
|
152
177
|
resident_only: z.ZodOptional<z.ZodBoolean>;
|
|
153
178
|
}, z.core.$strip>], "type">;
|
|
154
179
|
declare const actorSessionServerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
155
180
|
type: z.ZodLiteral<"attached">;
|
|
156
|
-
protocol: z.ZodLiteral<
|
|
181
|
+
protocol: z.ZodLiteral<21>;
|
|
157
182
|
supports_residency: z.ZodOptional<z.ZodBoolean>;
|
|
158
183
|
}, z.core.$strip>, z.ZodObject<{
|
|
159
184
|
type: z.ZodLiteral<"socket_connections">;
|
|
@@ -181,7 +206,11 @@ declare const actorSessionServerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObj
|
|
|
181
206
|
}, z.core.$strict>;
|
|
182
207
|
method: z.ZodString;
|
|
183
208
|
args: z.ZodArray<z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
|
|
184
|
-
|
|
209
|
+
sqlite: z.ZodOptional<z.ZodObject<{
|
|
210
|
+
txid: z.ZodNumber;
|
|
211
|
+
path: z.ZodOptional<z.ZodString>;
|
|
212
|
+
socket: z.ZodOptional<z.ZodString>;
|
|
213
|
+
}, z.core.$strip>>;
|
|
185
214
|
resident_only: z.ZodOptional<z.ZodBoolean>;
|
|
186
215
|
}, z.core.$strip>, z.ZodObject<{
|
|
187
216
|
type: z.ZodLiteral<"websocket_event">;
|
|
@@ -224,7 +253,11 @@ declare const actorSessionServerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObj
|
|
|
224
253
|
metadata: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
|
|
225
254
|
tags: z.ZodArray<z.ZodString>;
|
|
226
255
|
}, z.core.$strip>>;
|
|
227
|
-
|
|
256
|
+
sqlite: z.ZodOptional<z.ZodObject<{
|
|
257
|
+
txid: z.ZodNumber;
|
|
258
|
+
path: z.ZodOptional<z.ZodString>;
|
|
259
|
+
socket: z.ZodOptional<z.ZodString>;
|
|
260
|
+
}, z.core.$strip>>;
|
|
228
261
|
resident_only: z.ZodOptional<z.ZodBoolean>;
|
|
229
262
|
}, z.core.$strip>, z.ZodObject<{
|
|
230
263
|
type: z.ZodLiteral<"evict">;
|
|
@@ -240,7 +273,11 @@ declare const actorSessionServerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObj
|
|
|
240
273
|
actor_name: z.ZodString;
|
|
241
274
|
actor_id: z.ZodString;
|
|
242
275
|
}, z.core.$strict>;
|
|
243
|
-
|
|
276
|
+
sqlite: z.ZodOptional<z.ZodObject<{
|
|
277
|
+
txid: z.ZodNumber;
|
|
278
|
+
path: z.ZodOptional<z.ZodString>;
|
|
279
|
+
socket: z.ZodOptional<z.ZodString>;
|
|
280
|
+
}, z.core.$strip>>;
|
|
244
281
|
resident_only: z.ZodOptional<z.ZodBoolean>;
|
|
245
282
|
}, z.core.$strip>], "type">;
|
|
246
283
|
}, z.core.$strip>], "type">;
|
|
@@ -270,7 +307,7 @@ type ActorSessionClientMessage = {
|
|
|
270
307
|
};
|
|
271
308
|
interface AttachMessage {
|
|
272
309
|
readonly type: "attach";
|
|
273
|
-
readonly protocol:
|
|
310
|
+
readonly protocol: 21;
|
|
274
311
|
readonly actor_names: readonly string[];
|
|
275
312
|
}
|
|
276
313
|
interface ReplyMessage {
|
|
@@ -282,13 +319,13 @@ interface InvokedReply {
|
|
|
282
319
|
readonly type: "invoked";
|
|
283
320
|
readonly sequence?: number;
|
|
284
321
|
readonly result: JsonValue;
|
|
285
|
-
readonly
|
|
322
|
+
readonly sqlite: SqliteState;
|
|
286
323
|
readonly effects?: readonly SocketEffect[];
|
|
287
324
|
}
|
|
288
325
|
interface WebSocketHandledReply {
|
|
289
326
|
readonly type: "websocket_handled";
|
|
290
327
|
readonly sequence?: number;
|
|
291
|
-
readonly
|
|
328
|
+
readonly sqlite: SqliteState;
|
|
292
329
|
readonly effects: readonly SocketEffect[];
|
|
293
330
|
}
|
|
294
331
|
interface FailedReply {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/host/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAGzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAGhF,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/host/protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/host/protocol.js
CHANGED
|
@@ -19,13 +19,18 @@ function parseActorSessionServerMessage(document) {
|
|
|
19
19
|
function failedReply(code, message) {
|
|
20
20
|
return { type: "failed", code, message };
|
|
21
21
|
}
|
|
22
|
+
const sqliteStateSchema = z.object({
|
|
23
|
+
txid: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),
|
|
24
|
+
path: z.string().optional(),
|
|
25
|
+
socket: z.string().optional()
|
|
26
|
+
});
|
|
22
27
|
const invokeCommandSchema = z.object({
|
|
23
28
|
type: z.literal("invoke"),
|
|
24
29
|
request_id: actorComponentSchema,
|
|
25
30
|
actor: actorIdentitySchema,
|
|
26
31
|
method: actorComponentSchema,
|
|
27
32
|
args: z.array(jsonValueSchema),
|
|
28
|
-
|
|
33
|
+
sqlite: sqliteStateSchema.optional(),
|
|
29
34
|
resident_only: z.boolean().optional()
|
|
30
35
|
});
|
|
31
36
|
const websocketEventCommandSchema = z.object({
|
|
@@ -34,7 +39,7 @@ const websocketEventCommandSchema = z.object({
|
|
|
34
39
|
actor: actorIdentitySchema,
|
|
35
40
|
event: socketEventSchema,
|
|
36
41
|
connections: z.array(socketConnectionSchema),
|
|
37
|
-
|
|
42
|
+
sqlite: sqliteStateSchema.optional(),
|
|
38
43
|
resident_only: z.boolean().optional()
|
|
39
44
|
});
|
|
40
45
|
const evictCommandSchema = z.object({
|
|
@@ -44,7 +49,7 @@ const evictCommandSchema = z.object({
|
|
|
44
49
|
const hydrateCommandSchema = z.object({
|
|
45
50
|
type: z.literal("hydrate"),
|
|
46
51
|
actor: actorIdentitySchema,
|
|
47
|
-
|
|
52
|
+
sqlite: sqliteStateSchema.optional(),
|
|
48
53
|
resident_only: z.boolean().optional()
|
|
49
54
|
});
|
|
50
55
|
const executorCommandSchema = z.discriminatedUnion("type", [
|
|
@@ -54,7 +59,7 @@ const executorCommandSchema = z.discriminatedUnion("type", [
|
|
|
54
59
|
hydrateCommandSchema
|
|
55
60
|
]);
|
|
56
61
|
const actorSessionServerMessageSchema = z.discriminatedUnion("type", [
|
|
57
|
-
z.object({ type: z.literal("attached"), protocol: z.literal(
|
|
62
|
+
z.object({ type: z.literal("attached"), protocol: z.literal(21), supports_residency: z.boolean().optional() }),
|
|
58
63
|
z.object({
|
|
59
64
|
type: z.literal("socket_connections"),
|
|
60
65
|
message_id: z.number().int().nonnegative(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/host/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAEtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/host/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { ActorDatabase, SqliteValue } from "../actor/database.js";
|
|
2
|
+
import type { JsonObject } from "../json.js";
|
|
3
|
+
import type { LitestreamDatabase } from "./litestream.js";
|
|
4
|
+
interface SqliteState {
|
|
5
|
+
readonly txid: number;
|
|
6
|
+
readonly path?: string;
|
|
7
|
+
readonly socket?: string;
|
|
8
|
+
}
|
|
9
|
+
declare class SqliteCaptureError extends Error {
|
|
10
|
+
}
|
|
11
|
+
interface ActorDatabaseStorage extends ActorDatabase {
|
|
12
|
+
fields(): JsonObject;
|
|
13
|
+
persistFields(fields: JsonObject): void;
|
|
14
|
+
restore(state: SqliteState | undefined): void;
|
|
15
|
+
snapshot(): Promise<SqliteState>;
|
|
16
|
+
rollback(): void;
|
|
17
|
+
close(): void;
|
|
18
|
+
}
|
|
19
|
+
declare class SqliteActorDatabase implements ActorDatabaseStorage {
|
|
20
|
+
private readonly connect;
|
|
21
|
+
private readonly sync;
|
|
22
|
+
private connection;
|
|
23
|
+
private seed;
|
|
24
|
+
private txid;
|
|
25
|
+
private version;
|
|
26
|
+
private failure;
|
|
27
|
+
constructor(connect?: (path: string) => SqliteConnection, sync?: (database: LitestreamDatabase) => Promise<number>);
|
|
28
|
+
exec<Row extends object>(sql: string, ...bindings: SqliteValue[]): Row[];
|
|
29
|
+
fields(): JsonObject;
|
|
30
|
+
persistFields(fields: JsonObject): void;
|
|
31
|
+
restore(state: SqliteState | undefined): void;
|
|
32
|
+
snapshot(): Promise<SqliteState>;
|
|
33
|
+
rollback(): void;
|
|
34
|
+
close(): void;
|
|
35
|
+
private changeToken;
|
|
36
|
+
private fieldDatabase;
|
|
37
|
+
private open;
|
|
38
|
+
}
|
|
39
|
+
interface SqliteConnection {
|
|
40
|
+
readonly isTransaction: boolean;
|
|
41
|
+
exec(sql: string): void;
|
|
42
|
+
prepare(sql: string): {
|
|
43
|
+
all(...bindings: SqliteValue[]): object[];
|
|
44
|
+
get(): Record<string, SqliteValue> | undefined;
|
|
45
|
+
};
|
|
46
|
+
close(): void;
|
|
47
|
+
}
|
|
48
|
+
export { SqliteActorDatabase, SqliteCaptureError };
|
|
49
|
+
export type { ActorDatabaseStorage, SqliteState };
|
|
50
|
+
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/host/sqlite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,YAAY,CAAA;AAGvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEzD,UAAU,WAAW;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,cAAM,kBAAmB,SAAQ,KAAK;CAAG;AAEzC,UAAU,oBAAqB,SAAQ,aAAa;IAChD,MAAM,IAAI,UAAU,CAAA;IACpB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IACvC,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAA;IAC7C,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,CAAA;IAChC,QAAQ,IAAI,IAAI,CAAA;IAChB,KAAK,IAAI,IAAI,CAAA;CAChB;AAED,cAAM,mBAAoB,YAAW,oBAAoB;IAQjD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IARzB,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,IAAI,CAAI;IAChB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,OAAO,CAAgC;gBAG1B,OAAO,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,gBAA6B,EACxD,IAAI,GAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,OAAO,CAAC,MAAM,CAAkB;IAG7F,IAAI,CAAC,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,WAAW,EAAE,GAAG,GAAG,EAAE;IASxE,MAAM,IAAI,UAAU;IAQpB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAWvC,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI;IASvC,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC;IAkBtC,QAAQ,IAAI,IAAI;IAKhB,KAAK,IAAI,IAAI;IAUb,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,IAAI;CAYf;AAED,UAAU,gBAAgB;IACtB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;IAC/B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG;QAClB,GAAG,CAAC,GAAG,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,CAAA;QACzC,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,SAAS,CAAA;KACjD,CAAA;IACD,KAAK,IAAI,IAAI,CAAA;CAChB;AA8DD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAA;AAClD,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { syncLitestream } from "./litestream.js";
|
|
3
|
+
class SqliteCaptureError extends Error {
|
|
4
|
+
}
|
|
5
|
+
class SqliteActorDatabase {
|
|
6
|
+
connect;
|
|
7
|
+
sync;
|
|
8
|
+
connection;
|
|
9
|
+
seed;
|
|
10
|
+
txid = 0;
|
|
11
|
+
version = "";
|
|
12
|
+
failure;
|
|
13
|
+
constructor(connect = openSqlite, sync = syncLitestream) {
|
|
14
|
+
this.connect = connect;
|
|
15
|
+
this.sync = sync;
|
|
16
|
+
}
|
|
17
|
+
exec(sql, ...bindings) {
|
|
18
|
+
validateStatement(sql);
|
|
19
|
+
const database = this.open();
|
|
20
|
+
validateSingleStatement(database, sql);
|
|
21
|
+
const statement = database.prepare(sql);
|
|
22
|
+
if (!database.isTransaction)
|
|
23
|
+
database.exec("BEGIN");
|
|
24
|
+
return statement.all(...bindings);
|
|
25
|
+
}
|
|
26
|
+
fields() {
|
|
27
|
+
const rows = this.fieldDatabase().prepare("SELECT name, value FROM __terse_fields").all();
|
|
28
|
+
return Object.fromEntries(rows.map(row => [row.name, JSON.parse(row.value)]));
|
|
29
|
+
}
|
|
30
|
+
persistFields(fields) {
|
|
31
|
+
const database = this.fieldDatabase();
|
|
32
|
+
const put = database.prepare("INSERT INTO __terse_fields (name, value) VALUES (?, ?) ON CONFLICT(name) DO UPDATE SET value = excluded.value WHERE value <> excluded.value");
|
|
33
|
+
for (const [name, value] of Object.entries(fields))
|
|
34
|
+
put.all(name, JSON.stringify(value));
|
|
35
|
+
database
|
|
36
|
+
.prepare("DELETE FROM __terse_fields WHERE name NOT IN (SELECT value FROM json_each(?))")
|
|
37
|
+
.all(JSON.stringify(Object.keys(fields)));
|
|
38
|
+
}
|
|
39
|
+
restore(state) {
|
|
40
|
+
this.close();
|
|
41
|
+
if (state === undefined || !Number.isSafeInteger(state.txid) || state.txid < 1 || !state.path || !state.socket)
|
|
42
|
+
throw new Error("invalid actor SQLite recovery state");
|
|
43
|
+
this.seed = { path: state.path, socket: state.socket };
|
|
44
|
+
this.txid = state.txid;
|
|
45
|
+
this.version = this.changeToken();
|
|
46
|
+
}
|
|
47
|
+
async snapshot() {
|
|
48
|
+
try {
|
|
49
|
+
const database = this.open();
|
|
50
|
+
const version = this.changeToken();
|
|
51
|
+
if (database.isTransaction)
|
|
52
|
+
database.exec("COMMIT");
|
|
53
|
+
if (version !== this.version) {
|
|
54
|
+
const txid = await this.sync(this.seed);
|
|
55
|
+
if (!Number.isSafeInteger(txid) || txid < this.txid)
|
|
56
|
+
throw new Error("invalid Litestream transaction");
|
|
57
|
+
this.txid = txid;
|
|
58
|
+
this.version = version;
|
|
59
|
+
}
|
|
60
|
+
return { txid: this.txid };
|
|
61
|
+
}
|
|
62
|
+
catch (cause) {
|
|
63
|
+
this.failure = new SqliteCaptureError("failed to replicate actor SQLite commit", { cause });
|
|
64
|
+
throw this.failure;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
rollback() {
|
|
68
|
+
if (this.connection?.isTransaction)
|
|
69
|
+
this.connection.exec("ROLLBACK");
|
|
70
|
+
if (this.connection !== undefined)
|
|
71
|
+
this.version = this.changeToken();
|
|
72
|
+
}
|
|
73
|
+
close() {
|
|
74
|
+
try {
|
|
75
|
+
this.connection?.close();
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
this.connection = undefined;
|
|
79
|
+
this.seed = undefined;
|
|
80
|
+
this.failure = undefined;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
changeToken() {
|
|
84
|
+
const database = this.open();
|
|
85
|
+
return JSON.stringify([
|
|
86
|
+
database.prepare("SELECT total_changes() AS changes").get(),
|
|
87
|
+
database.prepare("PRAGMA schema_version").get(),
|
|
88
|
+
database.prepare("PRAGMA user_version").get()
|
|
89
|
+
]);
|
|
90
|
+
}
|
|
91
|
+
fieldDatabase() {
|
|
92
|
+
const database = this.open();
|
|
93
|
+
if (!database.isTransaction)
|
|
94
|
+
database.exec("BEGIN");
|
|
95
|
+
database.exec("CREATE TABLE IF NOT EXISTS __terse_fields (name TEXT PRIMARY KEY, value TEXT NOT NULL CHECK(json_valid(value)))");
|
|
96
|
+
return database;
|
|
97
|
+
}
|
|
98
|
+
open() {
|
|
99
|
+
if (this.failure !== undefined)
|
|
100
|
+
throw this.failure;
|
|
101
|
+
if (this.connection !== undefined)
|
|
102
|
+
return this.connection;
|
|
103
|
+
if (this.seed === undefined)
|
|
104
|
+
throw new Error("actor SQLite database has not been restored");
|
|
105
|
+
const database = (this.connection = this.connect(this.seed.path));
|
|
106
|
+
database.exec("PRAGMA foreign_keys = ON; PRAGMA journal_mode = WAL; PRAGMA wal_autocheckpoint = 0; PRAGMA synchronous = FULL");
|
|
107
|
+
if (database.prepare("PRAGMA quick_check").get().quick_check !== "ok")
|
|
108
|
+
throw new Error("invalid actor SQLite database");
|
|
109
|
+
return database;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function openSqlite(path) {
|
|
113
|
+
const require = createRequire(import.meta.url);
|
|
114
|
+
if (!process.versions.bun) {
|
|
115
|
+
const { DatabaseSync } = require("node:sqlite");
|
|
116
|
+
return new DatabaseSync(path);
|
|
117
|
+
}
|
|
118
|
+
const { Database } = require("bun:sqlite");
|
|
119
|
+
const database = new Database(path, { strict: true });
|
|
120
|
+
return {
|
|
121
|
+
get isTransaction() {
|
|
122
|
+
return database.inTransaction;
|
|
123
|
+
},
|
|
124
|
+
exec: sql => database.exec(sql),
|
|
125
|
+
prepare: sql => database.prepare(sql),
|
|
126
|
+
close: () => database.close()
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function validateStatement(sql) {
|
|
130
|
+
const statement = withoutComments(sql);
|
|
131
|
+
if (/(?:__terse_|_litestream_)/i.test(statement))
|
|
132
|
+
throw new Error("SQLite runtime table names are reserved");
|
|
133
|
+
if (/^(?:BEGIN|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE|ATTACH|DETACH|VACUUM)\b/i.test(statement))
|
|
134
|
+
throw new Error("actor invocations own SQLite transactions and database files");
|
|
135
|
+
if (/^PRAGMA\b/i.test(statement) &&
|
|
136
|
+
!/^PRAGMA\s+(?:main\.)?(?:table_info|table_xinfo|index_info|index_xinfo|index_list|foreign_key_list|foreign_key_check|integrity_check|quick_check|user_version)\b/i.test(statement))
|
|
137
|
+
throw new Error("this SQLite pragma is managed by the actor runtime");
|
|
138
|
+
}
|
|
139
|
+
function validateSingleStatement(database, sql) {
|
|
140
|
+
const tokens = sql.matchAll(/--[^\n]*(?:\n|$)|\/\*[\s\S]*?\*\/|'(?:''|[^'])*'|"(?:""|[^"])*"|`(?:``|[^`])*`|\[[^\]]*\]|;/g);
|
|
141
|
+
for (const token of tokens) {
|
|
142
|
+
if (token[0] !== ";" || !withoutComments(sql.slice(token.index + 1)))
|
|
143
|
+
continue;
|
|
144
|
+
try {
|
|
145
|
+
// SQLite distinguishes a statement boundary from a semicolon inside a trigger body.
|
|
146
|
+
database.prepare(sql.slice(0, token.index + 1));
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
if (!(error instanceof Error) || !error.message.includes("incomplete input"))
|
|
150
|
+
throw error;
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
throw new Error("actor database exec accepts one SQL statement");
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function withoutComments(sql) {
|
|
157
|
+
return sql.replace(/^(?:\s|;|--[^\n]*(?:\n|$)|\/\*[\s\S]*?\*\/)*/, "").trim();
|
|
158
|
+
}
|
|
159
|
+
export { SqliteActorDatabase, SqliteCaptureError };
|
|
160
|
+
//# sourceMappingURL=sqlite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/host/sqlite.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** @module durable-actors */
|
|
2
2
|
export { Actor } from "./actor/actor.js";
|
|
3
|
+
export type { ActorDatabase, SqliteValue } from "./actor/database.js";
|
|
3
4
|
export { Sandbox } from "./actor/sandbox.js";
|
|
4
5
|
export type { SandboxOptions, SandboxRegion } from "./actor/sandbox.js";
|
|
5
6
|
export { Emittable, Ephemeral, Persisted, Reentrant } from "./actor/decorators.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAClF,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,YAAY,EACR,qBAAqB,EACrB,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EACnB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAClF,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAClD,YAAY,EACR,qBAAqB,EACrB,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EACnB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAE5C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimeInstaller.d.ts","sourceRoot":"","sources":["../src/runtimeInstaller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtimeInstaller.d.ts","sourceRoot":"","sources":["../src/runtimeInstaller.ts"],"names":[],"mappings":"AAYA,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC,CAUlE;AAED,UAAU,cAAc;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;CACzB;AAED,qBAAa,gBAAgB;IAErB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBADR,OAAO,EAAE,cAAc,EACvB,QAAQ,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAmB;IAG3E,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;YAuBlB,MAAM;CAsBvB"}
|