rivetkit 2.0.42 → 2.1.0-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/{tsup/config-CLnylLYY.d.ts → browser/client.d.ts} +2127 -1910
- package/dist/browser/client.js +5182 -0
- package/dist/browser/client.js.map +1 -0
- package/dist/browser/inspector/client.d.ts +130 -0
- package/dist/browser/inspector/client.js +2854 -0
- package/dist/browser/inspector/client.js.map +1 -0
- package/dist/browser/v3-DnYObHH3.d.ts +279 -0
- package/dist/schemas/actor-inspector/v2.ts +796 -0
- package/dist/schemas/actor-inspector/v3.ts +899 -0
- package/dist/schemas/actor-persist/v4.ts +406 -0
- package/dist/schemas/client-protocol/v3.ts +554 -0
- package/dist/schemas/persist/v1.ts +781 -0
- package/dist/schemas/transport/v1.ts +697 -0
- package/dist/tsup/actor/errors.cjs +27 -3
- package/dist/tsup/actor/errors.cjs.map +1 -1
- package/dist/tsup/actor/errors.d.cts +37 -1
- package/dist/tsup/actor/errors.d.ts +37 -1
- package/dist/tsup/actor/errors.js +26 -1
- package/dist/tsup/{actor-router-consts-DzI2szci.d.cts → actor-router-consts-D29T1Z-K.d.cts} +1 -1
- package/dist/tsup/{actor-router-consts-DzI2szci.d.ts → actor-router-consts-D29T1Z-K.d.ts} +1 -1
- package/dist/tsup/chunk-424PT5DM.js +23 -0
- package/dist/tsup/chunk-424PT5DM.js.map +1 -0
- package/dist/tsup/{chunk-JDAD2YFA.js → chunk-5ESWDTHJ.js} +148 -273
- package/dist/tsup/chunk-5ESWDTHJ.js.map +1 -0
- package/dist/tsup/{chunk-FJ3KTN4V.js → chunk-6LIBPELE.js} +119 -11
- package/dist/tsup/chunk-6LIBPELE.js.map +1 -0
- package/dist/tsup/chunk-6LJAZ5R4.cjs +96 -0
- package/dist/tsup/chunk-6LJAZ5R4.cjs.map +1 -0
- package/dist/tsup/{chunk-LFVF5SCU.js → chunk-7HTNH26M.js} +126 -1
- package/dist/tsup/chunk-7HTNH26M.js.map +1 -0
- package/dist/tsup/chunk-7K4CYDGD.js +630 -0
- package/dist/tsup/chunk-7K4CYDGD.js.map +1 -0
- package/dist/tsup/{chunk-XXGJCOL6.js → chunk-A6YIZWTK.js} +2 -2
- package/dist/tsup/chunk-AIYEYMX5.cjs +630 -0
- package/dist/tsup/chunk-AIYEYMX5.cjs.map +1 -0
- package/dist/tsup/{chunk-Q6W7RJJP.js → chunk-DIGBC2VI.js} +211 -2316
- package/dist/tsup/chunk-DIGBC2VI.js.map +1 -0
- package/dist/tsup/{chunk-RZW2DNND.cjs → chunk-F6JYU5IK.cjs} +1957 -1039
- package/dist/tsup/chunk-F6JYU5IK.cjs.map +1 -0
- package/dist/tsup/chunk-HAZL2EPK.cjs +534 -0
- package/dist/tsup/chunk-HAZL2EPK.cjs.map +1 -0
- package/dist/tsup/chunk-HDQ2JUQT.cjs +23 -0
- package/dist/tsup/chunk-HDQ2JUQT.cjs.map +1 -0
- package/dist/tsup/chunk-HIDX4C5Y.cjs +1036 -0
- package/dist/tsup/chunk-HIDX4C5Y.cjs.map +1 -0
- package/dist/tsup/chunk-IVG73YCW.js +534 -0
- package/dist/tsup/chunk-IVG73YCW.js.map +1 -0
- package/dist/tsup/chunk-KJSYAUOM.js +96 -0
- package/dist/tsup/chunk-KJSYAUOM.js.map +1 -0
- package/dist/tsup/{chunk-2XQS746M.cjs → chunk-L47L3ZWJ.cjs} +127 -2
- package/dist/tsup/chunk-L47L3ZWJ.cjs.map +1 -0
- package/dist/tsup/{chunk-H4TB4X25.cjs → chunk-LW6KLR7A.cjs} +126 -18
- package/dist/tsup/chunk-LW6KLR7A.cjs.map +1 -0
- package/dist/tsup/chunk-LXUQ667X.js +2006 -0
- package/dist/tsup/chunk-LXUQ667X.js.map +1 -0
- package/dist/tsup/{chunk-GMAVRZSF.js → chunk-M2T62AZQ.js} +1790 -872
- package/dist/tsup/chunk-M2T62AZQ.js.map +1 -0
- package/dist/tsup/chunk-MZ37VV3P.js +5974 -0
- package/dist/tsup/chunk-MZ37VV3P.js.map +1 -0
- package/dist/tsup/chunk-N4KRDJ56.js +72 -0
- package/dist/tsup/chunk-N4KRDJ56.js.map +1 -0
- package/dist/tsup/chunk-NIYZDWMW.cjs +2006 -0
- package/dist/tsup/chunk-NIYZDWMW.cjs.map +1 -0
- package/dist/tsup/chunk-OMEPCQK2.js +649 -0
- package/dist/tsup/chunk-OMEPCQK2.js.map +1 -0
- package/dist/tsup/chunk-SR3KQE7Q.cjs +72 -0
- package/dist/tsup/chunk-SR3KQE7Q.cjs.map +1 -0
- package/dist/tsup/chunk-SSEP6DHP.cjs +2657 -0
- package/dist/tsup/chunk-SSEP6DHP.cjs.map +1 -0
- package/dist/tsup/chunk-T5YCUGVS.js +1036 -0
- package/dist/tsup/chunk-T5YCUGVS.js.map +1 -0
- package/dist/tsup/{chunk-EJVBH5VF.cjs → chunk-TPGXWFQT.cjs} +3 -3
- package/dist/tsup/{chunk-EJVBH5VF.cjs.map → chunk-TPGXWFQT.cjs.map} +1 -1
- package/dist/tsup/{chunk-X35U3YNX.cjs → chunk-TYLXNCA5.cjs} +214 -339
- package/dist/tsup/chunk-TYLXNCA5.cjs.map +1 -0
- package/dist/tsup/chunk-VKVNIQRQ.js +257 -0
- package/dist/tsup/chunk-VKVNIQRQ.js.map +1 -0
- package/dist/tsup/chunk-XWBAQO5H.cjs +649 -0
- package/dist/tsup/chunk-XWBAQO5H.cjs.map +1 -0
- package/dist/tsup/chunk-YQ4LDVD6.cjs +5974 -0
- package/dist/tsup/chunk-YQ4LDVD6.cjs.map +1 -0
- package/dist/tsup/chunk-ZFY5J2EP.cjs +257 -0
- package/dist/tsup/chunk-ZFY5J2EP.cjs.map +1 -0
- package/dist/tsup/client/mod.cjs +9 -10
- package/dist/tsup/client/mod.cjs.map +1 -1
- package/dist/tsup/client/mod.d.cts +11 -5
- package/dist/tsup/client/mod.d.ts +11 -5
- package/dist/tsup/client/mod.js +8 -8
- package/dist/tsup/common/log.cjs +4 -4
- package/dist/tsup/common/log.d.cts +2 -2
- package/dist/tsup/common/log.d.ts +2 -2
- package/dist/tsup/common/log.js +3 -2
- package/dist/tsup/common/websocket.cjs +5 -5
- package/dist/tsup/common/websocket.js +4 -3
- package/dist/tsup/config-BFqid9Gr.d.ts +2574 -0
- package/dist/tsup/config-BiNoIHRs.d.cts +80 -0
- package/dist/tsup/config-BiNoIHRs.d.ts +80 -0
- package/dist/tsup/{config-CZB2-W8x.d.cts → config-CAZphOS1.d.cts} +681 -355
- package/dist/tsup/db/drizzle/mod.cjs +49 -0
- package/dist/tsup/db/drizzle/mod.cjs.map +1 -0
- package/dist/tsup/db/drizzle/mod.d.cts +17 -0
- package/dist/tsup/db/drizzle/mod.d.ts +17 -0
- package/dist/tsup/db/drizzle/mod.js +49 -0
- package/dist/tsup/db/drizzle/mod.js.map +1 -0
- package/dist/tsup/db/mod.cjs +9 -0
- package/dist/tsup/db/mod.cjs.map +1 -0
- package/dist/tsup/db/mod.d.cts +9 -0
- package/dist/tsup/db/mod.d.ts +9 -0
- package/dist/tsup/db/mod.js +9 -0
- package/dist/tsup/db/mod.js.map +1 -0
- package/dist/tsup/{driver-D0QX9M11.d.ts → driver-Bxv62E2p.d.ts} +2 -2
- package/dist/tsup/{driver-q-zqG7fc.d.cts → driver-DYXwJR5D.d.cts} +2 -2
- package/dist/tsup/driver-helpers/mod.cjs +12 -6
- package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
- package/dist/tsup/driver-helpers/mod.d.cts +12 -5
- package/dist/tsup/driver-helpers/mod.d.ts +12 -5
- package/dist/tsup/driver-helpers/mod.js +12 -5
- package/dist/tsup/driver-test-suite/mod.cjs +1370 -116
- package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/driver-test-suite/mod.d.cts +10 -4
- package/dist/tsup/driver-test-suite/mod.d.ts +10 -4
- package/dist/tsup/driver-test-suite/mod.js +2093 -838
- package/dist/tsup/driver-test-suite/mod.js.map +1 -1
- package/dist/tsup/inspector/mod.cjs +29 -3
- package/dist/tsup/inspector/mod.cjs.map +1 -1
- package/dist/tsup/inspector/mod.d.cts +124 -3
- package/dist/tsup/inspector/mod.d.ts +124 -3
- package/dist/tsup/inspector/mod.js +72 -45
- package/dist/tsup/keys-CydblqMh.d.cts +13 -0
- package/dist/tsup/keys-CydblqMh.d.ts +13 -0
- package/dist/tsup/mod.cjs +16 -10
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +26 -14
- package/dist/tsup/mod.d.ts +26 -14
- package/dist/tsup/mod.js +20 -13
- package/dist/tsup/serve-test-suite/mod.cjs +1165 -83
- package/dist/tsup/serve-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/serve-test-suite/mod.js +1114 -29
- package/dist/tsup/serve-test-suite/mod.js.map +1 -1
- package/dist/tsup/test/mod.cjs +84 -11
- package/dist/tsup/test/mod.cjs.map +1 -1
- package/dist/tsup/test/mod.d.cts +10 -5
- package/dist/tsup/test/mod.d.ts +10 -5
- package/dist/tsup/test/mod.js +85 -11
- package/dist/tsup/test/mod.js.map +1 -1
- package/dist/tsup/utils.cjs +10 -4
- package/dist/tsup/utils.cjs.map +1 -1
- package/dist/tsup/utils.d.cts +72 -2
- package/dist/tsup/utils.d.ts +72 -2
- package/dist/tsup/utils.js +9 -2
- package/dist/tsup/v3-DnYObHH3.d.cts +279 -0
- package/dist/tsup/v3-DnYObHH3.d.ts +279 -0
- package/dist/tsup/workflow/mod.cjs +16 -0
- package/dist/tsup/workflow/mod.cjs.map +1 -0
- package/dist/tsup/workflow/mod.d.cts +83 -0
- package/dist/tsup/workflow/mod.d.ts +83 -0
- package/dist/tsup/workflow/mod.js +16 -0
- package/dist/tsup/workflow/mod.js.map +1 -0
- package/package.json +62 -5
- package/src/actor/config.ts +478 -68
- package/src/actor/conn/mod.ts +68 -16
- package/src/actor/conn/state-manager.ts +2 -2
- package/src/actor/contexts/action.ts +20 -12
- package/src/actor/contexts/base/actor.ts +137 -7
- package/src/actor/contexts/base/conn-init.ts +27 -7
- package/src/actor/contexts/base/conn.ts +27 -18
- package/src/actor/contexts/before-action-response.ts +9 -2
- package/src/actor/contexts/before-connect.ts +7 -2
- package/src/actor/contexts/connect.ts +9 -2
- package/src/actor/contexts/create-conn-state.ts +7 -2
- package/src/actor/contexts/create-vars.ts +16 -3
- package/src/actor/contexts/create.ts +16 -3
- package/src/actor/contexts/destroy.ts +9 -3
- package/src/actor/contexts/disconnect.ts +10 -4
- package/src/actor/contexts/index.ts +4 -3
- package/src/actor/contexts/request.ts +23 -6
- package/src/actor/contexts/run.ts +47 -0
- package/src/actor/contexts/sleep.ts +9 -3
- package/src/actor/contexts/state-change.ts +9 -3
- package/src/actor/contexts/wake.ts +9 -3
- package/src/actor/contexts/websocket.ts +23 -6
- package/src/actor/database.ts +8 -18
- package/src/actor/definition.ts +20 -6
- package/src/actor/driver.ts +32 -3
- package/src/actor/errors.ts +127 -0
- package/src/actor/instance/connection-manager.ts +183 -80
- package/src/actor/instance/event-manager.ts +26 -15
- package/src/actor/instance/keys.ts +117 -0
- package/src/actor/instance/mod.ts +784 -174
- package/src/actor/instance/queue-manager.ts +603 -0
- package/src/actor/instance/queue.ts +287 -0
- package/src/actor/instance/schedule-manager.ts +49 -7
- package/src/actor/instance/state-manager.ts +35 -11
- package/src/actor/instance/traces-driver.ts +128 -0
- package/src/actor/mod.ts +26 -2
- package/src/actor/protocol/old.ts +28 -13
- package/src/actor/protocol/serde.ts +1 -1
- package/src/actor/router-endpoints.ts +177 -21
- package/src/actor/router-websocket-endpoints.ts +18 -29
- package/src/actor/router.ts +177 -0
- package/src/actor/schema.ts +291 -0
- package/src/actor/utils.ts +40 -0
- package/src/client/actor-common.ts +1 -1
- package/src/client/actor-conn.ts +100 -33
- package/src/client/actor-handle.ts +61 -33
- package/src/client/client.ts +2 -4
- package/src/client/config.ts +1 -1
- package/src/client/mod.browser.ts +2 -0
- package/src/client/mod.ts +1 -4
- package/src/client/queue.ts +146 -0
- package/src/client/utils.ts +1 -1
- package/src/common/log.ts +1 -1
- package/src/common/utils.ts +3 -3
- package/src/db/config.ts +100 -0
- package/src/db/drizzle/mod.ts +226 -0
- package/src/db/drizzle/sqlite-core.ts +22 -0
- package/src/db/mod.ts +125 -0
- package/src/db/shared.ts +92 -0
- package/src/db/sqlite-vfs.ts +12 -0
- package/src/driver-helpers/mod.ts +1 -0
- package/src/driver-test-suite/mod.ts +69 -43
- package/src/driver-test-suite/tests/access-control.ts +218 -0
- package/src/driver-test-suite/tests/actor-db-raw.ts +73 -0
- package/src/driver-test-suite/tests/actor-db.ts +394 -0
- package/src/driver-test-suite/tests/actor-inspector.ts +259 -358
- package/src/driver-test-suite/tests/actor-kv.ts +41 -20
- package/src/driver-test-suite/tests/actor-queue.ts +324 -0
- package/src/driver-test-suite/tests/actor-run.ts +181 -0
- package/src/driver-test-suite/tests/actor-schedule.ts +5 -2
- package/src/driver-test-suite/tests/actor-sleep.ts +3 -3
- package/src/driver-test-suite/tests/actor-stateless.ts +70 -0
- package/src/driver-test-suite/tests/actor-workflow.ts +108 -0
- package/src/driver-test-suite/tests/manager-driver.ts +11 -0
- package/src/driver-test-suite/tests/raw-http-request-properties.ts +1 -1
- package/src/driver-test-suite/tests/raw-websocket.ts +12 -12
- package/src/drivers/default.ts +7 -2
- package/src/drivers/engine/actor-driver.ts +45 -37
- package/src/drivers/engine/config.ts +1 -1
- package/src/drivers/file-system/actor.ts +20 -2
- package/src/drivers/file-system/global-state.ts +569 -258
- package/src/drivers/file-system/kv-limits.ts +70 -0
- package/src/drivers/file-system/manager.ts +22 -6
- package/src/drivers/file-system/mod.ts +39 -16
- package/src/drivers/file-system/sqlite-runtime.ts +210 -0
- package/src/inspector/actor-inspector.ts +224 -102
- package/src/inspector/config.ts +1 -1
- package/src/inspector/handler.ts +102 -20
- package/src/inspector/mod.browser.ts +8 -0
- package/src/inspector/mod.ts +2 -0
- package/src/inspector/serve-ui.ts +40 -0
- package/src/inspector/transport.ts +18 -0
- package/src/inspector/utils.ts +5 -39
- package/src/manager/gateway.ts +1 -1
- package/src/manager/protocol/mod.ts +1 -1
- package/src/manager/protocol/query.ts +1 -1
- package/src/manager/router-schema.ts +1 -1
- package/src/manager/router.ts +38 -12
- package/src/manager-api/actors.ts +1 -1
- package/src/manager-api/common.ts +1 -1
- package/src/registry/config/driver.ts +1 -1
- package/src/registry/config/index.ts +212 -43
- package/src/registry/config/legacy-runner.ts +1 -1
- package/src/registry/config/runner.ts +1 -1
- package/src/registry/config/serverless.ts +1 -1
- package/src/registry/index.ts +7 -5
- package/src/remote-manager-driver/api-utils.ts +1 -1
- package/src/schemas/actor-inspector/mod.ts +1 -1
- package/src/schemas/actor-inspector/versioned.ts +195 -8
- package/src/schemas/actor-persist/versioned.ts +87 -7
- package/src/schemas/client-protocol/mod.ts +1 -1
- package/src/schemas/client-protocol/versioned.ts +127 -11
- package/src/schemas/client-protocol-zod/mod.ts +16 -1
- package/src/schemas/persist/mod.ts +1 -0
- package/src/schemas/transport/mod.ts +1 -0
- package/src/serde.ts +1 -1
- package/src/serve-test-suite/mod.ts +10 -9
- package/src/test/mod.ts +15 -56
- package/src/utils/endpoint-parser.test.ts +1 -1
- package/src/utils/endpoint-parser.ts +1 -1
- package/src/utils/env-vars.ts +12 -1
- package/src/utils/node.ts +15 -2
- package/src/utils.test.ts +34 -0
- package/src/utils.ts +140 -6
- package/src/workflow/constants.ts +2 -0
- package/src/workflow/context.ts +532 -0
- package/src/workflow/driver.ts +191 -0
- package/src/workflow/inspector.ts +268 -0
- package/src/workflow/mod.ts +122 -0
- package/dist/tsup/chunk-2IJTYN6K.cjs +0 -278
- package/dist/tsup/chunk-2IJTYN6K.cjs.map +0 -1
- package/dist/tsup/chunk-2XQS746M.cjs.map +0 -1
- package/dist/tsup/chunk-3VP5CSHV.cjs +0 -114
- package/dist/tsup/chunk-3VP5CSHV.cjs.map +0 -1
- package/dist/tsup/chunk-AQFSQMBG.js +0 -114
- package/dist/tsup/chunk-AQFSQMBG.js.map +0 -1
- package/dist/tsup/chunk-E6ZE2YEA.js +0 -664
- package/dist/tsup/chunk-E6ZE2YEA.js.map +0 -1
- package/dist/tsup/chunk-FJ3KTN4V.js.map +0 -1
- package/dist/tsup/chunk-GBENOENJ.cjs +0 -8
- package/dist/tsup/chunk-GBENOENJ.cjs.map +0 -1
- package/dist/tsup/chunk-GD7UXGOE.cjs +0 -4762
- package/dist/tsup/chunk-GD7UXGOE.cjs.map +0 -1
- package/dist/tsup/chunk-GMAVRZSF.js.map +0 -1
- package/dist/tsup/chunk-H4TB4X25.cjs.map +0 -1
- package/dist/tsup/chunk-JDAD2YFA.js.map +0 -1
- package/dist/tsup/chunk-KCOVZOPS.js +0 -1946
- package/dist/tsup/chunk-KCOVZOPS.js.map +0 -1
- package/dist/tsup/chunk-KDFWJKMJ.cjs +0 -664
- package/dist/tsup/chunk-KDFWJKMJ.cjs.map +0 -1
- package/dist/tsup/chunk-LFVF5SCU.js.map +0 -1
- package/dist/tsup/chunk-Q6W7RJJP.js.map +0 -1
- package/dist/tsup/chunk-RUW5CZ5Z.cjs +0 -1949
- package/dist/tsup/chunk-RUW5CZ5Z.cjs.map +0 -1
- package/dist/tsup/chunk-RZW2DNND.cjs.map +0 -1
- package/dist/tsup/chunk-TCOEBUUE.js +0 -278
- package/dist/tsup/chunk-TCOEBUUE.js.map +0 -1
- package/dist/tsup/chunk-X35U3YNX.cjs.map +0 -1
- package/dist/tsup/keys-Chhy4ylv.d.cts +0 -8
- package/dist/tsup/keys-Chhy4ylv.d.ts +0 -8
- package/dist/tsup/v1-Gq4avTK3.d.cts +0 -240
- package/dist/tsup/v1-Gq4avTK3.d.ts +0 -240
- /package/dist/tsup/{chunk-XXGJCOL6.js.map → chunk-A6YIZWTK.js.map} +0 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import * as cbor from "cbor-x";
|
|
2
|
+
import { createNanoEvents } from "nanoevents";
|
|
3
|
+
import type {
|
|
4
|
+
BranchStatus,
|
|
5
|
+
BranchStatusType,
|
|
6
|
+
EntryKind,
|
|
7
|
+
EntryStatus,
|
|
8
|
+
Location,
|
|
9
|
+
SleepState,
|
|
10
|
+
WorkflowHistoryEntry,
|
|
11
|
+
WorkflowHistorySnapshot,
|
|
12
|
+
WorkflowEntryMetadataSnapshot,
|
|
13
|
+
} from "@rivetkit/workflow-engine";
|
|
14
|
+
import { encodeWorkflowHistoryTransport } from "@/inspector/transport";
|
|
15
|
+
import type * as inspectorSchema from "@/schemas/actor-inspector/mod";
|
|
16
|
+
import * as transport from "@/schemas/transport/mod";
|
|
17
|
+
import { assertUnreachable, bufferToArrayBuffer } from "@/utils";
|
|
18
|
+
|
|
19
|
+
export interface WorkflowInspectorAdapter {
|
|
20
|
+
getHistory: () => inspectorSchema.WorkflowHistory | null;
|
|
21
|
+
onHistoryUpdated: (
|
|
22
|
+
listener: (history: inspectorSchema.WorkflowHistory) => void,
|
|
23
|
+
) => () => void;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function createWorkflowInspectorAdapter(): {
|
|
27
|
+
adapter: WorkflowInspectorAdapter;
|
|
28
|
+
update: (snapshot: WorkflowHistorySnapshot) => void;
|
|
29
|
+
} {
|
|
30
|
+
const emitter = createNanoEvents<{
|
|
31
|
+
updated: (history: inspectorSchema.WorkflowHistory) => void;
|
|
32
|
+
}>();
|
|
33
|
+
let history: inspectorSchema.WorkflowHistory | null = null;
|
|
34
|
+
|
|
35
|
+
const adapter: WorkflowInspectorAdapter = {
|
|
36
|
+
getHistory: () => history,
|
|
37
|
+
onHistoryUpdated: (listener) => emitter.on("updated", listener),
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const update = (snapshot: WorkflowHistorySnapshot) => {
|
|
41
|
+
const transportHistory = toWorkflowHistory(snapshot);
|
|
42
|
+
const next = encodeWorkflowHistoryTransport(transportHistory);
|
|
43
|
+
history = next;
|
|
44
|
+
emitter.emit("updated", next);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
return { adapter, update };
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function encodeCbor(value: unknown): ArrayBuffer {
|
|
51
|
+
return bufferToArrayBuffer(cbor.encode(value));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function encodeOptionalCbor(value: unknown): ArrayBuffer | null {
|
|
55
|
+
if (value === undefined) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
return encodeCbor(value);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function toU64(value: number): bigint {
|
|
62
|
+
return BigInt(Math.max(0, Math.floor(value)));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function toWorkflowLocation(
|
|
66
|
+
location: Location,
|
|
67
|
+
): transport.WorkflowLocation {
|
|
68
|
+
return location.map((segment) => {
|
|
69
|
+
if (typeof segment === "number") {
|
|
70
|
+
return { tag: "WorkflowNameIndex", val: segment };
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
tag: "WorkflowLoopIterationMarker",
|
|
74
|
+
val: {
|
|
75
|
+
loop: segment.loop,
|
|
76
|
+
iteration: segment.iteration,
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function toWorkflowEntryKind(
|
|
83
|
+
kind: EntryKind,
|
|
84
|
+
): transport.WorkflowEntryKind {
|
|
85
|
+
switch (kind.type) {
|
|
86
|
+
case "step":
|
|
87
|
+
return {
|
|
88
|
+
tag: "WorkflowStepEntry",
|
|
89
|
+
val: {
|
|
90
|
+
output: encodeOptionalCbor(kind.data.output),
|
|
91
|
+
error: kind.data.error ?? null,
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
case "loop":
|
|
95
|
+
return {
|
|
96
|
+
tag: "WorkflowLoopEntry",
|
|
97
|
+
val: {
|
|
98
|
+
state: encodeCbor(kind.data.state),
|
|
99
|
+
iteration: kind.data.iteration,
|
|
100
|
+
output: encodeOptionalCbor(kind.data.output),
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
case "sleep":
|
|
104
|
+
return {
|
|
105
|
+
tag: "WorkflowSleepEntry",
|
|
106
|
+
val: {
|
|
107
|
+
deadline: toU64(kind.data.deadline),
|
|
108
|
+
state: toWorkflowSleepState(kind.data.state),
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
case "message":
|
|
112
|
+
return {
|
|
113
|
+
tag: "WorkflowMessageEntry",
|
|
114
|
+
val: {
|
|
115
|
+
name: kind.data.name,
|
|
116
|
+
messageData: encodeCbor(kind.data.data),
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
case "rollback_checkpoint":
|
|
120
|
+
return {
|
|
121
|
+
tag: "WorkflowRollbackCheckpointEntry",
|
|
122
|
+
val: { name: kind.data.name },
|
|
123
|
+
};
|
|
124
|
+
case "join":
|
|
125
|
+
return {
|
|
126
|
+
tag: "WorkflowJoinEntry",
|
|
127
|
+
val: { branches: toWorkflowBranchStatusMap(kind.data.branches) },
|
|
128
|
+
};
|
|
129
|
+
case "race":
|
|
130
|
+
return {
|
|
131
|
+
tag: "WorkflowRaceEntry",
|
|
132
|
+
val: {
|
|
133
|
+
winner: kind.data.winner ?? null,
|
|
134
|
+
branches: toWorkflowBranchStatusMap(kind.data.branches),
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
case "removed":
|
|
138
|
+
return {
|
|
139
|
+
tag: "WorkflowRemovedEntry",
|
|
140
|
+
val: {
|
|
141
|
+
originalType: kind.data.originalType,
|
|
142
|
+
originalName: kind.data.originalName ?? null,
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
default:
|
|
146
|
+
assertUnreachable(kind as never);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
function toWorkflowEntry(
|
|
151
|
+
entry: WorkflowHistoryEntry,
|
|
152
|
+
): transport.WorkflowEntry {
|
|
153
|
+
return {
|
|
154
|
+
id: entry.id,
|
|
155
|
+
location: toWorkflowLocation(entry.location),
|
|
156
|
+
kind: toWorkflowEntryKind(entry.kind),
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
function toWorkflowEntryStatus(
|
|
161
|
+
status: EntryStatus,
|
|
162
|
+
): transport.WorkflowEntryStatus {
|
|
163
|
+
switch (status) {
|
|
164
|
+
case "pending":
|
|
165
|
+
return transport.WorkflowEntryStatus.PENDING;
|
|
166
|
+
case "running":
|
|
167
|
+
return transport.WorkflowEntryStatus.RUNNING;
|
|
168
|
+
case "completed":
|
|
169
|
+
return transport.WorkflowEntryStatus.COMPLETED;
|
|
170
|
+
case "failed":
|
|
171
|
+
return transport.WorkflowEntryStatus.FAILED;
|
|
172
|
+
case "exhausted":
|
|
173
|
+
return transport.WorkflowEntryStatus.EXHAUSTED;
|
|
174
|
+
default:
|
|
175
|
+
assertUnreachable(status as never);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function toWorkflowSleepState(
|
|
180
|
+
state: SleepState,
|
|
181
|
+
): transport.WorkflowSleepState {
|
|
182
|
+
switch (state) {
|
|
183
|
+
case "pending":
|
|
184
|
+
return transport.WorkflowSleepState.PENDING;
|
|
185
|
+
case "completed":
|
|
186
|
+
return transport.WorkflowSleepState.COMPLETED;
|
|
187
|
+
case "interrupted":
|
|
188
|
+
return transport.WorkflowSleepState.INTERRUPTED;
|
|
189
|
+
default:
|
|
190
|
+
assertUnreachable(state as never);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
function toWorkflowBranchStatusType(
|
|
195
|
+
status: BranchStatusType,
|
|
196
|
+
): transport.WorkflowBranchStatusType {
|
|
197
|
+
switch (status) {
|
|
198
|
+
case "pending":
|
|
199
|
+
return transport.WorkflowBranchStatusType.PENDING;
|
|
200
|
+
case "running":
|
|
201
|
+
return transport.WorkflowBranchStatusType.RUNNING;
|
|
202
|
+
case "completed":
|
|
203
|
+
return transport.WorkflowBranchStatusType.COMPLETED;
|
|
204
|
+
case "failed":
|
|
205
|
+
return transport.WorkflowBranchStatusType.FAILED;
|
|
206
|
+
case "cancelled":
|
|
207
|
+
return transport.WorkflowBranchStatusType.CANCELLED;
|
|
208
|
+
default:
|
|
209
|
+
assertUnreachable(status as never);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
function toWorkflowBranchStatus(
|
|
214
|
+
status: BranchStatus,
|
|
215
|
+
): transport.WorkflowBranchStatus {
|
|
216
|
+
return {
|
|
217
|
+
status: toWorkflowBranchStatusType(status.status),
|
|
218
|
+
output: encodeOptionalCbor(status.output),
|
|
219
|
+
error: status.error ?? null,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
function toWorkflowBranchStatusMap(
|
|
224
|
+
branches: Record<string, BranchStatus>,
|
|
225
|
+
): ReadonlyMap<string, transport.WorkflowBranchStatus> {
|
|
226
|
+
return new Map(
|
|
227
|
+
Object.entries(branches).map(([name, status]) => [
|
|
228
|
+
name,
|
|
229
|
+
toWorkflowBranchStatus(status),
|
|
230
|
+
]),
|
|
231
|
+
);
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
function toWorkflowEntryMetadata(
|
|
235
|
+
metadata: WorkflowEntryMetadataSnapshot,
|
|
236
|
+
): transport.WorkflowEntryMetadata {
|
|
237
|
+
return {
|
|
238
|
+
status: toWorkflowEntryStatus(metadata.status),
|
|
239
|
+
error: metadata.error ?? null,
|
|
240
|
+
attempts: metadata.attempts,
|
|
241
|
+
lastAttemptAt: toU64(metadata.lastAttemptAt),
|
|
242
|
+
createdAt: toU64(metadata.createdAt),
|
|
243
|
+
completedAt:
|
|
244
|
+
metadata.completedAt === undefined
|
|
245
|
+
? null
|
|
246
|
+
: toU64(metadata.completedAt),
|
|
247
|
+
rollbackCompletedAt:
|
|
248
|
+
metadata.rollbackCompletedAt === undefined
|
|
249
|
+
? null
|
|
250
|
+
: toU64(metadata.rollbackCompletedAt),
|
|
251
|
+
rollbackError: metadata.rollbackError ?? null,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
function toWorkflowHistory(
|
|
256
|
+
snapshot: WorkflowHistorySnapshot,
|
|
257
|
+
): transport.WorkflowHistory {
|
|
258
|
+
const entryMetadata = new Map<string, transport.WorkflowEntryMetadata>();
|
|
259
|
+
for (const [id, metadata] of snapshot.entryMetadata) {
|
|
260
|
+
entryMetadata.set(id, toWorkflowEntryMetadata(metadata));
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
return {
|
|
264
|
+
nameRegistry: snapshot.nameRegistry,
|
|
265
|
+
entries: snapshot.entries.map((entry) => toWorkflowEntry(entry)),
|
|
266
|
+
entryMetadata,
|
|
267
|
+
};
|
|
268
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { ACTOR_CONTEXT_INTERNAL_SYMBOL } from "@/actor/contexts/base/actor";
|
|
2
|
+
import type { RunContext } from "@/actor/contexts/run";
|
|
3
|
+
import type { AnyDatabaseProvider } from "@/actor/database";
|
|
4
|
+
import type { AnyActorInstance } from "@/actor/instance/mod";
|
|
5
|
+
import type { EventSchemaConfig, QueueSchemaConfig } from "@/actor/schema";
|
|
6
|
+
import { RUN_FUNCTION_CONFIG_SYMBOL } from "@/actor/config";
|
|
7
|
+
import { stringifyError } from "@/utils";
|
|
8
|
+
import { runWorkflow } from "@rivetkit/workflow-engine";
|
|
9
|
+
import invariant from "invariant";
|
|
10
|
+
import { ActorWorkflowContext } from "./context";
|
|
11
|
+
import { ActorWorkflowDriver } from "./driver";
|
|
12
|
+
import { createWorkflowInspectorAdapter } from "./inspector";
|
|
13
|
+
|
|
14
|
+
export { Loop } from "@rivetkit/workflow-engine";
|
|
15
|
+
export { ActorWorkflowContext } from "./context";
|
|
16
|
+
|
|
17
|
+
export function workflow<
|
|
18
|
+
TState,
|
|
19
|
+
TConnParams,
|
|
20
|
+
TConnState,
|
|
21
|
+
TVars,
|
|
22
|
+
TInput,
|
|
23
|
+
TDatabase extends AnyDatabaseProvider,
|
|
24
|
+
TEvents extends EventSchemaConfig = Record<never, never>,
|
|
25
|
+
TQueues extends QueueSchemaConfig = Record<never, never>,
|
|
26
|
+
>(
|
|
27
|
+
fn: (
|
|
28
|
+
ctx: ActorWorkflowContext<
|
|
29
|
+
TState,
|
|
30
|
+
TConnParams,
|
|
31
|
+
TConnState,
|
|
32
|
+
TVars,
|
|
33
|
+
TInput,
|
|
34
|
+
TDatabase,
|
|
35
|
+
TEvents,
|
|
36
|
+
TQueues
|
|
37
|
+
>,
|
|
38
|
+
) => Promise<unknown>,
|
|
39
|
+
): (
|
|
40
|
+
c: RunContext<
|
|
41
|
+
TState,
|
|
42
|
+
TConnParams,
|
|
43
|
+
TConnState,
|
|
44
|
+
TVars,
|
|
45
|
+
TInput,
|
|
46
|
+
TDatabase,
|
|
47
|
+
TEvents,
|
|
48
|
+
TQueues
|
|
49
|
+
>,
|
|
50
|
+
) => Promise<void> {
|
|
51
|
+
const workflowInspector = createWorkflowInspectorAdapter();
|
|
52
|
+
|
|
53
|
+
async function run(
|
|
54
|
+
runCtx: RunContext<
|
|
55
|
+
TState,
|
|
56
|
+
TConnParams,
|
|
57
|
+
TConnState,
|
|
58
|
+
TVars,
|
|
59
|
+
TInput,
|
|
60
|
+
TDatabase,
|
|
61
|
+
TEvents,
|
|
62
|
+
TQueues
|
|
63
|
+
>,
|
|
64
|
+
): Promise<void> {
|
|
65
|
+
const actor = (
|
|
66
|
+
runCtx as unknown as {
|
|
67
|
+
[ACTOR_CONTEXT_INTERNAL_SYMBOL]?: AnyActorInstance;
|
|
68
|
+
}
|
|
69
|
+
)[ACTOR_CONTEXT_INTERNAL_SYMBOL];
|
|
70
|
+
invariant(actor, "workflow() requires an actor instance");
|
|
71
|
+
|
|
72
|
+
const driver = new ActorWorkflowDriver(actor, runCtx);
|
|
73
|
+
|
|
74
|
+
const handle = runWorkflow(
|
|
75
|
+
actor.id,
|
|
76
|
+
async (ctx) => await fn(new ActorWorkflowContext(ctx, runCtx)),
|
|
77
|
+
undefined,
|
|
78
|
+
driver,
|
|
79
|
+
{
|
|
80
|
+
mode: "live",
|
|
81
|
+
logger: runCtx.log,
|
|
82
|
+
onHistoryUpdated: workflowInspector.update,
|
|
83
|
+
},
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
const onAbort = () => {
|
|
87
|
+
handle.evict();
|
|
88
|
+
};
|
|
89
|
+
if (runCtx.abortSignal.aborted) {
|
|
90
|
+
onAbort();
|
|
91
|
+
} else {
|
|
92
|
+
runCtx.abortSignal.addEventListener("abort", onAbort, {
|
|
93
|
+
once: true,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
try {
|
|
98
|
+
await handle.result;
|
|
99
|
+
} catch (error) {
|
|
100
|
+
runCtx.log.error({
|
|
101
|
+
msg: "workflow run failed",
|
|
102
|
+
error: stringifyError(error),
|
|
103
|
+
});
|
|
104
|
+
throw error;
|
|
105
|
+
} finally {
|
|
106
|
+
runCtx.abortSignal.removeEventListener("abort", onAbort);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const runWithConfig = run as typeof run & {
|
|
111
|
+
[RUN_FUNCTION_CONFIG_SYMBOL]?: {
|
|
112
|
+
icon?: string;
|
|
113
|
+
inspector?: { workflow: typeof workflowInspector.adapter };
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
runWithConfig[RUN_FUNCTION_CONFIG_SYMBOL] = {
|
|
117
|
+
icon: "diagram-project",
|
|
118
|
+
inspector: { workflow: workflowInspector.adapter },
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
return runWithConfig;
|
|
122
|
+
}
|
|
@@ -1,278 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
-
|
|
3
|
-
var _chunkX35U3YNXcjs = require('./chunk-X35U3YNX.cjs');
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var _chunkH4TB4X25cjs = require('./chunk-H4TB4X25.cjs');
|
|
8
|
-
|
|
9
|
-
// src/driver-test-suite/log.ts
|
|
10
|
-
function logger() {
|
|
11
|
-
return _chunkH4TB4X25cjs.getLogger.call(void 0, "test-suite");
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
// fixtures/driver-test-suite/hibernation.ts
|
|
15
|
-
var HIBERNATION_SLEEP_TIMEOUT = 500;
|
|
16
|
-
var hibernationActor = _chunkX35U3YNXcjs.actor.call(void 0, {
|
|
17
|
-
state: {
|
|
18
|
-
sleepCount: 0,
|
|
19
|
-
wakeCount: 0
|
|
20
|
-
},
|
|
21
|
-
createConnState: (c) => {
|
|
22
|
-
return {
|
|
23
|
-
count: 0,
|
|
24
|
-
connectCount: 0,
|
|
25
|
-
disconnectCount: 0
|
|
26
|
-
};
|
|
27
|
-
},
|
|
28
|
-
onWake: (c) => {
|
|
29
|
-
c.state.wakeCount += 1;
|
|
30
|
-
},
|
|
31
|
-
onSleep: (c) => {
|
|
32
|
-
c.state.sleepCount += 1;
|
|
33
|
-
},
|
|
34
|
-
onConnect: (c, conn) => {
|
|
35
|
-
conn.state.connectCount += 1;
|
|
36
|
-
},
|
|
37
|
-
onDisconnect: (c, conn) => {
|
|
38
|
-
conn.state.disconnectCount += 1;
|
|
39
|
-
},
|
|
40
|
-
actions: {
|
|
41
|
-
// Basic RPC that returns a simple value
|
|
42
|
-
ping: (c) => {
|
|
43
|
-
return "pong";
|
|
44
|
-
},
|
|
45
|
-
// Increment the connection's count
|
|
46
|
-
connIncrement: (c) => {
|
|
47
|
-
c.conn.state.count += 1;
|
|
48
|
-
return c.conn.state.count;
|
|
49
|
-
},
|
|
50
|
-
// Get the connection's count
|
|
51
|
-
getConnCount: (c) => {
|
|
52
|
-
return c.conn.state.count;
|
|
53
|
-
},
|
|
54
|
-
// Get the connection's lifecycle counts
|
|
55
|
-
getConnLifecycleCounts: (c) => {
|
|
56
|
-
return {
|
|
57
|
-
connectCount: c.conn.state.connectCount,
|
|
58
|
-
disconnectCount: c.conn.state.disconnectCount
|
|
59
|
-
};
|
|
60
|
-
},
|
|
61
|
-
// Get all connection IDs
|
|
62
|
-
getConnectionIds: (c) => {
|
|
63
|
-
return c.conns.entries().map((x) => x[0]).toArray();
|
|
64
|
-
},
|
|
65
|
-
// Get actor sleep/wake counts
|
|
66
|
-
getActorCounts: (c) => {
|
|
67
|
-
return {
|
|
68
|
-
sleepCount: c.state.sleepCount,
|
|
69
|
-
wakeCount: c.state.wakeCount
|
|
70
|
-
};
|
|
71
|
-
},
|
|
72
|
-
// Trigger sleep
|
|
73
|
-
triggerSleep: (c) => {
|
|
74
|
-
c.sleep();
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
options: {
|
|
78
|
-
sleepTimeout: HIBERNATION_SLEEP_TIMEOUT
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
// fixtures/driver-test-suite/sleep.ts
|
|
83
|
-
var SLEEP_TIMEOUT = 1e3;
|
|
84
|
-
var sleep = _chunkX35U3YNXcjs.actor.call(void 0, {
|
|
85
|
-
state: { startCount: 0, sleepCount: 0 },
|
|
86
|
-
onWake: (c) => {
|
|
87
|
-
c.state.startCount += 1;
|
|
88
|
-
},
|
|
89
|
-
onSleep: (c) => {
|
|
90
|
-
c.state.sleepCount += 1;
|
|
91
|
-
},
|
|
92
|
-
actions: {
|
|
93
|
-
triggerSleep: (c) => {
|
|
94
|
-
c.sleep();
|
|
95
|
-
},
|
|
96
|
-
getCounts: (c) => {
|
|
97
|
-
return {
|
|
98
|
-
startCount: c.state.startCount,
|
|
99
|
-
sleepCount: c.state.sleepCount
|
|
100
|
-
};
|
|
101
|
-
},
|
|
102
|
-
setAlarm: async (c, duration) => {
|
|
103
|
-
await c.schedule.after(duration, "onAlarm");
|
|
104
|
-
},
|
|
105
|
-
onAlarm: (c) => {
|
|
106
|
-
c.log.info("alarm called");
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
options: {
|
|
110
|
-
sleepTimeout: SLEEP_TIMEOUT
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
var sleepWithLongRpc = _chunkX35U3YNXcjs.actor.call(void 0, {
|
|
114
|
-
state: { startCount: 0, sleepCount: 0 },
|
|
115
|
-
createVars: () => ({}),
|
|
116
|
-
onWake: (c) => {
|
|
117
|
-
c.state.startCount += 1;
|
|
118
|
-
},
|
|
119
|
-
onSleep: (c) => {
|
|
120
|
-
c.state.sleepCount += 1;
|
|
121
|
-
},
|
|
122
|
-
actions: {
|
|
123
|
-
getCounts: (c) => {
|
|
124
|
-
return {
|
|
125
|
-
startCount: c.state.startCount,
|
|
126
|
-
sleepCount: c.state.sleepCount
|
|
127
|
-
};
|
|
128
|
-
},
|
|
129
|
-
longRunningRpc: async (c) => {
|
|
130
|
-
c.log.info("starting long running rpc");
|
|
131
|
-
c.vars.longRunningResolve = _chunkH4TB4X25cjs.promiseWithResolvers.call(void 0, );
|
|
132
|
-
c.broadcast("waiting");
|
|
133
|
-
await c.vars.longRunningResolve.promise;
|
|
134
|
-
c.log.info("finished long running rpc");
|
|
135
|
-
},
|
|
136
|
-
finishLongRunningRpc: (c) => {
|
|
137
|
-
var _a;
|
|
138
|
-
return (_a = c.vars.longRunningResolve) == null ? void 0 : _a.resolve();
|
|
139
|
-
}
|
|
140
|
-
},
|
|
141
|
-
options: {
|
|
142
|
-
sleepTimeout: SLEEP_TIMEOUT
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
var sleepWithRawHttp = _chunkX35U3YNXcjs.actor.call(void 0, {
|
|
146
|
-
state: { startCount: 0, sleepCount: 0, requestCount: 0 },
|
|
147
|
-
onWake: (c) => {
|
|
148
|
-
c.state.startCount += 1;
|
|
149
|
-
},
|
|
150
|
-
onSleep: (c) => {
|
|
151
|
-
c.state.sleepCount += 1;
|
|
152
|
-
},
|
|
153
|
-
onRequest: async (c, request) => {
|
|
154
|
-
c.state.requestCount += 1;
|
|
155
|
-
const url = new URL(request.url);
|
|
156
|
-
if (url.pathname === "/long-request") {
|
|
157
|
-
const duration = parseInt(
|
|
158
|
-
url.searchParams.get("duration") || "1000"
|
|
159
|
-
);
|
|
160
|
-
c.log.info({ msg: "starting long fetch request", duration });
|
|
161
|
-
await new Promise((resolve) => setTimeout(resolve, duration));
|
|
162
|
-
c.log.info("finished long fetch request");
|
|
163
|
-
return new Response(JSON.stringify({ completed: true }), {
|
|
164
|
-
headers: { "Content-Type": "application/json" }
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
return new Response("Not Found", { status: 404 });
|
|
168
|
-
},
|
|
169
|
-
actions: {
|
|
170
|
-
getCounts: (c) => {
|
|
171
|
-
return {
|
|
172
|
-
startCount: c.state.startCount,
|
|
173
|
-
sleepCount: c.state.sleepCount,
|
|
174
|
-
requestCount: c.state.requestCount
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
},
|
|
178
|
-
options: {
|
|
179
|
-
sleepTimeout: SLEEP_TIMEOUT
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
var sleepWithRawWebSocket = _chunkX35U3YNXcjs.actor.call(void 0, {
|
|
183
|
-
state: { startCount: 0, sleepCount: 0, connectionCount: 0 },
|
|
184
|
-
onWake: (c) => {
|
|
185
|
-
c.state.startCount += 1;
|
|
186
|
-
},
|
|
187
|
-
onSleep: (c) => {
|
|
188
|
-
c.state.sleepCount += 1;
|
|
189
|
-
},
|
|
190
|
-
onWebSocket: (c, websocket) => {
|
|
191
|
-
c.state.connectionCount += 1;
|
|
192
|
-
c.log.info({
|
|
193
|
-
msg: "websocket connected",
|
|
194
|
-
connectionCount: c.state.connectionCount
|
|
195
|
-
});
|
|
196
|
-
websocket.send(
|
|
197
|
-
JSON.stringify({
|
|
198
|
-
type: "connected",
|
|
199
|
-
connectionCount: c.state.connectionCount
|
|
200
|
-
})
|
|
201
|
-
);
|
|
202
|
-
websocket.addEventListener("message", (event) => {
|
|
203
|
-
const data = event.data;
|
|
204
|
-
if (typeof data === "string") {
|
|
205
|
-
try {
|
|
206
|
-
const parsed = JSON.parse(data);
|
|
207
|
-
if (parsed.type === "getCounts") {
|
|
208
|
-
websocket.send(
|
|
209
|
-
JSON.stringify({
|
|
210
|
-
type: "counts",
|
|
211
|
-
startCount: c.state.startCount,
|
|
212
|
-
sleepCount: c.state.sleepCount,
|
|
213
|
-
connectionCount: c.state.connectionCount
|
|
214
|
-
})
|
|
215
|
-
);
|
|
216
|
-
} else if (parsed.type === "keepAlive") {
|
|
217
|
-
websocket.send(JSON.stringify({ type: "ack" }));
|
|
218
|
-
}
|
|
219
|
-
} catch (e) {
|
|
220
|
-
websocket.send(data);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
});
|
|
224
|
-
websocket.addEventListener("close", () => {
|
|
225
|
-
c.state.connectionCount -= 1;
|
|
226
|
-
c.log.info({
|
|
227
|
-
msg: "websocket disconnected",
|
|
228
|
-
connectionCount: c.state.connectionCount
|
|
229
|
-
});
|
|
230
|
-
});
|
|
231
|
-
},
|
|
232
|
-
actions: {
|
|
233
|
-
getCounts: (c) => {
|
|
234
|
-
return {
|
|
235
|
-
startCount: c.state.startCount,
|
|
236
|
-
sleepCount: c.state.sleepCount,
|
|
237
|
-
connectionCount: c.state.connectionCount
|
|
238
|
-
};
|
|
239
|
-
}
|
|
240
|
-
},
|
|
241
|
-
options: {
|
|
242
|
-
sleepTimeout: SLEEP_TIMEOUT
|
|
243
|
-
}
|
|
244
|
-
});
|
|
245
|
-
var sleepWithNoSleepOption = _chunkX35U3YNXcjs.actor.call(void 0, {
|
|
246
|
-
state: { startCount: 0, sleepCount: 0 },
|
|
247
|
-
onWake: (c) => {
|
|
248
|
-
c.state.startCount += 1;
|
|
249
|
-
},
|
|
250
|
-
onSleep: (c) => {
|
|
251
|
-
c.state.sleepCount += 1;
|
|
252
|
-
},
|
|
253
|
-
actions: {
|
|
254
|
-
getCounts: (c) => {
|
|
255
|
-
return {
|
|
256
|
-
startCount: c.state.startCount,
|
|
257
|
-
sleepCount: c.state.sleepCount
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
},
|
|
261
|
-
options: {
|
|
262
|
-
sleepTimeout: SLEEP_TIMEOUT,
|
|
263
|
-
noSleep: true
|
|
264
|
-
}
|
|
265
|
-
});
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
exports.logger = logger; exports.HIBERNATION_SLEEP_TIMEOUT = HIBERNATION_SLEEP_TIMEOUT; exports.hibernationActor = hibernationActor; exports.SLEEP_TIMEOUT = SLEEP_TIMEOUT; exports.sleep = sleep; exports.sleepWithLongRpc = sleepWithLongRpc; exports.sleepWithRawHttp = sleepWithRawHttp; exports.sleepWithRawWebSocket = sleepWithRawWebSocket; exports.sleepWithNoSleepOption = sleepWithNoSleepOption;
|
|
278
|
-
//# sourceMappingURL=chunk-2IJTYN6K.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-2IJTYN6K.cjs","../../src/driver-test-suite/log.ts","../../fixtures/driver-test-suite/hibernation.ts","../../fixtures/driver-test-suite/sleep.ts"],"names":[],"mappings":"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","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-2IJTYN6K.cjs","sourcesContent":[null,"import { getLogger } from \"@/common/log\";\n\nexport function logger() {\n\treturn getLogger(\"test-suite\");\n}\n","import { actor } from \"rivetkit\";\n\nexport const HIBERNATION_SLEEP_TIMEOUT = 500;\n\nexport type HibernationConnState = {\n\tcount: number;\n\tconnectCount: number;\n\tdisconnectCount: number;\n};\n\nexport const hibernationActor = actor({\n\tstate: {\n\t\tsleepCount: 0,\n\t\twakeCount: 0,\n\t},\n\tcreateConnState: (c): HibernationConnState => {\n\t\treturn {\n\t\t\tcount: 0,\n\t\t\tconnectCount: 0,\n\t\t\tdisconnectCount: 0,\n\t\t};\n\t},\n\tonWake: (c) => {\n\t\tc.state.wakeCount += 1;\n\t},\n\tonSleep: (c) => {\n\t\tc.state.sleepCount += 1;\n\t},\n\tonConnect: (c, conn) => {\n\t\tconn.state.connectCount += 1;\n\t},\n\tonDisconnect: (c, conn) => {\n\t\tconn.state.disconnectCount += 1;\n\t},\n\tactions: {\n\t\t// Basic RPC that returns a simple value\n\t\tping: (c) => {\n\t\t\treturn \"pong\";\n\t\t},\n\t\t// Increment the connection's count\n\t\tconnIncrement: (c) => {\n\t\t\tc.conn.state.count += 1;\n\t\t\treturn c.conn.state.count;\n\t\t},\n\t\t// Get the connection's count\n\t\tgetConnCount: (c) => {\n\t\t\treturn c.conn.state.count;\n\t\t},\n\t\t// Get the connection's lifecycle counts\n\t\tgetConnLifecycleCounts: (c) => {\n\t\t\treturn {\n\t\t\t\tconnectCount: c.conn.state.connectCount,\n\t\t\t\tdisconnectCount: c.conn.state.disconnectCount,\n\t\t\t};\n\t\t},\n\t\t// Get all connection IDs\n\t\tgetConnectionIds: (c) => {\n\t\t\treturn c.conns\n\t\t\t\t.entries()\n\t\t\t\t.map((x) => x[0])\n\t\t\t\t.toArray();\n\t\t},\n\t\t// Get actor sleep/wake counts\n\t\tgetActorCounts: (c) => {\n\t\t\treturn {\n\t\t\t\tsleepCount: c.state.sleepCount,\n\t\t\t\twakeCount: c.state.wakeCount,\n\t\t\t};\n\t\t},\n\t\t// Trigger sleep\n\t\ttriggerSleep: (c) => {\n\t\t\tc.sleep();\n\t\t},\n\t},\n\toptions: {\n\t\tsleepTimeout: HIBERNATION_SLEEP_TIMEOUT,\n\t},\n});\n","import { actor, type UniversalWebSocket } from \"rivetkit\";\nimport { promiseWithResolvers } from \"rivetkit/utils\";\n\nexport const SLEEP_TIMEOUT = 1000;\n\nexport const sleep = actor({\n\tstate: { startCount: 0, sleepCount: 0 },\n\tonWake: (c) => {\n\t\tc.state.startCount += 1;\n\t},\n\tonSleep: (c) => {\n\t\tc.state.sleepCount += 1;\n\t},\n\tactions: {\n\t\ttriggerSleep: (c) => {\n\t\t\tc.sleep();\n\t\t},\n\t\tgetCounts: (c) => {\n\t\t\treturn {\n\t\t\t\tstartCount: c.state.startCount,\n\t\t\t\tsleepCount: c.state.sleepCount,\n\t\t\t};\n\t\t},\n\t\tsetAlarm: async (c, duration: number) => {\n\t\t\tawait c.schedule.after(duration, \"onAlarm\");\n\t\t},\n\t\tonAlarm: (c) => {\n\t\t\tc.log.info(\"alarm called\");\n\t\t},\n\t},\n\toptions: {\n\t\tsleepTimeout: SLEEP_TIMEOUT,\n\t},\n});\n\nexport const sleepWithLongRpc = actor({\n\tstate: { startCount: 0, sleepCount: 0 },\n\tcreateVars: () =>\n\t\t({}) as { longRunningResolve: PromiseWithResolvers<void> },\n\tonWake: (c) => {\n\t\tc.state.startCount += 1;\n\t},\n\tonSleep: (c) => {\n\t\tc.state.sleepCount += 1;\n\t},\n\tactions: {\n\t\tgetCounts: (c) => {\n\t\t\treturn {\n\t\t\t\tstartCount: c.state.startCount,\n\t\t\t\tsleepCount: c.state.sleepCount,\n\t\t\t};\n\t\t},\n\t\tlongRunningRpc: async (c) => {\n\t\t\tc.log.info(\"starting long running rpc\");\n\t\t\tc.vars.longRunningResolve = promiseWithResolvers();\n\t\t\tc.broadcast(\"waiting\");\n\t\t\tawait c.vars.longRunningResolve.promise;\n\t\t\tc.log.info(\"finished long running rpc\");\n\t\t},\n\t\tfinishLongRunningRpc: (c) => c.vars.longRunningResolve?.resolve(),\n\t},\n\toptions: {\n\t\tsleepTimeout: SLEEP_TIMEOUT,\n\t},\n});\n\nexport const sleepWithRawHttp = actor({\n\tstate: { startCount: 0, sleepCount: 0, requestCount: 0 },\n\tonWake: (c) => {\n\t\tc.state.startCount += 1;\n\t},\n\tonSleep: (c) => {\n\t\tc.state.sleepCount += 1;\n\t},\n\tonRequest: async (c, request) => {\n\t\tc.state.requestCount += 1;\n\t\tconst url = new URL(request.url);\n\n\t\tif (url.pathname === \"/long-request\") {\n\t\t\tconst duration = parseInt(\n\t\t\t\turl.searchParams.get(\"duration\") || \"1000\",\n\t\t\t);\n\t\t\tc.log.info({ msg: \"starting long fetch request\", duration });\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, duration));\n\t\t\tc.log.info(\"finished long fetch request\");\n\t\t\treturn new Response(JSON.stringify({ completed: true }), {\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t});\n\t\t}\n\n\t\treturn new Response(\"Not Found\", { status: 404 });\n\t},\n\tactions: {\n\t\tgetCounts: (c) => {\n\t\t\treturn {\n\t\t\t\tstartCount: c.state.startCount,\n\t\t\t\tsleepCount: c.state.sleepCount,\n\t\t\t\trequestCount: c.state.requestCount,\n\t\t\t};\n\t\t},\n\t},\n\toptions: {\n\t\tsleepTimeout: SLEEP_TIMEOUT,\n\t},\n});\n\nexport const sleepWithRawWebSocket = actor({\n\tstate: { startCount: 0, sleepCount: 0, connectionCount: 0 },\n\tonWake: (c) => {\n\t\tc.state.startCount += 1;\n\t},\n\tonSleep: (c) => {\n\t\tc.state.sleepCount += 1;\n\t},\n\tonWebSocket: (c, websocket: UniversalWebSocket) => {\n\t\tc.state.connectionCount += 1;\n\t\tc.log.info({\n\t\t\tmsg: \"websocket connected\",\n\t\t\tconnectionCount: c.state.connectionCount,\n\t\t});\n\n\t\twebsocket.send(\n\t\t\tJSON.stringify({\n\t\t\t\ttype: \"connected\",\n\t\t\t\tconnectionCount: c.state.connectionCount,\n\t\t\t}),\n\t\t);\n\n\t\twebsocket.addEventListener(\"message\", (event: any) => {\n\t\t\tconst data = event.data;\n\t\t\tif (typeof data === \"string\") {\n\t\t\t\ttry {\n\t\t\t\t\tconst parsed = JSON.parse(data);\n\t\t\t\t\tif (parsed.type === \"getCounts\") {\n\t\t\t\t\t\twebsocket.send(\n\t\t\t\t\t\t\tJSON.stringify({\n\t\t\t\t\t\t\t\ttype: \"counts\",\n\t\t\t\t\t\t\t\tstartCount: c.state.startCount,\n\t\t\t\t\t\t\t\tsleepCount: c.state.sleepCount,\n\t\t\t\t\t\t\t\tconnectionCount: c.state.connectionCount,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (parsed.type === \"keepAlive\") {\n\t\t\t\t\t\t// Just acknowledge to keep connection alive\n\t\t\t\t\t\twebsocket.send(JSON.stringify({ type: \"ack\" }));\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// Echo non-JSON messages\n\t\t\t\t\twebsocket.send(data);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\twebsocket.addEventListener(\"close\", () => {\n\t\t\tc.state.connectionCount -= 1;\n\t\t\tc.log.info({\n\t\t\t\tmsg: \"websocket disconnected\",\n\t\t\t\tconnectionCount: c.state.connectionCount,\n\t\t\t});\n\t\t});\n\t},\n\tactions: {\n\t\tgetCounts: (c) => {\n\t\t\treturn {\n\t\t\t\tstartCount: c.state.startCount,\n\t\t\t\tsleepCount: c.state.sleepCount,\n\t\t\t\tconnectionCount: c.state.connectionCount,\n\t\t\t};\n\t\t},\n\t},\n\toptions: {\n\t\tsleepTimeout: SLEEP_TIMEOUT,\n\t},\n});\n\nexport const sleepWithNoSleepOption = actor({\n\tstate: { startCount: 0, sleepCount: 0 },\n\tonWake: (c) => {\n\t\tc.state.startCount += 1;\n\t},\n\tonSleep: (c) => {\n\t\tc.state.sleepCount += 1;\n\t},\n\tactions: {\n\t\tgetCounts: (c) => {\n\t\t\treturn {\n\t\t\t\tstartCount: c.state.startCount,\n\t\t\t\tsleepCount: c.state.sleepCount,\n\t\t\t};\n\t\t},\n\t},\n\toptions: {\n\t\tsleepTimeout: SLEEP_TIMEOUT,\n\t\tnoSleep: true,\n\t},\n});\n"]}
|