rivetkit 2.1.5 → 2.1.6-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 +593 -588
- package/dist/browser/client.js +215 -35
- package/dist/browser/client.js.map +1 -1
- package/dist/browser/inspector/client.js +109 -10
- package/dist/browser/inspector/client.js.map +1 -1
- package/dist/inspector.tar.gz +0 -0
- package/dist/tsup/actor/errors.cjs +2 -2
- package/dist/tsup/actor/errors.js +1 -1
- package/dist/tsup/{actor-router-consts-D29T1Z-K.d.cts → actor-router-consts-DU-1IdQj.d.cts} +1 -1
- package/dist/tsup/{actor-router-consts-D29T1Z-K.d.ts → actor-router-consts-DU-1IdQj.d.ts} +1 -1
- package/dist/tsup/chunk-2ELYUO6C.cjs +112 -0
- package/dist/tsup/chunk-2ELYUO6C.cjs.map +1 -0
- package/dist/tsup/chunk-2LY7RW3Y.cjs +2316 -0
- package/dist/tsup/chunk-2LY7RW3Y.cjs.map +1 -0
- package/dist/tsup/{chunk-L47L3ZWJ.cjs → chunk-6G7ZNM27.cjs} +11 -6
- package/dist/tsup/chunk-6G7ZNM27.cjs.map +1 -0
- package/dist/tsup/{chunk-PB5AEMKQ.cjs → chunk-A4KEUCB6.cjs} +84 -34
- package/dist/tsup/chunk-A4KEUCB6.cjs.map +1 -0
- package/dist/tsup/{chunk-7HTNH26M.js → chunk-AKUJ5OTO.js} +11 -6
- package/dist/tsup/chunk-AKUJ5OTO.js.map +1 -0
- package/dist/tsup/{chunk-TADUYCHF.js → chunk-C22JYHVT.js} +77 -27
- package/dist/tsup/chunk-C22JYHVT.js.map +1 -0
- package/dist/tsup/chunk-C4EB42ET.js +1459 -0
- package/dist/tsup/chunk-C4EB42ET.js.map +1 -0
- package/dist/tsup/chunk-CGGGBIDP.cjs +1459 -0
- package/dist/tsup/chunk-CGGGBIDP.cjs.map +1 -0
- package/dist/tsup/chunk-CMQPDBBR.cjs +1486 -0
- package/dist/tsup/chunk-CMQPDBBR.cjs.map +1 -0
- package/dist/tsup/{chunk-GQGRQDRL.cjs → chunk-DH6UINWA.cjs} +4 -4
- package/dist/tsup/{chunk-GQGRQDRL.cjs.map → chunk-DH6UINWA.cjs.map} +1 -1
- package/dist/tsup/chunk-DK46YYCJ.js +1486 -0
- package/dist/tsup/chunk-DK46YYCJ.js.map +1 -0
- package/dist/tsup/chunk-EGWXXBZV.js +2316 -0
- package/dist/tsup/chunk-EGWXXBZV.js.map +1 -0
- package/dist/tsup/{chunk-S662Y6ZU.js → chunk-EONWXYMN.js} +2 -2
- package/dist/tsup/{chunk-N4KRDJ56.js → chunk-GFGRBYO2.js} +35 -6
- package/dist/tsup/chunk-GFGRBYO2.js.map +1 -0
- package/dist/tsup/{chunk-IIJNPVPQ.cjs → chunk-GUHXWPGB.cjs} +1515 -1479
- package/dist/tsup/chunk-GUHXWPGB.cjs.map +1 -0
- package/dist/tsup/{chunk-TI5PXQGG.cjs → chunk-HNE2AK6C.cjs} +2375 -3713
- package/dist/tsup/chunk-HNE2AK6C.cjs.map +1 -0
- package/dist/tsup/{chunk-2OK7S6QF.js → chunk-I5I6OALK.js} +2 -2
- package/dist/tsup/chunk-IHQAF2HV.cjs +23 -0
- package/dist/tsup/chunk-IHQAF2HV.cjs.map +1 -0
- package/dist/tsup/{chunk-U5SMSA27.cjs → chunk-JJNZQDUN.cjs} +667 -2517
- package/dist/tsup/chunk-JJNZQDUN.cjs.map +1 -0
- package/dist/tsup/{chunk-ZPWOYQHN.js → chunk-JJSPHLJN.js} +219 -287
- package/dist/tsup/chunk-JJSPHLJN.js.map +1 -0
- package/dist/tsup/chunk-JRKPV5NJ.js +481 -0
- package/dist/tsup/chunk-JRKPV5NJ.js.map +1 -0
- package/dist/tsup/{chunk-VKVNIQRQ.js → chunk-K7MVU5SI.js} +36 -41
- package/dist/tsup/chunk-K7MVU5SI.js.map +1 -0
- package/dist/tsup/{chunk-KJSYAUOM.js → chunk-MLK3GY6P.js} +43 -27
- package/dist/tsup/chunk-MLK3GY6P.js.map +1 -0
- package/dist/tsup/{chunk-HYPIHCDT.cjs → chunk-MPLMTJY5.cjs} +123 -23
- package/dist/tsup/chunk-MPLMTJY5.cjs.map +1 -0
- package/dist/tsup/{chunk-MIX2KB6U.js → chunk-PQWI44WD.js} +1755 -3093
- package/dist/tsup/chunk-PQWI44WD.js.map +1 -0
- package/dist/tsup/{chunk-SR3KQE7Q.cjs → chunk-SQFCIDCG.cjs} +35 -6
- package/dist/tsup/chunk-SQFCIDCG.cjs.map +1 -0
- package/dist/tsup/{chunk-WY2SHWXQ.js → chunk-SVHJSM2E.js} +110 -24
- package/dist/tsup/chunk-SVHJSM2E.js.map +1 -0
- package/dist/tsup/chunk-T5KYKM6R.js +49 -0
- package/dist/tsup/chunk-T5KYKM6R.js.map +1 -0
- package/dist/tsup/{chunk-7WF2QSIC.cjs → chunk-TJ7DKW6F.cjs} +123 -37
- package/dist/tsup/chunk-TJ7DKW6F.cjs.map +1 -0
- package/dist/tsup/chunk-UQZRMTM3.js +23 -0
- package/dist/tsup/chunk-UQZRMTM3.js.map +1 -0
- package/dist/tsup/{chunk-JC6BEPE7.cjs → chunk-V3JSZR5P.cjs} +3 -3
- package/dist/tsup/{chunk-JC6BEPE7.cjs.map → chunk-V3JSZR5P.cjs.map} +1 -1
- package/dist/tsup/{chunk-OAXJWGMU.cjs → chunk-VBR35EQF.cjs} +271 -339
- package/dist/tsup/chunk-VBR35EQF.cjs.map +1 -0
- package/dist/tsup/{chunk-EIATSBYZ.js → chunk-VWYO36X4.js} +117 -17
- package/dist/tsup/chunk-VWYO36X4.js.map +1 -0
- package/dist/tsup/{chunk-JPXO2H55.js → chunk-WW27B6DM.js} +1452 -1416
- package/dist/tsup/chunk-WW27B6DM.js.map +1 -0
- package/dist/tsup/chunk-YAE3MEJM.cjs +49 -0
- package/dist/tsup/chunk-YAE3MEJM.cjs.map +1 -0
- package/dist/tsup/{chunk-SRIM3GHD.js → chunk-YGYGANCA.js} +473 -2323
- package/dist/tsup/chunk-YGYGANCA.js.map +1 -0
- package/dist/tsup/chunk-YZJWZBY5.cjs +481 -0
- package/dist/tsup/chunk-YZJWZBY5.cjs.map +1 -0
- package/dist/tsup/{chunk-ZFY5J2EP.cjs → chunk-ZZLJ5TSM.cjs} +39 -44
- package/dist/tsup/chunk-ZZLJ5TSM.cjs.map +1 -0
- package/dist/tsup/client/mod.cjs +10 -7
- package/dist/tsup/client/mod.cjs.map +1 -1
- package/dist/tsup/client/mod.d.cts +6 -6
- package/dist/tsup/client/mod.d.ts +6 -6
- package/dist/tsup/client/mod.js +11 -8
- package/dist/tsup/common/log.cjs +3 -3
- package/dist/tsup/common/log.js +2 -2
- package/dist/tsup/common/websocket.cjs +4 -4
- package/dist/tsup/common/websocket.js +3 -3
- package/dist/tsup/{config-Qj-zLJPc.d.ts → config-C2Wwnc69.d.ts} +142 -208
- package/dist/tsup/{config-BiNoIHRs.d.ts → config-DROwzBLT.d.cts} +82 -6
- package/dist/tsup/{config-BiNoIHRs.d.cts → config-DROwzBLT.d.ts} +82 -6
- package/dist/tsup/{config-iPj5l1bL.d.cts → config-ehT-_3BB.d.cts} +142 -208
- package/dist/tsup/{context-DzvH1PBK.d.cts → context-DGMJuAyc.d.ts} +16 -3
- package/dist/tsup/{context-CQCMuHND.d.ts → context-Dpp2RJbW.d.cts} +16 -3
- package/dist/tsup/db/drizzle/mod.cjs +3 -3
- package/dist/tsup/db/drizzle/mod.d.cts +1 -1
- package/dist/tsup/db/drizzle/mod.d.ts +1 -1
- package/dist/tsup/db/drizzle/mod.js +2 -2
- package/dist/tsup/db/mod.cjs +3 -3
- package/dist/tsup/db/mod.d.cts +1 -1
- package/dist/tsup/db/mod.d.ts +1 -1
- package/dist/tsup/db/mod.js +2 -2
- package/dist/tsup/{driver-Jo8v-kbU.d.ts → driver-CYZP9QYo.d.ts} +1 -1
- package/dist/tsup/{driver-iV8J-WMv.d.cts → driver-CoTFpipv.d.cts} +1 -1
- package/dist/tsup/driver-helpers/mod.cjs +7 -5
- package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
- package/dist/tsup/driver-helpers/mod.d.cts +17 -18
- package/dist/tsup/driver-helpers/mod.d.ts +17 -18
- package/dist/tsup/driver-helpers/mod.js +11 -9
- package/dist/tsup/driver-test-suite/mod.cjs +1275 -228
- package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/driver-test-suite/mod.d.cts +6 -5
- package/dist/tsup/driver-test-suite/mod.d.ts +6 -5
- package/dist/tsup/driver-test-suite/mod.js +1581 -534
- package/dist/tsup/driver-test-suite/mod.js.map +1 -1
- package/dist/tsup/inspector/mod.cjs +4 -4
- package/dist/tsup/inspector/mod.js +3 -3
- package/dist/tsup/mod.cjs +15 -9
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +9 -9
- package/dist/tsup/mod.d.ts +9 -9
- package/dist/tsup/mod.js +19 -13
- package/dist/tsup/sandbox/client.cjs +28 -0
- package/dist/tsup/sandbox/client.cjs.map +1 -0
- package/dist/tsup/sandbox/client.d.cts +88 -0
- package/dist/tsup/sandbox/client.d.ts +88 -0
- package/dist/tsup/sandbox/client.js +28 -0
- package/dist/tsup/sandbox/client.js.map +1 -0
- package/dist/tsup/sandbox/index.cjs +761 -0
- package/dist/tsup/sandbox/index.cjs.map +1 -0
- package/dist/tsup/sandbox/index.d.cts +120 -0
- package/dist/tsup/sandbox/index.d.ts +120 -0
- package/dist/tsup/sandbox/index.js +761 -0
- package/dist/tsup/sandbox/index.js.map +1 -0
- package/dist/tsup/sandbox/providers/computesdk.cjs +3 -0
- package/dist/tsup/sandbox/providers/computesdk.cjs.map +1 -0
- package/dist/tsup/sandbox/providers/computesdk.d.cts +7 -0
- package/dist/tsup/sandbox/providers/computesdk.d.ts +7 -0
- package/dist/tsup/sandbox/providers/computesdk.js +3 -0
- package/dist/tsup/sandbox/providers/computesdk.js.map +1 -0
- package/dist/tsup/sandbox/providers/daytona.cjs +3 -0
- package/dist/tsup/sandbox/providers/daytona.cjs.map +1 -0
- package/dist/tsup/sandbox/providers/daytona.d.cts +1 -0
- package/dist/tsup/sandbox/providers/daytona.d.ts +1 -0
- package/dist/tsup/sandbox/providers/daytona.js +3 -0
- package/dist/tsup/sandbox/providers/daytona.js.map +1 -0
- package/dist/tsup/sandbox/providers/docker.cjs +3 -0
- package/dist/tsup/sandbox/providers/docker.cjs.map +1 -0
- package/dist/tsup/sandbox/providers/docker.d.cts +1 -0
- package/dist/tsup/sandbox/providers/docker.d.ts +1 -0
- package/dist/tsup/sandbox/providers/docker.js +3 -0
- package/dist/tsup/sandbox/providers/docker.js.map +1 -0
- package/dist/tsup/sandbox/providers/e2b.cjs +3 -0
- package/dist/tsup/sandbox/providers/e2b.cjs.map +1 -0
- package/dist/tsup/sandbox/providers/e2b.d.cts +1 -0
- package/dist/tsup/sandbox/providers/e2b.d.ts +1 -0
- package/dist/tsup/sandbox/providers/e2b.js +3 -0
- package/dist/tsup/sandbox/providers/e2b.js.map +1 -0
- package/dist/tsup/sandbox/providers/local.cjs +3 -0
- package/dist/tsup/sandbox/providers/local.cjs.map +1 -0
- package/dist/tsup/sandbox/providers/local.d.cts +1 -0
- package/dist/tsup/sandbox/providers/local.d.ts +1 -0
- package/dist/tsup/sandbox/providers/local.js +3 -0
- package/dist/tsup/sandbox/providers/local.js.map +1 -0
- package/dist/tsup/sandbox/providers/modal.cjs +3 -0
- package/dist/tsup/sandbox/providers/modal.cjs.map +1 -0
- package/dist/tsup/sandbox/providers/modal.d.cts +1 -0
- package/dist/tsup/sandbox/providers/modal.d.ts +1 -0
- package/dist/tsup/sandbox/providers/modal.js +3 -0
- package/dist/tsup/sandbox/providers/modal.js.map +1 -0
- package/dist/tsup/sandbox/providers/vercel.cjs +3 -0
- package/dist/tsup/sandbox/providers/vercel.cjs.map +1 -0
- package/dist/tsup/sandbox/providers/vercel.d.cts +1 -0
- package/dist/tsup/sandbox/providers/vercel.d.ts +1 -0
- package/dist/tsup/sandbox/providers/vercel.js +3 -0
- package/dist/tsup/sandbox/providers/vercel.js.map +1 -0
- package/dist/tsup/serve-test-suite/mod.cjs +451 -327
- package/dist/tsup/serve-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/serve-test-suite/mod.js +362 -238
- package/dist/tsup/serve-test-suite/mod.js.map +1 -1
- package/dist/tsup/test/mod.cjs +17 -14
- package/dist/tsup/test/mod.cjs.map +1 -1
- package/dist/tsup/test/mod.d.cts +4 -4
- package/dist/tsup/test/mod.d.ts +4 -4
- package/dist/tsup/test/mod.js +14 -11
- package/dist/tsup/test/mod.js.map +1 -1
- package/dist/tsup/utils.cjs +3 -3
- package/dist/tsup/utils.js +2 -2
- package/dist/tsup/workflow/mod.cjs +6 -6
- package/dist/tsup/workflow/mod.d.cts +13 -9
- package/dist/tsup/workflow/mod.d.ts +13 -9
- package/dist/tsup/workflow/mod.js +5 -5
- package/package.json +114 -15
- package/src/actor/config.ts +94 -88
- package/src/actor/conn/drivers/websocket.ts +2 -1
- package/src/actor/contexts/base/actor.ts +27 -4
- package/src/actor/database.ts +6 -1
- package/src/actor/driver.ts +27 -8
- package/src/actor/errors.ts +10 -5
- package/src/actor/instance/connection-manager.ts +4 -3
- package/src/actor/instance/kv.ts +52 -9
- package/src/actor/instance/mod.ts +135 -84
- package/src/actor/instance/queue-manager.ts +2 -5
- package/src/actor/instance/queue.ts +31 -29
- package/src/actor/instance/state-manager.ts +7 -1
- package/src/actor/instance/traces-driver.ts +34 -36
- package/src/actor/metrics.ts +137 -0
- package/src/actor/protocol/old.ts +9 -12
- package/src/actor/router-websocket-endpoints.ts +12 -6
- package/src/actor/router.ts +46 -9
- package/src/actor/schema.ts +14 -22
- package/src/client/actor-common.ts +65 -0
- package/src/client/actor-conn.ts +71 -9
- package/src/client/actor-handle.ts +22 -5
- package/src/client/client.ts +32 -6
- package/src/client/config.ts +18 -21
- package/src/client/mod.ts +1 -0
- package/src/client/queue.ts +8 -6
- package/src/common/inline-websocket-adapter.ts +8 -2
- package/src/common/router.ts +1 -4
- package/src/common/utils.ts +2 -5
- package/src/db/config.ts +10 -5
- package/src/db/drizzle/mod.ts +51 -41
- package/src/db/mod.ts +54 -29
- package/src/db/shared.ts +42 -8
- package/src/driver-helpers/mod.ts +2 -1
- package/src/driver-helpers/sqlite-pool.ts +42 -0
- package/src/driver-helpers/utils.ts +0 -20
- package/src/driver-test-suite/mod.ts +11 -1
- package/src/driver-test-suite/tests/access-control.ts +19 -12
- package/src/driver-test-suite/tests/action-features.ts +20 -8
- package/src/driver-test-suite/tests/actor-conn.ts +94 -8
- package/src/driver-test-suite/tests/actor-db-kv-stats.ts +282 -0
- package/src/driver-test-suite/tests/actor-db-raw.ts +6 -2
- package/src/driver-test-suite/tests/actor-db.ts +101 -31
- package/src/driver-test-suite/tests/actor-inspector.ts +174 -32
- package/src/driver-test-suite/tests/actor-kv.ts +79 -33
- package/src/driver-test-suite/tests/actor-lifecycle.ts +4 -12
- package/src/driver-test-suite/tests/actor-queue.ts +125 -17
- package/src/driver-test-suite/tests/actor-run.ts +59 -55
- package/src/driver-test-suite/tests/actor-sandbox.ts +78 -0
- package/src/driver-test-suite/tests/actor-schedule.ts +1 -4
- package/src/driver-test-suite/tests/actor-sleep.ts +111 -0
- package/src/driver-test-suite/tests/actor-workflow.ts +387 -3
- package/src/driver-test-suite/tests/conn-error-serialization.ts +3 -1
- package/src/driver-test-suite/tests/raw-websocket.ts +5 -1
- package/src/drivers/default.ts +1 -3
- package/src/drivers/engine/actor-driver.ts +94 -21
- package/src/drivers/engine/config.ts +4 -12
- package/src/drivers/engine/mod.ts +1 -5
- package/src/drivers/file-system/actor.ts +43 -8
- package/src/drivers/file-system/global-state.ts +180 -64
- package/src/drivers/file-system/kv-limits.ts +1 -1
- package/src/drivers/file-system/sqlite-runtime.ts +13 -4
- package/src/engine-process/mod.ts +5 -1
- package/src/inspector/actor-inspector.ts +47 -21
- package/src/inspector/config.ts +1 -4
- package/src/inspector/mod.browser.ts +2 -2
- package/src/inspector/mod.ts +4 -1
- package/src/inspector/serve-ui.ts +0 -1
- package/src/inspector/workflow-history-json.ts +309 -0
- package/src/manager/gateway.ts +6 -2
- package/src/manager/router.ts +3 -3
- package/src/registry/config/index.ts +65 -12
- package/src/registry/config/runner.ts +19 -4
- package/src/registry/index.ts +42 -89
- package/src/sandbox/actor/db.ts +36 -0
- package/src/sandbox/actor/index.ts +476 -0
- package/src/sandbox/actor/session.ts +350 -0
- package/src/sandbox/actor.test.ts +36 -0
- package/src/sandbox/client.test.ts +484 -0
- package/src/sandbox/client.ts +707 -0
- package/src/sandbox/config.ts +151 -0
- package/src/sandbox/index.ts +41 -0
- package/src/sandbox/providers/computesdk.ts +1 -0
- package/src/sandbox/providers/daytona.ts +1 -0
- package/src/sandbox/providers/docker.ts +1 -0
- package/src/sandbox/providers/e2b.ts +1 -0
- package/src/sandbox/providers/local.ts +1 -0
- package/src/sandbox/providers/modal.ts +1 -0
- package/src/sandbox/providers/vercel.ts +1 -0
- package/src/sandbox/session-persist-driver.ts +180 -0
- package/src/sandbox/types.ts +138 -0
- package/src/serverless/configure.ts +5 -3
- package/src/serverless/router.test.ts +17 -9
- package/src/serverless/router.ts +20 -13
- package/src/test/mod.ts +3 -4
- package/src/utils/endpoint-parser.test.ts +6 -2
- package/src/utils/endpoint-parser.ts +6 -2
- package/src/utils/env-vars.ts +0 -2
- package/src/utils/node.ts +1 -1
- package/src/utils/serve.ts +10 -5
- package/src/utils.ts +6 -1
- package/src/workflow/constants.ts +1 -2
- package/src/workflow/context.ts +42 -9
- package/src/workflow/driver.ts +57 -23
- package/src/workflow/inspector.ts +7 -13
- package/src/workflow/mod.ts +91 -4
- package/dist/tsup/chunk-6LJAZ5R4.cjs +0 -96
- package/dist/tsup/chunk-6LJAZ5R4.cjs.map +0 -1
- package/dist/tsup/chunk-7HTNH26M.js.map +0 -1
- package/dist/tsup/chunk-7WF2QSIC.cjs.map +0 -1
- package/dist/tsup/chunk-D2SPAJVT.cjs +0 -645
- package/dist/tsup/chunk-D2SPAJVT.cjs.map +0 -1
- package/dist/tsup/chunk-EIATSBYZ.js.map +0 -1
- package/dist/tsup/chunk-HYPIHCDT.cjs.map +0 -1
- package/dist/tsup/chunk-IIJNPVPQ.cjs.map +0 -1
- package/dist/tsup/chunk-JPXO2H55.js.map +0 -1
- package/dist/tsup/chunk-KJSYAUOM.js.map +0 -1
- package/dist/tsup/chunk-L47L3ZWJ.cjs.map +0 -1
- package/dist/tsup/chunk-MIX2KB6U.js.map +0 -1
- package/dist/tsup/chunk-N4KRDJ56.js.map +0 -1
- package/dist/tsup/chunk-OAXJWGMU.cjs.map +0 -1
- package/dist/tsup/chunk-PB5AEMKQ.cjs.map +0 -1
- package/dist/tsup/chunk-R5OQUSLN.js +0 -645
- package/dist/tsup/chunk-R5OQUSLN.js.map +0 -1
- package/dist/tsup/chunk-SR3KQE7Q.cjs.map +0 -1
- package/dist/tsup/chunk-SRIM3GHD.js.map +0 -1
- package/dist/tsup/chunk-TADUYCHF.js.map +0 -1
- package/dist/tsup/chunk-TI5PXQGG.cjs.map +0 -1
- package/dist/tsup/chunk-U5SMSA27.cjs.map +0 -1
- package/dist/tsup/chunk-VKVNIQRQ.js.map +0 -1
- package/dist/tsup/chunk-WY2SHWXQ.js.map +0 -1
- package/dist/tsup/chunk-ZFY5J2EP.cjs.map +0 -1
- package/dist/tsup/chunk-ZPWOYQHN.js.map +0 -1
- package/src/db/sqlite-vfs.ts +0 -12
- /package/dist/tsup/{chunk-S662Y6ZU.js.map → chunk-EONWXYMN.js.map} +0 -0
- /package/dist/tsup/{chunk-2OK7S6QF.js.map → chunk-I5I6OALK.js.map} +0 -0
package/src/db/shared.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { DatabaseProviderContext } from "./config";
|
|
2
|
-
import type {
|
|
3
|
-
import type { KvVfsOptions } from "
|
|
2
|
+
import type { IDatabase } from "@rivetkit/sqlite-vfs";
|
|
3
|
+
import type { KvVfsOptions } from "@rivetkit/sqlite-vfs";
|
|
4
|
+
import type { ActorMetrics } from "@/actor/metrics";
|
|
4
5
|
|
|
5
6
|
type ActorKvOperations = DatabaseProviderContext["kv"];
|
|
6
|
-
type SqliteBindings = NonNullable<Parameters<
|
|
7
|
+
type SqliteBindings = NonNullable<Parameters<IDatabase["run"]>[1]>;
|
|
7
8
|
|
|
8
9
|
function isSqliteBindingValue(value: unknown): boolean {
|
|
9
10
|
if (
|
|
@@ -26,9 +27,7 @@ function isSqliteBindingValue(value: unknown): boolean {
|
|
|
26
27
|
export function toSqliteBindings(args: unknown[]): SqliteBindings {
|
|
27
28
|
for (const value of args) {
|
|
28
29
|
if (!isSqliteBindingValue(value)) {
|
|
29
|
-
throw new Error(
|
|
30
|
-
`unsupported sqlite binding type: ${typeof value}`,
|
|
31
|
-
);
|
|
30
|
+
throw new Error(`unsupported sqlite binding type: ${typeof value}`);
|
|
32
31
|
}
|
|
33
32
|
}
|
|
34
33
|
|
|
@@ -37,24 +36,59 @@ export function toSqliteBindings(args: unknown[]): SqliteBindings {
|
|
|
37
36
|
|
|
38
37
|
/**
|
|
39
38
|
* Create a KV store wrapper that uses the actor driver's KV operations.
|
|
39
|
+
* Tracks per-operation metrics when an ActorMetrics instance is provided.
|
|
40
40
|
*/
|
|
41
|
-
export function createActorKvStore(
|
|
41
|
+
export function createActorKvStore(
|
|
42
|
+
kv: ActorKvOperations,
|
|
43
|
+
metrics?: ActorMetrics,
|
|
44
|
+
): KvVfsOptions {
|
|
42
45
|
return {
|
|
43
46
|
get: async (key: Uint8Array) => {
|
|
47
|
+
const start = performance.now();
|
|
44
48
|
const results = await kv.batchGet([key]);
|
|
49
|
+
if (metrics) {
|
|
50
|
+
metrics.kvGet.calls++;
|
|
51
|
+
metrics.kvGet.keys++;
|
|
52
|
+
metrics.kvGet.totalMs += performance.now() - start;
|
|
53
|
+
}
|
|
45
54
|
return results[0] ?? null;
|
|
46
55
|
},
|
|
47
56
|
getBatch: async (keys: Uint8Array[]) => {
|
|
48
|
-
|
|
57
|
+
const start = performance.now();
|
|
58
|
+
const results = await kv.batchGet(keys);
|
|
59
|
+
if (metrics) {
|
|
60
|
+
metrics.kvGetBatch.calls++;
|
|
61
|
+
metrics.kvGetBatch.keys += keys.length;
|
|
62
|
+
metrics.kvGetBatch.totalMs += performance.now() - start;
|
|
63
|
+
}
|
|
64
|
+
return results;
|
|
49
65
|
},
|
|
50
66
|
put: async (key: Uint8Array, value: Uint8Array) => {
|
|
67
|
+
const start = performance.now();
|
|
51
68
|
await kv.batchPut([[key, value]]);
|
|
69
|
+
if (metrics) {
|
|
70
|
+
metrics.kvPut.calls++;
|
|
71
|
+
metrics.kvPut.keys++;
|
|
72
|
+
metrics.kvPut.totalMs += performance.now() - start;
|
|
73
|
+
}
|
|
52
74
|
},
|
|
53
75
|
putBatch: async (entries: [Uint8Array, Uint8Array][]) => {
|
|
76
|
+
const start = performance.now();
|
|
54
77
|
await kv.batchPut(entries);
|
|
78
|
+
if (metrics) {
|
|
79
|
+
metrics.kvPutBatch.calls++;
|
|
80
|
+
metrics.kvPutBatch.keys += entries.length;
|
|
81
|
+
metrics.kvPutBatch.totalMs += performance.now() - start;
|
|
82
|
+
}
|
|
55
83
|
},
|
|
56
84
|
deleteBatch: async (keys: Uint8Array[]) => {
|
|
85
|
+
const start = performance.now();
|
|
57
86
|
await kv.batchDelete(keys);
|
|
87
|
+
if (metrics) {
|
|
88
|
+
metrics.kvDeleteBatch.calls++;
|
|
89
|
+
metrics.kvDeleteBatch.keys += keys.length;
|
|
90
|
+
metrics.kvDeleteBatch.totalMs += performance.now() - start;
|
|
91
|
+
}
|
|
58
92
|
},
|
|
59
93
|
};
|
|
60
94
|
}
|
|
@@ -30,4 +30,5 @@ export type {
|
|
|
30
30
|
ManagerDriver,
|
|
31
31
|
} from "@/manager/driver";
|
|
32
32
|
export { buildManagerRouter } from "@/manager/router";
|
|
33
|
-
export { getInitialActorKvState
|
|
33
|
+
export { getInitialActorKvState } from "./utils";
|
|
34
|
+
export { SqliteVfsPoolManager } from "./sqlite-pool";
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { ISqliteVfs } from "@rivetkit/sqlite-vfs";
|
|
2
|
+
import type { RegistryConfig } from "@/registry/config";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Manages a lazily-created SqliteVfsPool shared across actors in a driver.
|
|
6
|
+
* Uses dynamic import to keep @rivetkit/sqlite-vfs tree-shakeable.
|
|
7
|
+
*/
|
|
8
|
+
export class SqliteVfsPoolManager {
|
|
9
|
+
#poolPromise:
|
|
10
|
+
| Promise<{
|
|
11
|
+
acquire(actorId: string): Promise<ISqliteVfs>;
|
|
12
|
+
shutdown(): Promise<void>;
|
|
13
|
+
}>
|
|
14
|
+
| undefined;
|
|
15
|
+
#config: RegistryConfig;
|
|
16
|
+
|
|
17
|
+
constructor(config: RegistryConfig) {
|
|
18
|
+
this.#config = config;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async acquire(actorId: string): Promise<ISqliteVfs> {
|
|
22
|
+
if (!this.#poolPromise) {
|
|
23
|
+
const poolConfig = this.#config.sqlitePool;
|
|
24
|
+
this.#poolPromise = import("@rivetkit/sqlite-vfs").then(
|
|
25
|
+
({ SqliteVfsPool }) =>
|
|
26
|
+
new SqliteVfsPool({
|
|
27
|
+
actorsPerInstance: poolConfig.actorsPerInstance,
|
|
28
|
+
idleDestroyMs: poolConfig.idleDestroyMs,
|
|
29
|
+
}),
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
const pool = await this.#poolPromise;
|
|
33
|
+
return await pool.acquire(actorId);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
async shutdown(): Promise<void> {
|
|
37
|
+
if (this.#poolPromise) {
|
|
38
|
+
const pool = await this.#poolPromise;
|
|
39
|
+
await pool.shutdown();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -6,9 +6,6 @@ import {
|
|
|
6
6
|
CURRENT_VERSION,
|
|
7
7
|
} from "@/schemas/actor-persist/versioned";
|
|
8
8
|
import { bufferToArrayBuffer } from "@/utils";
|
|
9
|
-
import type { ActorDriver } from "./mod";
|
|
10
|
-
import type { SqliteVfs } from "@rivetkit/sqlite-vfs";
|
|
11
|
-
|
|
12
9
|
function serializeEmptyPersistData(input: unknown | undefined): Uint8Array {
|
|
13
10
|
const persistData: persistSchema.Actor = {
|
|
14
11
|
input:
|
|
@@ -35,20 +32,3 @@ export function getInitialActorKvState(
|
|
|
35
32
|
const persistData = serializeEmptyPersistData(input);
|
|
36
33
|
return [[KEYS.PERSIST_DATA, persistData]];
|
|
37
34
|
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Dynamically import @rivetkit/sqlite-vfs and return a fresh SqliteVfs instance.
|
|
41
|
-
*
|
|
42
|
-
* The module specifier is built with Array.join() so that bundlers (esbuild, tsup,
|
|
43
|
-
* Turbopack) cannot statically analyze or constant-fold the import path. This
|
|
44
|
-
* prevents them from tracing into the WASM dependency tree, which would cause
|
|
45
|
-
* errors in environments that don't support .wasm imports (e.g. Turbopack).
|
|
46
|
-
*
|
|
47
|
-
* Each call returns a new instance so that actors get independent SQLite modules,
|
|
48
|
-
* avoiding cross-actor re-entry on the non-reentrant async build.
|
|
49
|
-
*/
|
|
50
|
-
export async function importSqliteVfs(): Promise<SqliteVfs> {
|
|
51
|
-
const specifier = ["@rivetkit", "sqlite-vfs"].join("/");
|
|
52
|
-
const { SqliteVfs } = await import(specifier);
|
|
53
|
-
return new SqliteVfs();
|
|
54
|
-
}
|
|
@@ -29,6 +29,7 @@ import { runActorMetadataTests } from "./tests/actor-metadata";
|
|
|
29
29
|
import { runActorOnStateChangeTests } from "./tests/actor-onstatechange";
|
|
30
30
|
import { runActorQueueTests } from "./tests/actor-queue";
|
|
31
31
|
import { runActorRunTests } from "./tests/actor-run";
|
|
32
|
+
import { runActorSandboxTests } from "./tests/actor-sandbox";
|
|
32
33
|
import { runActorStatelessTests } from "./tests/actor-stateless";
|
|
33
34
|
import { runActorVarsTests } from "./tests/actor-vars";
|
|
34
35
|
import { runActorWorkflowTests } from "./tests/actor-workflow";
|
|
@@ -36,6 +37,7 @@ import { runManagerDriverTests } from "./tests/manager-driver";
|
|
|
36
37
|
import { runRawHttpTests } from "./tests/raw-http";
|
|
37
38
|
import { runRawHttpRequestPropertiesTests } from "./tests/raw-http-request-properties";
|
|
38
39
|
import { runRawWebSocketTests } from "./tests/raw-websocket";
|
|
40
|
+
import { runActorDbKvStatsTests } from "./tests/actor-db-kv-stats";
|
|
39
41
|
import { runRequestAccessTests } from "./tests/request-access";
|
|
40
42
|
|
|
41
43
|
export interface SkipTests {
|
|
@@ -43,6 +45,7 @@ export interface SkipTests {
|
|
|
43
45
|
sleep?: boolean;
|
|
44
46
|
hibernation?: boolean;
|
|
45
47
|
inline?: boolean;
|
|
48
|
+
sandbox?: boolean;
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
export interface DriverTestConfig {
|
|
@@ -138,6 +141,8 @@ export function runDriverTests(
|
|
|
138
141
|
|
|
139
142
|
runActorRunTests(driverTestConfig);
|
|
140
143
|
|
|
144
|
+
runActorSandboxTests(driverTestConfig);
|
|
145
|
+
|
|
141
146
|
runActorInlineClientTests(driverTestConfig);
|
|
142
147
|
|
|
143
148
|
runActorKvTests(driverTestConfig);
|
|
@@ -159,6 +164,8 @@ export function runDriverTests(
|
|
|
159
164
|
// runRawWebSocketDirectRegistryTests(driverTestConfig);
|
|
160
165
|
|
|
161
166
|
runActorInspectorTests(driverTestConfig);
|
|
167
|
+
|
|
168
|
+
runActorDbKvStatsTests(driverTestConfig);
|
|
162
169
|
});
|
|
163
170
|
}
|
|
164
171
|
});
|
|
@@ -269,7 +276,10 @@ export async function createTestRuntime(
|
|
|
269
276
|
);
|
|
270
277
|
nodeWebSocket.injectWebSocket(server);
|
|
271
278
|
const address = server.address();
|
|
272
|
-
invariant(
|
|
279
|
+
invariant(
|
|
280
|
+
address && typeof address !== "string",
|
|
281
|
+
"missing server address",
|
|
282
|
+
);
|
|
273
283
|
const port = address.port;
|
|
274
284
|
const serverEndpoint = `http://127.0.0.1:${port}`;
|
|
275
285
|
|
|
@@ -14,7 +14,9 @@ export function runAccessControlTests(driverTestConfig: DriverTestConfig) {
|
|
|
14
14
|
|
|
15
15
|
test("passes connection id into canPublish context", async (c) => {
|
|
16
16
|
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
17
|
-
const handle = client.accessControlActor.getOrCreate([
|
|
17
|
+
const handle = client.accessControlActor.getOrCreate([
|
|
18
|
+
"publish-ctx",
|
|
19
|
+
]);
|
|
18
20
|
|
|
19
21
|
await handle.send("allowedQueue", { value: "one" });
|
|
20
22
|
|
|
@@ -104,7 +106,7 @@ export function runAccessControlTests(driverTestConfig: DriverTestConfig) {
|
|
|
104
106
|
await conn.dispose();
|
|
105
107
|
|
|
106
108
|
const blockedConn = handle.connect();
|
|
107
|
-
blockedConn.on("blockedEvent", () => {
|
|
109
|
+
blockedConn.on("blockedEvent", () => {});
|
|
108
110
|
await expect(
|
|
109
111
|
blockedConn.allowedAction("blocked-subscribe-ready"),
|
|
110
112
|
).rejects.toMatchObject({
|
|
@@ -120,16 +122,21 @@ export function runAccessControlTests(driverTestConfig: DriverTestConfig) {
|
|
|
120
122
|
]);
|
|
121
123
|
const conn = handle.connect();
|
|
122
124
|
|
|
123
|
-
const eventPromise = new Promise<{ value: string }>(
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
125
|
+
const eventPromise = new Promise<{ value: string }>(
|
|
126
|
+
(resolve, reject) => {
|
|
127
|
+
const unsubscribeError = conn.onError((error) => {
|
|
128
|
+
reject(error);
|
|
129
|
+
});
|
|
130
|
+
const unsubscribeEvent = conn.on(
|
|
131
|
+
"undefinedEvent",
|
|
132
|
+
(payload) => {
|
|
133
|
+
unsubscribeError();
|
|
134
|
+
unsubscribeEvent();
|
|
135
|
+
resolve(payload as { value: string });
|
|
136
|
+
},
|
|
137
|
+
);
|
|
138
|
+
},
|
|
139
|
+
);
|
|
133
140
|
|
|
134
141
|
await conn.allowedAction("undefined-subscribe-ready");
|
|
135
142
|
await conn.allowedBroadcastUndefinedEvent("wildcard");
|
|
@@ -147,14 +147,20 @@ export function runActionFeaturesTests(driverTestConfig: DriverTestConfig) {
|
|
|
147
147
|
// Each item is roughly 60 bytes, so 800 items ≈ 48KB
|
|
148
148
|
const items: string[] = [];
|
|
149
149
|
for (let i = 0; i < 800; i++) {
|
|
150
|
-
items.push(
|
|
150
|
+
items.push(
|
|
151
|
+
`Item ${i} with some additional text to increase size`,
|
|
152
|
+
);
|
|
151
153
|
}
|
|
152
154
|
|
|
153
155
|
const result = await instance.processLargeRequest({ items });
|
|
154
156
|
|
|
155
157
|
expect(result.itemCount).toBe(800);
|
|
156
|
-
expect(result.firstItem).toBe(
|
|
157
|
-
|
|
158
|
+
expect(result.firstItem).toBe(
|
|
159
|
+
"Item 0 with some additional text to increase size",
|
|
160
|
+
);
|
|
161
|
+
expect(result.lastItem).toBe(
|
|
162
|
+
"Item 799 with some additional text to increase size",
|
|
163
|
+
);
|
|
158
164
|
});
|
|
159
165
|
|
|
160
166
|
test("should reject request exceeding maxIncomingMessageSize", async (c) => {
|
|
@@ -166,11 +172,13 @@ export function runActionFeaturesTests(driverTestConfig: DriverTestConfig) {
|
|
|
166
172
|
// Each item is roughly 60 bytes, so 1500 items ≈ 90KB
|
|
167
173
|
const items: string[] = [];
|
|
168
174
|
for (let i = 0; i < 1500; i++) {
|
|
169
|
-
items.push(
|
|
175
|
+
items.push(
|
|
176
|
+
`Item ${i} with some additional text to increase size`,
|
|
177
|
+
);
|
|
170
178
|
}
|
|
171
179
|
|
|
172
180
|
await expect(
|
|
173
|
-
instance.processLargeRequest({ items })
|
|
181
|
+
instance.processLargeRequest({ items }),
|
|
174
182
|
).rejects.toThrow();
|
|
175
183
|
});
|
|
176
184
|
|
|
@@ -183,8 +191,12 @@ export function runActionFeaturesTests(driverTestConfig: DriverTestConfig) {
|
|
|
183
191
|
const result = await instance.getLargeResponse(800);
|
|
184
192
|
|
|
185
193
|
expect(result.items).toHaveLength(800);
|
|
186
|
-
expect(result.items[0]).toBe(
|
|
187
|
-
|
|
194
|
+
expect(result.items[0]).toBe(
|
|
195
|
+
"Item 0 with some additional text to increase size",
|
|
196
|
+
);
|
|
197
|
+
expect(result.items[799]).toBe(
|
|
198
|
+
"Item 799 with some additional text to increase size",
|
|
199
|
+
);
|
|
188
200
|
});
|
|
189
201
|
|
|
190
202
|
test("should reject response exceeding maxOutgoingMessageSize", async (c) => {
|
|
@@ -195,7 +207,7 @@ export function runActionFeaturesTests(driverTestConfig: DriverTestConfig) {
|
|
|
195
207
|
// Request a response that exceeds the default 1MB limit
|
|
196
208
|
// Each item is roughly 60 bytes, so 20000 items ≈ 1.2MB
|
|
197
209
|
await expect(
|
|
198
|
-
instance.getLargeResponse(20000)
|
|
210
|
+
instance.getLargeResponse(20000),
|
|
199
211
|
).rejects.toThrow();
|
|
200
212
|
});
|
|
201
213
|
});
|
|
@@ -243,6 +243,80 @@ export function runActorConnTests(driverTestConfig: DriverTestConfig) {
|
|
|
243
243
|
await conn1.dispose();
|
|
244
244
|
await conn2.dispose();
|
|
245
245
|
});
|
|
246
|
+
|
|
247
|
+
test("should call getParams for each connection", async (c) => {
|
|
248
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
249
|
+
|
|
250
|
+
let connectionCount = 0;
|
|
251
|
+
const handle = client.counterWithParams.getOrCreate(
|
|
252
|
+
["test-get-params"],
|
|
253
|
+
{
|
|
254
|
+
getParams: async () => ({
|
|
255
|
+
name: `user${++connectionCount}`,
|
|
256
|
+
}),
|
|
257
|
+
},
|
|
258
|
+
);
|
|
259
|
+
|
|
260
|
+
const conn1 = handle.connect();
|
|
261
|
+
await conn1.getInitializers();
|
|
262
|
+
await conn1.dispose();
|
|
263
|
+
|
|
264
|
+
const conn2 = handle.connect();
|
|
265
|
+
const initializers = await conn2.getInitializers();
|
|
266
|
+
|
|
267
|
+
expect(initializers).toEqual(["user1", "user2"]);
|
|
268
|
+
expect(connectionCount).toBe(2);
|
|
269
|
+
|
|
270
|
+
await conn2.dispose();
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
test("should surface getParams errors and retry connection setup", async (c) => {
|
|
274
|
+
const { client } = await setupDriverTest(c, driverTestConfig);
|
|
275
|
+
|
|
276
|
+
let attempts = 0;
|
|
277
|
+
const handle = client.counterWithParams.getOrCreate(
|
|
278
|
+
["test-get-params-retry"],
|
|
279
|
+
{
|
|
280
|
+
getParams: async () => {
|
|
281
|
+
attempts++;
|
|
282
|
+
if (attempts === 1) {
|
|
283
|
+
throw new Error("token unavailable");
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
return { name: "user1" };
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
);
|
|
290
|
+
|
|
291
|
+
const conn = handle.connect();
|
|
292
|
+
const receivedErrors: Array<{ group: string; code: string }> =
|
|
293
|
+
[];
|
|
294
|
+
conn.onError((error) => {
|
|
295
|
+
receivedErrors.push({
|
|
296
|
+
group: error.group,
|
|
297
|
+
code: error.code,
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
await expect(conn.getInitializers()).rejects.toMatchObject({
|
|
302
|
+
group: "client",
|
|
303
|
+
code: "get_params_failed",
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
await vi.waitFor(
|
|
307
|
+
async () => {
|
|
308
|
+
expect(await conn.getInitializers()).toEqual(["user1"]);
|
|
309
|
+
},
|
|
310
|
+
{ timeout: 10_000 },
|
|
311
|
+
);
|
|
312
|
+
|
|
313
|
+
expect(receivedErrors).toEqual([
|
|
314
|
+
{ group: "client", code: "get_params_failed" },
|
|
315
|
+
]);
|
|
316
|
+
expect(attempts).toBeGreaterThanOrEqual(2);
|
|
317
|
+
|
|
318
|
+
await conn.dispose();
|
|
319
|
+
});
|
|
246
320
|
});
|
|
247
321
|
|
|
248
322
|
describe("Lifecycle Hooks", () => {
|
|
@@ -515,14 +589,20 @@ export function runActorConnTests(driverTestConfig: DriverTestConfig) {
|
|
|
515
589
|
// Each item is roughly 60 bytes, so 800 items ≈ 48KB
|
|
516
590
|
const items: string[] = [];
|
|
517
591
|
for (let i = 0; i < 800; i++) {
|
|
518
|
-
items.push(
|
|
592
|
+
items.push(
|
|
593
|
+
`Item ${i} with some additional text to increase size`,
|
|
594
|
+
);
|
|
519
595
|
}
|
|
520
596
|
|
|
521
597
|
const result = await connection.processLargeRequest({ items });
|
|
522
598
|
|
|
523
599
|
expect(result.itemCount).toBe(800);
|
|
524
|
-
expect(result.firstItem).toBe(
|
|
525
|
-
|
|
600
|
+
expect(result.firstItem).toBe(
|
|
601
|
+
"Item 0 with some additional text to increase size",
|
|
602
|
+
);
|
|
603
|
+
expect(result.lastItem).toBe(
|
|
604
|
+
"Item 799 with some additional text to increase size",
|
|
605
|
+
);
|
|
526
606
|
|
|
527
607
|
// Verify connection state was updated
|
|
528
608
|
const lastRequestSize = await connection.getLastRequestSize();
|
|
@@ -544,11 +624,13 @@ export function runActorConnTests(driverTestConfig: DriverTestConfig) {
|
|
|
544
624
|
// Each item is roughly 60 bytes, so 1500 items ≈ 90KB
|
|
545
625
|
const items: string[] = [];
|
|
546
626
|
for (let i = 0; i < 1500; i++) {
|
|
547
|
-
items.push(
|
|
627
|
+
items.push(
|
|
628
|
+
`Item ${i} with some additional text to increase size`,
|
|
629
|
+
);
|
|
548
630
|
}
|
|
549
631
|
|
|
550
632
|
await expect(
|
|
551
|
-
connection.processLargeRequest({ items })
|
|
633
|
+
connection.processLargeRequest({ items }),
|
|
552
634
|
).rejects.toThrow();
|
|
553
635
|
|
|
554
636
|
// Clean up
|
|
@@ -567,8 +649,12 @@ export function runActorConnTests(driverTestConfig: DriverTestConfig) {
|
|
|
567
649
|
const result = await connection.getLargeResponse(800);
|
|
568
650
|
|
|
569
651
|
expect(result.items).toHaveLength(800);
|
|
570
|
-
expect(result.items[0]).toBe(
|
|
571
|
-
|
|
652
|
+
expect(result.items[0]).toBe(
|
|
653
|
+
"Item 0 with some additional text to increase size",
|
|
654
|
+
);
|
|
655
|
+
expect(result.items[799]).toBe(
|
|
656
|
+
"Item 799 with some additional text to increase size",
|
|
657
|
+
);
|
|
572
658
|
|
|
573
659
|
// Clean up
|
|
574
660
|
await connection.dispose();
|
|
@@ -585,7 +671,7 @@ export function runActorConnTests(driverTestConfig: DriverTestConfig) {
|
|
|
585
671
|
// Request a response that exceeds the default 1MB limit
|
|
586
672
|
// Each item is roughly 60 bytes, so 20000 items ≈ 1.2MB
|
|
587
673
|
await expect(
|
|
588
|
-
connection.getLargeResponse(20000)
|
|
674
|
+
connection.getLargeResponse(20000),
|
|
589
675
|
).rejects.toThrow();
|
|
590
676
|
|
|
591
677
|
// Clean up
|