rivetkit 2.0.2 → 2.0.4-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/README.md +3 -5
- package/dist/browser/client.d.ts +2485 -0
- 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/inspector.tar.gz +0 -0
- package/dist/schemas/actor-inspector/v1.ts +784 -0
- package/dist/schemas/actor-inspector/v2.ts +796 -0
- package/dist/schemas/actor-inspector/v3.ts +899 -0
- package/dist/schemas/actor-persist/v1.ts +225 -0
- package/dist/schemas/actor-persist/v2.ts +268 -0
- package/dist/schemas/actor-persist/v3.ts +280 -0
- package/dist/schemas/actor-persist/v4.ts +406 -0
- package/dist/schemas/client-protocol/v1.ts +441 -0
- package/dist/schemas/client-protocol/v2.ts +438 -0
- package/dist/schemas/client-protocol/v3.ts +554 -0
- package/dist/schemas/file-system-driver/v1.ts +108 -0
- package/dist/schemas/file-system-driver/v2.ts +142 -0
- package/dist/schemas/file-system-driver/v3.ts +167 -0
- package/dist/schemas/persist/v1.ts +781 -0
- package/dist/schemas/transport/v1.ts +697 -0
- package/dist/tsup/actor/errors.cjs +106 -0
- package/dist/tsup/actor/errors.cjs.map +1 -0
- package/dist/tsup/actor/errors.d.cts +188 -0
- package/dist/tsup/actor/errors.d.ts +188 -0
- package/dist/tsup/actor/errors.js +106 -0
- package/dist/tsup/actor/errors.js.map +1 -0
- package/dist/tsup/actor-router-consts-D29T1Z-K.d.cts +24 -0
- package/dist/tsup/actor-router-consts-D29T1Z-K.d.ts +24 -0
- package/dist/tsup/chunk-325TLXJT.js +1060 -0
- package/dist/tsup/chunk-325TLXJT.js.map +1 -0
- package/dist/tsup/chunk-424PT5DM.js +23 -0
- package/dist/tsup/chunk-424PT5DM.js.map +1 -0
- package/dist/tsup/chunk-4JVIG3SS.cjs +6289 -0
- package/dist/tsup/chunk-4JVIG3SS.cjs.map +1 -0
- package/dist/tsup/chunk-6LJAZ5R4.cjs +96 -0
- package/dist/tsup/chunk-6LJAZ5R4.cjs.map +1 -0
- package/dist/tsup/chunk-6XU3FMCB.cjs +534 -0
- package/dist/tsup/chunk-6XU3FMCB.cjs.map +1 -0
- package/dist/tsup/chunk-7HTNH26M.js +509 -0
- package/dist/tsup/chunk-7HTNH26M.js.map +1 -0
- package/dist/tsup/chunk-AUVH72RE.cjs +5977 -0
- package/dist/tsup/chunk-AUVH72RE.cjs.map +1 -0
- package/dist/tsup/chunk-D4BYUPNQ.js +645 -0
- package/dist/tsup/chunk-D4BYUPNQ.js.map +1 -0
- package/dist/tsup/chunk-HDQ2JUQT.cjs +23 -0
- package/dist/tsup/chunk-HDQ2JUQT.cjs.map +1 -0
- package/dist/tsup/chunk-HHXX2VRM.js +6289 -0
- package/dist/tsup/chunk-HHXX2VRM.js.map +1 -0
- package/dist/tsup/chunk-JEAEA2PB.js +49 -0
- package/dist/tsup/chunk-JEAEA2PB.js.map +1 -0
- package/dist/tsup/chunk-JYSEG3VF.cjs +642 -0
- package/dist/tsup/chunk-JYSEG3VF.cjs.map +1 -0
- package/dist/tsup/chunk-K6DGYILQ.js +2657 -0
- package/dist/tsup/chunk-K6DGYILQ.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-L47L3ZWJ.cjs +509 -0
- package/dist/tsup/chunk-L47L3ZWJ.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-MXNPAB5W.js +5977 -0
- package/dist/tsup/chunk-MXNPAB5W.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-PQZHDKRW.cjs +1060 -0
- package/dist/tsup/chunk-PQZHDKRW.cjs.map +1 -0
- package/dist/tsup/chunk-PVOE6BU7.cjs +1050 -0
- package/dist/tsup/chunk-PVOE6BU7.cjs.map +1 -0
- package/dist/tsup/chunk-Q4UD2GA4.cjs +1810 -0
- package/dist/tsup/chunk-Q4UD2GA4.cjs.map +1 -0
- package/dist/tsup/chunk-QUD664YZ.js +1810 -0
- package/dist/tsup/chunk-QUD664YZ.js.map +1 -0
- package/dist/tsup/chunk-RTOCTWME.js +1050 -0
- package/dist/tsup/chunk-RTOCTWME.js.map +1 -0
- package/dist/tsup/chunk-SAZZ4SB2.cjs +2657 -0
- package/dist/tsup/chunk-SAZZ4SB2.cjs.map +1 -0
- package/dist/tsup/chunk-SR3KQE7Q.cjs +72 -0
- package/dist/tsup/chunk-SR3KQE7Q.cjs.map +1 -0
- package/dist/tsup/chunk-V2GHLYC6.cjs +49 -0
- package/dist/tsup/chunk-V2GHLYC6.cjs.map +1 -0
- package/dist/tsup/chunk-V3WG7XTW.cjs +645 -0
- package/dist/tsup/chunk-V3WG7XTW.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-WMPW7JYC.js +642 -0
- package/dist/tsup/chunk-WMPW7JYC.js.map +1 -0
- package/dist/tsup/chunk-Z7HNQ2WF.js +534 -0
- package/dist/tsup/chunk-Z7HNQ2WF.js.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 +33 -0
- package/dist/tsup/client/mod.cjs.map +1 -0
- package/dist/tsup/client/mod.d.cts +64 -0
- package/dist/tsup/client/mod.d.ts +64 -0
- package/dist/tsup/client/mod.js +33 -0
- package/dist/tsup/client/mod.js.map +1 -0
- package/dist/tsup/common/log.cjs +21 -0
- package/dist/tsup/common/log.cjs.map +1 -0
- package/dist/tsup/common/log.d.cts +34 -0
- package/dist/tsup/common/log.d.ts +34 -0
- package/dist/tsup/common/log.js +21 -0
- package/dist/tsup/common/log.js.map +1 -0
- package/dist/tsup/common/websocket.cjs +10 -0
- package/dist/tsup/common/websocket.cjs.map +1 -0
- package/dist/tsup/common/websocket.d.cts +3 -0
- package/dist/tsup/common/websocket.d.ts +3 -0
- package/dist/tsup/common/websocket.js +10 -0
- package/dist/tsup/common/websocket.js.map +1 -0
- package/dist/tsup/config-BiNoIHRs.d.cts +80 -0
- package/dist/tsup/config-BiNoIHRs.d.ts +80 -0
- package/dist/tsup/config-P3XujgRr.d.ts +2594 -0
- package/dist/tsup/config-_gfywqqI.d.cts +2594 -0
- package/dist/tsup/context-Bxd8Cx4H.d.cts +75 -0
- package/dist/tsup/context-uNA4TRn3.d.ts +75 -0
- 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-BcLvZcKl.d.cts +13 -0
- package/dist/tsup/driver-CPGHKXyh.d.ts +13 -0
- package/dist/tsup/driver-helpers/mod.cjs +53 -0
- package/dist/tsup/driver-helpers/mod.cjs.map +1 -0
- package/dist/tsup/driver-helpers/mod.d.cts +47 -0
- package/dist/tsup/driver-helpers/mod.d.ts +47 -0
- package/dist/tsup/driver-helpers/mod.js +53 -0
- package/dist/tsup/driver-helpers/mod.js.map +1 -0
- package/dist/tsup/driver-test-suite/mod.cjs +4974 -0
- package/dist/tsup/driver-test-suite/mod.cjs.map +1 -0
- package/dist/tsup/driver-test-suite/mod.d.cts +73 -0
- package/dist/tsup/driver-test-suite/mod.d.ts +73 -0
- package/dist/tsup/driver-test-suite/mod.js +4974 -0
- package/dist/tsup/driver-test-suite/mod.js.map +1 -0
- package/dist/tsup/inspector/mod.cjs +164 -0
- package/dist/tsup/inspector/mod.cjs.map +1 -0
- package/dist/tsup/inspector/mod.d.cts +130 -0
- package/dist/tsup/inspector/mod.d.ts +130 -0
- package/dist/tsup/inspector/mod.js +164 -0
- package/dist/tsup/inspector/mod.js.map +1 -0
- package/dist/tsup/keys-CydblqMh.d.cts +13 -0
- package/dist/tsup/keys-CydblqMh.d.ts +13 -0
- package/dist/tsup/mod.cjs +82 -0
- package/dist/tsup/mod.cjs.map +1 -0
- package/dist/tsup/mod.d.cts +126 -0
- package/dist/tsup/mod.d.ts +126 -0
- package/dist/tsup/mod.js +82 -0
- package/dist/tsup/mod.js.map +1 -0
- package/dist/tsup/serve-test-suite/mod.cjs +2601 -0
- package/dist/tsup/serve-test-suite/mod.cjs.map +1 -0
- package/dist/tsup/serve-test-suite/mod.d.cts +9 -0
- package/dist/tsup/serve-test-suite/mod.d.ts +9 -0
- package/dist/tsup/serve-test-suite/mod.js +2601 -0
- package/dist/tsup/serve-test-suite/mod.js.map +1 -0
- package/dist/tsup/test/mod.cjs +90 -0
- package/dist/tsup/test/mod.cjs.map +1 -0
- package/dist/tsup/test/mod.d.cts +26 -0
- package/dist/tsup/test/mod.d.ts +26 -0
- package/dist/tsup/test/mod.js +90 -0
- package/dist/tsup/test/mod.js.map +1 -0
- package/dist/tsup/utils-fwx3o3K9.d.cts +18 -0
- package/dist/tsup/utils-fwx3o3K9.d.ts +18 -0
- package/dist/tsup/utils.cjs +43 -0
- package/dist/tsup/utils.cjs.map +1 -0
- package/dist/tsup/utils.d.cts +148 -0
- package/dist/tsup/utils.d.ts +148 -0
- package/dist/tsup/utils.js +43 -0
- package/dist/tsup/utils.js.map +1 -0
- 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 +25 -0
- package/dist/tsup/workflow/mod.d.ts +25 -0
- package/dist/tsup/workflow/mod.js +16 -0
- package/dist/tsup/workflow/mod.js.map +1 -0
- package/package.json +293 -5
- package/src/actor/config.ts +1221 -0
- package/src/actor/conn/driver.ts +61 -0
- package/src/actor/conn/drivers/http.ts +17 -0
- package/src/actor/conn/drivers/raw-request.ts +24 -0
- package/src/actor/conn/drivers/raw-websocket.ts +65 -0
- package/src/actor/conn/drivers/websocket.ts +144 -0
- package/src/actor/conn/mod.ts +288 -0
- package/src/actor/conn/persisted.ts +81 -0
- package/src/actor/conn/state-manager.ts +196 -0
- package/src/actor/contexts/action.ts +47 -0
- package/src/actor/contexts/base/actor.ts +347 -0
- package/src/actor/contexts/base/conn-init.ts +68 -0
- package/src/actor/contexts/base/conn.ts +73 -0
- package/src/actor/contexts/before-action-response.ts +42 -0
- package/src/actor/contexts/before-connect.ts +31 -0
- package/src/actor/contexts/connect.ts +42 -0
- package/src/actor/contexts/create-conn-state.ts +32 -0
- package/src/actor/contexts/create-vars.ts +39 -0
- package/src/actor/contexts/create.ts +39 -0
- package/src/actor/contexts/destroy.ts +42 -0
- package/src/actor/contexts/disconnect.ts +43 -0
- package/src/actor/contexts/index.ts +33 -0
- package/src/actor/contexts/request.ts +80 -0
- package/src/actor/contexts/run.ts +47 -0
- package/src/actor/contexts/sleep.ts +42 -0
- package/src/actor/contexts/state-change.ts +42 -0
- package/src/actor/contexts/wake.ts +42 -0
- package/src/actor/contexts/websocket.ts +80 -0
- package/src/actor/database.ts +13 -0
- package/src/actor/definition.ts +64 -0
- package/src/actor/driver.ts +114 -0
- package/src/actor/errors.ts +556 -0
- package/src/actor/instance/connection-manager.ts +574 -0
- package/src/actor/instance/event-manager.ts +314 -0
- package/src/actor/instance/keys.ts +146 -0
- package/src/actor/instance/kv.ts +241 -0
- package/src/actor/instance/mod.ts +1658 -0
- package/src/actor/instance/persisted.ts +67 -0
- package/src/actor/instance/queue-manager.ts +603 -0
- package/src/actor/instance/queue.ts +345 -0
- package/src/actor/instance/schedule-manager.ts +392 -0
- package/src/actor/instance/state-manager.ts +542 -0
- package/src/actor/instance/traces-driver.ts +128 -0
- package/src/actor/keys.test.ts +275 -0
- package/src/actor/keys.ts +89 -0
- package/src/actor/log.ts +6 -0
- package/src/actor/mod.ts +110 -0
- package/src/actor/protocol/old.ts +416 -0
- package/src/actor/protocol/serde.ts +222 -0
- package/src/actor/router-endpoints.ts +400 -0
- package/src/actor/router-websocket-endpoints.test.ts +54 -0
- package/src/actor/router-websocket-endpoints.ts +405 -0
- package/src/actor/router.ts +380 -0
- package/src/actor/schedule.ts +17 -0
- package/src/actor/schema.ts +291 -0
- package/src/actor/utils.test.ts +48 -0
- package/src/actor/utils.ts +158 -0
- package/src/client/actor-common.ts +32 -0
- package/src/client/actor-conn.ts +1262 -0
- package/src/client/actor-handle.ts +344 -0
- package/src/client/actor-query.ts +112 -0
- package/src/client/client.ts +558 -0
- package/src/client/config.ts +151 -0
- package/src/client/errors.ts +76 -0
- package/src/client/log.ts +5 -0
- package/src/client/mod.browser.ts +2 -0
- package/src/client/mod.ts +70 -0
- package/src/client/queue.ts +146 -0
- package/src/client/raw-utils.ts +149 -0
- package/src/client/test.ts +44 -0
- package/src/client/utils.ts +252 -0
- package/src/common/actor-router-consts.ts +59 -0
- package/src/common/cors.ts +57 -0
- package/src/common/eventsource-interface.ts +47 -0
- package/src/common/eventsource.ts +44 -0
- package/src/common/inline-websocket-adapter.ts +154 -0
- package/src/common/log-levels.ts +27 -0
- package/src/common/log.ts +229 -0
- package/src/common/logfmt.ts +221 -0
- package/src/common/network.ts +2 -0
- package/src/common/router.ts +174 -0
- package/src/common/utils.ts +339 -0
- package/src/common/websocket-interface.ts +7 -0
- package/src/common/websocket.ts +43 -0
- 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/devtools-loader/index.ts +33 -0
- package/src/devtools-loader/log.ts +5 -0
- package/src/driver-helpers/mod.ts +33 -0
- package/src/driver-helpers/utils.ts +54 -0
- package/src/driver-test-suite/log.ts +5 -0
- package/src/driver-test-suite/mod.ts +293 -0
- package/src/driver-test-suite/test-inline-client-driver.ts +307 -0
- package/src/driver-test-suite/tests/access-control.ts +218 -0
- package/src/driver-test-suite/tests/action-features.ts +203 -0
- package/src/driver-test-suite/tests/actor-conn-hibernation.ts +152 -0
- package/src/driver-test-suite/tests/actor-conn-state.ts +300 -0
- package/src/driver-test-suite/tests/actor-conn.ts +596 -0
- package/src/driver-test-suite/tests/actor-db-raw.ts +73 -0
- package/src/driver-test-suite/tests/actor-db.ts +477 -0
- package/src/driver-test-suite/tests/actor-destroy.ts +294 -0
- package/src/driver-test-suite/tests/actor-driver.ts +18 -0
- package/src/driver-test-suite/tests/actor-error-handling.ts +150 -0
- package/src/driver-test-suite/tests/actor-handle.ts +312 -0
- package/src/driver-test-suite/tests/actor-inline-client.ts +163 -0
- package/src/driver-test-suite/tests/actor-inspector.ts +264 -0
- package/src/driver-test-suite/tests/actor-kv.ts +65 -0
- package/src/driver-test-suite/tests/actor-metadata.ts +116 -0
- package/src/driver-test-suite/tests/actor-onstatechange.ts +95 -0
- package/src/driver-test-suite/tests/actor-queue.ts +325 -0
- package/src/driver-test-suite/tests/actor-run.ts +181 -0
- package/src/driver-test-suite/tests/actor-schedule.ts +97 -0
- package/src/driver-test-suite/tests/actor-sleep.ts +415 -0
- package/src/driver-test-suite/tests/actor-state.ts +54 -0
- package/src/driver-test-suite/tests/actor-stateless.ts +70 -0
- package/src/driver-test-suite/tests/actor-vars.ts +97 -0
- package/src/driver-test-suite/tests/actor-workflow.ts +118 -0
- package/src/driver-test-suite/tests/manager-driver.ts +388 -0
- package/src/driver-test-suite/tests/raw-http-direct-registry.ts +227 -0
- package/src/driver-test-suite/tests/raw-http-request-properties.ts +454 -0
- package/src/driver-test-suite/tests/raw-http.ts +359 -0
- package/src/driver-test-suite/tests/raw-websocket-direct-registry.ts +393 -0
- package/src/driver-test-suite/tests/raw-websocket.ts +513 -0
- package/src/driver-test-suite/tests/request-access.ts +240 -0
- package/src/driver-test-suite/utils.ts +80 -0
- package/src/drivers/default.ts +38 -0
- package/src/drivers/engine/actor-driver.ts +1027 -0
- package/src/drivers/engine/config.ts +43 -0
- package/src/drivers/engine/log.ts +5 -0
- package/src/drivers/engine/mod.ts +36 -0
- package/src/drivers/file-system/actor.ts +102 -0
- package/src/drivers/file-system/global-state.ts +1445 -0
- package/src/drivers/file-system/kv-limits.ts +70 -0
- package/src/drivers/file-system/log.ts +5 -0
- package/src/drivers/file-system/manager.ts +300 -0
- package/src/drivers/file-system/mod.ts +78 -0
- package/src/drivers/file-system/sqlite-runtime.ts +210 -0
- package/src/drivers/file-system/utils.ts +125 -0
- package/src/engine-process/constants.ts +2 -0
- package/src/engine-process/log.ts +5 -0
- package/src/engine-process/mod.ts +464 -0
- package/src/globals.d.ts +35 -0
- package/src/inspector/actor-inspector.ts +352 -0
- package/src/inspector/config.ts +49 -0
- package/src/inspector/handler.ts +273 -0
- package/src/inspector/log.ts +5 -0
- package/src/inspector/mod.browser.ts +8 -0
- package/src/inspector/mod.ts +4 -0
- package/src/inspector/serve-ui.ts +40 -0
- package/src/inspector/transport.ts +18 -0
- package/src/inspector/utils.ts +32 -0
- package/src/manager/driver.ts +106 -0
- package/src/manager/gateway.ts +668 -0
- package/src/manager/log.ts +5 -0
- package/src/manager/mod.ts +2 -0
- package/src/manager/protocol/mod.ts +22 -0
- package/src/manager/protocol/query.ts +85 -0
- package/src/manager/router-schema.ts +22 -0
- package/src/manager/router.ts +660 -0
- package/src/manager-api/actors.ts +83 -0
- package/src/manager-api/common.ts +4 -0
- package/src/mod.ts +24 -0
- package/src/registry/config/driver.ts +21 -0
- package/src/registry/config/index.ts +510 -0
- package/src/registry/config/legacy-runner.ts +157 -0
- package/src/registry/config/runner.ts +21 -0
- package/src/registry/config/serverless.ts +94 -0
- package/src/registry/index.ts +194 -0
- package/src/registry/log.ts +5 -0
- package/src/remote-manager-driver/actor-http-client.ts +84 -0
- package/src/remote-manager-driver/actor-websocket-client.ts +81 -0
- package/src/remote-manager-driver/api-endpoints.ts +159 -0
- package/src/remote-manager-driver/api-utils.ts +69 -0
- package/src/remote-manager-driver/log.ts +5 -0
- package/src/remote-manager-driver/metadata.ts +64 -0
- package/src/remote-manager-driver/mod.ts +414 -0
- package/src/remote-manager-driver/ws-proxy.ts +189 -0
- package/src/schemas/actor-inspector/mod.ts +1 -0
- package/src/schemas/actor-inspector/versioned.ts +233 -0
- package/src/schemas/actor-persist/mod.ts +1 -0
- package/src/schemas/actor-persist/versioned.ts +217 -0
- package/src/schemas/client-protocol/mod.ts +1 -0
- package/src/schemas/client-protocol/versioned.ts +330 -0
- package/src/schemas/client-protocol-zod/mod.ts +118 -0
- package/src/schemas/file-system-driver/mod.ts +1 -0
- package/src/schemas/file-system-driver/versioned.ts +135 -0
- package/src/schemas/persist/mod.ts +1 -0
- package/src/schemas/transport/mod.ts +1 -0
- package/src/serde.ts +138 -0
- package/src/serve-test-suite/mod.ts +148 -0
- package/src/serverless/configure.ts +82 -0
- package/src/serverless/log.ts +5 -0
- package/src/serverless/router.test.ts +299 -0
- package/src/serverless/router.ts +215 -0
- package/src/test/log.ts +5 -0
- package/src/test/mod.ts +99 -0
- package/src/utils/crypto.ts +24 -0
- package/src/utils/endpoint-parser.test.ts +202 -0
- package/src/utils/endpoint-parser.ts +124 -0
- package/src/utils/env-vars.ts +78 -0
- package/src/utils/node.ts +178 -0
- package/src/utils/router.ts +83 -0
- package/src/utils/serve.ts +212 -0
- package/src/utils.test.ts +34 -0
- package/src/utils.ts +437 -0
- package/src/workflow/constants.ts +2 -0
- package/src/workflow/context.ts +597 -0
- package/src/workflow/driver.ts +194 -0
- package/src/workflow/inspector.ts +268 -0
- package/src/workflow/mod.ts +128 -0
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
import { createVersionedDataHandler } from "vbare";
|
|
2
|
+
import * as v1 from "../../../dist/schemas/client-protocol/v1";
|
|
3
|
+
import * as v2 from "../../../dist/schemas/client-protocol/v2";
|
|
4
|
+
import * as v3 from "../../../dist/schemas/client-protocol/v3";
|
|
5
|
+
|
|
6
|
+
export const CURRENT_VERSION = 3;
|
|
7
|
+
|
|
8
|
+
// Converter from v1 to v2: Remove connectionToken from Init message
|
|
9
|
+
const v1ToV2 = (v1Data: v1.ToClient): v2.ToClient => {
|
|
10
|
+
// Handle Init message specifically to remove connectionToken
|
|
11
|
+
if (v1Data.body.tag === "Init") {
|
|
12
|
+
const { actorId, connectionId } = v1Data.body.val as v1.Init;
|
|
13
|
+
return {
|
|
14
|
+
body: {
|
|
15
|
+
tag: "Init",
|
|
16
|
+
val: {
|
|
17
|
+
actorId,
|
|
18
|
+
connectionId,
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
// All other messages are unchanged
|
|
24
|
+
return v1Data as unknown as v2.ToClient;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
// Converter from v2 to v1: Add empty connectionToken to Init message
|
|
28
|
+
const v2ToV1 = (v2Data: v2.ToClient): v1.ToClient => {
|
|
29
|
+
// Handle Init message specifically to add connectionToken
|
|
30
|
+
if (v2Data.body.tag === "Init") {
|
|
31
|
+
const { actorId, connectionId } = v2Data.body.val;
|
|
32
|
+
return {
|
|
33
|
+
body: {
|
|
34
|
+
tag: "Init",
|
|
35
|
+
val: {
|
|
36
|
+
actorId,
|
|
37
|
+
connectionId,
|
|
38
|
+
connectionToken: "", // Add empty connectionToken for v1 compatibility
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
// All other messages are unchanged
|
|
44
|
+
return v2Data as unknown as v1.ToClient;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// Converter from v2 to v3: No changes needed for ToClient
|
|
48
|
+
const v2ToV3 = (v2Data: v2.ToClient): v3.ToClient => {
|
|
49
|
+
return v2Data as unknown as v3.ToClient;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// Converter from v3 to v2: No changes needed for ToClient
|
|
53
|
+
const v3ToV2 = (v3Data: v3.ToClient): v2.ToClient => {
|
|
54
|
+
return v3Data as unknown as v2.ToClient;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
// ToServer identity converters (ToServer is identical across v1, v2, and v3)
|
|
58
|
+
const v1ToServerV2 = (v1Data: v1.ToServer): v2.ToServer => {
|
|
59
|
+
return v1Data as unknown as v2.ToServer;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const v2ToServerV3 = (v2Data: v2.ToServer): v3.ToServer => {
|
|
63
|
+
return v2Data as unknown as v3.ToServer;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
const v3ToServerV2 = (v3Data: v3.ToServer): v2.ToServer => {
|
|
67
|
+
return v3Data as unknown as v2.ToServer;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const v2ToServerV1 = (v2Data: v2.ToServer): v1.ToServer => {
|
|
71
|
+
return v2Data as unknown as v1.ToServer;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
export const TO_SERVER_VERSIONED = createVersionedDataHandler<v3.ToServer>({
|
|
75
|
+
deserializeVersion: (bytes, version) => {
|
|
76
|
+
switch (version) {
|
|
77
|
+
case 1:
|
|
78
|
+
return v1.decodeToServer(bytes);
|
|
79
|
+
case 2:
|
|
80
|
+
return v2.decodeToServer(bytes);
|
|
81
|
+
case 3:
|
|
82
|
+
return v3.decodeToServer(bytes);
|
|
83
|
+
default:
|
|
84
|
+
throw new Error(`Unknown version ${version}`);
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
serializeVersion: (data, version) => {
|
|
88
|
+
switch (version) {
|
|
89
|
+
case 1:
|
|
90
|
+
return v1.encodeToServer(data as v1.ToServer);
|
|
91
|
+
case 2:
|
|
92
|
+
return v2.encodeToServer(data as v2.ToServer);
|
|
93
|
+
case 3:
|
|
94
|
+
return v3.encodeToServer(data as v3.ToServer);
|
|
95
|
+
default:
|
|
96
|
+
throw new Error(`Unknown version ${version}`);
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
deserializeConverters: () => [v1ToServerV2, v2ToServerV3],
|
|
100
|
+
serializeConverters: () => [v3ToServerV2, v2ToServerV1],
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
export const TO_CLIENT_VERSIONED = createVersionedDataHandler<v3.ToClient>({
|
|
104
|
+
deserializeVersion: (bytes, version) => {
|
|
105
|
+
switch (version) {
|
|
106
|
+
case 1:
|
|
107
|
+
return v1.decodeToClient(bytes);
|
|
108
|
+
case 2:
|
|
109
|
+
return v2.decodeToClient(bytes);
|
|
110
|
+
case 3:
|
|
111
|
+
return v3.decodeToClient(bytes);
|
|
112
|
+
default:
|
|
113
|
+
throw new Error(`Unknown version ${version}`);
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
serializeVersion: (data, version) => {
|
|
117
|
+
switch (version) {
|
|
118
|
+
case 1:
|
|
119
|
+
return v1.encodeToClient(data as v1.ToClient);
|
|
120
|
+
case 2:
|
|
121
|
+
return v2.encodeToClient(data as v2.ToClient);
|
|
122
|
+
case 3:
|
|
123
|
+
return v3.encodeToClient(data as v3.ToClient);
|
|
124
|
+
default:
|
|
125
|
+
throw new Error(`Unknown version ${version}`);
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
deserializeConverters: () => [v1ToV2, v2ToV3],
|
|
129
|
+
serializeConverters: () => [v3ToV2, v2ToV1],
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
export const HTTP_ACTION_REQUEST_VERSIONED =
|
|
133
|
+
createVersionedDataHandler<v3.HttpActionRequest>({
|
|
134
|
+
deserializeVersion: (bytes, version) => {
|
|
135
|
+
switch (version) {
|
|
136
|
+
case 1:
|
|
137
|
+
return v1.decodeHttpActionRequest(bytes);
|
|
138
|
+
case 2:
|
|
139
|
+
return v2.decodeHttpActionRequest(bytes);
|
|
140
|
+
case 3:
|
|
141
|
+
return v3.decodeHttpActionRequest(bytes);
|
|
142
|
+
default:
|
|
143
|
+
throw new Error(`Unknown version ${version}`);
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
serializeVersion: (data, version) => {
|
|
147
|
+
switch (version) {
|
|
148
|
+
case 1:
|
|
149
|
+
return v1.encodeHttpActionRequest(
|
|
150
|
+
data as v1.HttpActionRequest,
|
|
151
|
+
);
|
|
152
|
+
case 2:
|
|
153
|
+
return v2.encodeHttpActionRequest(
|
|
154
|
+
data as v2.HttpActionRequest,
|
|
155
|
+
);
|
|
156
|
+
case 3:
|
|
157
|
+
return v3.encodeHttpActionRequest(
|
|
158
|
+
data as v3.HttpActionRequest,
|
|
159
|
+
);
|
|
160
|
+
default:
|
|
161
|
+
throw new Error(`Unknown version ${version}`);
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
deserializeConverters: () => [],
|
|
165
|
+
serializeConverters: () => [],
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
export const HTTP_ACTION_RESPONSE_VERSIONED =
|
|
169
|
+
createVersionedDataHandler<v3.HttpActionResponse>({
|
|
170
|
+
deserializeVersion: (bytes, version) => {
|
|
171
|
+
switch (version) {
|
|
172
|
+
case 1:
|
|
173
|
+
return v1.decodeHttpActionResponse(bytes);
|
|
174
|
+
case 2:
|
|
175
|
+
return v2.decodeHttpActionResponse(bytes);
|
|
176
|
+
case 3:
|
|
177
|
+
return v3.decodeHttpActionResponse(bytes);
|
|
178
|
+
default:
|
|
179
|
+
throw new Error(`Unknown version ${version}`);
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
serializeVersion: (data, version) => {
|
|
183
|
+
switch (version) {
|
|
184
|
+
case 1:
|
|
185
|
+
return v1.encodeHttpActionResponse(
|
|
186
|
+
data as v1.HttpActionResponse,
|
|
187
|
+
);
|
|
188
|
+
case 2:
|
|
189
|
+
return v2.encodeHttpActionResponse(
|
|
190
|
+
data as v2.HttpActionResponse,
|
|
191
|
+
);
|
|
192
|
+
case 3:
|
|
193
|
+
return v3.encodeHttpActionResponse(
|
|
194
|
+
data as v3.HttpActionResponse,
|
|
195
|
+
);
|
|
196
|
+
default:
|
|
197
|
+
throw new Error(`Unknown version ${version}`);
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
deserializeConverters: () => [],
|
|
201
|
+
serializeConverters: () => [],
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
export const HTTP_QUEUE_SEND_REQUEST_VERSIONED =
|
|
205
|
+
createVersionedDataHandler<v3.HttpQueueSendRequest>({
|
|
206
|
+
deserializeVersion: (bytes, version) => {
|
|
207
|
+
switch (version) {
|
|
208
|
+
case 3:
|
|
209
|
+
return v3.decodeHttpQueueSendRequest(bytes);
|
|
210
|
+
default:
|
|
211
|
+
throw new Error(
|
|
212
|
+
`HttpQueueSendRequest only exists in version 3+, got version ${version}`,
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
serializeVersion: (data, version) => {
|
|
217
|
+
switch (version) {
|
|
218
|
+
case 3:
|
|
219
|
+
return v3.encodeHttpQueueSendRequest(
|
|
220
|
+
data as v3.HttpQueueSendRequest,
|
|
221
|
+
);
|
|
222
|
+
default:
|
|
223
|
+
throw new Error(
|
|
224
|
+
`HttpQueueSendRequest only exists in version 3+, got version ${version}`,
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
deserializeConverters: () => [],
|
|
229
|
+
serializeConverters: () => [],
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
export const HTTP_QUEUE_SEND_RESPONSE_VERSIONED =
|
|
233
|
+
createVersionedDataHandler<v3.HttpQueueSendResponse>({
|
|
234
|
+
deserializeVersion: (bytes, version) => {
|
|
235
|
+
switch (version) {
|
|
236
|
+
case 3:
|
|
237
|
+
return v3.decodeHttpQueueSendResponse(bytes);
|
|
238
|
+
default:
|
|
239
|
+
throw new Error(
|
|
240
|
+
`HttpQueueSendResponse only exists in version 3+, got version ${version}`,
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
serializeVersion: (data, version) => {
|
|
245
|
+
switch (version) {
|
|
246
|
+
case 3:
|
|
247
|
+
return v3.encodeHttpQueueSendResponse(
|
|
248
|
+
data as v3.HttpQueueSendResponse,
|
|
249
|
+
);
|
|
250
|
+
default:
|
|
251
|
+
throw new Error(
|
|
252
|
+
`HttpQueueSendResponse only exists in version 3+, got version ${version}`,
|
|
253
|
+
);
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
deserializeConverters: () => [],
|
|
257
|
+
serializeConverters: () => [],
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
export const HTTP_RESPONSE_ERROR_VERSIONED =
|
|
261
|
+
createVersionedDataHandler<v3.HttpResponseError>({
|
|
262
|
+
deserializeVersion: (bytes, version) => {
|
|
263
|
+
switch (version) {
|
|
264
|
+
case 1:
|
|
265
|
+
return v1.decodeHttpResponseError(bytes);
|
|
266
|
+
case 2:
|
|
267
|
+
return v2.decodeHttpResponseError(bytes);
|
|
268
|
+
case 3:
|
|
269
|
+
return v3.decodeHttpResponseError(bytes);
|
|
270
|
+
default:
|
|
271
|
+
throw new Error(`Unknown version ${version}`);
|
|
272
|
+
}
|
|
273
|
+
},
|
|
274
|
+
serializeVersion: (data, version) => {
|
|
275
|
+
switch (version) {
|
|
276
|
+
case 1:
|
|
277
|
+
return v1.encodeHttpResponseError(
|
|
278
|
+
data as v1.HttpResponseError,
|
|
279
|
+
);
|
|
280
|
+
case 2:
|
|
281
|
+
return v2.encodeHttpResponseError(
|
|
282
|
+
data as v2.HttpResponseError,
|
|
283
|
+
);
|
|
284
|
+
case 3:
|
|
285
|
+
return v3.encodeHttpResponseError(
|
|
286
|
+
data as v3.HttpResponseError,
|
|
287
|
+
);
|
|
288
|
+
default:
|
|
289
|
+
throw new Error(`Unknown version ${version}`);
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
deserializeConverters: () => [],
|
|
293
|
+
serializeConverters: () => [],
|
|
294
|
+
});
|
|
295
|
+
|
|
296
|
+
export const HTTP_RESOLVE_RESPONSE_VERSIONED =
|
|
297
|
+
createVersionedDataHandler<v3.HttpResolveResponse>({
|
|
298
|
+
deserializeVersion: (bytes, version) => {
|
|
299
|
+
switch (version) {
|
|
300
|
+
case 1:
|
|
301
|
+
return v1.decodeHttpResolveResponse(bytes);
|
|
302
|
+
case 2:
|
|
303
|
+
return v2.decodeHttpResolveResponse(bytes);
|
|
304
|
+
case 3:
|
|
305
|
+
return v3.decodeHttpResolveResponse(bytes);
|
|
306
|
+
default:
|
|
307
|
+
throw new Error(`Unknown version ${version}`);
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
serializeVersion: (data, version) => {
|
|
311
|
+
switch (version) {
|
|
312
|
+
case 1:
|
|
313
|
+
return v1.encodeHttpResolveResponse(
|
|
314
|
+
data as v1.HttpResolveResponse,
|
|
315
|
+
);
|
|
316
|
+
case 2:
|
|
317
|
+
return v2.encodeHttpResolveResponse(
|
|
318
|
+
data as v2.HttpResolveResponse,
|
|
319
|
+
);
|
|
320
|
+
case 3:
|
|
321
|
+
return v3.encodeHttpResolveResponse(
|
|
322
|
+
data as v3.HttpResolveResponse,
|
|
323
|
+
);
|
|
324
|
+
default:
|
|
325
|
+
throw new Error(`Unknown version ${version}`);
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
deserializeConverters: () => [],
|
|
329
|
+
serializeConverters: () => [],
|
|
330
|
+
});
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { z } from "zod/v4";
|
|
2
|
+
|
|
3
|
+
// Helper schemas
|
|
4
|
+
const UintSchema = z.bigint();
|
|
5
|
+
const OptionalUintSchema = UintSchema.nullable();
|
|
6
|
+
|
|
7
|
+
// MARK: Message To Client
|
|
8
|
+
export const InitSchema = z.object({
|
|
9
|
+
actorId: z.string(),
|
|
10
|
+
connectionId: z.string(),
|
|
11
|
+
});
|
|
12
|
+
export type Init = z.infer<typeof InitSchema>;
|
|
13
|
+
|
|
14
|
+
export const ErrorSchema = z.object({
|
|
15
|
+
group: z.string(),
|
|
16
|
+
code: z.string(),
|
|
17
|
+
message: z.string(),
|
|
18
|
+
metadata: z.unknown().optional(),
|
|
19
|
+
actionId: OptionalUintSchema,
|
|
20
|
+
});
|
|
21
|
+
export type Error = z.infer<typeof ErrorSchema>;
|
|
22
|
+
|
|
23
|
+
export const ActionResponseSchema = z.object({
|
|
24
|
+
id: UintSchema,
|
|
25
|
+
output: z.unknown(),
|
|
26
|
+
});
|
|
27
|
+
export type ActionResponse = z.infer<typeof ActionResponseSchema>;
|
|
28
|
+
|
|
29
|
+
export const EventSchema = z.object({
|
|
30
|
+
name: z.string(),
|
|
31
|
+
args: z.unknown(),
|
|
32
|
+
});
|
|
33
|
+
export type Event = z.infer<typeof EventSchema>;
|
|
34
|
+
|
|
35
|
+
export const ToClientBodySchema = z.discriminatedUnion("tag", [
|
|
36
|
+
z.object({ tag: z.literal("Init"), val: InitSchema }),
|
|
37
|
+
z.object({ tag: z.literal("Error"), val: ErrorSchema }),
|
|
38
|
+
z.object({ tag: z.literal("ActionResponse"), val: ActionResponseSchema }),
|
|
39
|
+
z.object({ tag: z.literal("Event"), val: EventSchema }),
|
|
40
|
+
]);
|
|
41
|
+
export type ToClientBody = z.infer<typeof ToClientBodySchema>;
|
|
42
|
+
|
|
43
|
+
export const ToClientSchema = z.object({
|
|
44
|
+
body: ToClientBodySchema,
|
|
45
|
+
});
|
|
46
|
+
export type ToClient = z.infer<typeof ToClientSchema>;
|
|
47
|
+
|
|
48
|
+
// MARK: Message To Server
|
|
49
|
+
export const ActionRequestSchema = z.object({
|
|
50
|
+
id: UintSchema,
|
|
51
|
+
name: z.string(),
|
|
52
|
+
args: z.unknown(),
|
|
53
|
+
});
|
|
54
|
+
export type ActionRequest = z.infer<typeof ActionRequestSchema>;
|
|
55
|
+
|
|
56
|
+
export const SubscriptionRequestSchema = z.object({
|
|
57
|
+
eventName: z.string(),
|
|
58
|
+
subscribe: z.boolean(),
|
|
59
|
+
});
|
|
60
|
+
export type SubscriptionRequest = z.infer<typeof SubscriptionRequestSchema>;
|
|
61
|
+
|
|
62
|
+
export const ToServerBodySchema = z.discriminatedUnion("tag", [
|
|
63
|
+
z.object({ tag: z.literal("ActionRequest"), val: ActionRequestSchema }),
|
|
64
|
+
z.object({
|
|
65
|
+
tag: z.literal("SubscriptionRequest"),
|
|
66
|
+
val: SubscriptionRequestSchema,
|
|
67
|
+
}),
|
|
68
|
+
]);
|
|
69
|
+
export type ToServerBody = z.infer<typeof ToServerBodySchema>;
|
|
70
|
+
|
|
71
|
+
export const ToServerSchema = z.object({
|
|
72
|
+
body: ToServerBodySchema,
|
|
73
|
+
});
|
|
74
|
+
export type ToServer = z.infer<typeof ToServerSchema>;
|
|
75
|
+
|
|
76
|
+
// MARK: HTTP Action
|
|
77
|
+
export const HttpActionRequestSchema = z.object({
|
|
78
|
+
args: z.unknown(),
|
|
79
|
+
});
|
|
80
|
+
export type HttpActionRequest = z.infer<typeof HttpActionRequestSchema>;
|
|
81
|
+
|
|
82
|
+
export const HttpActionResponseSchema = z.object({
|
|
83
|
+
output: z.unknown(),
|
|
84
|
+
});
|
|
85
|
+
export type HttpActionResponse = z.infer<typeof HttpActionResponseSchema>;
|
|
86
|
+
|
|
87
|
+
// MARK: HTTP Queue
|
|
88
|
+
export const HttpQueueSendRequestSchema = z.object({
|
|
89
|
+
body: z.unknown(),
|
|
90
|
+
name: z.string().optional(),
|
|
91
|
+
wait: z.boolean().optional(),
|
|
92
|
+
timeout: z.number().optional(),
|
|
93
|
+
});
|
|
94
|
+
export type HttpQueueSendRequest = z.infer<typeof HttpQueueSendRequestSchema>;
|
|
95
|
+
|
|
96
|
+
export const HttpQueueSendResponseSchema = z.object({
|
|
97
|
+
status: z.enum(["completed", "timedOut"]),
|
|
98
|
+
response: z.unknown().optional(),
|
|
99
|
+
});
|
|
100
|
+
export type HttpQueueSendResponse = z.infer<typeof HttpQueueSendResponseSchema>;
|
|
101
|
+
|
|
102
|
+
// MARK: HTTP Error
|
|
103
|
+
export const HttpResponseErrorSchema = z.object({
|
|
104
|
+
group: z.string(),
|
|
105
|
+
code: z.string(),
|
|
106
|
+
message: z.string(),
|
|
107
|
+
metadata: z.unknown().optional(),
|
|
108
|
+
});
|
|
109
|
+
export type HttpResponseError = z.infer<typeof HttpResponseErrorSchema>;
|
|
110
|
+
|
|
111
|
+
// MARK: HTTP Resolve
|
|
112
|
+
export const HttpResolveRequestSchema = z.null();
|
|
113
|
+
export type HttpResolveRequest = z.infer<typeof HttpResolveRequestSchema>;
|
|
114
|
+
|
|
115
|
+
export const HttpResolveResponseSchema = z.object({
|
|
116
|
+
actorId: z.string(),
|
|
117
|
+
});
|
|
118
|
+
export type HttpResolveResponse = z.infer<typeof HttpResolveResponseSchema>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../../../dist/schemas/file-system-driver/v3";
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { createVersionedDataHandler } from "vbare";
|
|
2
|
+
import { bufferToArrayBuffer } from "@/utils";
|
|
3
|
+
import * as v1 from "../../../dist/schemas/file-system-driver/v1";
|
|
4
|
+
import * as v2 from "../../../dist/schemas/file-system-driver/v2";
|
|
5
|
+
import * as v3 from "../../../dist/schemas/file-system-driver/v3";
|
|
6
|
+
|
|
7
|
+
export const CURRENT_VERSION = 3;
|
|
8
|
+
|
|
9
|
+
// Converter from v1 to v2
|
|
10
|
+
const v1ToV2 = (v1State: v1.ActorState): v2.ActorState => {
|
|
11
|
+
// Create a new kvStorage list with the legacy persist data
|
|
12
|
+
const kvStorage: v2.ActorKvEntry[] = [];
|
|
13
|
+
|
|
14
|
+
// Store the legacy persist data under key [1]
|
|
15
|
+
if (v1State.persistedData) {
|
|
16
|
+
// Key [1] as Uint8Array
|
|
17
|
+
const key = new Uint8Array([1]);
|
|
18
|
+
kvStorage.push({
|
|
19
|
+
key: bufferToArrayBuffer(key),
|
|
20
|
+
value: v1State.persistedData,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return {
|
|
25
|
+
actorId: v1State.actorId,
|
|
26
|
+
name: v1State.name,
|
|
27
|
+
key: v1State.key,
|
|
28
|
+
kvStorage,
|
|
29
|
+
createdAt: v1State.createdAt,
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
// Converter from v2 to v3
|
|
34
|
+
const v2ToV3 = (v2State: v2.ActorState): v3.ActorState => {
|
|
35
|
+
// Migrate from v2 to v3 by adding the new optional timestamp fields
|
|
36
|
+
return {
|
|
37
|
+
actorId: v2State.actorId,
|
|
38
|
+
name: v2State.name,
|
|
39
|
+
key: v2State.key,
|
|
40
|
+
kvStorage: v2State.kvStorage,
|
|
41
|
+
createdAt: v2State.createdAt,
|
|
42
|
+
startTs: null,
|
|
43
|
+
connectableTs: null,
|
|
44
|
+
sleepTs: null,
|
|
45
|
+
destroyTs: null,
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
// Converter from v3 to v2
|
|
50
|
+
const v3ToV2 = (v3State: v3.ActorState): v2.ActorState => {
|
|
51
|
+
// Downgrade from v3 to v2 by removing the timestamp fields
|
|
52
|
+
return {
|
|
53
|
+
actorId: v3State.actorId,
|
|
54
|
+
name: v3State.name,
|
|
55
|
+
key: v3State.key,
|
|
56
|
+
kvStorage: v3State.kvStorage,
|
|
57
|
+
createdAt: v3State.createdAt,
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// Converter from v2 to v1
|
|
62
|
+
const v2ToV1 = (v2State: v2.ActorState): v1.ActorState => {
|
|
63
|
+
// Downgrade from v2 to v1 by converting kvStorage back to persistedData
|
|
64
|
+
// Find the persist data entry (key [1])
|
|
65
|
+
const persistDataEntry = v2State.kvStorage.find((entry) => {
|
|
66
|
+
const key = new Uint8Array(entry.key);
|
|
67
|
+
return key.length === 1 && key[0] === 1;
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
return {
|
|
71
|
+
actorId: v2State.actorId,
|
|
72
|
+
name: v2State.name,
|
|
73
|
+
key: v2State.key,
|
|
74
|
+
persistedData: persistDataEntry?.value || new ArrayBuffer(0),
|
|
75
|
+
createdAt: v2State.createdAt,
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
export const ACTOR_STATE_VERSIONED = createVersionedDataHandler<v3.ActorState>({
|
|
80
|
+
deserializeVersion: (bytes, version) => {
|
|
81
|
+
switch (version) {
|
|
82
|
+
case 1:
|
|
83
|
+
return v1.decodeActorState(bytes);
|
|
84
|
+
case 2:
|
|
85
|
+
return v2.decodeActorState(bytes);
|
|
86
|
+
case 3:
|
|
87
|
+
return v3.decodeActorState(bytes);
|
|
88
|
+
default:
|
|
89
|
+
throw new Error(`Unknown version ${version}`);
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
serializeVersion: (data, version) => {
|
|
93
|
+
switch (version) {
|
|
94
|
+
case 1:
|
|
95
|
+
return v1.encodeActorState(data as v1.ActorState);
|
|
96
|
+
case 2:
|
|
97
|
+
return v2.encodeActorState(data as v2.ActorState);
|
|
98
|
+
case 3:
|
|
99
|
+
return v3.encodeActorState(data as v3.ActorState);
|
|
100
|
+
default:
|
|
101
|
+
throw new Error(`Unknown version ${version}`);
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
deserializeConverters: () => [v1ToV2, v2ToV3],
|
|
105
|
+
serializeConverters: () => [v3ToV2, v2ToV1],
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
export const ACTOR_ALARM_VERSIONED = createVersionedDataHandler<v3.ActorAlarm>({
|
|
109
|
+
deserializeVersion: (bytes, version) => {
|
|
110
|
+
switch (version) {
|
|
111
|
+
case 1:
|
|
112
|
+
return v1.decodeActorAlarm(bytes);
|
|
113
|
+
case 2:
|
|
114
|
+
return v2.decodeActorAlarm(bytes);
|
|
115
|
+
case 3:
|
|
116
|
+
return v3.decodeActorAlarm(bytes);
|
|
117
|
+
default:
|
|
118
|
+
throw new Error(`Unknown version ${version}`);
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
serializeVersion: (data, version) => {
|
|
122
|
+
switch (version) {
|
|
123
|
+
case 1:
|
|
124
|
+
return v1.encodeActorAlarm(data as v1.ActorAlarm);
|
|
125
|
+
case 2:
|
|
126
|
+
return v2.encodeActorAlarm(data as v2.ActorAlarm);
|
|
127
|
+
case 3:
|
|
128
|
+
return v3.encodeActorAlarm(data as v3.ActorAlarm);
|
|
129
|
+
default:
|
|
130
|
+
throw new Error(`Unknown version ${version}`);
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
deserializeConverters: () => [],
|
|
134
|
+
serializeConverters: () => [],
|
|
135
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../../../dist/schemas/persist/v1";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../../../dist/schemas/transport/v1";
|