rivetkit 2.3.4 → 2.3.5-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/client.d.ts +157 -9
- package/dist/browser/client.js +518 -542
- package/dist/browser/client.js.map +1 -1
- package/dist/browser/inspector/client.d.ts +101 -2
- package/dist/browser/inspector/client.js +1245 -227
- package/dist/browser/inspector/client.js.map +1 -1
- package/dist/tsup/agent-os/index.cjs +103 -36
- package/dist/tsup/agent-os/index.cjs.map +1 -1
- package/dist/tsup/agent-os/index.d.cts +159 -11
- package/dist/tsup/agent-os/index.d.ts +159 -11
- package/dist/tsup/agent-os/index.js +103 -36
- package/dist/tsup/agent-os/index.js.map +1 -1
- package/dist/tsup/{chunk-7X4M7ZRA.cjs → chunk-4XKED5P5.cjs} +146 -177
- package/dist/tsup/chunk-4XKED5P5.cjs.map +1 -0
- package/dist/tsup/{chunk-Q7NBMTF3.cjs → chunk-6HQCLWAW.cjs} +384 -4
- package/dist/tsup/chunk-6HQCLWAW.cjs.map +1 -0
- package/dist/tsup/{chunk-JZ7TWV65.js → chunk-7AFZMFPQ.js} +15 -1
- package/dist/tsup/chunk-7AFZMFPQ.js.map +1 -0
- package/dist/tsup/{chunk-M7DCRMOZ.js → chunk-B4IZU537.js} +382 -2
- package/dist/tsup/chunk-B4IZU537.js.map +1 -0
- package/dist/tsup/{chunk-3MHDOUD7.cjs → chunk-G3CCRCTK.cjs} +14 -9
- package/dist/tsup/chunk-G3CCRCTK.cjs.map +1 -0
- package/dist/tsup/{chunk-CMPFZ724.js → chunk-GAV4PKFT.js} +16 -47
- package/dist/tsup/{chunk-CMPFZ724.js.map → chunk-GAV4PKFT.js.map} +1 -1
- package/dist/tsup/{chunk-HXUEHHJF.js → chunk-JI6GZ2C2.js} +2 -11
- package/dist/tsup/{chunk-HXUEHHJF.js.map → chunk-JI6GZ2C2.js.map} +1 -1
- package/dist/tsup/{chunk-3SNFA373.cjs → chunk-M3FCXL3Q.cjs} +3 -3
- package/dist/tsup/{chunk-3SNFA373.cjs.map → chunk-M3FCXL3Q.cjs.map} +1 -1
- package/dist/tsup/{chunk-GXW3VFJQ.js → chunk-MGTSVSUC.js} +2 -2
- package/dist/tsup/{chunk-VE2X4KMG.cjs → chunk-MYWZCDML.cjs} +2 -11
- package/dist/tsup/chunk-MYWZCDML.cjs.map +1 -0
- package/dist/tsup/{chunk-M5TAM4JV.js → chunk-NIC3QLKL.js} +3 -3
- package/dist/tsup/{chunk-H4XOUVGP.js → chunk-P4OGQ4JL.js} +5 -7
- package/dist/tsup/{chunk-H4XOUVGP.js.map → chunk-P4OGQ4JL.js.map} +1 -1
- package/dist/tsup/{chunk-EOSGY3DC.js → chunk-PAG6G46L.js} +2 -2
- package/dist/tsup/{chunk-XIX5DOZN.js → chunk-SHBE77IT.js} +14 -9
- package/dist/tsup/chunk-SHBE77IT.js.map +1 -0
- package/dist/tsup/{chunk-SRT2DPN3.cjs → chunk-TNIWIUNV.cjs} +9 -11
- package/dist/tsup/chunk-TNIWIUNV.cjs.map +1 -0
- package/dist/tsup/{chunk-UPOCJPEQ.cjs → chunk-TR5NLR5V.cjs} +4 -4
- package/dist/tsup/{chunk-UPOCJPEQ.cjs.map → chunk-TR5NLR5V.cjs.map} +1 -1
- package/dist/tsup/{chunk-ZA7FLHKH.cjs → chunk-UEULFXUI.cjs} +16 -2
- package/dist/tsup/chunk-UEULFXUI.cjs.map +1 -0
- package/dist/tsup/{chunk-T4MURX4P.cjs → chunk-UJ2FQY63.cjs} +7 -7
- package/dist/tsup/{chunk-T4MURX4P.cjs.map → chunk-UJ2FQY63.cjs.map} +1 -1
- package/dist/tsup/client/mod.cjs +7 -8
- package/dist/tsup/client/mod.cjs.map +1 -1
- package/dist/tsup/client/mod.d.cts +5 -4
- package/dist/tsup/client/mod.d.ts +5 -4
- package/dist/tsup/client/mod.js +6 -7
- package/dist/tsup/common/log.cjs +2 -2
- package/dist/tsup/common/log.js +1 -1
- package/dist/tsup/common/websocket.cjs +3 -3
- package/dist/tsup/common/websocket.js +2 -2
- package/dist/tsup/{config-D49x8NpL.d.cts → config-BxOimoGX.d.cts} +16 -0
- package/dist/tsup/{config-D49x8NpL.d.ts → config-BxOimoGX.d.ts} +16 -0
- package/dist/tsup/{config-ZkIsRFsN.d.ts → config-BzdqbLAP.d.ts} +164 -27
- package/dist/tsup/{config-BfBhjEbk.d.cts → config-CPPEwn_e.d.cts} +164 -27
- package/dist/tsup/{context-sZ9GlaBK.d.cts → context-DSA9gFXB.d.cts} +2 -2
- package/dist/tsup/{context-B7-84u9K.d.ts → context-wWv-K2K_.d.ts} +2 -2
- package/dist/tsup/db/drizzle.cjs +120 -68
- package/dist/tsup/db/drizzle.cjs.map +1 -1
- package/dist/tsup/db/drizzle.d.cts +8 -3
- package/dist/tsup/db/drizzle.d.ts +8 -3
- package/dist/tsup/db/drizzle.js +120 -68
- package/dist/tsup/db/drizzle.js.map +1 -1
- package/dist/tsup/db/mod.cjs +74 -22
- package/dist/tsup/db/mod.cjs.map +1 -1
- package/dist/tsup/db/mod.d.cts +4 -3
- package/dist/tsup/db/mod.d.ts +4 -3
- package/dist/tsup/db/mod.js +74 -22
- package/dist/tsup/db/mod.js.map +1 -1
- package/dist/tsup/dynamic/mod.cjs +2 -2
- package/dist/tsup/dynamic/mod.d.cts +3 -3
- package/dist/tsup/dynamic/mod.d.ts +3 -3
- package/dist/tsup/dynamic/mod.js +1 -1
- package/dist/tsup/inspector/mod.cjs +4 -5
- package/dist/tsup/inspector/mod.cjs.map +1 -1
- package/dist/tsup/inspector/mod.js +3 -4
- package/dist/tsup/inspector/mod.js.map +1 -1
- 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 +5 -5
- package/dist/tsup/inspector-tab/mod.d.ts +5 -5
- package/dist/tsup/inspector-tab/mod.js +1 -1
- package/dist/tsup/inspector-tab/mod.js.map +1 -1
- package/dist/tsup/mod.cjs +605 -158
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +5 -5
- package/dist/tsup/mod.d.ts +5 -5
- package/dist/tsup/mod.js +528 -81
- package/dist/tsup/mod.js.map +1 -1
- package/dist/tsup/test/mod.cjs +10 -11
- package/dist/tsup/test/mod.cjs.map +1 -1
- package/dist/tsup/test/mod.d.cts +3 -3
- package/dist/tsup/test/mod.d.ts +3 -3
- package/dist/tsup/test/mod.js +6 -7
- package/dist/tsup/test/mod.js.map +1 -1
- package/dist/tsup/utils-CV0akuDD.d.ts +162 -0
- package/dist/tsup/utils-DQDCphrl.d.cts +162 -0
- package/dist/tsup/utils.cjs +6 -2
- package/dist/tsup/utils.cjs.map +1 -1
- package/dist/tsup/utils.d.cts +3 -146
- package/dist/tsup/utils.d.ts +3 -146
- package/dist/tsup/utils.js +5 -1
- package/dist/tsup/workflow/mod.cjs +198 -151
- package/dist/tsup/workflow/mod.cjs.map +1 -1
- package/dist/tsup/workflow/mod.d.cts +5 -5
- package/dist/tsup/workflow/mod.d.ts +5 -5
- package/dist/tsup/workflow/mod.js +187 -140
- package/dist/tsup/workflow/mod.js.map +1 -1
- package/package.json +8 -8
- package/src/actor/config.test.ts +14 -0
- package/src/actor/config.ts +104 -16
- package/src/actor/definition.ts +18 -7
- package/src/agent-os/actor/index.ts +2 -2
- package/src/common/bare/generated/actor-runtime-socket-protocol/v1.ts +848 -0
- package/src/common/bare/generated/inspector/v6.ts +1367 -0
- package/src/common/database/config.ts +24 -0
- package/src/common/database/mod.test.ts +148 -59
- package/src/common/database/mod.ts +93 -23
- package/src/common/database/native-database.test.ts +9 -0
- package/src/common/database/native-database.ts +151 -0
- package/src/common/database/shared.ts +15 -0
- package/src/common/encoding.ts +28 -21
- package/src/db/drizzle.test.ts +157 -0
- package/src/db/drizzle.ts +170 -79
- package/src/dynamic/isolate-runtime.ts +0 -2
- package/src/engine-client/driver.ts +0 -15
- package/src/engine-client/mod.ts +0 -41
- package/src/inspector/client.browser.ts +69 -8
- package/src/inspector-tab/mod.ts +1 -0
- package/src/registry/config/index.ts +1 -35
- package/src/registry/napi-runtime.ts +204 -16
- package/src/registry/native.ts +200 -30
- package/src/registry/runtime.ts +146 -3
- package/src/registry/wasm-runtime.ts +217 -6
- package/src/utils.ts +3 -0
- package/src/workflow/context.ts +5 -27
- package/src/workflow/driver.test.ts +62 -0
- package/src/workflow/driver.ts +231 -113
- package/src/workflow/mod.ts +3 -3
- package/dist/tsup/chunk-3MHDOUD7.cjs.map +0 -1
- package/dist/tsup/chunk-7X4M7ZRA.cjs.map +0 -1
- package/dist/tsup/chunk-JZ7TWV65.js.map +0 -1
- package/dist/tsup/chunk-M7DCRMOZ.js.map +0 -1
- package/dist/tsup/chunk-Q7NBMTF3.cjs.map +0 -1
- package/dist/tsup/chunk-SRT2DPN3.cjs.map +0 -1
- package/dist/tsup/chunk-VE2X4KMG.cjs.map +0 -1
- package/dist/tsup/chunk-W6WPKZ6I.js +0 -382
- package/dist/tsup/chunk-W6WPKZ6I.js.map +0 -1
- package/dist/tsup/chunk-XIX5DOZN.js.map +0 -1
- package/dist/tsup/chunk-Z7PSQWMC.cjs +0 -382
- package/dist/tsup/chunk-Z7PSQWMC.cjs.map +0 -1
- package/dist/tsup/chunk-ZA7FLHKH.cjs.map +0 -1
- package/src/actor/driver.ts +0 -141
- package/src/actor/instance/mod.ts +0 -2484
- package/src/drivers/engine/actor-driver.ts +0 -2473
- /package/dist/tsup/{chunk-GXW3VFJQ.js.map → chunk-MGTSVSUC.js.map} +0 -0
- /package/dist/tsup/{chunk-M5TAM4JV.js.map → chunk-NIC3QLKL.js.map} +0 -0
- /package/dist/tsup/{chunk-EOSGY3DC.js.map → chunk-PAG6G46L.js.map} +0 -0
package/dist/tsup/mod.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
decodeWorkflowHistoryTransport
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MGTSVSUC.js";
|
|
4
4
|
import {
|
|
5
5
|
ACTOR_CONTEXT_INTERNAL_SYMBOL,
|
|
6
6
|
ActorConfigSchema,
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
getRunFunction,
|
|
11
11
|
getRunInspectorConfig,
|
|
12
12
|
getRunMetadata
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-SHBE77IT.js";
|
|
14
14
|
import {
|
|
15
15
|
ALLOWED_PUBLIC_HEADERS,
|
|
16
16
|
HEADER_CONN_PARAMS,
|
|
@@ -20,26 +20,21 @@ import {
|
|
|
20
20
|
getDatacenters,
|
|
21
21
|
tryParseEndpoint,
|
|
22
22
|
updateRunnerConfig
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-GAV4PKFT.js";
|
|
24
24
|
import {
|
|
25
|
-
KEYS,
|
|
26
25
|
makePrefixedKey,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
} from "./chunk-HXUEHHJF.js";
|
|
32
|
-
import {
|
|
33
|
-
assertJsonCompatValue,
|
|
34
|
-
decodeCborCompat,
|
|
35
|
-
encodeCborCompat
|
|
36
|
-
} from "./chunk-W6WPKZ6I.js";
|
|
37
|
-
import "./chunk-EOSGY3DC.js";
|
|
26
|
+
removePrefixFromKey
|
|
27
|
+
} from "./chunk-JI6GZ2C2.js";
|
|
28
|
+
import "./chunk-7AFZMFPQ.js";
|
|
29
|
+
import "./chunk-PAG6G46L.js";
|
|
38
30
|
import {
|
|
39
31
|
LogLevelSchema,
|
|
40
32
|
VERSION,
|
|
33
|
+
assertJsonCompatValue,
|
|
41
34
|
configureBaseLogger,
|
|
35
|
+
decodeCborCompat,
|
|
42
36
|
deconstructError,
|
|
37
|
+
encodeCborCompat,
|
|
43
38
|
getEnvUniversal,
|
|
44
39
|
getLogger,
|
|
45
40
|
getNodeEnv,
|
|
@@ -64,7 +59,7 @@ import {
|
|
|
64
59
|
parsePortEnv,
|
|
65
60
|
stringifyError,
|
|
66
61
|
toUint8Array
|
|
67
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-B4IZU537.js";
|
|
68
63
|
import {
|
|
69
64
|
INTERNAL_ERROR_CODE,
|
|
70
65
|
RivetError,
|
|
@@ -77,7 +72,6 @@ import {
|
|
|
77
72
|
toRivetError,
|
|
78
73
|
unsupportedFeature
|
|
79
74
|
} from "./chunk-ZZ3WBRPD.js";
|
|
80
|
-
import "./chunk-JZ7TWV65.js";
|
|
81
75
|
|
|
82
76
|
// src/actor/log.ts
|
|
83
77
|
function loggerWithoutContext() {
|
|
@@ -85,15 +79,21 @@ function loggerWithoutContext() {
|
|
|
85
79
|
}
|
|
86
80
|
|
|
87
81
|
// src/actor/definition.ts
|
|
88
|
-
var
|
|
89
|
-
|
|
82
|
+
var warnedDeprecatedOptionKeys = /* @__PURE__ */ new Set();
|
|
83
|
+
var DEPRECATED_OPTION_MESSAGES = {
|
|
84
|
+
onDestroyTimeout: "Configure `sleepGracePeriod` instead, which bounds the entire graceful shutdown window for both sleep and destroy.",
|
|
85
|
+
waitUntilTimeout: "Configure `sleepGracePeriod` instead, which bounds the entire graceful shutdown window for both sleep and destroy.",
|
|
86
|
+
preloadMaxWorkflowBytes: "Internal storage moved to SQLite and no longer uses KV preloading.",
|
|
87
|
+
preloadMaxConnectionsBytes: "Internal storage moved to SQLite and no longer uses KV preloading."
|
|
88
|
+
};
|
|
89
|
+
function warnDeprecatedOptionKeys(options) {
|
|
90
90
|
if (!options || typeof options !== "object") return;
|
|
91
91
|
const opts = options;
|
|
92
|
-
for (const key of
|
|
93
|
-
if (opts[key] !== void 0 && !
|
|
94
|
-
|
|
92
|
+
for (const [key, detail] of Object.entries(DEPRECATED_OPTION_MESSAGES)) {
|
|
93
|
+
if (opts[key] !== void 0 && !warnedDeprecatedOptionKeys.has(key)) {
|
|
94
|
+
warnedDeprecatedOptionKeys.add(key);
|
|
95
95
|
loggerWithoutContext().warn({
|
|
96
|
-
msg: `actor option \`${key}\` is deprecated and is now ignored.
|
|
96
|
+
msg: `actor option \`${key}\` is deprecated and is now ignored. ${detail} Will be removed in 2.2.0.`
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
99
|
}
|
|
@@ -111,7 +111,7 @@ function isStaticActorInstance(_actor) {
|
|
|
111
111
|
return true;
|
|
112
112
|
}
|
|
113
113
|
function actor(input) {
|
|
114
|
-
|
|
114
|
+
warnDeprecatedOptionKeys(
|
|
115
115
|
input == null ? void 0 : input.options
|
|
116
116
|
);
|
|
117
117
|
const config = ActorConfigSchema.parse(input);
|
|
@@ -839,31 +839,6 @@ function buildActorNames(config) {
|
|
|
839
839
|
const metadata = {};
|
|
840
840
|
metadata.icon = options.icon ?? runMeta.icon;
|
|
841
841
|
metadata.name = options.name ?? runMeta.name;
|
|
842
|
-
metadata.preload = {
|
|
843
|
-
keys: [
|
|
844
|
-
Array.from(KEYS.PERSIST_DATA),
|
|
845
|
-
Array.from(KEYS.INSPECTOR_TOKEN),
|
|
846
|
-
Array.from(queueMetadataKey()),
|
|
847
|
-
Array.from(KEYS.LAST_PUSHED_ALARM)
|
|
848
|
-
],
|
|
849
|
-
prefixes: [
|
|
850
|
-
{
|
|
851
|
-
prefix: Array.from(workflowStoragePrefix()),
|
|
852
|
-
maxBytes: options.preloadMaxWorkflowBytes ?? 131072,
|
|
853
|
-
partial: false
|
|
854
|
-
},
|
|
855
|
-
{
|
|
856
|
-
prefix: Array.from(KEYS.CONN_PREFIX),
|
|
857
|
-
maxBytes: options.preloadMaxConnectionsBytes ?? 65536,
|
|
858
|
-
partial: false
|
|
859
|
-
},
|
|
860
|
-
{
|
|
861
|
-
prefix: Array.from(queueMessagesPrefix()),
|
|
862
|
-
maxBytes: 65536,
|
|
863
|
-
partial: false
|
|
864
|
-
}
|
|
865
|
-
]
|
|
866
|
-
};
|
|
867
842
|
if (!metadata.icon) delete metadata.icon;
|
|
868
843
|
if (!metadata.name) delete metadata.name;
|
|
869
844
|
return [actorName, { metadata }];
|
|
@@ -1056,6 +1031,12 @@ function toNativeBindings(sql, params) {
|
|
|
1056
1031
|
return toNativeBinding(value);
|
|
1057
1032
|
});
|
|
1058
1033
|
}
|
|
1034
|
+
function toNativeBatchStatement(statement) {
|
|
1035
|
+
return {
|
|
1036
|
+
sql: statement.sql,
|
|
1037
|
+
params: toNativeBindings(statement.sql, statement.params)
|
|
1038
|
+
};
|
|
1039
|
+
}
|
|
1059
1040
|
function normalizeNativeMetrics(metrics) {
|
|
1060
1041
|
if (!metrics) return null;
|
|
1061
1042
|
const raw = metrics;
|
|
@@ -1169,6 +1150,60 @@ function wrapJsNativeDatabase(database) {
|
|
|
1169
1150
|
async execute(sql, params) {
|
|
1170
1151
|
return await executeNative(sql, params);
|
|
1171
1152
|
},
|
|
1153
|
+
async executeBatch(statements) {
|
|
1154
|
+
const nativeStatements = statements.map(toNativeBatchStatement);
|
|
1155
|
+
const release = gate.enter();
|
|
1156
|
+
let transaction;
|
|
1157
|
+
try {
|
|
1158
|
+
const results = database.executeBatch ? await database.executeBatch(nativeStatements) : await (async () => {
|
|
1159
|
+
transaction = await database.beginTransaction();
|
|
1160
|
+
const transactionResults = [];
|
|
1161
|
+
for (const statement of nativeStatements) {
|
|
1162
|
+
transactionResults.push(
|
|
1163
|
+
await transaction.execute(
|
|
1164
|
+
statement.sql,
|
|
1165
|
+
statement.params
|
|
1166
|
+
)
|
|
1167
|
+
);
|
|
1168
|
+
}
|
|
1169
|
+
await transaction.commit();
|
|
1170
|
+
transaction = void 0;
|
|
1171
|
+
return transactionResults;
|
|
1172
|
+
})();
|
|
1173
|
+
for (const result of results) {
|
|
1174
|
+
if (result.lastInsertRowId !== void 0) {
|
|
1175
|
+
lastInsertRowId = result.lastInsertRowId;
|
|
1176
|
+
}
|
|
1177
|
+
}
|
|
1178
|
+
return results;
|
|
1179
|
+
} catch (error) {
|
|
1180
|
+
if (transaction) {
|
|
1181
|
+
try {
|
|
1182
|
+
await transaction.rollback();
|
|
1183
|
+
} catch {
|
|
1184
|
+
}
|
|
1185
|
+
}
|
|
1186
|
+
enrichNativeDatabaseError(database, error);
|
|
1187
|
+
} finally {
|
|
1188
|
+
release();
|
|
1189
|
+
}
|
|
1190
|
+
},
|
|
1191
|
+
async beginTransaction(timeoutMs) {
|
|
1192
|
+
const release = gate.enter();
|
|
1193
|
+
let transaction;
|
|
1194
|
+
try {
|
|
1195
|
+
transaction = await database.beginTransaction(timeoutMs);
|
|
1196
|
+
} catch (error) {
|
|
1197
|
+
enrichNativeDatabaseError(database, error);
|
|
1198
|
+
} finally {
|
|
1199
|
+
release();
|
|
1200
|
+
}
|
|
1201
|
+
return wrapTransaction(database, transaction, gate, (result) => {
|
|
1202
|
+
if (result.lastInsertRowId !== void 0) {
|
|
1203
|
+
lastInsertRowId = result.lastInsertRowId;
|
|
1204
|
+
}
|
|
1205
|
+
});
|
|
1206
|
+
},
|
|
1172
1207
|
async run(sql, params) {
|
|
1173
1208
|
await executeNative(sql, params);
|
|
1174
1209
|
},
|
|
@@ -1186,6 +1221,59 @@ function wrapJsNativeDatabase(database) {
|
|
|
1186
1221
|
}
|
|
1187
1222
|
};
|
|
1188
1223
|
}
|
|
1224
|
+
function wrapTransaction(database, transaction, gate, onExecute) {
|
|
1225
|
+
return {
|
|
1226
|
+
async exec(sql, callback) {
|
|
1227
|
+
const release = gate.enter();
|
|
1228
|
+
let result;
|
|
1229
|
+
try {
|
|
1230
|
+
result = await transaction.exec(sql);
|
|
1231
|
+
} catch (error) {
|
|
1232
|
+
enrichNativeDatabaseError(database, error);
|
|
1233
|
+
} finally {
|
|
1234
|
+
release();
|
|
1235
|
+
}
|
|
1236
|
+
if (callback) {
|
|
1237
|
+
for (const row of result.rows) callback(row, result.columns);
|
|
1238
|
+
}
|
|
1239
|
+
},
|
|
1240
|
+
async execute(sql, params) {
|
|
1241
|
+
const release = gate.enter();
|
|
1242
|
+
try {
|
|
1243
|
+
const result = await transaction.execute(
|
|
1244
|
+
sql,
|
|
1245
|
+
toNativeBindings(sql, params)
|
|
1246
|
+
);
|
|
1247
|
+
onExecute(result);
|
|
1248
|
+
return result;
|
|
1249
|
+
} catch (error) {
|
|
1250
|
+
enrichNativeDatabaseError(database, error);
|
|
1251
|
+
} finally {
|
|
1252
|
+
release();
|
|
1253
|
+
}
|
|
1254
|
+
},
|
|
1255
|
+
async commit() {
|
|
1256
|
+
const release = gate.enter();
|
|
1257
|
+
try {
|
|
1258
|
+
await transaction.commit();
|
|
1259
|
+
} catch (error) {
|
|
1260
|
+
enrichNativeDatabaseError(database, error);
|
|
1261
|
+
} finally {
|
|
1262
|
+
release();
|
|
1263
|
+
}
|
|
1264
|
+
},
|
|
1265
|
+
async rollback() {
|
|
1266
|
+
const release = gate.enter();
|
|
1267
|
+
try {
|
|
1268
|
+
await transaction.rollback();
|
|
1269
|
+
} catch (error) {
|
|
1270
|
+
enrichNativeDatabaseError(database, error);
|
|
1271
|
+
} finally {
|
|
1272
|
+
release();
|
|
1273
|
+
}
|
|
1274
|
+
}
|
|
1275
|
+
};
|
|
1276
|
+
}
|
|
1189
1277
|
function lastInsertRowIdColumnName(sql) {
|
|
1190
1278
|
const match = sql.match(
|
|
1191
1279
|
/^\s*SELECT\s+last_insert_rowid\s*\(\s*\)\s*(?:AS\s+("[^"]+"|`[^`]+`|\[[^\]]+\]|\w+))?\s*;?\s*$/i
|
|
@@ -1300,6 +1388,9 @@ function asNativeConn(handle) {
|
|
|
1300
1388
|
function asNativeWebSocket(handle) {
|
|
1301
1389
|
return handle;
|
|
1302
1390
|
}
|
|
1391
|
+
function asNativeSqlTransaction(handle) {
|
|
1392
|
+
return handle;
|
|
1393
|
+
}
|
|
1303
1394
|
function asNativeCancellationToken(handle) {
|
|
1304
1395
|
return handle;
|
|
1305
1396
|
}
|
|
@@ -1329,6 +1420,12 @@ function toNapiSqlBindParams(params) {
|
|
|
1329
1420
|
}
|
|
1330
1421
|
return params.map((param) => toNapiSqlBindParam(param));
|
|
1331
1422
|
}
|
|
1423
|
+
function toNapiSqlBatchStatement(statement) {
|
|
1424
|
+
return {
|
|
1425
|
+
sql: statement.sql,
|
|
1426
|
+
params: toNapiSqlBindParams(statement.params) ?? void 0
|
|
1427
|
+
};
|
|
1428
|
+
}
|
|
1332
1429
|
function toNapiBuffer(value) {
|
|
1333
1430
|
return Buffer.from(value);
|
|
1334
1431
|
}
|
|
@@ -1452,11 +1549,16 @@ var NapiCoreRuntime = class {
|
|
|
1452
1549
|
createCancellationToken() {
|
|
1453
1550
|
return new this.#bindings.CancellationToken();
|
|
1454
1551
|
}
|
|
1455
|
-
|
|
1456
|
-
return
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1552
|
+
decodeInspectorRequest(bytes, advertisedVersion) {
|
|
1553
|
+
return this.#bindings.decodeInspectorRequest(
|
|
1554
|
+
toNapiBuffer(bytes),
|
|
1555
|
+
advertisedVersion
|
|
1556
|
+
);
|
|
1557
|
+
}
|
|
1558
|
+
encodeInspectorResponse(bytes, targetVersion) {
|
|
1559
|
+
return this.#bindings.encodeInspectorResponse(
|
|
1560
|
+
toNapiBuffer(bytes),
|
|
1561
|
+
targetVersion
|
|
1460
1562
|
);
|
|
1461
1563
|
}
|
|
1462
1564
|
cancellationTokenAborted(token) {
|
|
@@ -1520,6 +1622,14 @@ var NapiCoreRuntime = class {
|
|
|
1520
1622
|
toNapiStateDeltaPayload(payload)
|
|
1521
1623
|
);
|
|
1522
1624
|
}
|
|
1625
|
+
async actorSaveStateAndWorkflowBatch(ctx, writes) {
|
|
1626
|
+
await asNativeActorContext(ctx).saveStateAndWorkflowBatch(
|
|
1627
|
+
writes.map((write) => ({
|
|
1628
|
+
key: toNapiBuffer(write.key),
|
|
1629
|
+
value: toNapiBuffer(write.value)
|
|
1630
|
+
}))
|
|
1631
|
+
);
|
|
1632
|
+
}
|
|
1523
1633
|
actorId(ctx) {
|
|
1524
1634
|
return asNativeActorContext(ctx).actorId();
|
|
1525
1635
|
}
|
|
@@ -1626,6 +1736,33 @@ var NapiCoreRuntime = class {
|
|
|
1626
1736
|
);
|
|
1627
1737
|
return normalizeRuntimeSqlExecuteResult(result);
|
|
1628
1738
|
}
|
|
1739
|
+
async actorSqlExecuteBatch(ctx, statements) {
|
|
1740
|
+
const results = await this.#actorSql(ctx).executeBatch(
|
|
1741
|
+
statements.map(toNapiSqlBatchStatement)
|
|
1742
|
+
);
|
|
1743
|
+
return results.map(normalizeRuntimeSqlExecuteResult);
|
|
1744
|
+
}
|
|
1745
|
+
async actorSqlBeginTransaction(ctx, timeoutMs) {
|
|
1746
|
+
return await this.#actorSql(ctx).beginTransaction(
|
|
1747
|
+
timeoutMs
|
|
1748
|
+
);
|
|
1749
|
+
}
|
|
1750
|
+
async actorSqlTransactionExec(transaction, sql) {
|
|
1751
|
+
return await asNativeSqlTransaction(transaction).exec(sql);
|
|
1752
|
+
}
|
|
1753
|
+
async actorSqlTransactionExecute(transaction, sql, params) {
|
|
1754
|
+
const result = await asNativeSqlTransaction(transaction).execute(
|
|
1755
|
+
sql,
|
|
1756
|
+
toNapiSqlBindParams(params)
|
|
1757
|
+
);
|
|
1758
|
+
return normalizeRuntimeSqlExecuteResult(result);
|
|
1759
|
+
}
|
|
1760
|
+
async actorSqlTransactionCommit(transaction) {
|
|
1761
|
+
await asNativeSqlTransaction(transaction).commit();
|
|
1762
|
+
}
|
|
1763
|
+
async actorSqlTransactionRollback(transaction) {
|
|
1764
|
+
await asNativeSqlTransaction(transaction).rollback();
|
|
1765
|
+
}
|
|
1629
1766
|
async actorSqlQuery(ctx, sql, params) {
|
|
1630
1767
|
return await this.#actorSql(ctx).query(
|
|
1631
1768
|
sql,
|
|
@@ -1652,6 +1789,9 @@ var NapiCoreRuntime = class {
|
|
|
1652
1789
|
this.#sql.delete(nativeCtx);
|
|
1653
1790
|
await database.close();
|
|
1654
1791
|
}
|
|
1792
|
+
async actorRuntimeSocketProvision(ctx) {
|
|
1793
|
+
return await asNativeActorContext(ctx).provisionActorRuntimeSocket();
|
|
1794
|
+
}
|
|
1655
1795
|
async actorQueueSend(ctx, name, body) {
|
|
1656
1796
|
return toNapiQueueMessage(
|
|
1657
1797
|
await asNativeActorContext(ctx).queue().send(name, toNapiBuffer(body))
|
|
@@ -1700,11 +1840,51 @@ var NapiCoreRuntime = class {
|
|
|
1700
1840
|
async actorQueueReset(ctx) {
|
|
1701
1841
|
await asNativeActorContext(ctx).queue().reset();
|
|
1702
1842
|
}
|
|
1703
|
-
actorScheduleAfter(ctx, durationMs, actionName, args) {
|
|
1704
|
-
asNativeActorContext(ctx).schedule().after(durationMs, actionName, toNapiBuffer(args));
|
|
1843
|
+
async actorScheduleAfter(ctx, durationMs, actionName, args) {
|
|
1844
|
+
return await asNativeActorContext(ctx).schedule().after(durationMs, actionName, toNapiBuffer(args));
|
|
1845
|
+
}
|
|
1846
|
+
async actorScheduleAt(ctx, timestampMs, actionName, args) {
|
|
1847
|
+
return await asNativeActorContext(ctx).schedule().at(timestampMs, actionName, toNapiBuffer(args));
|
|
1848
|
+
}
|
|
1849
|
+
async actorScheduleCancel(ctx, id) {
|
|
1850
|
+
return await asNativeActorContext(ctx).schedule().cancel(id);
|
|
1851
|
+
}
|
|
1852
|
+
async actorScheduleGet(ctx, id) {
|
|
1853
|
+
return await asNativeActorContext(ctx).schedule().get(id) ?? void 0;
|
|
1854
|
+
}
|
|
1855
|
+
async actorScheduleList(ctx) {
|
|
1856
|
+
return await asNativeActorContext(ctx).schedule().list();
|
|
1857
|
+
}
|
|
1858
|
+
async actorCronSet(ctx, name, expression, timezone, actionName, args, maxHistory) {
|
|
1859
|
+
await asNativeActorContext(ctx).schedule().cronSet(
|
|
1860
|
+
name,
|
|
1861
|
+
expression,
|
|
1862
|
+
timezone,
|
|
1863
|
+
actionName,
|
|
1864
|
+
toNapiBuffer(args),
|
|
1865
|
+
maxHistory
|
|
1866
|
+
);
|
|
1867
|
+
}
|
|
1868
|
+
async actorCronEvery(ctx, name, intervalMs, actionName, args, maxHistory) {
|
|
1869
|
+
await asNativeActorContext(ctx).schedule().cronEvery(
|
|
1870
|
+
name,
|
|
1871
|
+
intervalMs,
|
|
1872
|
+
actionName,
|
|
1873
|
+
toNapiBuffer(args),
|
|
1874
|
+
maxHistory
|
|
1875
|
+
);
|
|
1876
|
+
}
|
|
1877
|
+
async actorCronGet(ctx, name) {
|
|
1878
|
+
return await asNativeActorContext(ctx).schedule().cronGet(name) ?? void 0;
|
|
1879
|
+
}
|
|
1880
|
+
async actorCronList(ctx) {
|
|
1881
|
+
return await asNativeActorContext(ctx).schedule().cronList();
|
|
1882
|
+
}
|
|
1883
|
+
async actorCronDelete(ctx, name) {
|
|
1884
|
+
return await asNativeActorContext(ctx).schedule().cronDelete(name);
|
|
1705
1885
|
}
|
|
1706
|
-
|
|
1707
|
-
asNativeActorContext(ctx).schedule().
|
|
1886
|
+
async actorCronHistory(ctx, name, limit) {
|
|
1887
|
+
return await asNativeActorContext(ctx).schedule().cronHistory(name, limit);
|
|
1708
1888
|
}
|
|
1709
1889
|
connId(conn) {
|
|
1710
1890
|
return asNativeConn(conn).id();
|
|
@@ -2111,6 +2291,13 @@ var WasmCoreRuntime = class {
|
|
|
2111
2291
|
async actorSaveState(ctx, payload) {
|
|
2112
2292
|
await callHandleAsync(asWasmActorContext(ctx), "saveState", payload);
|
|
2113
2293
|
}
|
|
2294
|
+
async actorSaveStateAndWorkflowBatch(ctx, writes) {
|
|
2295
|
+
await callHandleAsync(
|
|
2296
|
+
asWasmActorContext(ctx),
|
|
2297
|
+
"saveStateAndWorkflowBatch",
|
|
2298
|
+
writes
|
|
2299
|
+
);
|
|
2300
|
+
}
|
|
2114
2301
|
actorId(ctx) {
|
|
2115
2302
|
return callHandle(asWasmActorContext(ctx), "actorId");
|
|
2116
2303
|
}
|
|
@@ -2257,6 +2444,38 @@ var WasmCoreRuntime = class {
|
|
|
2257
2444
|
);
|
|
2258
2445
|
return normalizeRuntimeSqlExecuteResult(result);
|
|
2259
2446
|
}
|
|
2447
|
+
async actorSqlExecuteBatch(ctx, statements) {
|
|
2448
|
+
const results = await callWasm(
|
|
2449
|
+
() => this.#actorSql(ctx).executeBatch(statements)
|
|
2450
|
+
);
|
|
2451
|
+
return results.map(normalizeRuntimeSqlExecuteResult);
|
|
2452
|
+
}
|
|
2453
|
+
async actorSqlBeginTransaction(ctx, timeoutMs) {
|
|
2454
|
+
return await callWasm(
|
|
2455
|
+
() => this.#actorSql(ctx).beginTransaction(timeoutMs)
|
|
2456
|
+
);
|
|
2457
|
+
}
|
|
2458
|
+
async actorSqlTransactionExec(transaction, sql) {
|
|
2459
|
+
return await callWasm(
|
|
2460
|
+
() => transaction.exec(sql)
|
|
2461
|
+
);
|
|
2462
|
+
}
|
|
2463
|
+
async actorSqlTransactionExecute(transaction, sql, params) {
|
|
2464
|
+
const result = await callWasm(
|
|
2465
|
+
() => transaction.execute(sql, params)
|
|
2466
|
+
);
|
|
2467
|
+
return normalizeRuntimeSqlExecuteResult(result);
|
|
2468
|
+
}
|
|
2469
|
+
async actorSqlTransactionCommit(transaction) {
|
|
2470
|
+
await callWasm(
|
|
2471
|
+
() => transaction.commit()
|
|
2472
|
+
);
|
|
2473
|
+
}
|
|
2474
|
+
async actorSqlTransactionRollback(transaction) {
|
|
2475
|
+
await callWasm(
|
|
2476
|
+
() => transaction.rollback()
|
|
2477
|
+
);
|
|
2478
|
+
}
|
|
2260
2479
|
async actorSqlQuery(ctx, sql, params) {
|
|
2261
2480
|
return await callWasm(() => this.#actorSql(ctx).query(sql, params));
|
|
2262
2481
|
}
|
|
@@ -2280,6 +2499,17 @@ var WasmCoreRuntime = class {
|
|
|
2280
2499
|
this.#sql.delete(wasmCtx);
|
|
2281
2500
|
await callWasm(() => database.close());
|
|
2282
2501
|
}
|
|
2502
|
+
async actorRuntimeSocketProvision(_ctx) {
|
|
2503
|
+
throw new RivetError(
|
|
2504
|
+
"actor_runtime_socket",
|
|
2505
|
+
"unsupported",
|
|
2506
|
+
"Actor Runtime Socket is only available on Unix native runtimes.",
|
|
2507
|
+
{
|
|
2508
|
+
public: true,
|
|
2509
|
+
metadata: { runtime: "wasm" }
|
|
2510
|
+
}
|
|
2511
|
+
);
|
|
2512
|
+
}
|
|
2283
2513
|
async actorQueueSend(ctx, name, body) {
|
|
2284
2514
|
const queue2 = childHandle(asWasmActorContext(ctx), "queue");
|
|
2285
2515
|
return normalizeQueueMessage(
|
|
@@ -2351,13 +2581,97 @@ var WasmCoreRuntime = class {
|
|
|
2351
2581
|
const queue2 = childHandle(asWasmActorContext(ctx), "queue");
|
|
2352
2582
|
await callHandleAsync(queue2, "reset");
|
|
2353
2583
|
}
|
|
2354
|
-
actorScheduleAfter(ctx, durationMs, actionName, args) {
|
|
2584
|
+
async actorScheduleAfter(ctx, durationMs, actionName, args) {
|
|
2585
|
+
const schedule = childHandle(asWasmActorContext(ctx), "schedule");
|
|
2586
|
+
return await callHandleAsync(
|
|
2587
|
+
schedule,
|
|
2588
|
+
"after",
|
|
2589
|
+
wasmNumber(durationMs),
|
|
2590
|
+
actionName,
|
|
2591
|
+
args
|
|
2592
|
+
);
|
|
2593
|
+
}
|
|
2594
|
+
async actorScheduleAt(ctx, timestampMs, actionName, args) {
|
|
2595
|
+
const schedule = childHandle(asWasmActorContext(ctx), "schedule");
|
|
2596
|
+
return await callHandleAsync(
|
|
2597
|
+
schedule,
|
|
2598
|
+
"at",
|
|
2599
|
+
wasmNumber(timestampMs),
|
|
2600
|
+
actionName,
|
|
2601
|
+
args
|
|
2602
|
+
);
|
|
2603
|
+
}
|
|
2604
|
+
async actorScheduleCancel(ctx, id) {
|
|
2605
|
+
const schedule = childHandle(asWasmActorContext(ctx), "schedule");
|
|
2606
|
+
return await callHandleAsync(schedule, "cancel", id);
|
|
2607
|
+
}
|
|
2608
|
+
async actorScheduleGet(ctx, id) {
|
|
2609
|
+
const schedule = childHandle(asWasmActorContext(ctx), "schedule");
|
|
2610
|
+
return await callHandleAsync(
|
|
2611
|
+
schedule,
|
|
2612
|
+
"get",
|
|
2613
|
+
id
|
|
2614
|
+
);
|
|
2615
|
+
}
|
|
2616
|
+
async actorScheduleList(ctx) {
|
|
2617
|
+
const schedule = childHandle(asWasmActorContext(ctx), "schedule");
|
|
2618
|
+
return await callHandleAsync(
|
|
2619
|
+
schedule,
|
|
2620
|
+
"list"
|
|
2621
|
+
);
|
|
2622
|
+
}
|
|
2623
|
+
async actorCronSet(ctx, name, expression, timezone, actionName, args, maxHistory) {
|
|
2624
|
+
const schedule = childHandle(asWasmActorContext(ctx), "schedule");
|
|
2625
|
+
await callHandleAsync(
|
|
2626
|
+
schedule,
|
|
2627
|
+
"cronSet",
|
|
2628
|
+
name,
|
|
2629
|
+
expression,
|
|
2630
|
+
timezone,
|
|
2631
|
+
actionName,
|
|
2632
|
+
args,
|
|
2633
|
+
maxHistory
|
|
2634
|
+
);
|
|
2635
|
+
}
|
|
2636
|
+
async actorCronEvery(ctx, name, intervalMs, actionName, args, maxHistory) {
|
|
2637
|
+
const schedule = childHandle(asWasmActorContext(ctx), "schedule");
|
|
2638
|
+
await callHandleAsync(
|
|
2639
|
+
schedule,
|
|
2640
|
+
"cronEvery",
|
|
2641
|
+
name,
|
|
2642
|
+
intervalMs,
|
|
2643
|
+
actionName,
|
|
2644
|
+
args,
|
|
2645
|
+
maxHistory
|
|
2646
|
+
);
|
|
2647
|
+
}
|
|
2648
|
+
async actorCronGet(ctx, name) {
|
|
2649
|
+
const schedule = childHandle(asWasmActorContext(ctx), "schedule");
|
|
2650
|
+
return await callHandleAsync(
|
|
2651
|
+
schedule,
|
|
2652
|
+
"cronGet",
|
|
2653
|
+
name
|
|
2654
|
+
);
|
|
2655
|
+
}
|
|
2656
|
+
async actorCronList(ctx) {
|
|
2657
|
+
const schedule = childHandle(asWasmActorContext(ctx), "schedule");
|
|
2658
|
+
return await callHandleAsync(
|
|
2659
|
+
schedule,
|
|
2660
|
+
"cronList"
|
|
2661
|
+
);
|
|
2662
|
+
}
|
|
2663
|
+
async actorCronDelete(ctx, name) {
|
|
2355
2664
|
const schedule = childHandle(asWasmActorContext(ctx), "schedule");
|
|
2356
|
-
|
|
2665
|
+
return await callHandleAsync(schedule, "cronDelete", name);
|
|
2357
2666
|
}
|
|
2358
|
-
|
|
2667
|
+
async actorCronHistory(ctx, name, limit) {
|
|
2359
2668
|
const schedule = childHandle(asWasmActorContext(ctx), "schedule");
|
|
2360
|
-
|
|
2669
|
+
return await callHandleAsync(
|
|
2670
|
+
schedule,
|
|
2671
|
+
"cronHistory",
|
|
2672
|
+
name,
|
|
2673
|
+
limit
|
|
2674
|
+
);
|
|
2361
2675
|
}
|
|
2362
2676
|
connId(conn) {
|
|
2363
2677
|
return callHandle(asWasmConn(conn), "id");
|
|
@@ -2697,6 +3011,23 @@ function getOrCreateNativeSqlDatabase(runtime, ctx) {
|
|
|
2697
3011
|
const database = wrapJsNativeDatabase({
|
|
2698
3012
|
exec: (sql) => runtime.actorSqlExec(ctx, sql),
|
|
2699
3013
|
execute: (sql, params) => runtime.actorSqlExecute(ctx, sql, params),
|
|
3014
|
+
executeBatch: (statements) => runtime.actorSqlExecuteBatch(ctx, statements),
|
|
3015
|
+
beginTransaction: async (timeoutMs) => {
|
|
3016
|
+
const transaction = await runtime.actorSqlBeginTransaction(
|
|
3017
|
+
ctx,
|
|
3018
|
+
timeoutMs
|
|
3019
|
+
);
|
|
3020
|
+
return {
|
|
3021
|
+
exec: (sql) => runtime.actorSqlTransactionExec(transaction, sql),
|
|
3022
|
+
execute: (sql, params) => runtime.actorSqlTransactionExecute(
|
|
3023
|
+
transaction,
|
|
3024
|
+
sql,
|
|
3025
|
+
params
|
|
3026
|
+
),
|
|
3027
|
+
commit: () => runtime.actorSqlTransactionCommit(transaction),
|
|
3028
|
+
rollback: () => runtime.actorSqlTransactionRollback(transaction)
|
|
3029
|
+
};
|
|
3030
|
+
},
|
|
2700
3031
|
query: (sql, params) => runtime.actorSqlQuery(ctx, sql, params),
|
|
2701
3032
|
run: (sql, params) => runtime.actorSqlRun(ctx, sql, params),
|
|
2702
3033
|
metrics: () => runtime.actorSqlMetrics(ctx),
|
|
@@ -3190,26 +3521,116 @@ var NativeScheduleAdapter = class {
|
|
|
3190
3521
|
this.#ctx = ctx;
|
|
3191
3522
|
}
|
|
3192
3523
|
async after(duration, action, ...args) {
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
encodeValue(args)
|
|
3199
|
-
)
|
|
3524
|
+
return await this.#runtime.actorScheduleAfter(
|
|
3525
|
+
this.#ctx,
|
|
3526
|
+
duration,
|
|
3527
|
+
action,
|
|
3528
|
+
encodeValue(args)
|
|
3200
3529
|
);
|
|
3201
3530
|
}
|
|
3202
3531
|
async at(timestamp, action, ...args) {
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
|
|
3532
|
+
return await this.#runtime.actorScheduleAt(
|
|
3533
|
+
this.#ctx,
|
|
3534
|
+
timestamp,
|
|
3535
|
+
action,
|
|
3536
|
+
encodeValue(args)
|
|
3537
|
+
);
|
|
3538
|
+
}
|
|
3539
|
+
async cancel(id) {
|
|
3540
|
+
return await this.#runtime.actorScheduleCancel(this.#ctx, id);
|
|
3541
|
+
}
|
|
3542
|
+
async get(id) {
|
|
3543
|
+
const event2 = await this.#runtime.actorScheduleGet(this.#ctx, id);
|
|
3544
|
+
return event2 ? decodeScheduledEventInfo(event2) : void 0;
|
|
3545
|
+
}
|
|
3546
|
+
async list() {
|
|
3547
|
+
return (await this.#runtime.actorScheduleList(this.#ctx)).map(
|
|
3548
|
+
decodeScheduledEventInfo
|
|
3549
|
+
);
|
|
3550
|
+
}
|
|
3551
|
+
};
|
|
3552
|
+
var NativeCronAdapter = class {
|
|
3553
|
+
#runtime;
|
|
3554
|
+
#ctx;
|
|
3555
|
+
constructor(runtime, ctx) {
|
|
3556
|
+
this.#runtime = runtime;
|
|
3557
|
+
this.#ctx = ctx;
|
|
3558
|
+
}
|
|
3559
|
+
async set(options) {
|
|
3560
|
+
await this.#runtime.actorCronSet(
|
|
3561
|
+
this.#ctx,
|
|
3562
|
+
options.name,
|
|
3563
|
+
options.expression,
|
|
3564
|
+
options.timezone,
|
|
3565
|
+
options.action,
|
|
3566
|
+
encodeValue(options.args ?? []),
|
|
3567
|
+
options.maxHistory
|
|
3210
3568
|
);
|
|
3211
3569
|
}
|
|
3570
|
+
async every(options) {
|
|
3571
|
+
await this.#runtime.actorCronEvery(
|
|
3572
|
+
this.#ctx,
|
|
3573
|
+
options.name,
|
|
3574
|
+
options.interval,
|
|
3575
|
+
options.action,
|
|
3576
|
+
encodeValue(options.args ?? []),
|
|
3577
|
+
options.maxHistory
|
|
3578
|
+
);
|
|
3579
|
+
}
|
|
3580
|
+
async get(name) {
|
|
3581
|
+
const job = await this.#runtime.actorCronGet(this.#ctx, name);
|
|
3582
|
+
return job ? decodeCronJobInfo(job) : void 0;
|
|
3583
|
+
}
|
|
3584
|
+
async list() {
|
|
3585
|
+
return (await this.#runtime.actorCronList(this.#ctx)).map(
|
|
3586
|
+
decodeCronJobInfo
|
|
3587
|
+
);
|
|
3588
|
+
}
|
|
3589
|
+
async delete(name) {
|
|
3590
|
+
return await this.#runtime.actorCronDelete(this.#ctx, name);
|
|
3591
|
+
}
|
|
3592
|
+
async history(name, options) {
|
|
3593
|
+
return (await this.#runtime.actorCronHistory(
|
|
3594
|
+
this.#ctx,
|
|
3595
|
+
name,
|
|
3596
|
+
options == null ? void 0 : options.limit
|
|
3597
|
+
)).map(decodeCronFire);
|
|
3598
|
+
}
|
|
3212
3599
|
};
|
|
3600
|
+
function decodeScheduledEventInfo(event2) {
|
|
3601
|
+
return {
|
|
3602
|
+
id: event2.id,
|
|
3603
|
+
action: event2.action,
|
|
3604
|
+
args: decodeArgs(event2.args),
|
|
3605
|
+
runAt: event2.runAt
|
|
3606
|
+
};
|
|
3607
|
+
}
|
|
3608
|
+
function decodeCronJobInfo(job) {
|
|
3609
|
+
const base = {
|
|
3610
|
+
name: job.name,
|
|
3611
|
+
action: job.action,
|
|
3612
|
+
args: decodeArgs(job.args),
|
|
3613
|
+
nextRunAt: job.nextRunAt,
|
|
3614
|
+
lastRunAt: job.lastRunAt,
|
|
3615
|
+
maxHistory: job.maxHistory
|
|
3616
|
+
};
|
|
3617
|
+
if (job.kind === "cron") {
|
|
3618
|
+
return {
|
|
3619
|
+
...base,
|
|
3620
|
+
kind: "cron",
|
|
3621
|
+
expression: job.expression,
|
|
3622
|
+
timezone: job.timezone
|
|
3623
|
+
};
|
|
3624
|
+
}
|
|
3625
|
+
return {
|
|
3626
|
+
...base,
|
|
3627
|
+
kind: "every",
|
|
3628
|
+
interval: job.intervalMs
|
|
3629
|
+
};
|
|
3630
|
+
}
|
|
3631
|
+
function decodeCronFire(fire) {
|
|
3632
|
+
return { ...fire };
|
|
3633
|
+
}
|
|
3213
3634
|
var NativeKvAdapter = class {
|
|
3214
3635
|
#runtime;
|
|
3215
3636
|
#ctx;
|
|
@@ -3990,6 +4411,7 @@ var ActorContextHandleAdapter = class {
|
|
|
3990
4411
|
#client;
|
|
3991
4412
|
#clientFactory;
|
|
3992
4413
|
#connMap;
|
|
4414
|
+
#cron;
|
|
3993
4415
|
#databaseProvider;
|
|
3994
4416
|
#db;
|
|
3995
4417
|
#dispatchCancelToken;
|
|
@@ -4030,6 +4452,11 @@ var ActorContextHandleAdapter = class {
|
|
|
4030
4452
|
}
|
|
4031
4453
|
return this.#sql;
|
|
4032
4454
|
}
|
|
4455
|
+
async actorRuntimeSocket() {
|
|
4456
|
+
return await callNative(
|
|
4457
|
+
() => this.#runtime.actorRuntimeSocketProvision(this.#ctx)
|
|
4458
|
+
);
|
|
4459
|
+
}
|
|
4033
4460
|
get db() {
|
|
4034
4461
|
if (!this.#databaseProvider) {
|
|
4035
4462
|
throw databaseNotConfiguredError();
|
|
@@ -4119,6 +4546,12 @@ var ActorContextHandleAdapter = class {
|
|
|
4119
4546
|
}
|
|
4120
4547
|
return this.#schedule;
|
|
4121
4548
|
}
|
|
4549
|
+
get cron() {
|
|
4550
|
+
if (!this.#cron) {
|
|
4551
|
+
this.#cron = new NativeCronAdapter(this.#runtime, this.#ctx);
|
|
4552
|
+
}
|
|
4553
|
+
return this.#cron;
|
|
4554
|
+
}
|
|
4122
4555
|
get actorId() {
|
|
4123
4556
|
return callNativeSync(() => this.#runtime.actorId(this.#ctx));
|
|
4124
4557
|
}
|
|
@@ -4303,6 +4736,11 @@ var ActorContextHandleAdapter = class {
|
|
|
4303
4736
|
() => this.#runtime.actorRequestSave(this.#ctx, { immediate: false })
|
|
4304
4737
|
);
|
|
4305
4738
|
}
|
|
4739
|
+
async saveStateAndWorkflowBatch(writes) {
|
|
4740
|
+
await callNative(
|
|
4741
|
+
() => this.#runtime.actorSaveStateAndWorkflowBatch(this.#ctx, writes)
|
|
4742
|
+
);
|
|
4743
|
+
}
|
|
4306
4744
|
serializeForTick(reason) {
|
|
4307
4745
|
void reason;
|
|
4308
4746
|
const actorState = getNativePersistState(this.#runtime, this.#ctx);
|
|
@@ -4617,6 +5055,9 @@ var NativeWorkflowRuntimeAdapter = class {
|
|
|
4617
5055
|
this.stateManager = {
|
|
4618
5056
|
saveState: async (opts) => {
|
|
4619
5057
|
await this.#ctx.saveState(opts);
|
|
5058
|
+
},
|
|
5059
|
+
saveStateAndWorkflowBatch: async (writes) => {
|
|
5060
|
+
await this.#ctx.saveStateAndWorkflowBatch(writes);
|
|
4620
5061
|
}
|
|
4621
5062
|
};
|
|
4622
5063
|
}
|
|
@@ -4686,11 +5127,13 @@ function buildActorConfig(definition, registryConfig, runtimeKind) {
|
|
|
4686
5127
|
const config = definition.config;
|
|
4687
5128
|
const options = config.options ?? {};
|
|
4688
5129
|
const canHibernate = options.canHibernateWebSocket;
|
|
5130
|
+
const usesRemoteSqlite = sqliteBackendForConfig(registryConfig) === "remote";
|
|
4689
5131
|
return {
|
|
4690
5132
|
name: options.name,
|
|
4691
5133
|
icon: options.icon,
|
|
4692
|
-
hasDatabase: config.db !== void 0,
|
|
4693
|
-
remoteSqlite:
|
|
5134
|
+
hasDatabase: config.db !== void 0 || usesRemoteSqlite,
|
|
5135
|
+
remoteSqlite: usesRemoteSqlite,
|
|
5136
|
+
enableActorRuntimeSocket: options.enableActorRuntimeSocket === true,
|
|
4694
5137
|
hasState: config.state !== void 0 || typeof config.createState === "function",
|
|
4695
5138
|
canHibernateWebsocket: typeof canHibernate === "boolean" ? canHibernate : void 0,
|
|
4696
5139
|
stateSaveIntervalMs: options.stateSaveInterval,
|
|
@@ -4706,6 +5149,7 @@ function buildActorConfig(definition, registryConfig, runtimeKind) {
|
|
|
4706
5149
|
connectionLivenessTimeoutMs: options.connectionLivenessTimeout,
|
|
4707
5150
|
connectionLivenessIntervalMs: options.connectionLivenessInterval,
|
|
4708
5151
|
maxQueueSize: options.maxQueueSize,
|
|
5152
|
+
maxSchedules: options.maxSchedules,
|
|
4709
5153
|
maxQueueMessageSize: options.maxQueueMessageSize,
|
|
4710
5154
|
maxIncomingMessageSize: registryConfig.maxIncomingMessageSize,
|
|
4711
5155
|
maxOutgoingMessageSize: registryConfig.maxOutgoingMessageSize,
|
|
@@ -4982,7 +5426,9 @@ function buildNativeFactory(runtime, registryConfig, definition) {
|
|
|
4982
5426
|
400
|
|
4983
5427
|
);
|
|
4984
5428
|
}
|
|
4985
|
-
const cbor = encodeCborCompat(
|
|
5429
|
+
const cbor = encodeCborCompat(
|
|
5430
|
+
body.body ?? null
|
|
5431
|
+
);
|
|
4986
5432
|
const message = await runtime.actorQueueSend(ctx, name, cbor);
|
|
4987
5433
|
return jsonResponse({
|
|
4988
5434
|
id: message.id().toString(),
|
|
@@ -5675,7 +6121,7 @@ function buildNativeFactory(runtime, registryConfig, definition) {
|
|
|
5675
6121
|
name,
|
|
5676
6122
|
wrapNativeCallback(
|
|
5677
6123
|
async (error, payload) => {
|
|
5678
|
-
const { ctx, conn, args, cancelToken } = unwrapTsfnPayload(error, payload);
|
|
6124
|
+
const { ctx, conn, args, scheduledFire, cancelToken } = unwrapTsfnPayload(error, payload);
|
|
5679
6125
|
const actorCtx = conn != null ? makeConnCtx(ctx, conn, void 0, cancelToken) : makeActorCtx(ctx, void 0, cancelToken);
|
|
5680
6126
|
try {
|
|
5681
6127
|
return encodeValue(
|
|
@@ -5685,7 +6131,8 @@ function buildNativeFactory(runtime, registryConfig, definition) {
|
|
|
5685
6131
|
schemaConfig.actionInputSchemas,
|
|
5686
6132
|
name,
|
|
5687
6133
|
decodeArgs(args)
|
|
5688
|
-
)
|
|
6134
|
+
),
|
|
6135
|
+
...scheduledFire ? [scheduledFire] : []
|
|
5689
6136
|
)
|
|
5690
6137
|
);
|
|
5691
6138
|
} finally {
|