rivetkit 2.1.2 → 2.1.3

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.
Files changed (84) hide show
  1. package/dist/browser/client.js +1 -1
  2. package/dist/browser/client.js.map +1 -1
  3. package/dist/browser/inspector/client.js +1 -1
  4. package/dist/browser/inspector/client.js.map +1 -1
  5. package/dist/inspector.tar.gz +0 -0
  6. package/dist/tsup/{chunk-NXEHFUDB.cjs → chunk-5AZ6UPEF.cjs} +24 -21
  7. package/dist/tsup/chunk-5AZ6UPEF.cjs.map +1 -0
  8. package/dist/tsup/{chunk-YQ5P6KMN.js → chunk-6LHZQSWJ.js} +8 -5
  9. package/dist/tsup/{chunk-YQ5P6KMN.js.map → chunk-6LHZQSWJ.js.map} +1 -1
  10. package/dist/tsup/{chunk-BFI4LYS2.js → chunk-6T3WSP5M.js} +4 -4
  11. package/dist/tsup/{chunk-772NPMTY.cjs → chunk-BMNB6YRQ.cjs} +160 -103
  12. package/dist/tsup/chunk-BMNB6YRQ.cjs.map +1 -0
  13. package/dist/tsup/{chunk-GVQAVU7R.cjs → chunk-DADGS67O.cjs} +4 -4
  14. package/dist/tsup/{chunk-GVQAVU7R.cjs.map → chunk-DADGS67O.cjs.map} +1 -1
  15. package/dist/tsup/{chunk-RHUII57M.js → chunk-GNGRMP5E.js} +10 -6
  16. package/dist/tsup/chunk-GNGRMP5E.js.map +1 -0
  17. package/dist/tsup/{chunk-PZAV6PP2.cjs → chunk-HPAX7L72.cjs} +152 -152
  18. package/dist/tsup/{chunk-PZAV6PP2.cjs.map → chunk-HPAX7L72.cjs.map} +1 -1
  19. package/dist/tsup/{chunk-UZV7NXC6.cjs → chunk-IJAGZS57.cjs} +30 -30
  20. package/dist/tsup/{chunk-UZV7NXC6.cjs.map → chunk-IJAGZS57.cjs.map} +1 -1
  21. package/dist/tsup/{chunk-HFWRHT5T.cjs → chunk-KSZZRTOD.cjs} +3 -3
  22. package/dist/tsup/{chunk-HFWRHT5T.cjs.map → chunk-KSZZRTOD.cjs.map} +1 -1
  23. package/dist/tsup/{chunk-PSUVV4HM.js → chunk-MAXIXG56.js} +2 -2
  24. package/dist/tsup/{chunk-HB4RGGMC.js → chunk-N7ASEZ2Y.js} +5 -5
  25. package/dist/tsup/{chunk-PW3YONDJ.js → chunk-OAOF23ZY.js} +2 -2
  26. package/dist/tsup/{chunk-TDFDR7AO.js → chunk-POUBQA6Z.js} +2 -2
  27. package/dist/tsup/{chunk-VMX4I4MP.js → chunk-QUDLEWGD.js} +3 -3
  28. package/dist/tsup/{chunk-MNS5LY6M.cjs → chunk-R64EFI6F.cjs} +74 -74
  29. package/dist/tsup/{chunk-MNS5LY6M.cjs.map → chunk-R64EFI6F.cjs.map} +1 -1
  30. package/dist/tsup/{chunk-QABDKI3W.cjs → chunk-T6MM5RTW.cjs} +248 -244
  31. package/dist/tsup/chunk-T6MM5RTW.cjs.map +1 -0
  32. package/dist/tsup/{chunk-ZHQDRRMY.cjs → chunk-U6VWVHVW.cjs} +3 -3
  33. package/dist/tsup/{chunk-ZHQDRRMY.cjs.map → chunk-U6VWVHVW.cjs.map} +1 -1
  34. package/dist/tsup/{chunk-WUXR722E.js → chunk-YET3IZD6.js} +2 -2
  35. package/dist/tsup/{chunk-WUXR722E.js.map → chunk-YET3IZD6.js.map} +1 -1
  36. package/dist/tsup/{chunk-BSIJG3LG.js → chunk-YLDDENCZ.js} +69 -12
  37. package/dist/tsup/chunk-YLDDENCZ.js.map +1 -0
  38. package/dist/tsup/{chunk-RMJJE43B.cjs → chunk-ZSJ2OTY4.cjs} +2 -2
  39. package/dist/tsup/{chunk-RMJJE43B.cjs.map → chunk-ZSJ2OTY4.cjs.map} +1 -1
  40. package/dist/tsup/client/mod.cjs +6 -6
  41. package/dist/tsup/client/mod.js +5 -5
  42. package/dist/tsup/common/log.cjs +2 -2
  43. package/dist/tsup/common/log.js +1 -1
  44. package/dist/tsup/common/websocket.cjs +3 -3
  45. package/dist/tsup/common/websocket.js +2 -2
  46. package/dist/tsup/driver-helpers/mod.cjs +4 -4
  47. package/dist/tsup/driver-helpers/mod.js +3 -3
  48. package/dist/tsup/driver-test-suite/mod.cjs +425 -338
  49. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  50. package/dist/tsup/driver-test-suite/mod.js +376 -289
  51. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  52. package/dist/tsup/inspector/mod.cjs +3 -3
  53. package/dist/tsup/inspector/mod.js +2 -2
  54. package/dist/tsup/mod.cjs +8 -8
  55. package/dist/tsup/mod.js +7 -7
  56. package/dist/tsup/serve-test-suite/mod.cjs +111 -99
  57. package/dist/tsup/serve-test-suite/mod.cjs.map +1 -1
  58. package/dist/tsup/serve-test-suite/mod.js +22 -10
  59. package/dist/tsup/serve-test-suite/mod.js.map +1 -1
  60. package/dist/tsup/test/mod.cjs +10 -10
  61. package/dist/tsup/test/mod.js +6 -6
  62. package/dist/tsup/utils.cjs +2 -2
  63. package/dist/tsup/utils.js +1 -1
  64. package/dist/tsup/workflow/mod.cjs +5 -5
  65. package/dist/tsup/workflow/mod.js +4 -4
  66. package/package.json +5 -5
  67. package/src/actor/instance/mod.ts +13 -2
  68. package/src/driver-test-suite/tests/actor-db.ts +299 -216
  69. package/src/driver-test-suite/tests/actor-queue.ts +10 -9
  70. package/src/driver-test-suite/tests/actor-workflow.ts +12 -2
  71. package/src/driver-test-suite/utils.ts +8 -8
  72. package/src/drivers/engine/actor-driver.ts +77 -7
  73. package/src/workflow/driver.ts +4 -1
  74. package/dist/tsup/chunk-772NPMTY.cjs.map +0 -1
  75. package/dist/tsup/chunk-BSIJG3LG.js.map +0 -1
  76. package/dist/tsup/chunk-NXEHFUDB.cjs.map +0 -1
  77. package/dist/tsup/chunk-QABDKI3W.cjs.map +0 -1
  78. package/dist/tsup/chunk-RHUII57M.js.map +0 -1
  79. /package/dist/tsup/{chunk-BFI4LYS2.js.map → chunk-6T3WSP5M.js.map} +0 -0
  80. /package/dist/tsup/{chunk-PSUVV4HM.js.map → chunk-MAXIXG56.js.map} +0 -0
  81. /package/dist/tsup/{chunk-HB4RGGMC.js.map → chunk-N7ASEZ2Y.js.map} +0 -0
  82. /package/dist/tsup/{chunk-PW3YONDJ.js.map → chunk-OAOF23ZY.js.map} +0 -0
  83. /package/dist/tsup/{chunk-TDFDR7AO.js.map → chunk-POUBQA6Z.js.map} +0 -0
  84. /package/dist/tsup/{chunk-VMX4I4MP.js.map → chunk-QUDLEWGD.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/serve-test-suite/mod.ts","../../../fixtures/driver-test-suite/access-control.ts","../../../fixtures/driver-test-suite/action-inputs.ts","../../../fixtures/driver-test-suite/action-timeout.ts","../../../fixtures/driver-test-suite/action-types.ts","../../../fixtures/driver-test-suite/actor-db-raw.ts","../../../fixtures/driver-test-suite/db/migrations.ts","../../../fixtures/driver-test-suite/db/schema.ts","../../../fixtures/driver-test-suite/actor-db-drizzle.ts","../../../fixtures/driver-test-suite/db-lifecycle.ts","../../../fixtures/driver-test-suite/actor-onstatechange.ts","../../../fixtures/driver-test-suite/conn-params.ts","../../../fixtures/driver-test-suite/conn-state.ts","../../../fixtures/driver-test-suite/counter.ts","../../../fixtures/driver-test-suite/counter-conn.ts","../../../fixtures/driver-test-suite/destroy.ts","../../../fixtures/driver-test-suite/error-handling.ts","../../../fixtures/driver-test-suite/file-system-hibernation-cleanup.ts","../../../fixtures/driver-test-suite/inline-client.ts","../../../fixtures/driver-test-suite/kv.ts","../../../fixtures/driver-test-suite/large-payloads.ts","../../../fixtures/driver-test-suite/lifecycle.ts","../../../fixtures/driver-test-suite/metadata.ts","../../../fixtures/driver-test-suite/queue.ts","../../../fixtures/driver-test-suite/raw-http.ts","../../../fixtures/driver-test-suite/raw-http-request-properties.ts","../../../fixtures/driver-test-suite/raw-websocket.ts","../../../fixtures/driver-test-suite/request-access.ts","../../../fixtures/driver-test-suite/reject-connection.ts","../../../fixtures/driver-test-suite/scheduled.ts","../../../fixtures/driver-test-suite/stateless.ts","../../../fixtures/driver-test-suite/vars.ts","../../../fixtures/driver-test-suite/registry.ts"],"sourcesContent":["import { createServer } from \"node:net\";\nimport { fileURLToPath } from \"node:url\";\nimport { serve as honoServe } from \"@hono/node-server\";\nimport { createNodeWebSocket } from \"@hono/node-ws\";\nimport invariant from \"invariant\";\nimport { logger } from \"@/driver-test-suite/log\";\nimport { createFileSystemOrMemoryDriver } from \"@/drivers/file-system/mod\";\nimport { buildManagerRouter } from \"@/manager/router\";\nimport { registry } from \"../../fixtures/driver-test-suite/registry\";\n\nexport interface ServeTestSuiteResult {\n\tendpoint: string;\n\tnamespace: string;\n\trunnerName: string;\n\tclose(): Promise<void>;\n}\n\nasync function getPort(): Promise<number> {\n\tconst MIN_PORT = 10000;\n\tconst MAX_PORT = 65535;\n\tconst getRandomPort = () =>\n\t\tMath.floor(Math.random() * (MAX_PORT - MIN_PORT + 1)) + MIN_PORT;\n\n\tlet port = getRandomPort();\n\tlet maxAttempts = 10;\n\n\twhile (maxAttempts > 0) {\n\t\ttry {\n\t\t\tconst server = await new Promise<any>((resolve, reject) => {\n\t\t\t\tconst server = createServer();\n\n\t\t\t\tserver.once(\"error\", (err: Error & { code?: string }) => {\n\t\t\t\t\tif (err.code === \"EADDRINUSE\") {\n\t\t\t\t\t\treject(new Error(`Port ${port} is in use`));\n\t\t\t\t\t} else {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tserver.once(\"listening\", () => {\n\t\t\t\t\tresolve(server);\n\t\t\t\t});\n\n\t\t\t\tserver.listen(port);\n\t\t\t});\n\n\t\t\tawait new Promise<void>((resolve) => {\n\t\t\t\tserver.close(() => resolve());\n\t\t\t});\n\n\t\t\treturn port;\n\t\t} catch {\n\t\t\tmaxAttempts--;\n\t\t\tif (maxAttempts <= 0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tport = getRandomPort();\n\t\t}\n\t}\n\n\tthrow new Error(\"Could not find an available port after multiple attempts\");\n}\n\nexport async function serveTestSuite(): Promise<ServeTestSuiteResult> {\n\tregistry.config.test = { ...registry.config.test, enabled: true };\n\tregistry.config.inspector = {\n\t\tenabled: true,\n\t\ttoken: () => \"token\",\n\t};\n\tconst port = await getPort();\n\tregistry.config.managerPort = port;\n\tregistry.config.serverless = {\n\t\t...registry.config.serverless,\n\t\tpublicEndpoint: `http://127.0.0.1:${port}`,\n\t};\n\n\tconst driver = await createFileSystemOrMemoryDriver(true, {\n\t\tpath: `/tmp/rivetkit-test-suite-${crypto.randomUUID()}`,\n\t});\n\tregistry.config.driver = driver;\n\n\tlet upgradeWebSocket: any;\n\n\tconst parsedConfig = registry.parseConfig();\n\tconst managerDriver = driver.manager?.(parsedConfig);\n\tinvariant(managerDriver, \"missing manager driver\");\n\tconst { router } = buildManagerRouter(\n\t\tparsedConfig,\n\t\tmanagerDriver,\n\t\t() => upgradeWebSocket,\n\t);\n\n\tconst nodeWebSocket = createNodeWebSocket({ app: router });\n\tupgradeWebSocket = nodeWebSocket.upgradeWebSocket;\n\tmanagerDriver.setGetUpgradeWebSocket(() => upgradeWebSocket);\n\n\tconst server = honoServe({\n\t\tfetch: router.fetch,\n\t\thostname: \"127.0.0.1\",\n\t\tport,\n\t});\n\tinvariant(\n\t\tnodeWebSocket.injectWebSocket !== undefined,\n\t\t\"should have injectWebSocket\",\n\t);\n\tnodeWebSocket.injectWebSocket(server);\n\tconst endpoint = `http://127.0.0.1:${port}`;\n\n\tlogger().info({ msg: \"test suite server listening\", port });\n\n\treturn {\n\t\tendpoint,\n\t\tnamespace: \"default\",\n\t\trunnerName: \"default\",\n\t\tclose: async () => {\n\t\t\tawait new Promise((resolve) =>\n\t\t\t\tserver.close(() => resolve(undefined)),\n\t\t\t);\n\t\t},\n\t};\n}\n\nasync function runCli() {\n\tconst result = await serveTestSuite();\n\tprocess.stdout.write(\n\t\t`${JSON.stringify({\n\t\t\tendpoint: result.endpoint,\n\t\t\tnamespace: result.namespace,\n\t\t\trunnerName: result.runnerName,\n\t\t})}\\n`,\n\t);\n\n\tconst shutdown = async () => {\n\t\tawait result.close();\n\t\tprocess.exit(0);\n\t};\n\n\tprocess.on(\"SIGINT\", shutdown);\n\tprocess.on(\"SIGTERM\", shutdown);\n}\n\nconst mainPath = process.argv[1];\nif (mainPath && mainPath === fileURLToPath(import.meta.url)) {\n\trunCli().catch((err) => {\n\t\tlogger().error({ msg: \"serve-test-suite failed\", error: err });\n\t\tprocess.exit(1);\n\t});\n}\n","import { actor, event, queue } from \"rivetkit\";\nimport { Forbidden } from \"rivetkit/errors\";\n\nexport interface AccessControlConnParams {\n\tallowRequest?: boolean;\n\tallowWebSocket?: boolean;\n}\n\nconst accessControlEvents: Record<\n\tstring,\n\tReturnType<typeof event<{ value: string }>>\n> = {\n\tallowedEvent: event<{ value: string }>({\n\t\tcanSubscribe: (c) => {\n\t\t\tc.state.lastCanSubscribeConnId = c.conn.id;\n\t\t\treturn true;\n\t\t},\n\t}),\n\tblockedEvent: event<{ value: string }>({\n\t\tcanSubscribe: (c) => {\n\t\t\tc.state.lastCanSubscribeConnId = c.conn.id;\n\t\t\treturn false;\n\t\t},\n\t}),\n};\n\nconst accessControlQueues: Record<\n\tstring,\n\tReturnType<typeof queue<{ value: string }>>\n> = {\n\tallowedQueue: queue<{ value: string }>({\n\t\tcanPublish: (c) => {\n\t\t\tc.state.lastCanPublishConnId = c.conn.id;\n\t\t\treturn true;\n\t\t},\n\t}),\n\tblockedQueue: queue<{ value: string }>({\n\t\tcanPublish: (c) => {\n\t\t\tc.state.lastCanPublishConnId = c.conn.id;\n\t\t\treturn false;\n\t\t},\n\t}),\n};\n\nexport const accessControlActor = actor({\n\tstate: {\n\t\tlastCanPublishConnId: \"\",\n\t\tlastCanSubscribeConnId: \"\",\n\t},\n\tevents: accessControlEvents,\n\tqueues: accessControlQueues,\n\tonBeforeConnect: (_c, params: AccessControlConnParams) => {\n\t\tif (params?.allowRequest === false || params?.allowWebSocket === false) {\n\t\t\tthrow new Forbidden();\n\t\t}\n\t},\n\tonRequest(_c, request) {\n\t\tconst url = new URL(request.url);\n\t\tif (url.pathname === \"/status\") {\n\t\t\treturn Response.json({ ok: true });\n\t\t}\n\t\treturn new Response(\"Not Found\", { status: 404 });\n\t},\n\tonWebSocket(_c, websocket) {\n\t\twebsocket.send(JSON.stringify({ type: \"welcome\" }));\n\t},\n\tactions: {\n\t\tallowedAction: (_c, value: string) => {\n\t\t\treturn `allowed:${value}`;\n\t\t},\n\t\tallowedGetLastCanPublishConnId: (c) => {\n\t\t\treturn c.state.lastCanPublishConnId;\n\t\t},\n\t\tallowedGetLastCanSubscribeConnId: (c) => {\n\t\t\treturn c.state.lastCanSubscribeConnId;\n\t\t},\n\t\tallowedReceiveQueue: async (c) => {\n\t\t\tconst message = await c.queue.tryNext({\n\t\t\t\tnames: [\"allowedQueue\"],\n\t\t\t});\n\t\t\treturn message?.body ?? null;\n\t\t},\n\t\tallowedReceiveAnyQueue: async (c) => {\n\t\t\tconst message = await c.queue.tryNext();\n\t\t\treturn message?.body ?? null;\n\t\t},\n\t\tallowedBroadcastAllowedEvent: (c, value: string) => {\n\t\t\tc.broadcast(\"allowedEvent\", { value });\n\t\t},\n\t\tallowedBroadcastBlockedEvent: (c, value: string) => {\n\t\t\tc.broadcast(\"blockedEvent\", { value });\n\t\t},\n\t\tallowedBroadcastUndefinedEvent: (c, value: string) => {\n\t\t\tc.broadcast(\"undefinedEvent\", { value });\n\t\t},\n\t},\n});\n\nexport const accessControlNoQueuesActor = actor({\n\tstate: {},\n\tactions: {\n\t\treadAnyQueue: async (c) => {\n\t\t\tconst message = await c.queue.tryNext();\n\t\t\treturn message?.body ?? null;\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\nexport interface State {\n\tinitialInput?: unknown;\n\tonCreateInput?: unknown;\n}\n\n// Test actor that can capture input during creation\nexport const inputActor = actor({\n\tcreateState: (c, input): State => {\n\t\treturn {\n\t\t\tinitialInput: input,\n\t\t\tonCreateInput: undefined,\n\t\t};\n\t},\n\n\tonCreate: (c, input) => {\n\t\tc.state.onCreateInput = input;\n\t},\n\n\tactions: {\n\t\tgetInputs: (c) => {\n\t\t\treturn {\n\t\t\t\tinitialInput: c.state.initialInput,\n\t\t\t\tonCreateInput: c.state.onCreateInput,\n\t\t\t};\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\n// Short timeout actor\nexport const shortTimeoutActor = actor({\n\tstate: { value: 0 },\n\toptions: {\n\t\tactionTimeout: 50, // 50ms timeout\n\t},\n\tactions: {\n\t\tquickAction: async (c) => {\n\t\t\treturn \"quick response\";\n\t\t},\n\t\tslowAction: async (c) => {\n\t\t\t// This action should timeout\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 100));\n\t\t\treturn \"slow response\";\n\t\t},\n\t},\n});\n\n// Long timeout actor\nexport const longTimeoutActor = actor({\n\tstate: { value: 0 },\n\toptions: {\n\t\tactionTimeout: 200, // 200ms timeout\n\t},\n\tactions: {\n\t\tdelayedAction: async (c) => {\n\t\t\t// This action should complete within timeout\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 100));\n\t\t\treturn \"delayed response\";\n\t\t},\n\t},\n});\n\n// Default timeout actor\nexport const defaultTimeoutActor = actor({\n\tstate: { value: 0 },\n\tactions: {\n\t\tnormalAction: async (c) => {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 50));\n\t\t\treturn \"normal response\";\n\t\t},\n\t},\n});\n\n// Sync actor (timeout shouldn't apply)\nexport const syncTimeoutActor = actor({\n\tstate: { value: 0 },\n\toptions: {\n\t\tactionTimeout: 50, // 50ms timeout\n\t},\n\tactions: {\n\t\tsyncAction: (c) => {\n\t\t\treturn \"sync response\";\n\t\t},\n\t},\n});\n","import { actor, UserError } from \"rivetkit\";\n\n// Actor with synchronous actions\nexport const syncActionActor = actor({\n\tstate: { value: 0 },\n\tactions: {\n\t\t// Simple synchronous action that returns a value directly\n\t\tincrement: (c, amount = 1) => {\n\t\t\tc.state.value += amount;\n\t\t\treturn c.state.value;\n\t\t},\n\t\t// Synchronous action that returns an object\n\t\tgetInfo: (c) => {\n\t\t\treturn {\n\t\t\t\tcurrentValue: c.state.value,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t};\n\t\t},\n\t\t// Synchronous action with no return value (void)\n\t\treset: (c) => {\n\t\t\tc.state.value = 0;\n\t\t},\n\t},\n});\n\n// Actor with asynchronous actions\nexport const asyncActionActor = actor({\n\tstate: { value: 0, data: null as any },\n\tactions: {\n\t\t// Async action with a delay\n\t\tdelayedIncrement: async (c, amount = 1) => {\n\t\t\tawait Promise.resolve();\n\t\t\tc.state.value += amount;\n\t\t\treturn c.state.value;\n\t\t},\n\t\t// Async action that simulates an API call\n\t\tfetchData: async (c, id: string) => {\n\t\t\tawait Promise.resolve();\n\n\t\t\t// Simulate response data\n\t\t\tconst data = { id, timestamp: Date.now() };\n\t\t\tc.state.data = data;\n\t\t\treturn data;\n\t\t},\n\t\t// Async action with error handling\n\t\tasyncWithError: async (c, shouldError: boolean) => {\n\t\t\tawait Promise.resolve();\n\n\t\t\tif (shouldError) {\n\t\t\t\tthrow new UserError(\"Intentional error\");\n\t\t\t}\n\n\t\t\treturn \"Success\";\n\t\t},\n\t},\n});\n\n// Actor with promise actions\nexport const promiseActor = actor({\n\tstate: { results: [] as string[] },\n\tactions: {\n\t\t// Action that returns a resolved promise\n\t\tresolvedPromise: (c) => {\n\t\t\treturn Promise.resolve(\"resolved value\");\n\t\t},\n\t\t// Action that returns a promise that resolves after a delay\n\t\tdelayedPromise: (c): Promise<string> => {\n\t\t\treturn new Promise<string>((resolve) => {\n\t\t\t\tc.state.results.push(\"delayed\");\n\t\t\t\tresolve(\"delayed value\");\n\t\t\t});\n\t\t},\n\t\t// Action that returns a rejected promise\n\t\trejectedPromise: (c) => {\n\t\t\treturn Promise.reject(new UserError(\"promised rejection\"));\n\t\t},\n\t\t// Action to check the collected results\n\t\tgetResults: (c) => {\n\t\t\treturn c.state.results;\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\nimport { db } from \"rivetkit/db\";\n\nfunction firstRowValue(row: Record<string, unknown> | undefined): unknown {\n\tif (!row) {\n\t\treturn undefined;\n\t}\n\n\tconst values = Object.values(row);\n\treturn values.length > 0 ? values[0] : undefined;\n}\n\nfunction toSafeInteger(value: unknown): number {\n\tif (typeof value === \"bigint\") {\n\t\treturn Number(value);\n\t}\n\tif (typeof value === \"number\") {\n\t\treturn Number.isFinite(value) ? Math.trunc(value) : 0;\n\t}\n\tif (typeof value === \"string\") {\n\t\tconst parsed = Number.parseInt(value, 10);\n\t\treturn Number.isFinite(parsed) ? parsed : 0;\n\t}\n\treturn 0;\n}\n\nfunction normalizeRowIds(rowIds: number[]): number[] {\n\tconst normalized = rowIds\n\t\t.map((id) => Math.trunc(id))\n\t\t.filter((id) => Number.isFinite(id) && id > 0);\n\treturn Array.from(new Set(normalized));\n}\n\nfunction makePayload(size: number): string {\n\tconst normalizedSize = Math.max(0, Math.trunc(size));\n\treturn \"x\".repeat(normalizedSize);\n}\n\nexport const dbActorRaw = actor({\n\tstate: {\n\t\tdisconnectInsertEnabled: false,\n\t\tdisconnectInsertDelayMs: 0,\n\t},\n\tdb: db({\n\t\tonMigrate: async (db) => {\n\t\t\tawait db.execute(`\n\t\t\t\tCREATE TABLE IF NOT EXISTS test_data (\n\t\t\t\t\tid INTEGER PRIMARY KEY AUTOINCREMENT,\n\t\t\t\t\tvalue TEXT NOT NULL,\n\t\t\t\t\tpayload TEXT NOT NULL DEFAULT '',\n\t\t\t\t\tcreated_at INTEGER NOT NULL\n\t\t\t\t)\n\t\t\t`);\n\t\t},\n\t}),\n\tonDisconnect: async (c) => {\n\t\tif (!c.state.disconnectInsertEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (c.state.disconnectInsertDelayMs > 0) {\n\t\t\tawait new Promise<void>((resolve) =>\n\t\t\t\tsetTimeout(resolve, c.state.disconnectInsertDelayMs),\n\t\t\t);\n\t\t}\n\n\t\tawait c.db.execute(\n\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ('__disconnect__', '', ${Date.now()})`,\n\t\t);\n\t},\n\tactions: {\n\t\tconfigureDisconnectInsert: (c, enabled: boolean, delayMs: number) => {\n\t\t\tc.state.disconnectInsertEnabled = enabled;\n\t\t\tc.state.disconnectInsertDelayMs = Math.max(\n\t\t\t\t0,\n\t\t\t\tMath.floor(delayMs),\n\t\t\t);\n\t\t},\n\t\tgetDisconnectInsertCount: async (c) => {\n\t\t\tconst results = await c.db.execute<{ count: number }>(\n\t\t\t\t`SELECT COUNT(*) as count FROM test_data WHERE value = '__disconnect__'`,\n\t\t\t);\n\t\t\treturn results[0]?.count ?? 0;\n\t\t},\n\t\treset: async (c) => {\n\t\t\tawait c.db.execute(`DELETE FROM test_data`);\n\t\t},\n\t\tinsertValue: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ('${value}', '', ${Date.now()})`,\n\t\t\t);\n\t\t\tconst results = await c.db.execute<{ id: number }>(\n\t\t\t\t`SELECT last_insert_rowid() as id`,\n\t\t\t);\n\t\t\treturn { id: results[0].id };\n\t\t},\n\t\tgetValues: async (c) => {\n\t\t\tconst results = await c.db.execute<{\n\t\t\t\tid: number;\n\t\t\t\tvalue: string;\n\t\t\t\tpayload: string;\n\t\t\t\tcreated_at: number;\n\t\t\t}>(\n\t\t\t\t`SELECT * FROM test_data ORDER BY id`,\n\t\t\t);\n\t\t\treturn results;\n\t\t},\n\t\tgetValue: async (c, id: number) => {\n\t\t\tconst results = await c.db.execute<{ value: string }>(\n\t\t\t\t`SELECT value FROM test_data WHERE id = ${id}`,\n\t\t\t);\n\t\t\treturn results[0]?.value ?? null;\n\t\t},\n\t\tgetCount: async (c) => {\n\t\t\tconst results = await c.db.execute<{ count: number }>(\n\t\t\t\t`SELECT COUNT(*) as count FROM test_data`,\n\t\t\t);\n\t\t\treturn results[0].count;\n\t\t},\n\t\trawSelectCount: async (c) => {\n\t\t\tconst results = await c.db.execute<{ count: number }>(\n\t\t\t\t`SELECT COUNT(*) as count FROM test_data`,\n\t\t\t);\n\t\t\treturn results[0].count;\n\t\t},\n\t\tinsertMany: async (c, count: number) => {\n\t\t\tif (count <= 0) {\n\t\t\t\treturn { count: 0 };\n\t\t\t}\n\t\t\tconst now = Date.now();\n\t\t\tconst values: string[] = [];\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tvalues.push(`('User ${i}', '', ${now})`);\n\t\t\t}\n\t\t\tawait c.db.execute(\n\t\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ${values.join(\", \")}`,\n\t\t\t);\n\t\t\treturn { count };\n\t\t},\n\t\tupdateValue: async (c, id: number, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`UPDATE test_data SET value = '${value}' WHERE id = ${id}`,\n\t\t\t);\n\t\t\treturn { success: true };\n\t\t},\n\t\tdeleteValue: async (c, id: number) => {\n\t\t\tawait c.db.execute(`DELETE FROM test_data WHERE id = ${id}`);\n\t\t},\n\t\ttransactionCommit: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`BEGIN; INSERT INTO test_data (value, payload, created_at) VALUES ('${value}', '', ${Date.now()}); COMMIT;`,\n\t\t\t);\n\t\t},\n\t\ttransactionRollback: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`BEGIN; INSERT INTO test_data (value, payload, created_at) VALUES ('${value}', '', ${Date.now()}); ROLLBACK;`,\n\t\t\t);\n\t\t},\n\t\tinsertPayloadOfSize: async (c, size: number) => {\n\t\t\tconst payload = \"x\".repeat(size);\n\t\t\tawait c.db.execute(\n\t\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ('payload', '${payload}', ${Date.now()})`,\n\t\t\t);\n\t\t\tconst results = await c.db.execute<{ id: number }>(\n\t\t\t\t`SELECT last_insert_rowid() as id`,\n\t\t\t);\n\t\t\treturn { id: results[0].id, size };\n\t\t},\n\t\tgetPayloadSize: async (c, id: number) => {\n\t\t\tconst results = await c.db.execute<{ size: number }>(\n\t\t\t\t`SELECT length(payload) as size FROM test_data WHERE id = ${id}`,\n\t\t\t);\n\t\t\treturn results[0]?.size ?? 0;\n\t\t},\n\t\tinsertPayloadRows: async (c, count: number, payloadSize: number) => {\n\t\t\tconst normalizedCount = Math.max(0, Math.trunc(count));\n\t\t\tif (normalizedCount === 0) {\n\t\t\t\treturn { count: 0 };\n\t\t\t}\n\n\t\t\tconst payload = makePayload(payloadSize);\n\t\t\tconst now = Date.now();\n\t\t\tfor (let i = 0; i < normalizedCount; i++) {\n\t\t\t\tawait c.db.execute(\n\t\t\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ('bulk-${i}', '${payload}', ${now})`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn { count: normalizedCount };\n\t\t},\n\t\troundRobinUpdateValues: async (\n\t\t\tc,\n\t\t\trowIds: number[],\n\t\t\titerations: number,\n\t\t) => {\n\t\t\tconst normalizedRowIds = normalizeRowIds(rowIds);\n\t\t\tconst normalizedIterations = Math.max(0, Math.trunc(iterations));\n\t\t\tif (normalizedRowIds.length === 0 || normalizedIterations === 0) {\n\t\t\t\tconst emptyRows: Array<{ id: number; value: string }> = [];\n\t\t\t\treturn emptyRows;\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < normalizedIterations; i++) {\n\t\t\t\tconst rowId = normalizedRowIds[i % normalizedRowIds.length] ?? 0;\n\t\t\t\tawait c.db.execute(\n\t\t\t\t\t`UPDATE test_data SET value = 'v-${i}' WHERE id = ${rowId}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn await c.db.execute<{ id: number; value: string }>(\n\t\t\t\t`SELECT id, value FROM test_data WHERE id IN (${normalizedRowIds.join(\",\")}) ORDER BY id`,\n\t\t\t);\n\t\t},\n\t\tgetPageCount: async (c) => {\n\t\t\tconst rows = await c.db.execute<Record<string, unknown>>(\n\t\t\t\t\"PRAGMA page_count\",\n\t\t\t);\n\t\t\treturn toSafeInteger(firstRowValue(rows[0]));\n\t\t},\n\t\tvacuum: async (c) => {\n\t\t\tawait c.db.execute(\"VACUUM\");\n\t\t},\n\t\tintegrityCheck: async (c) => {\n\t\t\tconst rows = await c.db.execute<Record<string, unknown>>(\n\t\t\t\t\"PRAGMA integrity_check\",\n\t\t\t);\n\t\t\tconst value = firstRowValue(rows[0]);\n\t\t\treturn String(value ?? \"\");\n\t\t},\n\t\trunMixedWorkload: async (c, seedCount: number, churnCount: number) => {\n\t\t\tconst normalizedSeedCount = Math.max(1, Math.trunc(seedCount));\n\t\t\tconst normalizedChurnCount = Math.max(0, Math.trunc(churnCount));\n\t\t\tconst now = Date.now();\n\n\t\t\tfor (let i = 0; i < normalizedSeedCount; i++) {\n\t\t\t\tconst payload = makePayload(1024 + (i % 5) * 128);\n\t\t\t\tawait c.db.execute(\n\t\t\t\t\t`INSERT OR REPLACE INTO test_data (id, value, payload, created_at) VALUES (${i + 1}, 'seed-${i}', '${payload}', ${now})`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < normalizedChurnCount; i++) {\n\t\t\t\tconst id = (i % normalizedSeedCount) + 1;\n\t\t\t\tif (i % 9 === 0) {\n\t\t\t\t\tawait c.db.execute(`DELETE FROM test_data WHERE id = ${id}`);\n\t\t\t\t} else {\n\t\t\t\t\tconst payload = makePayload(768 + (i % 7) * 96);\n\t\t\t\t\tawait c.db.execute(\n\t\t\t\t\t\t`INSERT OR REPLACE INTO test_data (id, value, payload, created_at) VALUES (${id}, 'upd-${i}', '${payload}', ${now + i})`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\trepeatUpdate: async (c, id: number, count: number) => {\n\t\t\tlet value = \"\";\n\t\t\tif (count <= 0) {\n\t\t\t\treturn { value };\n\t\t\t}\n\t\t\tconst statements: string[] = [\"BEGIN\"];\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tvalue = `Updated ${i}`;\n\t\t\t\tstatements.push(\n\t\t\t\t\t`UPDATE test_data SET value = '${value}' WHERE id = ${id}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tstatements.push(\"COMMIT\");\n\t\t\tawait c.db.execute(statements.join(\"; \"));\n\t\t\treturn { value };\n\t\t},\n\t\tmultiStatementInsert: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`BEGIN; INSERT INTO test_data (value, payload, created_at) VALUES ('${value}', '', ${Date.now()}); UPDATE test_data SET value = '${value}-updated' WHERE id = last_insert_rowid(); COMMIT;`,\n\t\t\t);\n\t\t\tconst results = await c.db.execute<{ value: string }>(\n\t\t\t\t`SELECT value FROM test_data ORDER BY id DESC LIMIT 1`,\n\t\t\t);\n\t\t\treturn results[0]?.value ?? null;\n\t\t},\n\t\ttriggerSleep: (c) => {\n\t\t\tc.sleep();\n\t\t},\n\t},\n\toptions: {\n\t\tsleepTimeout: 100,\n\t},\n});\n","export const migrations = {\n\tjournal: {\n\t\tentries: [\n\t\t\t{\n\t\t\t\tidx: 0,\n\t\t\t\twhen: 1700000000000,\n\t\t\t\ttag: \"0000_init\",\n\t\t\t\tbreakpoints: false,\n\t\t\t},\n\t\t],\n\t},\n\tmigrations: {\n\t\tm0000: `\n\t\t\tCREATE TABLE IF NOT EXISTS test_data (\n\t\t\t\tid INTEGER PRIMARY KEY AUTOINCREMENT,\n\t\t\t\tvalue TEXT NOT NULL,\n\t\t\t\tpayload TEXT NOT NULL DEFAULT '',\n\t\t\t\tcreated_at INTEGER NOT NULL\n\t\t\t);\n\t\t`,\n\t},\n};\n","import { integer, sqliteTable, text } from \"rivetkit/db/drizzle\";\n\nexport const testData = sqliteTable(\"test_data\", {\n\tid: integer(\"id\").primaryKey({ autoIncrement: true }),\n\tvalue: text(\"value\").notNull(),\n\tpayload: text(\"payload\").notNull().default(\"\"),\n\tcreatedAt: integer(\"created_at\").notNull(),\n});\n\nexport const schema = {\n\ttestData,\n};\n","import { actor } from \"rivetkit\";\nimport { db } from \"rivetkit/db/drizzle\";\nimport { migrations } from \"./db/migrations\";\nimport { schema } from \"./db/schema\";\n\nfunction firstRowValue(row: Record<string, unknown> | undefined): unknown {\n\tif (!row) {\n\t\treturn undefined;\n\t}\n\n\tconst values = Object.values(row);\n\treturn values.length > 0 ? values[0] : undefined;\n}\n\nfunction toSafeInteger(value: unknown): number {\n\tif (typeof value === \"bigint\") {\n\t\treturn Number(value);\n\t}\n\tif (typeof value === \"number\") {\n\t\treturn Number.isFinite(value) ? Math.trunc(value) : 0;\n\t}\n\tif (typeof value === \"string\") {\n\t\tconst parsed = Number.parseInt(value, 10);\n\t\treturn Number.isFinite(parsed) ? parsed : 0;\n\t}\n\treturn 0;\n}\n\nfunction normalizeRowIds(rowIds: number[]): number[] {\n\tconst normalized = rowIds\n\t\t.map((id) => Math.trunc(id))\n\t\t.filter((id) => Number.isFinite(id) && id > 0);\n\treturn Array.from(new Set(normalized));\n}\n\nfunction makePayload(size: number): string {\n\tconst normalizedSize = Math.max(0, Math.trunc(size));\n\treturn \"x\".repeat(normalizedSize);\n}\n\nexport const dbActorDrizzle = actor({\n\tstate: {\n\t\tdisconnectInsertEnabled: false,\n\t\tdisconnectInsertDelayMs: 0,\n\t},\n\tdb: db({\n\t\tschema,\n\t\tmigrations,\n\t}),\n\tonDisconnect: async (c) => {\n\t\tif (!c.state.disconnectInsertEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (c.state.disconnectInsertDelayMs > 0) {\n\t\t\tawait new Promise<void>((resolve) =>\n\t\t\t\tsetTimeout(resolve, c.state.disconnectInsertDelayMs),\n\t\t\t);\n\t\t}\n\n\t\tawait c.db.execute(\n\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ('__disconnect__', '', ${Date.now()})`,\n\t\t);\n\t},\n\tactions: {\n\t\tconfigureDisconnectInsert: (c, enabled: boolean, delayMs: number) => {\n\t\t\tc.state.disconnectInsertEnabled = enabled;\n\t\t\tc.state.disconnectInsertDelayMs = Math.max(\n\t\t\t\t0,\n\t\t\t\tMath.floor(delayMs),\n\t\t\t);\n\t\t},\n\t\tgetDisconnectInsertCount: async (c) => {\n\t\t\tconst results = await c.db.execute<{ count: number }>(\n\t\t\t\t`SELECT COUNT(*) as count FROM test_data WHERE value = '__disconnect__'`,\n\t\t\t);\n\t\t\treturn results[0]?.count ?? 0;\n\t\t},\n\t\treset: async (c) => {\n\t\t\tawait c.db.execute(`DELETE FROM test_data`);\n\t\t},\n\t\tinsertValue: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ('${value}', '', ${Date.now()})`,\n\t\t\t);\n\t\t\tconst results = await c.db.execute<{ id: number }>(\n\t\t\t\t`SELECT last_insert_rowid() as id`,\n\t\t\t);\n\t\t\treturn { id: results[0].id };\n\t\t},\n\t\tgetValues: async (c) => {\n\t\t\tconst results = await c.db.execute<{\n\t\t\t\tid: number;\n\t\t\t\tvalue: string;\n\t\t\t\tpayload: string;\n\t\t\t\tcreated_at: number;\n\t\t\t}>(\n\t\t\t\t`SELECT * FROM test_data ORDER BY id`,\n\t\t\t);\n\t\t\treturn results;\n\t\t},\n\t\tgetValue: async (c, id: number) => {\n\t\t\tconst results = await c.db.execute<{ value: string }>(\n\t\t\t\t`SELECT value FROM test_data WHERE id = ${id}`,\n\t\t\t);\n\t\t\treturn results[0]?.value ?? null;\n\t\t},\n\t\tgetCount: async (c) => {\n\t\t\tconst results = await c.db.execute<{ count: number }>(\n\t\t\t\t`SELECT COUNT(*) as count FROM test_data`,\n\t\t\t);\n\t\t\treturn results[0].count;\n\t\t},\n\t\trawSelectCount: async (c) => {\n\t\t\tconst results = await c.db.execute<{ count: number }>(\n\t\t\t\t`SELECT COUNT(*) as count FROM test_data`,\n\t\t\t);\n\t\t\treturn results[0]?.count ?? 0;\n\t\t},\n\t\tinsertMany: async (c, count: number) => {\n\t\t\tif (count <= 0) {\n\t\t\t\treturn { count: 0 };\n\t\t\t}\n\t\t\tconst now = Date.now();\n\t\t\tconst values: string[] = [];\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tvalues.push(`('User ${i}', '', ${now})`);\n\t\t\t}\n\t\t\tawait c.db.execute(\n\t\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ${values.join(\", \")}`,\n\t\t\t);\n\t\t\treturn { count };\n\t\t},\n\t\tupdateValue: async (c, id: number, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`UPDATE test_data SET value = '${value}' WHERE id = ${id}`,\n\t\t\t);\n\t\t\treturn { success: true };\n\t\t},\n\t\tdeleteValue: async (c, id: number) => {\n\t\t\tawait c.db.execute(`DELETE FROM test_data WHERE id = ${id}`);\n\t\t},\n\t\ttransactionCommit: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`BEGIN; INSERT INTO test_data (value, payload, created_at) VALUES ('${value}', '', ${Date.now()}); COMMIT;`,\n\t\t\t);\n\t\t},\n\t\ttransactionRollback: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`BEGIN; INSERT INTO test_data (value, payload, created_at) VALUES ('${value}', '', ${Date.now()}); ROLLBACK;`,\n\t\t\t);\n\t\t},\n\t\tinsertPayloadOfSize: async (c, size: number) => {\n\t\t\tconst payload = \"x\".repeat(size);\n\t\t\tawait c.db.execute(\n\t\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ('payload', '${payload}', ${Date.now()})`,\n\t\t\t);\n\t\t\tconst results = await c.db.execute<{ id: number }>(\n\t\t\t\t`SELECT last_insert_rowid() as id`,\n\t\t\t);\n\t\t\treturn { id: results[0].id, size };\n\t\t},\n\t\tgetPayloadSize: async (c, id: number) => {\n\t\t\tconst results = await c.db.execute<{ size: number }>(\n\t\t\t\t`SELECT length(payload) as size FROM test_data WHERE id = ${id}`,\n\t\t\t);\n\t\t\treturn results[0]?.size ?? 0;\n\t\t},\n\t\tinsertPayloadRows: async (c, count: number, payloadSize: number) => {\n\t\t\tconst normalizedCount = Math.max(0, Math.trunc(count));\n\t\t\tif (normalizedCount === 0) {\n\t\t\t\treturn { count: 0 };\n\t\t\t}\n\n\t\t\tconst payload = makePayload(payloadSize);\n\t\t\tconst now = Date.now();\n\t\t\tfor (let i = 0; i < normalizedCount; i++) {\n\t\t\t\tawait c.db.execute(\n\t\t\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ('bulk-${i}', '${payload}', ${now})`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn { count: normalizedCount };\n\t\t},\n\t\troundRobinUpdateValues: async (\n\t\t\tc,\n\t\t\trowIds: number[],\n\t\t\titerations: number,\n\t\t) => {\n\t\t\tconst normalizedRowIds = normalizeRowIds(rowIds);\n\t\t\tconst normalizedIterations = Math.max(0, Math.trunc(iterations));\n\t\t\tif (normalizedRowIds.length === 0 || normalizedIterations === 0) {\n\t\t\t\tconst emptyRows: Array<{ id: number; value: string }> = [];\n\t\t\t\treturn emptyRows;\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < normalizedIterations; i++) {\n\t\t\t\tconst rowId = normalizedRowIds[i % normalizedRowIds.length] ?? 0;\n\t\t\t\tawait c.db.execute(\n\t\t\t\t\t`UPDATE test_data SET value = 'v-${i}' WHERE id = ${rowId}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn await c.db.execute<{ id: number; value: string }>(\n\t\t\t\t`SELECT id, value FROM test_data WHERE id IN (${normalizedRowIds.join(\",\")}) ORDER BY id`,\n\t\t\t);\n\t\t},\n\t\tgetPageCount: async (c) => {\n\t\t\tconst rows = await c.db.execute<Record<string, unknown>>(\n\t\t\t\t\"PRAGMA page_count\",\n\t\t\t);\n\t\t\treturn toSafeInteger(firstRowValue(rows[0]));\n\t\t},\n\t\tvacuum: async (c) => {\n\t\t\tawait c.db.execute(\"VACUUM\");\n\t\t},\n\t\tintegrityCheck: async (c) => {\n\t\t\tconst rows = await c.db.execute<Record<string, unknown>>(\n\t\t\t\t\"PRAGMA integrity_check\",\n\t\t\t);\n\t\t\tconst value = firstRowValue(rows[0]);\n\t\t\treturn String(value ?? \"\");\n\t\t},\n\t\trunMixedWorkload: async (c, seedCount: number, churnCount: number) => {\n\t\t\tconst normalizedSeedCount = Math.max(1, Math.trunc(seedCount));\n\t\t\tconst normalizedChurnCount = Math.max(0, Math.trunc(churnCount));\n\t\t\tconst now = Date.now();\n\n\t\t\tfor (let i = 0; i < normalizedSeedCount; i++) {\n\t\t\t\tconst payload = makePayload(1024 + (i % 5) * 128);\n\t\t\t\tawait c.db.execute(\n\t\t\t\t\t`INSERT OR REPLACE INTO test_data (id, value, payload, created_at) VALUES (${i + 1}, 'seed-${i}', '${payload}', ${now})`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < normalizedChurnCount; i++) {\n\t\t\t\tconst id = (i % normalizedSeedCount) + 1;\n\t\t\t\tif (i % 9 === 0) {\n\t\t\t\t\tawait c.db.execute(`DELETE FROM test_data WHERE id = ${id}`);\n\t\t\t\t} else {\n\t\t\t\t\tconst payload = makePayload(768 + (i % 7) * 96);\n\t\t\t\t\tawait c.db.execute(\n\t\t\t\t\t\t`INSERT OR REPLACE INTO test_data (id, value, payload, created_at) VALUES (${id}, 'upd-${i}', '${payload}', ${now + i})`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\trepeatUpdate: async (c, id: number, count: number) => {\n\t\t\tlet value = \"\";\n\t\t\tif (count <= 0) {\n\t\t\t\treturn { value };\n\t\t\t}\n\t\t\tconst statements: string[] = [\"BEGIN\"];\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tvalue = `Updated ${i}`;\n\t\t\t\tstatements.push(\n\t\t\t\t\t`UPDATE test_data SET value = '${value}' WHERE id = ${id}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tstatements.push(\"COMMIT\");\n\t\t\tawait c.db.execute(statements.join(\"; \"));\n\t\t\treturn { value };\n\t\t},\n\t\tmultiStatementInsert: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`BEGIN; INSERT INTO test_data (value, payload, created_at) VALUES ('${value}', '', ${Date.now()}); UPDATE test_data SET value = '${value}-updated' WHERE id = last_insert_rowid(); COMMIT;`,\n\t\t\t);\n\t\t\tconst results = await c.db.execute<{ value: string }>(\n\t\t\t\t`SELECT value FROM test_data ORDER BY id DESC LIMIT 1`,\n\t\t\t);\n\t\t\treturn results[0]?.value ?? null;\n\t\t},\n\t\ttriggerSleep: (c) => {\n\t\t\tc.sleep();\n\t\t},\n\t},\n\toptions: {\n\t\tsleepTimeout: 100,\n\t},\n});\n","import { actor } from \"rivetkit\";\nimport { db } from \"rivetkit/db\";\n\ntype LifecycleCounts = {\n\tcreate: number;\n\tmigrate: number;\n\tcleanup: number;\n};\n\nconst clientActorIds = new WeakMap<object, string>();\n\nconst createCounts = new Map<string, number>();\nconst migrateCounts = new Map<string, number>();\nconst cleanupCounts = new Map<string, number>();\n\nfunction increment(map: Map<string, number>, actorId: string) {\n\tmap.set(actorId, (map.get(actorId) ?? 0) + 1);\n}\n\nfunction getCounts(actorId: string): LifecycleCounts {\n\treturn {\n\t\tcreate: createCounts.get(actorId) ?? 0,\n\t\tmigrate: migrateCounts.get(actorId) ?? 0,\n\t\tcleanup: cleanupCounts.get(actorId) ?? 0,\n\t};\n}\n\nconst baseProvider = db({\n\tonMigrate: async (dbHandle) => {\n\t\tawait dbHandle.execute(`\n\t\t\tCREATE TABLE IF NOT EXISTS lifecycle_data (\n\t\t\t\tid INTEGER PRIMARY KEY AUTOINCREMENT,\n\t\t\t\tvalue TEXT NOT NULL,\n\t\t\t\tcreated_at INTEGER NOT NULL\n\t\t\t)\n\t\t`);\n\t},\n});\n\nconst lifecycleProvider = {\n\tcreateClient: async (ctx: Parameters<typeof baseProvider.createClient>[0]) => {\n\t\tconst client = await baseProvider.createClient(ctx);\n\t\tclientActorIds.set(client as object, ctx.actorId);\n\t\tincrement(createCounts, ctx.actorId);\n\t\treturn client;\n\t},\n\tonMigrate: async (client: Parameters<typeof baseProvider.onMigrate>[0]) => {\n\t\tconst actorId = clientActorIds.get(client as object);\n\t\tif (actorId) {\n\t\t\tincrement(migrateCounts, actorId);\n\t\t}\n\t\tawait baseProvider.onMigrate(client);\n\t},\n\tonDestroy: async (client: Parameters<NonNullable<typeof baseProvider.onDestroy>>[0]) => {\n\t\tconst actorId = clientActorIds.get(client as object);\n\t\tif (actorId) {\n\t\t\tincrement(cleanupCounts, actorId);\n\t\t}\n\t\t\tawait baseProvider.onDestroy?.(client);\n\t\t},\n\t};\n\nconst failingLifecycleProvider = {\n\tcreateClient: async (ctx: Parameters<typeof baseProvider.createClient>[0]) => {\n\t\tconst client = await baseProvider.createClient(ctx);\n\t\tclientActorIds.set(client as object, ctx.actorId);\n\t\tincrement(createCounts, ctx.actorId);\n\t\treturn client;\n\t},\n\tonMigrate: async (client: Parameters<typeof baseProvider.onMigrate>[0]) => {\n\t\tconst actorId = clientActorIds.get(client as object);\n\t\tif (actorId) {\n\t\t\tincrement(migrateCounts, actorId);\n\t\t}\n\t\tthrow new Error(\"forced migrate failure\");\n\t},\n\tonDestroy: async (client: Parameters<NonNullable<typeof baseProvider.onDestroy>>[0]) => {\n\t\tconst actorId = clientActorIds.get(client as object);\n\t\tif (actorId) {\n\t\t\tincrement(cleanupCounts, actorId);\n\t\t}\n\t\tawait baseProvider.onDestroy?.(client);\n\t},\n};\n\nexport const dbLifecycle = actor({\n\tdb: lifecycleProvider,\n\tactions: {\n\t\tgetActorId: (c) => c.actorId,\n\t\tping: () => \"pong\",\n\t\tinsertValue: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t\"INSERT INTO lifecycle_data (value, created_at) VALUES (?, ?)\",\n\t\t\t\tvalue,\n\t\t\t\tDate.now(),\n\t\t\t);\n\t\t},\n\t\tgetCount: async (c) => {\n\t\t\tconst results = await c.db.execute<{ count: number }>(\n\t\t\t\t`SELECT COUNT(*) as count FROM lifecycle_data`,\n\t\t\t);\n\t\t\treturn results[0]?.count ?? 0;\n\t\t},\n\t\ttriggerSleep: (c) => {\n\t\t\tc.sleep();\n\t\t},\n\t\ttriggerDestroy: (c) => {\n\t\t\tc.destroy();\n\t\t},\n\t},\n\toptions: {\n\t\tsleepTimeout: 100,\n\t},\n});\n\nexport const dbLifecycleFailing = actor({\n\tdb: failingLifecycleProvider,\n\tactions: {\n\t\tping: () => \"pong\",\n\t},\n});\n\nexport const dbLifecycleObserver = actor({\n\tactions: {\n\t\tgetCounts: (_c, actorId: string) => {\n\t\t\treturn getCounts(actorId);\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\nexport const onStateChangeActor = actor({\n\tstate: {\n\t\tvalue: 0,\n\t\tchangeCount: 0,\n\t},\n\tactions: {\n\t\t// Action that modifies state - should trigger onStateChange\n\t\tsetValue: (c, newValue: number) => {\n\t\t\tc.state.value = newValue;\n\t\t\treturn c.state.value;\n\t\t},\n\t\t// Action that modifies state multiple times - should trigger onStateChange for each change\n\t\tincrementMultiple: (c, times: number) => {\n\t\t\tfor (let i = 0; i < times; i++) {\n\t\t\t\tc.state.value++;\n\t\t\t}\n\t\t\treturn c.state.value;\n\t\t},\n\t\t// Action that doesn't modify state - should NOT trigger onStateChange\n\t\tgetValue: (c) => {\n\t\t\treturn c.state.value;\n\t\t},\n\t\t// Action that reads and returns without modifying - should NOT trigger onStateChange\n\t\tgetDoubled: (c) => {\n\t\t\tconst doubled = c.state.value * 2;\n\t\t\treturn doubled;\n\t\t},\n\t\t// Get the count of how many times onStateChange was called\n\t\tgetChangeCount: (c) => {\n\t\t\treturn c.state.changeCount;\n\t\t},\n\t\t// Reset change counter for testing\n\t\tresetChangeCount: (c) => {\n\t\t\tc.state.changeCount = 0;\n\t\t},\n\t},\n\t// Track onStateChange calls\n\tonStateChange: (c) => {\n\t\tc.state.changeCount++;\n\t},\n});\n","import { actor } from \"rivetkit\";\n\nexport const counterWithParams = actor({\n\tstate: { count: 0, initializers: [] as string[] },\n\tcreateConnState: (c, params: { name?: string }) => {\n\t\treturn {\n\t\t\tname: params.name || \"anonymous\",\n\t\t};\n\t},\n\tonConnect: (c, conn) => {\n\t\t// Record connection name\n\t\tc.state.initializers.push(conn.state.name);\n\t},\n\tactions: {\n\t\tincrement: (c, x: number) => {\n\t\t\tc.state.count += x;\n\t\t\tc.broadcast(\"newCount\", {\n\t\t\t\tcount: c.state.count,\n\t\t\t\tby: c.conn.state.name,\n\t\t\t});\n\t\t\treturn c.state.count;\n\t\t},\n\t\tgetInitializers: (c) => {\n\t\t\treturn c.state.initializers;\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\nexport type ConnState = {\n\tusername: string;\n\trole: string;\n\tcounter: number;\n\tcreatedAt: number;\n\tnoCount: boolean;\n};\n\nexport const connStateActor = actor({\n\tstate: {\n\t\tsharedCounter: 0,\n\t\tdisconnectionCount: 0,\n\t},\n\t// Define connection state\n\tcreateConnState: (\n\t\tc,\n\t\tparams: { username?: string; role?: string; noCount?: boolean },\n\t): ConnState => {\n\t\treturn {\n\t\t\tusername: params?.username || \"anonymous\",\n\t\t\trole: params?.role || \"user\",\n\t\t\tcounter: 0,\n\t\t\tcreatedAt: Date.now(),\n\t\t\tnoCount: params?.noCount ?? false,\n\t\t};\n\t},\n\t// Lifecycle hook when a connection is established\n\tonConnect: (c, conn) => {\n\t\t// Broadcast event about the new connection\n\t\tc.broadcast(\"userConnected\", {\n\t\t\tid: conn.id,\n\t\t\tusername: \"anonymous\",\n\t\t\trole: \"user\",\n\t\t});\n\t},\n\t// Lifecycle hook when a connection is closed\n\tonDisconnect: (c, conn) => {\n\t\tif (!conn.state?.noCount) {\n\t\t\tc.state.disconnectionCount += 1;\n\t\t\tc.broadcast(\"userDisconnected\", {\n\t\t\t\tid: conn.id,\n\t\t\t});\n\t\t}\n\t},\n\tactions: {\n\t\t// Action to increment the connection's counter\n\t\tincrementConnCounter: (c, amount = 1) => {\n\t\t\tc.conn.state.counter += amount;\n\t\t},\n\n\t\t// Action to increment the shared counter\n\t\tincrementSharedCounter: (c, amount = 1) => {\n\t\t\tc.state.sharedCounter += amount;\n\t\t\treturn c.state.sharedCounter;\n\t\t},\n\n\t\t// Get the connection state\n\t\tgetConnectionState: (c) => {\n\t\t\treturn { id: c.conn.id, ...c.conn.state };\n\t\t},\n\n\t\t// Check all active connections\n\t\tgetConnectionIds: (c) => {\n\t\t\treturn c.conns\n\t\t\t\t.entries()\n\t\t\t\t.filter((c) => !c[1].state?.noCount)\n\t\t\t\t.map((x) => x[0])\n\t\t\t\t.toArray();\n\t\t},\n\n\t\t// Get disconnection count\n\t\tgetDisconnectionCount: (c) => {\n\t\t\treturn c.state.disconnectionCount;\n\t\t},\n\n\t\t// Get all active connection states\n\t\tgetAllConnectionStates: (c) => {\n\t\t\treturn c.conns\n\t\t\t\t.entries()\n\t\t\t\t.map(([id, conn]) => ({ id, ...conn.state }))\n\t\t\t\t.toArray();\n\t\t},\n\n\t\t// Send message to a specific connection with matching ID\n\t\tsendToConnection: (c, targetId: string, message: string) => {\n\t\t\tif (c.conns.has(targetId)) {\n\t\t\t\tc.conns\n\t\t\t\t\t.get(targetId)!\n\t\t\t\t\t.send(\"directMessage\", { from: c.conn.id, message });\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Update connection state (simulated for tests)\n\t\tupdateConnection: (\n\t\t\tc,\n\t\t\tupdates: Partial<{ username: string; role: string }>,\n\t\t) => {\n\t\t\tif (updates.username) c.conn.state.username = updates.username;\n\t\t\tif (updates.role) c.conn.state.role = updates.role;\n\t\t\treturn c.conn.state;\n\t\t},\n\t\tdisconnectSelf: (c, reason?: string) => {\n\t\t\tc.conn.disconnect(reason ?? \"test.disconnect\");\n\t\t\treturn true;\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\nexport const counter = actor({\n\tstate: { count: 0 },\n\tactions: {\n\t\tincrement: (c, x: number) => {\n\t\t\tc.state.count += x;\n\t\t\tc.broadcast(\"newCount\", c.state.count);\n\t\t\treturn c.state.count;\n\t\t},\n\t\tsetCount: (c, x: number) => {\n\t\t\tc.state.count = x;\n\t\t\tc.broadcast(\"newCount\", x);\n\t\t\treturn c.state.count;\n\t\t},\n\t\tgetCount: (c) => {\n\t\t\treturn c.state.count;\n\t\t},\n\t\tgetKey: (c) => {\n\t\t\treturn c.key;\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\nexport const counterConn = actor({\n\tstate: {\n\t\tconnectionCount: 0,\n\t},\n\tconnState: { count: 0 },\n\tonConnect: (c, conn) => {\n\t\tc.state.connectionCount += 1;\n\t},\n\tonDisconnect: (c, conn) => {\n\t\t// Note: We can't determine if disconnect was graceful from here\n\t\t// For testing purposes, we'll decrement on all disconnects\n\t\t// In real scenarios, you'd use connection tracking with timeouts\n\t\tc.state.connectionCount -= 1;\n\t},\n\tactions: {\n\t\tincrement: (c, x: number) => {\n\t\t\tc.conn.state.count += x;\n\t\t\tc.broadcast(\"newCount\", c.conn.state.count);\n\t\t},\n\t\tsetCount: (c, x: number) => {\n\t\t\tc.conn.state.count = x;\n\t\t\tc.broadcast(\"newCount\", x);\n\t\t},\n\t\tgetCount: (c) => {\n\t\t\treturn c.conn.state.count;\n\t\t},\n\t\tgetConnectionCount: (c) => {\n\t\t\treturn c.state.connectionCount;\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\nimport type { registry } from \"./registry\";\n\nexport const destroyObserver = actor({\n\tstate: { destroyedActors: [] as string[] },\n\tactions: {\n\t\tnotifyDestroyed: (c, actorKey: string) => {\n\t\t\tc.state.destroyedActors.push(actorKey);\n\t\t},\n\t\twasDestroyed: (c, actorKey: string) => {\n\t\t\treturn c.state.destroyedActors.includes(actorKey);\n\t\t},\n\t\treset: (c) => {\n\t\t\tc.state.destroyedActors = [];\n\t\t},\n\t},\n});\n\nexport const destroyActor = actor({\n\tstate: { value: 0, key: \"\" },\n\tonWake: (c) => {\n\t\t// Store the actor key so we can reference it in onDestroy\n\t\tc.state.key = c.key.join(\"/\");\n\t},\n\tonDestroy: async (c) => {\n\t\tconst client = c.client<typeof registry>();\n\t\tconst observer = client.destroyObserver.getOrCreate([\"observer\"]);\n\t\tawait observer.notifyDestroyed(c.state.key);\n\t},\n\tactions: {\n\t\tsetValue: async (c, newValue: number) => {\n\t\t\tc.state.value = newValue;\n\t\t\tawait c.saveState({ immediate: true });\n\t\t\treturn c.state.value;\n\t\t},\n\t\tgetValue: (c) => {\n\t\t\treturn c.state.value;\n\t\t},\n\t\tdestroy: (c) => {\n\t\t\tc.destroy();\n\t\t},\n\t},\n});\n","import { actor, UserError } from \"rivetkit\";\n\nexport const errorHandlingActor = actor({\n\tstate: {\n\t\terrorLog: [] as string[],\n\t},\n\tactions: {\n\t\t// Action that throws a UserError with just a message\n\t\tthrowSimpleError: () => {\n\t\t\tthrow new UserError(\"Simple error message\");\n\t\t},\n\n\t\t// Action that throws a UserError with code and metadata\n\t\tthrowDetailedError: () => {\n\t\t\tthrow new UserError(\"Detailed error message\", {\n\t\t\t\tcode: \"detailed_error\",\n\t\t\t\tmetadata: {\n\t\t\t\t\treason: \"test\",\n\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\n\t\t// Action that throws an internal error\n\t\tthrowInternalError: () => {\n\t\t\tthrow new Error(\"This is an internal error\");\n\t\t},\n\n\t\t// Action that returns successfully\n\t\tsuccessfulAction: () => {\n\t\t\treturn \"success\";\n\t\t},\n\n\t\t// Action that times out (simulated with a long delay)\n\t\ttimeoutAction: async (c) => {\n\t\t\t// This action should time out if the timeout is configured\n\t\t\treturn new Promise((resolve) => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tresolve(\"This should not be reached if timeout works\");\n\t\t\t\t}, 10000); // 10 seconds\n\t\t\t});\n\t\t},\n\n\t\t// Action with configurable delay to test timeout edge cases\n\t\tdelayedAction: async (c, delayMs: number) => {\n\t\t\treturn new Promise((resolve) => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tresolve(`Completed after ${delayMs}ms`);\n\t\t\t\t}, delayMs);\n\t\t\t});\n\t\t},\n\n\t\t// Log an error for inspection\n\t\tlogError: (c, error: string) => {\n\t\t\tc.state.errorLog.push(error);\n\t\t\treturn c.state.errorLog;\n\t\t},\n\n\t\t// Get the error log\n\t\tgetErrorLog: (c) => {\n\t\t\treturn c.state.errorLog;\n\t\t},\n\n\t\t// Clear the error log\n\t\tclearErrorLog: (c) => {\n\t\t\tc.state.errorLog = [];\n\t\t\treturn true;\n\t\t},\n\t},\n\toptions: {\n\t\tactionTimeout: 500, // 500ms timeout for actions\n\t},\n});\n\n// Actor with custom timeout\nexport const customTimeoutActor = actor({\n\tstate: {},\n\tactions: {\n\t\tquickAction: async () => {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 50));\n\t\t\treturn \"Quick action completed\";\n\t\t},\n\t\tslowAction: async () => {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 300));\n\t\t\treturn \"Slow action completed\";\n\t\t},\n\t},\n\toptions: {\n\t\tactionTimeout: 200, // 200ms timeout\n\t},\n});\n","import { actor } from \"rivetkit\";\n\nexport const fileSystemHibernationCleanupActor = actor({\n\tstate: {\n\t\twakeCount: 0,\n\t\tsleepCount: 0,\n\t\tdisconnectWakeCounts: [] as number[],\n\t},\n\tcreateConnState: () => ({}),\n\tonWake: (c) => {\n\t\tc.state.wakeCount += 1;\n\t},\n\tonSleep: (c) => {\n\t\tc.state.sleepCount += 1;\n\t},\n\tonDisconnect: (c, conn) => {\n\t\t// Only track WebSocket connection cleanup. HTTP actions are ephemeral.\n\t\tif (conn.isHibernatable) {\n\t\t\tc.state.disconnectWakeCounts.push(c.state.wakeCount);\n\t\t}\n\t},\n\tactions: {\n\t\tping: () => \"pong\",\n\t\ttriggerSleep: (c) => {\n\t\t\tc.sleep();\n\t\t},\n\t\tgetCounts: (c) => ({\n\t\t\twakeCount: c.state.wakeCount,\n\t\t\tsleepCount: c.state.sleepCount,\n\t\t}),\n\t\tgetDisconnectWakeCounts: (c) => c.state.disconnectWakeCounts,\n\t},\n\toptions: {\n\t\tsleepTimeout: 500,\n\t},\n});\n","import { actor } from \"rivetkit\";\nimport type { registry } from \"./registry\";\n\nexport const inlineClientActor = actor({\n\tstate: { messages: [] as string[] },\n\tactions: {\n\t\t// Action that uses client to call another actor (stateless)\n\t\tcallCounterIncrement: async (c, amount: number) => {\n\t\t\tconst client = c.client<typeof registry>();\n\t\t\tconst result = await client.counter\n\t\t\t\t.getOrCreate([\"inline-test\"])\n\t\t\t\t.increment(amount);\n\t\t\tc.state.messages.push(\n\t\t\t\t`Called counter.increment(${amount}), result: ${result}`,\n\t\t\t);\n\t\t\treturn result;\n\t\t},\n\n\t\t// Action that uses client to get counter state (stateless)\n\t\tgetCounterState: async (c) => {\n\t\t\tconst client = c.client<typeof registry>();\n\t\t\tconst count = await client.counter\n\t\t\t\t.getOrCreate([\"inline-test\"])\n\t\t\t\t.getCount();\n\t\t\tc.state.messages.push(`Got counter state: ${count}`);\n\t\t\treturn count;\n\t\t},\n\n\t\t// Action that uses client with .connect() for stateful communication\n\t\tconnectToCounterAndIncrement: async (c, amount: number) => {\n\t\t\tconst client = c.client<typeof registry>();\n\t\t\tconst handle = client.counter.getOrCreate([\"inline-test-stateful\"]);\n\t\t\tconst connection = handle.connect();\n\n\t\t\t// Set up event listener\n\t\t\tconst events: number[] = [];\n\t\t\tconnection.on(\"newCount\", (count: number) => {\n\t\t\t\tevents.push(count);\n\t\t\t});\n\n\t\t\t// Perform increments\n\t\t\tconst result1 = await connection.increment(amount);\n\t\t\tconst result2 = await connection.increment(amount * 2);\n\n\t\t\tawait connection.dispose();\n\n\t\t\tc.state.messages.push(\n\t\t\t\t`Connected to counter, incremented by ${amount} and ${amount * 2}, results: ${result1}, ${result2}, events: ${JSON.stringify(events)}`,\n\t\t\t);\n\n\t\t\treturn { result1, result2, events };\n\t\t},\n\n\t\t// Get all messages from this actor's state\n\t\tgetMessages: (c) => {\n\t\t\treturn c.state.messages;\n\t\t},\n\n\t\t// Clear messages\n\t\tclearMessages: (c) => {\n\t\t\tc.state.messages = [];\n\t\t},\n\t},\n});\n","import { actor, type ActorContext } from \"rivetkit\";\n\nexport const kvActor = actor({\n\tactions: {\n\t\tputText: async (\n\t\t\tc: ActorContext<any, any, any, any, any, any>,\n\t\t\tkey: string,\n\t\t\tvalue: string,\n\t\t) => {\n\t\t\tawait c.kv.put(key, value);\n\t\t\treturn true;\n\t\t},\n\t\tgetText: async (\n\t\t\tc: ActorContext<any, any, any, any, any, any>,\n\t\t\tkey: string,\n\t\t) => {\n\t\t\treturn await c.kv.get(key);\n\t\t},\n\t\tlistText: async (\n\t\t\tc: ActorContext<any, any, any, any, any, any>,\n\t\t\tprefix: string,\n\t\t) => {\n\t\t\tconst results = await c.kv.list(prefix, { keyType: \"text\" });\n\t\t\treturn results.map(([key, value]) => ({\n\t\t\t\tkey,\n\t\t\t\tvalue,\n\t\t\t}));\n\t\t},\n\t\troundtripArrayBuffer: async (\n\t\t\tc: ActorContext<any, any, any, any, any, any>,\n\t\t\tkey: string,\n\t\t\tvalues: number[],\n\t\t) => {\n\t\t\tconst buffer = new Uint8Array(values).buffer;\n\t\t\tawait c.kv.put(key, buffer, { type: \"arrayBuffer\" });\n\t\t\tconst result = await c.kv.get(key, { type: \"arrayBuffer\" });\n\t\t\tif (!result) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn Array.from(new Uint8Array(result));\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\n/**\n * Actor for testing large payloads without connections\n */\nexport const largePayloadActor = actor({\n\tstate: {},\n\tactions: {\n\t\t/**\n\t\t * Accepts a large request payload and returns its size\n\t\t */\n\t\tprocessLargeRequest: (c, data: { items: string[] }) => {\n\t\t\treturn {\n\t\t\t\titemCount: data.items.length,\n\t\t\t\tfirstItem: data.items[0],\n\t\t\t\tlastItem: data.items[data.items.length - 1],\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Returns a large response payload\n\t\t */\n\t\tgetLargeResponse: (c, itemCount: number) => {\n\t\t\tconst items: string[] = [];\n\t\t\tfor (let i = 0; i < itemCount; i++) {\n\t\t\t\titems.push(`Item ${i} with some additional text to increase size`);\n\t\t\t}\n\t\t\treturn { items };\n\t\t},\n\n\t\t/**\n\t\t * Echo back the request data\n\t\t */\n\t\techo: (c, data: unknown) => {\n\t\t\treturn data;\n\t\t},\n\t},\n});\n\n/**\n * Actor for testing large payloads with connections\n */\nexport const largePayloadConnActor = actor({\n\tstate: {},\n\tconnState: {\n\t\tlastRequestSize: 0,\n\t},\n\tactions: {\n\t\t/**\n\t\t * Accepts a large request payload and returns its size\n\t\t */\n\t\tprocessLargeRequest: (c, data: { items: string[] }) => {\n\t\t\tc.conn.state.lastRequestSize = data.items.length;\n\t\t\treturn {\n\t\t\t\titemCount: data.items.length,\n\t\t\t\tfirstItem: data.items[0],\n\t\t\t\tlastItem: data.items[data.items.length - 1],\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Returns a large response payload\n\t\t */\n\t\tgetLargeResponse: (c, itemCount: number) => {\n\t\t\tconst items: string[] = [];\n\t\t\tfor (let i = 0; i < itemCount; i++) {\n\t\t\t\titems.push(`Item ${i} with some additional text to increase size`);\n\t\t\t}\n\t\t\treturn { items };\n\t\t},\n\n\t\t/**\n\t\t * Echo back the request data\n\t\t */\n\t\techo: (c, data: unknown) => {\n\t\t\treturn data;\n\t\t},\n\n\t\t/**\n\t\t * Get the last request size\n\t\t */\n\t\tgetLastRequestSize: (c) => {\n\t\t\treturn c.conn.state.lastRequestSize;\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\ntype ConnParams = { trackLifecycle?: boolean } | undefined;\n\nexport const counterWithLifecycle = actor({\n\tstate: {\n\t\tcount: 0,\n\t\tevents: [] as string[],\n\t},\n\tcreateConnState: (c, params: ConnParams) => ({\n\t\tjoinTime: Date.now(),\n\t}),\n\tonWake: (c) => {\n\t\tc.state.events.push(\"onWake\");\n\t},\n\tonBeforeConnect: (c, params: ConnParams) => {\n\t\tif (params?.trackLifecycle) c.state.events.push(\"onBeforeConnect\");\n\t},\n\tonConnect: (c, conn) => {\n\t\tif (conn.params?.trackLifecycle) c.state.events.push(\"onConnect\");\n\t},\n\tonDisconnect: (c, conn) => {\n\t\tif (conn.params?.trackLifecycle) c.state.events.push(\"onDisconnect\");\n\t},\n\tactions: {\n\t\tgetEvents: (c) => {\n\t\t\treturn c.state.events;\n\t\t},\n\t\tincrement: (c, x: number) => {\n\t\t\tc.state.count += x;\n\t\t\treturn c.state.count;\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\n// Note: For testing only - metadata API will need to be mocked\n// in tests since this is implementation-specific\nexport const metadataActor = actor({\n\tstate: {\n\t\tlastMetadata: null as any,\n\t\tactorName: \"\",\n\t\t// Store tags and region in state for testing since they may not be\n\t\t// available in the context in all environments\n\t\tstoredTags: {} as Record<string, string>,\n\t\tstoredRegion: null as string | null,\n\t},\n\tonWake: (c) => {\n\t\t// Store the actor name during initialization\n\t\tc.state.actorName = c.name;\n\t},\n\tactions: {\n\t\t// Set up test tags - this will be called by tests to simulate tags\n\t\tsetupTestTags: (c, tags: Record<string, string>) => {\n\t\t\tc.state.storedTags = tags;\n\t\t\treturn tags;\n\t\t},\n\n\t\t// Set up test region - this will be called by tests to simulate region\n\t\tsetupTestRegion: (c, region: string) => {\n\t\t\tc.state.storedRegion = region;\n\t\t\treturn region;\n\t\t},\n\n\t\t// Get all available metadata\n\t\tgetMetadata: (c) => {\n\t\t\t// Create metadata object from stored values\n\t\t\tconst metadata = {\n\t\t\t\tname: c.name,\n\t\t\t\ttags: c.state.storedTags,\n\t\t\t\tregion: c.state.storedRegion,\n\t\t\t};\n\n\t\t\t// Store for later inspection\n\t\t\tc.state.lastMetadata = metadata;\n\t\t\treturn metadata;\n\t\t},\n\n\t\t// Get the actor name\n\t\tgetActorName: (c) => {\n\t\t\treturn c.name;\n\t\t},\n\n\t\t// Get a specific tag by key\n\t\tgetTag: (c, key: string) => {\n\t\t\treturn c.state.storedTags[key] || null;\n\t\t},\n\n\t\t// Get all tags\n\t\tgetTags: (c) => {\n\t\t\treturn c.state.storedTags;\n\t\t},\n\n\t\t// Get the region\n\t\tgetRegion: (c) => {\n\t\t\treturn c.state.storedRegion;\n\t\t},\n\n\t\t// Get the stored actor name (from onWake)\n\t\tgetStoredActorName: (c) => {\n\t\t\treturn c.state.actorName;\n\t\t},\n\n\t\t// Get last retrieved metadata\n\t\tgetLastMetadata: (c) => {\n\t\t\treturn c.state.lastMetadata;\n\t\t},\n\t},\n});\n","import { actor, queue } from \"rivetkit\";\nimport type { registry } from \"./registry\";\n\nconst queueSchemas = {\n\tgreeting: queue<{ hello: string }>(),\n\tself: queue<{ value: number }>(),\n\ta: queue<number>(),\n\tb: queue<number>(),\n\tc: queue<number>(),\n\tone: queue<string>(),\n\ttwo: queue<string>(),\n\tmissing: queue<unknown>(),\n\tabort: queue<unknown>(),\n\ttasks: queue<{ value: number }, { echo: { value: number } }>(),\n\ttimeout: queue<{ value: number }, { ok: true }>(),\n\tnowait: queue<{ value: string }>(),\n\ttwice: queue<{ value: string }, { ok: true }>(),\n} as const;\n\ntype QueueName = keyof typeof queueSchemas;\n\nexport const queueActor = actor({\n\tstate: {},\n\tqueues: queueSchemas,\n\tactions: {\n\t\treceiveOne: async (\n\t\t\tc,\n\t\t\tname: QueueName,\n\t\t\topts?: { timeout?: number },\n\t\t) => {\n\t\t\tconst message = await c.queue.next({\n\t\t\t\tnames: [name],\n\t\t\t\ttimeout: opts?.timeout,\n\t\t\t});\n\t\t\tif (!message) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn { name: message.name, body: message.body };\n\t\t},\n\t\treceiveMany: async (\n\t\t\tc,\n\t\t\tnames: QueueName[],\n\t\t\topts?: { count?: number; timeout?: number },\n\t\t) => {\n\t\t\tconst messages = await c.queue.nextBatch({\n\t\t\t\tnames,\n\t\t\t\tcount: opts?.count,\n\t\t\t\ttimeout: opts?.timeout,\n\t\t\t});\n\t\t\treturn messages.map((message) => ({\n\t\t\t\tname: message.name,\n\t\t\t\tbody: message.body,\n\t\t\t}));\n\t\t},\n\t\treceiveRequest: async (\n\t\t\tc,\n\t\t\trequest: {\n\t\t\t\tnames?: QueueName[];\n\t\t\t\tcount?: number;\n\t\t\t\ttimeout?: number;\n\t\t\t},\n\t\t) => {\n\t\t\tconst messages = await c.queue.nextBatch(request);\n\t\t\treturn messages.map((message) => ({\n\t\t\t\tname: message.name,\n\t\t\t\tbody: message.body,\n\t\t\t}));\n\t\t},\n\t\ttryReceiveMany: async (\n\t\t\tc,\n\t\t\trequest: {\n\t\t\t\tnames?: QueueName[];\n\t\t\t\tcount?: number;\n\t\t\t},\n\t\t) => {\n\t\t\tconst messages = await c.queue.tryNextBatch(request);\n\t\t\treturn messages.map((message) => ({\n\t\t\t\tname: message.name,\n\t\t\t\tbody: message.body,\n\t\t\t}));\n\t\t},\n\t\treceiveWithIterator: async (c, name: QueueName) => {\n\t\t\tfor await (const message of c.queue.iter({ names: [name] })) {\n\t\t\t\treturn { name: message.name, body: message.body };\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\treceiveWithAsyncIterator: async (c) => {\n\t\t\tfor await (const message of c.queue.iter()) {\n\t\t\t\treturn { name: message.name, body: message.body };\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tsendToSelf: async (c, name: QueueName, body: unknown) => {\n\t\t\tconst client = c.client<typeof registry>();\n\t\t\tconst handle = client.queueActor.getForId(c.actorId);\n\t\t\tawait handle.send(name, body);\n\t\t\treturn true;\n\t\t},\n\t\twaitForAbort: async (c) => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tc.destroy();\n\t\t\t}, 10);\n\t\t\tawait c.queue.next({ names: [\"abort\"], timeout: 10_000 });\n\t\t\treturn true;\n\t\t},\n\t\twaitForSignalAbort: async (c) => {\n\t\t\tconst controller = new AbortController();\n\t\t\tcontroller.abort();\n\t\t\ttry {\n\t\t\t\tawait c.queue.next({\n\t\t\t\t\tnames: [\"abort\"],\n\t\t\t\t\ttimeout: 10_000,\n\t\t\t\t\tsignal: controller.signal,\n\t\t\t\t});\n\t\t\t\treturn { ok: false };\n\t\t\t} catch (error) {\n\t\t\t\tconst actorError = error as { group?: string; code?: string };\n\t\t\t\treturn { group: actorError.group, code: actorError.code };\n\t\t\t}\n\t\t},\n\t\twaitForActorAbortWithSignal: async (c) => {\n\t\t\tconst controller = new AbortController();\n\t\t\tsetTimeout(() => {\n\t\t\t\tc.destroy();\n\t\t\t}, 10);\n\t\t\ttry {\n\t\t\t\tawait c.queue.next({\n\t\t\t\t\tnames: [\"abort\"],\n\t\t\t\t\ttimeout: 10_000,\n\t\t\t\t\tsignal: controller.signal,\n\t\t\t\t});\n\t\t\t\treturn { ok: false };\n\t\t\t} catch (error) {\n\t\t\t\tconst actorError = error as { group?: string; code?: string };\n\t\t\t\treturn { group: actorError.group, code: actorError.code };\n\t\t\t}\n\t\t},\n\t\titerWithSignalAbort: async (c) => {\n\t\t\tconst controller = new AbortController();\n\t\t\tcontroller.abort();\n\t\t\tfor await (const _message of c.queue.iter({\n\t\t\t\tnames: [\"abort\"],\n\t\t\t\tsignal: controller.signal,\n\t\t\t})) {\n\t\t\t\treturn { ok: false };\n\t\t\t}\n\t\t\treturn { ok: true };\n\t\t},\n\t\treceiveAndComplete: async (c, name: \"tasks\") => {\n\t\t\tconst message = await c.queue.next({\n\t\t\t\tnames: [name],\n\t\t\t\tcompletable: true,\n\t\t\t});\n\t\t\tif (!message) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tawait message.complete({ echo: message.body });\n\t\t\treturn { name: message.name, body: message.body };\n\t\t},\n\t\treceiveWithoutComplete: async (c, name: \"tasks\") => {\n\t\t\tconst message = await c.queue.next({\n\t\t\t\tnames: [name],\n\t\t\t\tcompletable: true,\n\t\t\t});\n\t\t\tif (!message) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn { name: message.name, body: message.body };\n\t\t},\n\t\treceiveManualThenNextWithoutComplete: async (c, name: \"tasks\") => {\n\t\t\tconst message = await c.queue.next({\n\t\t\t\tnames: [name],\n\t\t\t\tcompletable: true,\n\t\t\t});\n\t\t\tif (!message) {\n\t\t\t\treturn { ok: false, reason: \"no_message\" };\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tawait c.queue.next({ names: [name], timeout: 0 });\n\t\t\t\tc.destroy();\n\t\t\t\treturn { ok: false, reason: \"next_succeeded\" };\n\t\t\t} catch (error) {\n\t\t\t\tc.destroy();\n\t\t\t\tconst actorError = error as { group?: string; code?: string };\n\t\t\t\treturn { group: actorError.group, code: actorError.code };\n\t\t\t}\n\t\t},\n\t\treceiveAndCompleteTwice: async (c, name: \"twice\") => {\n\t\t\tconst message = await c.queue.next({\n\t\t\t\tnames: [name],\n\t\t\t\tcompletable: true,\n\t\t\t});\n\t\t\tif (!message) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tawait message.complete({ ok: true });\n\t\t\ttry {\n\t\t\t\tawait message.complete({ ok: true });\n\t\t\t\treturn { ok: false };\n\t\t\t} catch (error) {\n\t\t\t\tconst actorError = error as { group?: string; code?: string };\n\t\t\t\treturn { group: actorError.group, code: actorError.code };\n\t\t\t}\n\t\t},\n\t\treceiveWithoutCompleteMethod: async (c, name: \"nowait\") => {\n\t\t\tconst message = await c.queue.next({\n\t\t\t\tnames: [name],\n\t\t\t\tcompletable: true,\n\t\t\t});\n\t\t\treturn {\n\t\t\t\thasComplete:\n\t\t\t\t\tmessage !== undefined &&\n\t\t\t\t\ttypeof message.complete === \"function\",\n\t\t\t};\n\t\t},\n\t},\n});\n\nexport const queueLimitedActor = actor({\n\tstate: {},\n\tqueues: {\n\t\tmessage: queue<number>(),\n\t\toversize: queue<string>(),\n\t},\n\tactions: {},\n\toptions: {\n\t\tmaxQueueSize: 1,\n\t\tmaxQueueMessageSize: 64,\n\t},\n});\n","import { Hono } from \"hono\";\nimport { actor, type RequestContext } from \"rivetkit\";\n\nexport const rawHttpActor = actor({\n\tstate: {\n\t\trequestCount: 0,\n\t},\n\tonRequest(\n\t\tctx: RequestContext<any, any, any, any, any, any>,\n\t\trequest: Request,\n\t) {\n\t\tconst url = new URL(request.url);\n\t\tconst method = request.method;\n\n\t\t// Track request count\n\t\tctx.state.requestCount++;\n\n\t\t// Handle different endpoints\n\t\tif (url.pathname === \"/api/hello\") {\n\t\t\treturn new Response(\n\t\t\t\tJSON.stringify({ message: \"Hello from actor!\" }),\n\t\t\t\t{\n\t\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tif (url.pathname === \"/api/echo\" && method === \"POST\") {\n\t\t\treturn new Response(request.body, {\n\t\t\t\theaders: request.headers,\n\t\t\t});\n\t\t}\n\n\t\tif (url.pathname === \"/api/state\") {\n\t\t\treturn new Response(\n\t\t\t\tJSON.stringify({\n\t\t\t\t\trequestCount: ctx.state.requestCount,\n\t\t\t\t}),\n\t\t\t\t{\n\t\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tif (url.pathname === \"/api/headers\") {\n\t\t\tconst headers: Record<string, string> = {};\n\t\t\trequest.headers.forEach((value, key) => {\n\t\t\t\theaders[key] = value;\n\t\t\t});\n\t\t\treturn new Response(JSON.stringify(headers), {\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t});\n\t\t}\n\n\t\t// Return 404 for unhandled paths\n\t\treturn new Response(\"Not Found\", { status: 404 });\n\t},\n\tactions: {},\n});\n\nexport const rawHttpNoHandlerActor = actor({\n\tactions: {},\n});\n\nexport const rawHttpVoidReturnActor = actor({\n\tonRequest(ctx, request) {\n\t\t// Intentionally return void to test error handling\n\t\treturn undefined as any;\n\t},\n\tactions: {},\n});\n\nexport const rawHttpHonoActor = actor({\n\tcreateVars() {\n\t\tconst router = new Hono();\n\n\t\t// Set up routes\n\t\trouter.get(\"/\", (c: any) =>\n\t\t\tc.json({ message: \"Welcome to Hono actor!\" }),\n\t\t);\n\n\t\trouter.get(\"/users\", (c: any) =>\n\t\t\tc.json([\n\t\t\t\t{ id: 1, name: \"Alice\" },\n\t\t\t\t{ id: 2, name: \"Bob\" },\n\t\t\t]),\n\t\t);\n\n\t\trouter.get(\"/users/:id\", (c: any) => {\n\t\t\tconst id = c.req.param(\"id\");\n\t\t\treturn c.json({\n\t\t\t\tid: parseInt(id),\n\t\t\t\tname: id === \"1\" ? \"Alice\" : \"Bob\",\n\t\t\t});\n\t\t});\n\n\t\trouter.post(\"/users\", async (c: any) => {\n\t\t\tconst body = await c.req.json();\n\t\t\treturn c.json({ id: 3, ...body }, 201);\n\t\t});\n\n\t\trouter.put(\"/users/:id\", async (c: any) => {\n\t\t\tconst id = c.req.param(\"id\");\n\t\t\tconst body = await c.req.json();\n\t\t\treturn c.json({ id: parseInt(id), ...body });\n\t\t});\n\n\t\trouter.delete(\"/users/:id\", (c: any) => {\n\t\t\tconst id = c.req.param(\"id\");\n\t\t\treturn c.json({ message: `User ${id} deleted` });\n\t\t});\n\n\t\t// Return the router as a var\n\t\treturn { router };\n\t},\n\tonRequest(\n\t\tctx: RequestContext<any, any, any, any, any, any>,\n\t\trequest: Request,\n\t) {\n\t\t// Use the Hono router from vars\n\t\treturn ctx.vars.router.fetch(request);\n\t},\n\tactions: {},\n});\n","import { actor, type RequestContext } from \"rivetkit\";\n\nexport const rawHttpRequestPropertiesActor = actor({\n\tactions: {},\n\tonRequest(\n\t\tctx: RequestContext<any, any, any, any, any, any>,\n\t\trequest: Request,\n\t) {\n\t\t// Extract all relevant Request properties\n\t\tconst url = new URL(request.url);\n\t\tconst method = request.method;\n\n\t\t// Get all headers\n\t\tconst headers: Record<string, string> = {};\n\t\trequest.headers.forEach((value, key) => {\n\t\t\theaders[key] = value;\n\t\t});\n\n\t\t// Handle body based on content type\n\t\tconst handleBody = async () => {\n\t\t\tif (!request.body) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst contentType = request.headers.get(\"content-type\") || \"\";\n\n\t\t\ttry {\n\t\t\t\tif (contentType.includes(\"application/json\")) {\n\t\t\t\t\tconst text = await request.text();\n\t\t\t\t\treturn text ? JSON.parse(text) : null;\n\t\t\t\t} else {\n\t\t\t\t\t// For non-JSON, return as text\n\t\t\t\t\tconst text = await request.text();\n\t\t\t\t\treturn text || null; // Return null for empty bodies\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\t// If body parsing fails, return null\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\n\t\t// Special handling for HEAD and OPTIONS requests\n\t\tif (method === \"HEAD\") {\n\t\t\treturn new Response(null, {\n\t\t\t\tstatus: 200,\n\t\t\t});\n\t\t}\n\n\t\tif (method === \"OPTIONS\") {\n\t\t\treturn new Response(null, {\n\t\t\t\tstatus: 204,\n\t\t\t});\n\t\t}\n\n\t\t// Return all request properties as JSON\n\t\treturn handleBody().then((body) => {\n\t\t\tconst responseData = {\n\t\t\t\t// URL properties\n\t\t\t\turl: request.url,\n\t\t\t\tpathname: url.pathname,\n\t\t\t\tsearch: url.search,\n\t\t\t\tsearchParams: Object.fromEntries(url.searchParams.entries()),\n\t\t\t\thash: url.hash,\n\n\t\t\t\t// Method\n\t\t\t\tmethod: request.method,\n\n\t\t\t\t// Headers\n\t\t\t\theaders: headers,\n\n\t\t\t\t// Body\n\t\t\t\tbody,\n\t\t\t\tbodyText:\n\t\t\t\t\ttypeof body === \"string\"\n\t\t\t\t\t\t? body\n\t\t\t\t\t\t: body === null && request.body !== null\n\t\t\t\t\t\t\t? \"\"\n\t\t\t\t\t\t\t: null,\n\n\t\t\t\t// Additional properties that might be available\n\t\t\t\t// Note: Some properties like cache, credentials, mode, etc.\n\t\t\t\t// might not be available in all environments\n\t\t\t\tcache: request.cache || null,\n\t\t\t\tcredentials: request.credentials || null,\n\t\t\t\tmode: request.mode || null,\n\t\t\t\tredirect: request.redirect || null,\n\t\t\t\treferrer: request.referrer || null,\n\t\t\t};\n\n\t\t\treturn new Response(JSON.stringify(responseData), {\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t});\n\t\t});\n\t},\n});\n","import { type ActorContext, actor, type UniversalWebSocket } from \"rivetkit\";\n\nexport const rawWebSocketActor = actor({\n\tstate: {\n\t\tconnectionCount: 0,\n\t\tmessageCount: 0,\n\t},\n\tonWebSocket(ctx, websocket) {\n\t\tctx.state.connectionCount = ctx.state.connectionCount + 1;\n\t\tconsole.log(\n\t\t\t`[ACTOR] New connection, count: ${ctx.state.connectionCount}`,\n\t\t);\n\n\t\t// Send welcome message\n\t\twebsocket.send(\n\t\t\tJSON.stringify({\n\t\t\t\ttype: \"welcome\",\n\t\t\t\tconnectionCount: ctx.state.connectionCount,\n\t\t\t}),\n\t\t);\n\t\tconsole.log(\"[ACTOR] Sent welcome message\");\n\n\t\t// Echo messages back\n\t\twebsocket.addEventListener(\"message\", (event: any) => {\n\t\t\tctx.state.messageCount = ctx.state.messageCount + 1;\n\t\t\tconsole.log(\n\t\t\t\t`[ACTOR] Message received, total count: ${ctx.state.messageCount}, data:`,\n\t\t\t\tevent.data,\n\t\t\t);\n\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 === \"ping\") {\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: \"pong\",\n\t\t\t\t\t\t\t\ttimestamp: Date.now(),\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 === \"getStats\") {\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t`[ACTOR] Sending stats - connections: ${ctx.state.connectionCount}, messages: ${ctx.state.messageCount}`,\n\t\t\t\t\t\t);\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: \"stats\",\n\t\t\t\t\t\t\t\tconnectionCount: ctx.state.connectionCount,\n\t\t\t\t\t\t\t\tmessageCount: ctx.state.messageCount,\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 === \"getRequestInfo\") {\n\t\t\t\t\t\t// Send back the request URL info if available\n\t\t\t\t\t\tconst url = ctx.request?.url || \"ws://actor/websocket\";\n\t\t\t\t\t\tconst urlObj = new URL(url);\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: \"requestInfo\",\n\t\t\t\t\t\t\t\turl: url,\n\t\t\t\t\t\t\t\tpathname: urlObj.pathname,\n\t\t\t\t\t\t\t\tsearch: urlObj.search,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Echo back\n\t\t\t\t\t\twebsocket.send(data);\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// If not JSON, just echo it back\n\t\t\t\t\twebsocket.send(data);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Echo binary data\n\t\t\t\twebsocket.send(data);\n\t\t\t}\n\t\t});\n\n\t\t// Handle close\n\t\twebsocket.addEventListener(\"close\", () => {\n\t\t\tctx.state.connectionCount = ctx.state.connectionCount - 1;\n\t\t\tconsole.log(\n\t\t\t\t`[ACTOR] Connection closed, count: ${ctx.state.connectionCount}`,\n\t\t\t);\n\t\t});\n\t},\n\tactions: {\n\t\tgetStats(ctx: any) {\n\t\t\treturn {\n\t\t\t\tconnectionCount: ctx.state.connectionCount,\n\t\t\t\tmessageCount: ctx.state.messageCount,\n\t\t\t};\n\t\t},\n\t},\n});\n\nexport const rawWebSocketBinaryActor = actor({\n\tonWebSocket(ctx, websocket) {\n\t\t// Handle binary data\n\t\twebsocket.addEventListener(\"message\", (event: any) => {\n\t\t\tconst data = event.data;\n\t\t\tif (data instanceof ArrayBuffer || data instanceof Uint8Array) {\n\t\t\t\t// Reverse the bytes and send back\n\t\t\t\tconst bytes = new Uint8Array(data);\n\t\t\t\tconst reversed = new Uint8Array(bytes.length);\n\t\t\t\tfor (let i = 0; i < bytes.length; i++) {\n\t\t\t\t\treversed[i] = bytes[bytes.length - 1 - i];\n\t\t\t\t}\n\t\t\t\twebsocket.send(reversed);\n\t\t\t}\n\t\t});\n\t},\n\tactions: {},\n});\n","import { actor, type RivetMessageEvent } from \"rivetkit\";\n\n/**\n * Test fixture to verify request object access in all lifecycle hooks\n */\nexport const requestAccessActor = actor({\n\tstate: {\n\t\t// Track request info from different hooks\n\t\tonBeforeConnectRequest: {\n\t\t\thasRequest: false,\n\t\t\trequestUrl: null as string | null,\n\t\t\trequestMethod: null as string | null,\n\t\t\trequestHeaders: {} as Record<string, string>,\n\t\t},\n\t\tcreateConnStateRequest: {\n\t\t\thasRequest: false,\n\t\t\trequestUrl: null as string | null,\n\t\t\trequestMethod: null as string | null,\n\t\t\trequestHeaders: {} as Record<string, string>,\n\t\t},\n\t\tonRequestRequest: {\n\t\t\thasRequest: false,\n\t\t\trequestUrl: null as string | null,\n\t\t\trequestMethod: null as string | null,\n\t\t\trequestHeaders: {} as Record<string, string>,\n\t\t},\n\t\tonWebSocketRequest: {\n\t\t\thasRequest: false,\n\t\t\trequestUrl: null as string | null,\n\t\t\trequestMethod: null as string | null,\n\t\t\trequestHeaders: {} as Record<string, string>,\n\t\t},\n\t},\n\tcreateConnState: (c, params: { trackRequest?: boolean }) => {\n\t\t// In createConnState, the state isn't available yet.\n\n\t\tlet requestInfo: {\n\t\t\thasRequest: boolean;\n\t\t\trequestUrl: string;\n\t\t\trequestMethod: string;\n\t\t\trequestHeaders: Record<string, string>;\n\t\t} | null = null;\n\n\t\tif (params?.trackRequest && c.request) {\n\t\t\tconst headers: Record<string, string> = {};\n\t\t\tc.request.headers.forEach((value, key) => {\n\t\t\t\theaders[key] = value;\n\t\t\t});\n\t\t\trequestInfo = {\n\t\t\t\thasRequest: true,\n\t\t\t\trequestUrl: c.request.url,\n\t\t\t\trequestMethod: c.request.method,\n\t\t\t\trequestHeaders: headers,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\ttrackRequest: params?.trackRequest || false,\n\t\t\trequestInfo,\n\t\t};\n\t},\n\tonConnect: (c, conn) => {\n\t\t// Copy request info from connection state if it was tracked\n\t\tif (conn.state.requestInfo) {\n\t\t\tc.state.createConnStateRequest = conn.state.requestInfo;\n\t\t}\n\t},\n\tonBeforeConnect: (c, params) => {\n\t\tif (params?.trackRequest) {\n\t\t\tif (c.request) {\n\t\t\t\tc.state.onBeforeConnectRequest.hasRequest = true;\n\t\t\t\tc.state.onBeforeConnectRequest.requestUrl = c.request.url;\n\t\t\t\tc.state.onBeforeConnectRequest.requestMethod = c.request.method;\n\n\t\t\t\t// Store select headers\n\t\t\t\tconst headers: Record<string, string> = {};\n\t\t\t\tc.request.headers.forEach((value, key) => {\n\t\t\t\t\theaders[key] = value;\n\t\t\t\t});\n\t\t\t\tc.state.onBeforeConnectRequest.requestHeaders = headers;\n\t\t\t} else {\n\t\t\t\t// Track that we tried but request was not available\n\t\t\t\tc.state.onBeforeConnectRequest.hasRequest = false;\n\t\t\t}\n\t\t}\n\t},\n\tonRequest: (c, request) => {\n\t\t// Store request info\n\t\tc.state.onRequestRequest.hasRequest = true;\n\t\tc.state.onRequestRequest.requestUrl = request.url;\n\t\tc.state.onRequestRequest.requestMethod = request.method;\n\n\t\t// Store select headers\n\t\tconst headers: Record<string, string> = {};\n\t\trequest.headers.forEach((value, key) => {\n\t\t\theaders[key] = value;\n\t\t});\n\t\tc.state.onRequestRequest.requestHeaders = headers;\n\n\t\t// Return response with request info\n\t\treturn new Response(\n\t\t\tJSON.stringify({\n\t\t\t\thasRequest: true,\n\t\t\t\trequestUrl: request.url,\n\t\t\t\trequestMethod: request.method,\n\t\t\t\trequestHeaders: headers,\n\t\t\t}),\n\t\t\t{\n\t\t\t\tstatus: 200,\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t},\n\t\t);\n\t},\n\tonWebSocket: (c, websocket) => {\n\t\tif (!c.request) throw \"Missing request\";\n\t\t// Store request info\n\t\tc.state.onWebSocketRequest.hasRequest = true;\n\t\tc.state.onWebSocketRequest.requestUrl = c.request.url;\n\t\tc.state.onWebSocketRequest.requestMethod = c.request.method;\n\n\t\t// Store select headers\n\t\tconst headers: Record<string, string> = {};\n\t\tc.request.headers.forEach((value, key) => {\n\t\t\theaders[key] = value;\n\t\t});\n\t\tc.state.onWebSocketRequest.requestHeaders = headers;\n\n\t\t// Send request info on connection\n\t\twebsocket.send(\n\t\t\tJSON.stringify({\n\t\t\t\thasRequest: true,\n\t\t\t\trequestUrl: c.request.url,\n\t\t\t\trequestMethod: c.request.method,\n\t\t\t\trequestHeaders: headers,\n\t\t\t}),\n\t\t);\n\n\t\t// Echo messages back\n\t\twebsocket.addEventListener(\"message\", (event: RivetMessageEvent) => {\n\t\t\twebsocket.send(event.data);\n\t\t});\n\t},\n\tactions: {\n\t\tgetRequestInfo: (c) => {\n\t\t\treturn {\n\t\t\t\tonBeforeConnect: c.state.onBeforeConnectRequest,\n\t\t\t\tcreateConnState: c.state.createConnStateRequest,\n\t\t\t\tonRequest: c.state.onRequestRequest,\n\t\t\t\tonWebSocket: c.state.onWebSocketRequest,\n\t\t\t};\n\t\t},\n\t},\n});\n","import { actor, UserError } from \"rivetkit\";\n\nexport const rejectConnectionActor = actor({\n\tonBeforeConnect: async (_c, params: { reject?: boolean }) => {\n\t\tif (params?.reject) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 500));\n\t\t\tthrow new UserError(\"Rejected connection\", {\n\t\t\t\tcode: \"rejected\",\n\t\t\t});\n\t\t}\n\t},\n\tactions: {\n\t\tping: () => \"pong\",\n\t},\n});\n","import { actor } from \"rivetkit\";\n\nexport const scheduled = actor({\n\tstate: {\n\t\tlastRun: 0,\n\t\tscheduledCount: 0,\n\t\ttaskHistory: [] as string[],\n\t},\n\tactions: {\n\t\t// Schedule using 'at' with specific timestamp\n\t\tscheduleTaskAt: (c, timestamp: number) => {\n\t\t\tc.schedule.at(timestamp, \"onScheduledTask\");\n\t\t\treturn timestamp;\n\t\t},\n\n\t\t// Schedule using 'after' with delay\n\t\tscheduleTaskAfter: (c, delayMs: number) => {\n\t\t\tc.schedule.after(delayMs, \"onScheduledTask\");\n\t\t\treturn Date.now() + delayMs;\n\t\t},\n\n\t\t// Schedule with a task ID for ordering tests\n\t\tscheduleTaskAfterWithId: (c, taskId: string, delayMs: number) => {\n\t\t\tc.schedule.after(delayMs, \"onScheduledTaskWithId\", taskId);\n\t\t\treturn { taskId, scheduledFor: Date.now() + delayMs };\n\t\t},\n\n\t\t// Original method for backward compatibility\n\t\tscheduleTask: (c, delayMs: number) => {\n\t\t\tconst timestamp = Date.now() + delayMs;\n\t\t\tc.schedule.at(timestamp, \"onScheduledTask\");\n\t\t\treturn timestamp;\n\t\t},\n\n\t\t// Getters for state\n\t\tgetLastRun: (c) => {\n\t\t\treturn c.state.lastRun;\n\t\t},\n\n\t\tgetScheduledCount: (c) => {\n\t\t\treturn c.state.scheduledCount;\n\t\t},\n\n\t\tgetTaskHistory: (c) => {\n\t\t\treturn c.state.taskHistory;\n\t\t},\n\n\t\tclearHistory: (c) => {\n\t\t\tc.state.taskHistory = [];\n\t\t\tc.state.scheduledCount = 0;\n\t\t\tc.state.lastRun = 0;\n\t\t\treturn true;\n\t\t},\n\n\t\t// Scheduled task handlers\n\t\tonScheduledTask: (c) => {\n\t\t\tc.state.lastRun = Date.now();\n\t\t\tc.state.scheduledCount++;\n\t\t\tc.broadcast(\"scheduled\", {\n\t\t\t\ttime: c.state.lastRun,\n\t\t\t\tcount: c.state.scheduledCount,\n\t\t\t});\n\t\t},\n\n\t\tonScheduledTaskWithId: (c, taskId: string) => {\n\t\t\tc.state.lastRun = Date.now();\n\t\t\tc.state.scheduledCount++;\n\t\t\tc.state.taskHistory.push(taskId);\n\t\t\tc.broadcast(\"scheduledWithId\", {\n\t\t\t\ttaskId,\n\t\t\t\ttime: c.state.lastRun,\n\t\t\t\tcount: c.state.scheduledCount,\n\t\t\t});\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\n// Actor without state - only has actions\nexport const statelessActor = actor({\n\tactions: {\n\t\tping: () => \"pong\",\n\t\techo: (c, message: string) => message,\n\t\tgetActorId: (c) => c.actorId,\n\t\t// Try to access state - should throw StateNotEnabled\n\t\ttryGetState: (c) => {\n\t\t\ttry {\n\t\t\t\t// State is typed as undefined, but we want to test runtime behavior\n\t\t\t\tconst state = c.state;\n\t\t\t\treturn { success: true, state };\n\t\t\t} catch (error) {\n\t\t\t\treturn { success: false, error: (error as Error).message };\n\t\t\t}\n\t\t},\n\t\t// Try to access db - should throw DatabaseNotEnabled\n\t\ttryGetDb: (c) => {\n\t\t\ttry {\n\t\t\t\t// DB is typed as undefined, but we want to test runtime behavior\n\t\t\t\tconst db = c.db;\n\t\t\t\treturn { success: true, db };\n\t\t\t} catch (error) {\n\t\t\t\treturn { success: false, error: (error as Error).message };\n\t\t\t}\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\n// Actor with static vars\nexport const staticVarActor = actor({\n\tstate: { value: 0 },\n\tconnState: { hello: \"world\" },\n\tvars: { counter: 42, name: \"test-actor\" },\n\tactions: {\n\t\tgetVars: (c) => {\n\t\t\treturn c.vars;\n\t\t},\n\t\tgetName: (c) => {\n\t\t\treturn c.vars.name;\n\t\t},\n\t},\n});\n\n// Actor with nested vars\nexport const nestedVarActor = actor({\n\tstate: { value: 0 },\n\tconnState: { hello: \"world\" },\n\tvars: {\n\t\tcounter: 42,\n\t\tnested: {\n\t\t\tvalue: \"original\",\n\t\t\tarray: [1, 2, 3],\n\t\t\tobj: { key: \"value\" },\n\t\t},\n\t},\n\tactions: {\n\t\tgetVars: (c) => {\n\t\t\treturn c.vars;\n\t\t},\n\t\tmodifyNested: (c) => {\n\t\t\t// Attempt to modify the nested object\n\t\t\tc.vars.nested.value = \"modified\";\n\t\t\tc.vars.nested.array.push(4);\n\t\t\tc.vars.nested.obj.key = \"new-value\";\n\t\t\treturn c.vars;\n\t\t},\n\t},\n});\n\n// Actor with dynamic vars\nexport const dynamicVarActor = actor({\n\tstate: { value: 0 },\n\tconnState: { hello: \"world\" },\n\tcreateVars: () => {\n\t\treturn {\n\t\t\trandom: Math.random(),\n\t\t\tcomputed: `Actor-${Math.floor(Math.random() * 1000)}`,\n\t\t};\n\t},\n\tactions: {\n\t\tgetVars: (c) => {\n\t\t\treturn c.vars;\n\t\t},\n\t},\n});\n\n// Actor with unique vars per instance\nexport const uniqueVarActor = actor({\n\tstate: { value: 0 },\n\tconnState: { hello: \"world\" },\n\tcreateVars: () => {\n\t\treturn {\n\t\t\tid: Math.floor(Math.random() * 1000000),\n\t\t};\n\t},\n\tactions: {\n\t\tgetVars: (c) => {\n\t\t\treturn c.vars;\n\t\t},\n\t},\n});\n\n// Actor that uses driver context\nexport const driverCtxActor = actor({\n\tstate: { value: 0 },\n\tconnState: { hello: \"world\" },\n\tcreateVars: (c, driverCtx: any) => {\n\t\treturn {\n\t\t\thasDriverCtx: Boolean(driverCtx?.isTest),\n\t\t};\n\t},\n\tactions: {\n\t\tgetVars: (c) => {\n\t\t\treturn c.vars;\n\t\t},\n\t},\n});\n","import { setup } from \"rivetkit\";\nimport {\n\taccessControlActor,\n\taccessControlNoQueuesActor,\n} from \"./access-control\";\n\nimport { inputActor } from \"./action-inputs\";\nimport {\n\tdefaultTimeoutActor,\n\tlongTimeoutActor,\n\tshortTimeoutActor,\n\tsyncTimeoutActor,\n} from \"./action-timeout\";\nimport {\n\tasyncActionActor,\n\tpromiseActor,\n\tsyncActionActor,\n} from \"./action-types\";\nimport { dbActorRaw } from \"./actor-db-raw\";\nimport { dbActorDrizzle } from \"./actor-db-drizzle\";\nimport { dbLifecycle, dbLifecycleFailing, dbLifecycleObserver } from \"./db-lifecycle\";\nimport { onStateChangeActor } from \"./actor-onstatechange\";\nimport { counterWithParams } from \"./conn-params\";\nimport { connStateActor } from \"./conn-state\";\n// Import actors from individual files\nimport { counter } from \"./counter\";\nimport { counterConn } from \"./counter-conn\";\nimport { destroyActor, destroyObserver } from \"./destroy\";\nimport { customTimeoutActor, errorHandlingActor } from \"./error-handling\";\nimport { fileSystemHibernationCleanupActor } from \"./file-system-hibernation-cleanup\";\nimport { hibernationActor } from \"./hibernation\";\nimport { inlineClientActor } from \"./inline-client\";\nimport { kvActor } from \"./kv\";\nimport { largePayloadActor, largePayloadConnActor } from \"./large-payloads\";\nimport { counterWithLifecycle } from \"./lifecycle\";\nimport { metadataActor } from \"./metadata\";\nimport { queueActor, queueLimitedActor } from \"./queue\";\nimport {\n\trawHttpActor,\n\trawHttpHonoActor,\n\trawHttpNoHandlerActor,\n\trawHttpVoidReturnActor,\n} from \"./raw-http\";\nimport { rawHttpRequestPropertiesActor } from \"./raw-http-request-properties\";\nimport { rawWebSocketActor, rawWebSocketBinaryActor } from \"./raw-websocket\";\nimport { requestAccessActor } from \"./request-access\";\nimport { rejectConnectionActor } from \"./reject-connection\";\nimport {\n\trunWithError,\n\trunWithEarlyExit,\n\trunWithoutHandler,\n\trunWithQueueConsumer,\n\trunWithTicks,\n} from \"./run\";\nimport { scheduled } from \"./scheduled\";\nimport {\n\tsleep,\n\tsleepWithLongRpc,\n\tsleepWithNoSleepOption,\n\tsleepWithRawHttp,\n\tsleepWithRawWebSocket,\n} from \"./sleep\";\nimport { statelessActor } from \"./stateless\";\nimport {\n\tdriverCtxActor,\n\tdynamicVarActor,\n\tnestedVarActor,\n\tstaticVarActor,\n\tuniqueVarActor,\n} from \"./vars\";\nimport {\n\tworkflowAccessActor,\n\tworkflowCounterActor,\n\tworkflowQueueActor,\n\tworkflowSleepActor,\n\tworkflowStopTeardownActor,\n} from \"./workflow\";\n\n// Consolidated setup with all actors\nexport const registry = setup({\n\tuse: {\n\t\t// From counter.ts\n\t\tcounter,\n\t\t// From counter-conn.ts\n\t\tcounterConn,\n\t\t// From lifecycle.ts\n\t\tcounterWithLifecycle,\n\t\t// From scheduled.ts\n\t\tscheduled,\n\t\t// From sleep.ts\n\t\tsleep,\n\t\tsleepWithLongRpc,\n\t\tsleepWithRawHttp,\n\t\tsleepWithRawWebSocket,\n\t\tsleepWithNoSleepOption,\n\t\t// From error-handling.ts\n\t\terrorHandlingActor,\n\t\tcustomTimeoutActor,\n\t\t// From inline-client.ts\n\t\tinlineClientActor,\n\t\t// From kv.ts\n\t\tkvActor,\n\t\t// From queue.ts\n\t\tqueueActor,\n\t\tqueueLimitedActor,\n\t\t// From action-inputs.ts\n\t\tinputActor,\n\t\t// From action-timeout.ts\n\t\tshortTimeoutActor,\n\t\tlongTimeoutActor,\n\t\tdefaultTimeoutActor,\n\t\tsyncTimeoutActor,\n\t\t// From action-types.ts\n\t\tsyncActionActor,\n\t\tasyncActionActor,\n\t\tpromiseActor,\n\t\t// From conn-params.ts\n\t\tcounterWithParams,\n\t\t// From conn-state.ts\n\t\tconnStateActor,\n\t\t// From metadata.ts\n\t\tmetadataActor,\n\t\t// From vars.ts\n\t\tstaticVarActor,\n\t\tnestedVarActor,\n\t\tdynamicVarActor,\n\t\tuniqueVarActor,\n\t\tdriverCtxActor,\n\t\t// From raw-http.ts\n\t\trawHttpActor,\n\t\trawHttpNoHandlerActor,\n\t\trawHttpVoidReturnActor,\n\t\trawHttpHonoActor,\n\t\t// From raw-http-request-properties.ts\n\t\trawHttpRequestPropertiesActor,\n\t\t// From raw-websocket.ts\n\t\trawWebSocketActor,\n\t\trawWebSocketBinaryActor,\n\t\t// From reject-connection.ts\n\t\trejectConnectionActor,\n\t\t// From request-access.ts\n\t\trequestAccessActor,\n\t\t// From actor-onstatechange.ts\n\t\tonStateChangeActor,\n\t\t// From destroy.ts\n\t\tdestroyActor,\n\t\tdestroyObserver,\n\t\t// From hibernation.ts\n\t\thibernationActor,\n\t\t// From file-system-hibernation-cleanup.ts\n\t\tfileSystemHibernationCleanupActor,\n\t\t// From large-payloads.ts\n\t\tlargePayloadActor,\n\t\tlargePayloadConnActor,\n\t\t// From run.ts\n\t\trunWithTicks,\n\t\trunWithQueueConsumer,\n\t\trunWithEarlyExit,\n\t\trunWithError,\n\t\trunWithoutHandler,\n\t\t// From workflow.ts\n\t\tworkflowCounterActor,\n\t\tworkflowQueueActor,\n\t\tworkflowAccessActor,\n\t\tworkflowSleepActor,\n\t\tworkflowStopTeardownActor,\n\t\t// From actor-db-raw.ts\n\t\tdbActorRaw,\n\t\t// From actor-db-drizzle.ts\n\t\tdbActorDrizzle,\n\t\t// From db-lifecycle.ts\n\t\tdbLifecycle,\n\t\tdbLifecycleFailing,\n\t\tdbLifecycleObserver,\n\t\t// From stateless.ts\n\t\tstatelessActor,\n\t\t// From access-control.ts\n\t\taccessControlActor,\n\t\taccessControlNoQueuesActor,\n\t},\n});\n"],"mappings":"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","names":["db","firstRowValue","toSafeInteger","normalizeRowIds","makePayload","db","c","text","event","event","db","server"]}
1
+ {"version":3,"sources":["../../../src/serve-test-suite/mod.ts","../../../fixtures/driver-test-suite/access-control.ts","../../../fixtures/driver-test-suite/action-inputs.ts","../../../fixtures/driver-test-suite/action-timeout.ts","../../../fixtures/driver-test-suite/action-types.ts","../../../fixtures/driver-test-suite/actor-db-raw.ts","../../../fixtures/driver-test-suite/db/migrations.ts","../../../fixtures/driver-test-suite/db/schema.ts","../../../fixtures/driver-test-suite/actor-db-drizzle.ts","../../../fixtures/driver-test-suite/db-lifecycle.ts","../../../fixtures/driver-test-suite/actor-onstatechange.ts","../../../fixtures/driver-test-suite/conn-params.ts","../../../fixtures/driver-test-suite/conn-state.ts","../../../fixtures/driver-test-suite/counter.ts","../../../fixtures/driver-test-suite/counter-conn.ts","../../../fixtures/driver-test-suite/destroy.ts","../../../fixtures/driver-test-suite/error-handling.ts","../../../fixtures/driver-test-suite/file-system-hibernation-cleanup.ts","../../../fixtures/driver-test-suite/inline-client.ts","../../../fixtures/driver-test-suite/kv.ts","../../../fixtures/driver-test-suite/large-payloads.ts","../../../fixtures/driver-test-suite/lifecycle.ts","../../../fixtures/driver-test-suite/metadata.ts","../../../fixtures/driver-test-suite/queue.ts","../../../fixtures/driver-test-suite/raw-http.ts","../../../fixtures/driver-test-suite/raw-http-request-properties.ts","../../../fixtures/driver-test-suite/raw-websocket.ts","../../../fixtures/driver-test-suite/request-access.ts","../../../fixtures/driver-test-suite/reject-connection.ts","../../../fixtures/driver-test-suite/scheduled.ts","../../../fixtures/driver-test-suite/stateless.ts","../../../fixtures/driver-test-suite/vars.ts","../../../fixtures/driver-test-suite/registry.ts"],"sourcesContent":["import { createServer } from \"node:net\";\nimport { fileURLToPath } from \"node:url\";\nimport { serve as honoServe } from \"@hono/node-server\";\nimport { createNodeWebSocket } from \"@hono/node-ws\";\nimport invariant from \"invariant\";\nimport { logger } from \"@/driver-test-suite/log\";\nimport { createFileSystemOrMemoryDriver } from \"@/drivers/file-system/mod\";\nimport { buildManagerRouter } from \"@/manager/router\";\nimport { registry } from \"../../fixtures/driver-test-suite/registry\";\n\nexport interface ServeTestSuiteResult {\n\tendpoint: string;\n\tnamespace: string;\n\trunnerName: string;\n\tclose(): Promise<void>;\n}\n\nasync function getPort(): Promise<number> {\n\tconst MIN_PORT = 10000;\n\tconst MAX_PORT = 65535;\n\tconst getRandomPort = () =>\n\t\tMath.floor(Math.random() * (MAX_PORT - MIN_PORT + 1)) + MIN_PORT;\n\n\tlet port = getRandomPort();\n\tlet maxAttempts = 10;\n\n\twhile (maxAttempts > 0) {\n\t\ttry {\n\t\t\tconst server = await new Promise<any>((resolve, reject) => {\n\t\t\t\tconst server = createServer();\n\n\t\t\t\tserver.once(\"error\", (err: Error & { code?: string }) => {\n\t\t\t\t\tif (err.code === \"EADDRINUSE\") {\n\t\t\t\t\t\treject(new Error(`Port ${port} is in use`));\n\t\t\t\t\t} else {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tserver.once(\"listening\", () => {\n\t\t\t\t\tresolve(server);\n\t\t\t\t});\n\n\t\t\t\tserver.listen(port);\n\t\t\t});\n\n\t\t\tawait new Promise<void>((resolve) => {\n\t\t\t\tserver.close(() => resolve());\n\t\t\t});\n\n\t\t\treturn port;\n\t\t} catch {\n\t\t\tmaxAttempts--;\n\t\t\tif (maxAttempts <= 0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tport = getRandomPort();\n\t\t}\n\t}\n\n\tthrow new Error(\"Could not find an available port after multiple attempts\");\n}\n\nexport async function serveTestSuite(): Promise<ServeTestSuiteResult> {\n\tregistry.config.test = { ...registry.config.test, enabled: true };\n\tregistry.config.inspector = {\n\t\tenabled: true,\n\t\ttoken: () => \"token\",\n\t};\n\tconst port = await getPort();\n\tregistry.config.managerPort = port;\n\tregistry.config.serverless = {\n\t\t...registry.config.serverless,\n\t\tpublicEndpoint: `http://127.0.0.1:${port}`,\n\t};\n\n\tconst driver = await createFileSystemOrMemoryDriver(true, {\n\t\tpath: `/tmp/rivetkit-test-suite-${crypto.randomUUID()}`,\n\t});\n\tregistry.config.driver = driver;\n\n\tlet upgradeWebSocket: any;\n\n\tconst parsedConfig = registry.parseConfig();\n\tconst managerDriver = driver.manager?.(parsedConfig);\n\tinvariant(managerDriver, \"missing manager driver\");\n\tconst { router } = buildManagerRouter(\n\t\tparsedConfig,\n\t\tmanagerDriver,\n\t\t() => upgradeWebSocket,\n\t);\n\n\tconst nodeWebSocket = createNodeWebSocket({ app: router });\n\tupgradeWebSocket = nodeWebSocket.upgradeWebSocket;\n\tmanagerDriver.setGetUpgradeWebSocket(() => upgradeWebSocket);\n\n\tconst server = honoServe({\n\t\tfetch: router.fetch,\n\t\thostname: \"127.0.0.1\",\n\t\tport,\n\t});\n\tinvariant(\n\t\tnodeWebSocket.injectWebSocket !== undefined,\n\t\t\"should have injectWebSocket\",\n\t);\n\tnodeWebSocket.injectWebSocket(server);\n\tconst endpoint = `http://127.0.0.1:${port}`;\n\n\tlogger().info({ msg: \"test suite server listening\", port });\n\n\treturn {\n\t\tendpoint,\n\t\tnamespace: \"default\",\n\t\trunnerName: \"default\",\n\t\tclose: async () => {\n\t\t\tawait new Promise((resolve) =>\n\t\t\t\tserver.close(() => resolve(undefined)),\n\t\t\t);\n\t\t},\n\t};\n}\n\nasync function runCli() {\n\tconst result = await serveTestSuite();\n\tprocess.stdout.write(\n\t\t`${JSON.stringify({\n\t\t\tendpoint: result.endpoint,\n\t\t\tnamespace: result.namespace,\n\t\t\trunnerName: result.runnerName,\n\t\t})}\\n`,\n\t);\n\n\tconst shutdown = async () => {\n\t\tawait result.close();\n\t\tprocess.exit(0);\n\t};\n\n\tprocess.on(\"SIGINT\", shutdown);\n\tprocess.on(\"SIGTERM\", shutdown);\n}\n\nconst mainPath = process.argv[1];\nif (mainPath && mainPath === fileURLToPath(import.meta.url)) {\n\trunCli().catch((err) => {\n\t\tlogger().error({ msg: \"serve-test-suite failed\", error: err });\n\t\tprocess.exit(1);\n\t});\n}\n","import { actor, event, queue } from \"rivetkit\";\nimport { Forbidden } from \"rivetkit/errors\";\n\nexport interface AccessControlConnParams {\n\tallowRequest?: boolean;\n\tallowWebSocket?: boolean;\n}\n\nconst accessControlEvents: Record<\n\tstring,\n\tReturnType<typeof event<{ value: string }>>\n> = {\n\tallowedEvent: event<{ value: string }>({\n\t\tcanSubscribe: (c) => {\n\t\t\tc.state.lastCanSubscribeConnId = c.conn.id;\n\t\t\treturn true;\n\t\t},\n\t}),\n\tblockedEvent: event<{ value: string }>({\n\t\tcanSubscribe: (c) => {\n\t\t\tc.state.lastCanSubscribeConnId = c.conn.id;\n\t\t\treturn false;\n\t\t},\n\t}),\n};\n\nconst accessControlQueues: Record<\n\tstring,\n\tReturnType<typeof queue<{ value: string }>>\n> = {\n\tallowedQueue: queue<{ value: string }>({\n\t\tcanPublish: (c) => {\n\t\t\tc.state.lastCanPublishConnId = c.conn.id;\n\t\t\treturn true;\n\t\t},\n\t}),\n\tblockedQueue: queue<{ value: string }>({\n\t\tcanPublish: (c) => {\n\t\t\tc.state.lastCanPublishConnId = c.conn.id;\n\t\t\treturn false;\n\t\t},\n\t}),\n};\n\nexport const accessControlActor = actor({\n\tstate: {\n\t\tlastCanPublishConnId: \"\",\n\t\tlastCanSubscribeConnId: \"\",\n\t},\n\tevents: accessControlEvents,\n\tqueues: accessControlQueues,\n\tonBeforeConnect: (_c, params: AccessControlConnParams) => {\n\t\tif (params?.allowRequest === false || params?.allowWebSocket === false) {\n\t\t\tthrow new Forbidden();\n\t\t}\n\t},\n\tonRequest(_c, request) {\n\t\tconst url = new URL(request.url);\n\t\tif (url.pathname === \"/status\") {\n\t\t\treturn Response.json({ ok: true });\n\t\t}\n\t\treturn new Response(\"Not Found\", { status: 404 });\n\t},\n\tonWebSocket(_c, websocket) {\n\t\twebsocket.send(JSON.stringify({ type: \"welcome\" }));\n\t},\n\tactions: {\n\t\tallowedAction: (_c, value: string) => {\n\t\t\treturn `allowed:${value}`;\n\t\t},\n\t\tallowedGetLastCanPublishConnId: (c) => {\n\t\t\treturn c.state.lastCanPublishConnId;\n\t\t},\n\t\tallowedGetLastCanSubscribeConnId: (c) => {\n\t\t\treturn c.state.lastCanSubscribeConnId;\n\t\t},\n\t\tallowedReceiveQueue: async (c) => {\n\t\t\tconst message = await c.queue.tryNext({\n\t\t\t\tnames: [\"allowedQueue\"],\n\t\t\t});\n\t\t\treturn message?.body ?? null;\n\t\t},\n\t\tallowedReceiveAnyQueue: async (c) => {\n\t\t\tconst message = await c.queue.tryNext();\n\t\t\treturn message?.body ?? null;\n\t\t},\n\t\tallowedBroadcastAllowedEvent: (c, value: string) => {\n\t\t\tc.broadcast(\"allowedEvent\", { value });\n\t\t},\n\t\tallowedBroadcastBlockedEvent: (c, value: string) => {\n\t\t\tc.broadcast(\"blockedEvent\", { value });\n\t\t},\n\t\tallowedBroadcastUndefinedEvent: (c, value: string) => {\n\t\t\tc.broadcast(\"undefinedEvent\", { value });\n\t\t},\n\t},\n});\n\nexport const accessControlNoQueuesActor = actor({\n\tstate: {},\n\tactions: {\n\t\treadAnyQueue: async (c) => {\n\t\t\tconst message = await c.queue.tryNext();\n\t\t\treturn message?.body ?? null;\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\nexport interface State {\n\tinitialInput?: unknown;\n\tonCreateInput?: unknown;\n}\n\n// Test actor that can capture input during creation\nexport const inputActor = actor({\n\tcreateState: (c, input): State => {\n\t\treturn {\n\t\t\tinitialInput: input,\n\t\t\tonCreateInput: undefined,\n\t\t};\n\t},\n\n\tonCreate: (c, input) => {\n\t\tc.state.onCreateInput = input;\n\t},\n\n\tactions: {\n\t\tgetInputs: (c) => {\n\t\t\treturn {\n\t\t\t\tinitialInput: c.state.initialInput,\n\t\t\t\tonCreateInput: c.state.onCreateInput,\n\t\t\t};\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\n// Short timeout actor\nexport const shortTimeoutActor = actor({\n\tstate: { value: 0 },\n\toptions: {\n\t\tactionTimeout: 50, // 50ms timeout\n\t},\n\tactions: {\n\t\tquickAction: async (c) => {\n\t\t\treturn \"quick response\";\n\t\t},\n\t\tslowAction: async (c) => {\n\t\t\t// This action should timeout\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 100));\n\t\t\treturn \"slow response\";\n\t\t},\n\t},\n});\n\n// Long timeout actor\nexport const longTimeoutActor = actor({\n\tstate: { value: 0 },\n\toptions: {\n\t\tactionTimeout: 200, // 200ms timeout\n\t},\n\tactions: {\n\t\tdelayedAction: async (c) => {\n\t\t\t// This action should complete within timeout\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 100));\n\t\t\treturn \"delayed response\";\n\t\t},\n\t},\n});\n\n// Default timeout actor\nexport const defaultTimeoutActor = actor({\n\tstate: { value: 0 },\n\tactions: {\n\t\tnormalAction: async (c) => {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 50));\n\t\t\treturn \"normal response\";\n\t\t},\n\t},\n});\n\n// Sync actor (timeout shouldn't apply)\nexport const syncTimeoutActor = actor({\n\tstate: { value: 0 },\n\toptions: {\n\t\tactionTimeout: 50, // 50ms timeout\n\t},\n\tactions: {\n\t\tsyncAction: (c) => {\n\t\t\treturn \"sync response\";\n\t\t},\n\t},\n});\n","import { actor, UserError } from \"rivetkit\";\n\n// Actor with synchronous actions\nexport const syncActionActor = actor({\n\tstate: { value: 0 },\n\tactions: {\n\t\t// Simple synchronous action that returns a value directly\n\t\tincrement: (c, amount = 1) => {\n\t\t\tc.state.value += amount;\n\t\t\treturn c.state.value;\n\t\t},\n\t\t// Synchronous action that returns an object\n\t\tgetInfo: (c) => {\n\t\t\treturn {\n\t\t\t\tcurrentValue: c.state.value,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t};\n\t\t},\n\t\t// Synchronous action with no return value (void)\n\t\treset: (c) => {\n\t\t\tc.state.value = 0;\n\t\t},\n\t},\n});\n\n// Actor with asynchronous actions\nexport const asyncActionActor = actor({\n\tstate: { value: 0, data: null as any },\n\tactions: {\n\t\t// Async action with a delay\n\t\tdelayedIncrement: async (c, amount = 1) => {\n\t\t\tawait Promise.resolve();\n\t\t\tc.state.value += amount;\n\t\t\treturn c.state.value;\n\t\t},\n\t\t// Async action that simulates an API call\n\t\tfetchData: async (c, id: string) => {\n\t\t\tawait Promise.resolve();\n\n\t\t\t// Simulate response data\n\t\t\tconst data = { id, timestamp: Date.now() };\n\t\t\tc.state.data = data;\n\t\t\treturn data;\n\t\t},\n\t\t// Async action with error handling\n\t\tasyncWithError: async (c, shouldError: boolean) => {\n\t\t\tawait Promise.resolve();\n\n\t\t\tif (shouldError) {\n\t\t\t\tthrow new UserError(\"Intentional error\");\n\t\t\t}\n\n\t\t\treturn \"Success\";\n\t\t},\n\t},\n});\n\n// Actor with promise actions\nexport const promiseActor = actor({\n\tstate: { results: [] as string[] },\n\tactions: {\n\t\t// Action that returns a resolved promise\n\t\tresolvedPromise: (c) => {\n\t\t\treturn Promise.resolve(\"resolved value\");\n\t\t},\n\t\t// Action that returns a promise that resolves after a delay\n\t\tdelayedPromise: (c): Promise<string> => {\n\t\t\treturn new Promise<string>((resolve) => {\n\t\t\t\tc.state.results.push(\"delayed\");\n\t\t\t\tresolve(\"delayed value\");\n\t\t\t});\n\t\t},\n\t\t// Action that returns a rejected promise\n\t\trejectedPromise: (c) => {\n\t\t\treturn Promise.reject(new UserError(\"promised rejection\"));\n\t\t},\n\t\t// Action to check the collected results\n\t\tgetResults: (c) => {\n\t\t\treturn c.state.results;\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\nimport { db } from \"rivetkit/db\";\n\nfunction firstRowValue(row: Record<string, unknown> | undefined): unknown {\n\tif (!row) {\n\t\treturn undefined;\n\t}\n\n\tconst values = Object.values(row);\n\treturn values.length > 0 ? values[0] : undefined;\n}\n\nfunction toSafeInteger(value: unknown): number {\n\tif (typeof value === \"bigint\") {\n\t\treturn Number(value);\n\t}\n\tif (typeof value === \"number\") {\n\t\treturn Number.isFinite(value) ? Math.trunc(value) : 0;\n\t}\n\tif (typeof value === \"string\") {\n\t\tconst parsed = Number.parseInt(value, 10);\n\t\treturn Number.isFinite(parsed) ? parsed : 0;\n\t}\n\treturn 0;\n}\n\nfunction normalizeRowIds(rowIds: number[]): number[] {\n\tconst normalized = rowIds\n\t\t.map((id) => Math.trunc(id))\n\t\t.filter((id) => Number.isFinite(id) && id > 0);\n\treturn Array.from(new Set(normalized));\n}\n\nfunction makePayload(size: number): string {\n\tconst normalizedSize = Math.max(0, Math.trunc(size));\n\treturn \"x\".repeat(normalizedSize);\n}\n\nexport const dbActorRaw = actor({\n\tstate: {\n\t\tdisconnectInsertEnabled: false,\n\t\tdisconnectInsertDelayMs: 0,\n\t},\n\tdb: db({\n\t\tonMigrate: async (db) => {\n\t\t\tawait db.execute(`\n\t\t\t\tCREATE TABLE IF NOT EXISTS test_data (\n\t\t\t\t\tid INTEGER PRIMARY KEY AUTOINCREMENT,\n\t\t\t\t\tvalue TEXT NOT NULL,\n\t\t\t\t\tpayload TEXT NOT NULL DEFAULT '',\n\t\t\t\t\tcreated_at INTEGER NOT NULL\n\t\t\t\t)\n\t\t\t`);\n\t\t},\n\t}),\n\tonDisconnect: async (c) => {\n\t\tif (!c.state.disconnectInsertEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (c.state.disconnectInsertDelayMs > 0) {\n\t\t\tawait new Promise<void>((resolve) =>\n\t\t\t\tsetTimeout(resolve, c.state.disconnectInsertDelayMs),\n\t\t\t);\n\t\t}\n\n\t\tawait c.db.execute(\n\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ('__disconnect__', '', ${Date.now()})`,\n\t\t);\n\t},\n\tactions: {\n\t\tconfigureDisconnectInsert: (c, enabled: boolean, delayMs: number) => {\n\t\t\tc.state.disconnectInsertEnabled = enabled;\n\t\t\tc.state.disconnectInsertDelayMs = Math.max(\n\t\t\t\t0,\n\t\t\t\tMath.floor(delayMs),\n\t\t\t);\n\t\t},\n\t\tgetDisconnectInsertCount: async (c) => {\n\t\t\tconst results = await c.db.execute<{ count: number }>(\n\t\t\t\t`SELECT COUNT(*) as count FROM test_data WHERE value = '__disconnect__'`,\n\t\t\t);\n\t\t\treturn results[0]?.count ?? 0;\n\t\t},\n\t\treset: async (c) => {\n\t\t\tawait c.db.execute(`DELETE FROM test_data`);\n\t\t},\n\t\tinsertValue: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ('${value}', '', ${Date.now()})`,\n\t\t\t);\n\t\t\tconst results = await c.db.execute<{ id: number }>(\n\t\t\t\t`SELECT last_insert_rowid() as id`,\n\t\t\t);\n\t\t\treturn { id: results[0].id };\n\t\t},\n\t\tgetValues: async (c) => {\n\t\t\tconst results = await c.db.execute<{\n\t\t\t\tid: number;\n\t\t\t\tvalue: string;\n\t\t\t\tpayload: string;\n\t\t\t\tcreated_at: number;\n\t\t\t}>(\n\t\t\t\t`SELECT * FROM test_data ORDER BY id`,\n\t\t\t);\n\t\t\treturn results;\n\t\t},\n\t\tgetValue: async (c, id: number) => {\n\t\t\tconst results = await c.db.execute<{ value: string }>(\n\t\t\t\t`SELECT value FROM test_data WHERE id = ${id}`,\n\t\t\t);\n\t\t\treturn results[0]?.value ?? null;\n\t\t},\n\t\tgetCount: async (c) => {\n\t\t\tconst results = await c.db.execute<{ count: number }>(\n\t\t\t\t`SELECT COUNT(*) as count FROM test_data`,\n\t\t\t);\n\t\t\treturn results[0].count;\n\t\t},\n\t\trawSelectCount: async (c) => {\n\t\t\tconst results = await c.db.execute<{ count: number }>(\n\t\t\t\t`SELECT COUNT(*) as count FROM test_data`,\n\t\t\t);\n\t\t\treturn results[0].count;\n\t\t},\n\t\tinsertMany: async (c, count: number) => {\n\t\t\tif (count <= 0) {\n\t\t\t\treturn { count: 0 };\n\t\t\t}\n\t\t\tconst now = Date.now();\n\t\t\tconst values: string[] = [];\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tvalues.push(`('User ${i}', '', ${now})`);\n\t\t\t}\n\t\t\tawait c.db.execute(\n\t\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ${values.join(\", \")}`,\n\t\t\t);\n\t\t\treturn { count };\n\t\t},\n\t\tupdateValue: async (c, id: number, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`UPDATE test_data SET value = '${value}' WHERE id = ${id}`,\n\t\t\t);\n\t\t\treturn { success: true };\n\t\t},\n\t\tdeleteValue: async (c, id: number) => {\n\t\t\tawait c.db.execute(`DELETE FROM test_data WHERE id = ${id}`);\n\t\t},\n\t\ttransactionCommit: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`BEGIN; INSERT INTO test_data (value, payload, created_at) VALUES ('${value}', '', ${Date.now()}); COMMIT;`,\n\t\t\t);\n\t\t},\n\t\ttransactionRollback: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`BEGIN; INSERT INTO test_data (value, payload, created_at) VALUES ('${value}', '', ${Date.now()}); ROLLBACK;`,\n\t\t\t);\n\t\t},\n\t\tinsertPayloadOfSize: async (c, size: number) => {\n\t\t\tconst payload = \"x\".repeat(size);\n\t\t\tawait c.db.execute(\n\t\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ('payload', '${payload}', ${Date.now()})`,\n\t\t\t);\n\t\t\tconst results = await c.db.execute<{ id: number }>(\n\t\t\t\t`SELECT last_insert_rowid() as id`,\n\t\t\t);\n\t\t\treturn { id: results[0].id, size };\n\t\t},\n\t\tgetPayloadSize: async (c, id: number) => {\n\t\t\tconst results = await c.db.execute<{ size: number }>(\n\t\t\t\t`SELECT length(payload) as size FROM test_data WHERE id = ${id}`,\n\t\t\t);\n\t\t\treturn results[0]?.size ?? 0;\n\t\t},\n\t\tinsertPayloadRows: async (c, count: number, payloadSize: number) => {\n\t\t\tconst normalizedCount = Math.max(0, Math.trunc(count));\n\t\t\tif (normalizedCount === 0) {\n\t\t\t\treturn { count: 0 };\n\t\t\t}\n\n\t\t\tconst payload = makePayload(payloadSize);\n\t\t\tconst now = Date.now();\n\t\t\tfor (let i = 0; i < normalizedCount; i++) {\n\t\t\t\tawait c.db.execute(\n\t\t\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ('bulk-${i}', '${payload}', ${now})`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn { count: normalizedCount };\n\t\t},\n\t\troundRobinUpdateValues: async (\n\t\t\tc,\n\t\t\trowIds: number[],\n\t\t\titerations: number,\n\t\t) => {\n\t\t\tconst normalizedRowIds = normalizeRowIds(rowIds);\n\t\t\tconst normalizedIterations = Math.max(0, Math.trunc(iterations));\n\t\t\tif (normalizedRowIds.length === 0 || normalizedIterations === 0) {\n\t\t\t\tconst emptyRows: Array<{ id: number; value: string }> = [];\n\t\t\t\treturn emptyRows;\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < normalizedIterations; i++) {\n\t\t\t\tconst rowId = normalizedRowIds[i % normalizedRowIds.length] ?? 0;\n\t\t\t\tawait c.db.execute(\n\t\t\t\t\t`UPDATE test_data SET value = 'v-${i}' WHERE id = ${rowId}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn await c.db.execute<{ id: number; value: string }>(\n\t\t\t\t`SELECT id, value FROM test_data WHERE id IN (${normalizedRowIds.join(\",\")}) ORDER BY id`,\n\t\t\t);\n\t\t},\n\t\tgetPageCount: async (c) => {\n\t\t\tconst rows = await c.db.execute<Record<string, unknown>>(\n\t\t\t\t\"PRAGMA page_count\",\n\t\t\t);\n\t\t\treturn toSafeInteger(firstRowValue(rows[0]));\n\t\t},\n\t\tvacuum: async (c) => {\n\t\t\tawait c.db.execute(\"VACUUM\");\n\t\t},\n\t\tintegrityCheck: async (c) => {\n\t\t\tconst rows = await c.db.execute<Record<string, unknown>>(\n\t\t\t\t\"PRAGMA integrity_check\",\n\t\t\t);\n\t\t\tconst value = firstRowValue(rows[0]);\n\t\t\treturn String(value ?? \"\");\n\t\t},\n\t\trunMixedWorkload: async (c, seedCount: number, churnCount: number) => {\n\t\t\tconst normalizedSeedCount = Math.max(1, Math.trunc(seedCount));\n\t\t\tconst normalizedChurnCount = Math.max(0, Math.trunc(churnCount));\n\t\t\tconst now = Date.now();\n\n\t\t\tfor (let i = 0; i < normalizedSeedCount; i++) {\n\t\t\t\tconst payload = makePayload(1024 + (i % 5) * 128);\n\t\t\t\tawait c.db.execute(\n\t\t\t\t\t`INSERT OR REPLACE INTO test_data (id, value, payload, created_at) VALUES (${i + 1}, 'seed-${i}', '${payload}', ${now})`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < normalizedChurnCount; i++) {\n\t\t\t\tconst id = (i % normalizedSeedCount) + 1;\n\t\t\t\tif (i % 9 === 0) {\n\t\t\t\t\tawait c.db.execute(`DELETE FROM test_data WHERE id = ${id}`);\n\t\t\t\t} else {\n\t\t\t\t\tconst payload = makePayload(768 + (i % 7) * 96);\n\t\t\t\t\tawait c.db.execute(\n\t\t\t\t\t\t`INSERT OR REPLACE INTO test_data (id, value, payload, created_at) VALUES (${id}, 'upd-${i}', '${payload}', ${now + i})`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\trepeatUpdate: async (c, id: number, count: number) => {\n\t\t\tlet value = \"\";\n\t\t\tif (count <= 0) {\n\t\t\t\treturn { value };\n\t\t\t}\n\t\t\tconst statements: string[] = [\"BEGIN\"];\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tvalue = `Updated ${i}`;\n\t\t\t\tstatements.push(\n\t\t\t\t\t`UPDATE test_data SET value = '${value}' WHERE id = ${id}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tstatements.push(\"COMMIT\");\n\t\t\tawait c.db.execute(statements.join(\"; \"));\n\t\t\treturn { value };\n\t\t},\n\t\tmultiStatementInsert: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`BEGIN; INSERT INTO test_data (value, payload, created_at) VALUES ('${value}', '', ${Date.now()}); UPDATE test_data SET value = '${value}-updated' WHERE id = last_insert_rowid(); COMMIT;`,\n\t\t\t);\n\t\t\tconst results = await c.db.execute<{ value: string }>(\n\t\t\t\t`SELECT value FROM test_data ORDER BY id DESC LIMIT 1`,\n\t\t\t);\n\t\t\treturn results[0]?.value ?? null;\n\t\t},\n\t\ttriggerSleep: (c) => {\n\t\t\tc.sleep();\n\t\t},\n\t},\n\toptions: {\n\t\tactionTimeout: 120_000,\n\t\tsleepTimeout: 100,\n\t},\n});\n","export const migrations = {\n\tjournal: {\n\t\tentries: [\n\t\t\t{\n\t\t\t\tidx: 0,\n\t\t\t\twhen: 1700000000000,\n\t\t\t\ttag: \"0000_init\",\n\t\t\t\tbreakpoints: false,\n\t\t\t},\n\t\t],\n\t},\n\tmigrations: {\n\t\tm0000: `\n\t\t\tCREATE TABLE IF NOT EXISTS test_data (\n\t\t\t\tid INTEGER PRIMARY KEY AUTOINCREMENT,\n\t\t\t\tvalue TEXT NOT NULL,\n\t\t\t\tpayload TEXT NOT NULL DEFAULT '',\n\t\t\t\tcreated_at INTEGER NOT NULL\n\t\t\t);\n\t\t`,\n\t},\n};\n","import { integer, sqliteTable, text } from \"rivetkit/db/drizzle\";\n\nexport const testData = sqliteTable(\"test_data\", {\n\tid: integer(\"id\").primaryKey({ autoIncrement: true }),\n\tvalue: text(\"value\").notNull(),\n\tpayload: text(\"payload\").notNull().default(\"\"),\n\tcreatedAt: integer(\"created_at\").notNull(),\n});\n\nexport const schema = {\n\ttestData,\n};\n","import { actor } from \"rivetkit\";\nimport { db } from \"rivetkit/db/drizzle\";\nimport { migrations } from \"./db/migrations\";\nimport { schema } from \"./db/schema\";\n\nfunction firstRowValue(row: Record<string, unknown> | undefined): unknown {\n\tif (!row) {\n\t\treturn undefined;\n\t}\n\n\tconst values = Object.values(row);\n\treturn values.length > 0 ? values[0] : undefined;\n}\n\nfunction toSafeInteger(value: unknown): number {\n\tif (typeof value === \"bigint\") {\n\t\treturn Number(value);\n\t}\n\tif (typeof value === \"number\") {\n\t\treturn Number.isFinite(value) ? Math.trunc(value) : 0;\n\t}\n\tif (typeof value === \"string\") {\n\t\tconst parsed = Number.parseInt(value, 10);\n\t\treturn Number.isFinite(parsed) ? parsed : 0;\n\t}\n\treturn 0;\n}\n\nfunction normalizeRowIds(rowIds: number[]): number[] {\n\tconst normalized = rowIds\n\t\t.map((id) => Math.trunc(id))\n\t\t.filter((id) => Number.isFinite(id) && id > 0);\n\treturn Array.from(new Set(normalized));\n}\n\nfunction makePayload(size: number): string {\n\tconst normalizedSize = Math.max(0, Math.trunc(size));\n\treturn \"x\".repeat(normalizedSize);\n}\n\nexport const dbActorDrizzle = actor({\n\tstate: {\n\t\tdisconnectInsertEnabled: false,\n\t\tdisconnectInsertDelayMs: 0,\n\t},\n\tdb: db({\n\t\tschema,\n\t\tmigrations,\n\t}),\n\tonDisconnect: async (c) => {\n\t\tif (!c.state.disconnectInsertEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (c.state.disconnectInsertDelayMs > 0) {\n\t\t\tawait new Promise<void>((resolve) =>\n\t\t\t\tsetTimeout(resolve, c.state.disconnectInsertDelayMs),\n\t\t\t);\n\t\t}\n\n\t\tawait c.db.execute(\n\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ('__disconnect__', '', ${Date.now()})`,\n\t\t);\n\t},\n\tactions: {\n\t\tconfigureDisconnectInsert: (c, enabled: boolean, delayMs: number) => {\n\t\t\tc.state.disconnectInsertEnabled = enabled;\n\t\t\tc.state.disconnectInsertDelayMs = Math.max(\n\t\t\t\t0,\n\t\t\t\tMath.floor(delayMs),\n\t\t\t);\n\t\t},\n\t\tgetDisconnectInsertCount: async (c) => {\n\t\t\tconst results = await c.db.execute<{ count: number }>(\n\t\t\t\t`SELECT COUNT(*) as count FROM test_data WHERE value = '__disconnect__'`,\n\t\t\t);\n\t\t\treturn results[0]?.count ?? 0;\n\t\t},\n\t\treset: async (c) => {\n\t\t\tawait c.db.execute(`DELETE FROM test_data`);\n\t\t},\n\t\tinsertValue: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ('${value}', '', ${Date.now()})`,\n\t\t\t);\n\t\t\tconst results = await c.db.execute<{ id: number }>(\n\t\t\t\t`SELECT last_insert_rowid() as id`,\n\t\t\t);\n\t\t\treturn { id: results[0].id };\n\t\t},\n\t\tgetValues: async (c) => {\n\t\t\tconst results = await c.db.execute<{\n\t\t\t\tid: number;\n\t\t\t\tvalue: string;\n\t\t\t\tpayload: string;\n\t\t\t\tcreated_at: number;\n\t\t\t}>(\n\t\t\t\t`SELECT * FROM test_data ORDER BY id`,\n\t\t\t);\n\t\t\treturn results;\n\t\t},\n\t\tgetValue: async (c, id: number) => {\n\t\t\tconst results = await c.db.execute<{ value: string }>(\n\t\t\t\t`SELECT value FROM test_data WHERE id = ${id}`,\n\t\t\t);\n\t\t\treturn results[0]?.value ?? null;\n\t\t},\n\t\tgetCount: async (c) => {\n\t\t\tconst results = await c.db.execute<{ count: number }>(\n\t\t\t\t`SELECT COUNT(*) as count FROM test_data`,\n\t\t\t);\n\t\t\treturn results[0].count;\n\t\t},\n\t\trawSelectCount: async (c) => {\n\t\t\tconst results = await c.db.execute<{ count: number }>(\n\t\t\t\t`SELECT COUNT(*) as count FROM test_data`,\n\t\t\t);\n\t\t\treturn results[0]?.count ?? 0;\n\t\t},\n\t\tinsertMany: async (c, count: number) => {\n\t\t\tif (count <= 0) {\n\t\t\t\treturn { count: 0 };\n\t\t\t}\n\t\t\tconst now = Date.now();\n\t\t\tconst values: string[] = [];\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tvalues.push(`('User ${i}', '', ${now})`);\n\t\t\t}\n\t\t\tawait c.db.execute(\n\t\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ${values.join(\", \")}`,\n\t\t\t);\n\t\t\treturn { count };\n\t\t},\n\t\tupdateValue: async (c, id: number, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`UPDATE test_data SET value = '${value}' WHERE id = ${id}`,\n\t\t\t);\n\t\t\treturn { success: true };\n\t\t},\n\t\tdeleteValue: async (c, id: number) => {\n\t\t\tawait c.db.execute(`DELETE FROM test_data WHERE id = ${id}`);\n\t\t},\n\t\ttransactionCommit: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`BEGIN; INSERT INTO test_data (value, payload, created_at) VALUES ('${value}', '', ${Date.now()}); COMMIT;`,\n\t\t\t);\n\t\t},\n\t\ttransactionRollback: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`BEGIN; INSERT INTO test_data (value, payload, created_at) VALUES ('${value}', '', ${Date.now()}); ROLLBACK;`,\n\t\t\t);\n\t\t},\n\t\tinsertPayloadOfSize: async (c, size: number) => {\n\t\t\tconst payload = \"x\".repeat(size);\n\t\t\tawait c.db.execute(\n\t\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ('payload', '${payload}', ${Date.now()})`,\n\t\t\t);\n\t\t\tconst results = await c.db.execute<{ id: number }>(\n\t\t\t\t`SELECT last_insert_rowid() as id`,\n\t\t\t);\n\t\t\treturn { id: results[0].id, size };\n\t\t},\n\t\tgetPayloadSize: async (c, id: number) => {\n\t\t\tconst results = await c.db.execute<{ size: number }>(\n\t\t\t\t`SELECT length(payload) as size FROM test_data WHERE id = ${id}`,\n\t\t\t);\n\t\t\treturn results[0]?.size ?? 0;\n\t\t},\n\t\tinsertPayloadRows: async (c, count: number, payloadSize: number) => {\n\t\t\tconst normalizedCount = Math.max(0, Math.trunc(count));\n\t\t\tif (normalizedCount === 0) {\n\t\t\t\treturn { count: 0 };\n\t\t\t}\n\n\t\t\tconst payload = makePayload(payloadSize);\n\t\t\tconst now = Date.now();\n\t\t\tfor (let i = 0; i < normalizedCount; i++) {\n\t\t\t\tawait c.db.execute(\n\t\t\t\t\t`INSERT INTO test_data (value, payload, created_at) VALUES ('bulk-${i}', '${payload}', ${now})`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn { count: normalizedCount };\n\t\t},\n\t\troundRobinUpdateValues: async (\n\t\t\tc,\n\t\t\trowIds: number[],\n\t\t\titerations: number,\n\t\t) => {\n\t\t\tconst normalizedRowIds = normalizeRowIds(rowIds);\n\t\t\tconst normalizedIterations = Math.max(0, Math.trunc(iterations));\n\t\t\tif (normalizedRowIds.length === 0 || normalizedIterations === 0) {\n\t\t\t\tconst emptyRows: Array<{ id: number; value: string }> = [];\n\t\t\t\treturn emptyRows;\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < normalizedIterations; i++) {\n\t\t\t\tconst rowId = normalizedRowIds[i % normalizedRowIds.length] ?? 0;\n\t\t\t\tawait c.db.execute(\n\t\t\t\t\t`UPDATE test_data SET value = 'v-${i}' WHERE id = ${rowId}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn await c.db.execute<{ id: number; value: string }>(\n\t\t\t\t`SELECT id, value FROM test_data WHERE id IN (${normalizedRowIds.join(\",\")}) ORDER BY id`,\n\t\t\t);\n\t\t},\n\t\tgetPageCount: async (c) => {\n\t\t\tconst rows = await c.db.execute<Record<string, unknown>>(\n\t\t\t\t\"PRAGMA page_count\",\n\t\t\t);\n\t\t\treturn toSafeInteger(firstRowValue(rows[0]));\n\t\t},\n\t\tvacuum: async (c) => {\n\t\t\tawait c.db.execute(\"VACUUM\");\n\t\t},\n\t\tintegrityCheck: async (c) => {\n\t\t\tconst rows = await c.db.execute<Record<string, unknown>>(\n\t\t\t\t\"PRAGMA integrity_check\",\n\t\t\t);\n\t\t\tconst value = firstRowValue(rows[0]);\n\t\t\treturn String(value ?? \"\");\n\t\t},\n\t\trunMixedWorkload: async (c, seedCount: number, churnCount: number) => {\n\t\t\tconst normalizedSeedCount = Math.max(1, Math.trunc(seedCount));\n\t\t\tconst normalizedChurnCount = Math.max(0, Math.trunc(churnCount));\n\t\t\tconst now = Date.now();\n\n\t\t\tfor (let i = 0; i < normalizedSeedCount; i++) {\n\t\t\t\tconst payload = makePayload(1024 + (i % 5) * 128);\n\t\t\t\tawait c.db.execute(\n\t\t\t\t\t`INSERT OR REPLACE INTO test_data (id, value, payload, created_at) VALUES (${i + 1}, 'seed-${i}', '${payload}', ${now})`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < normalizedChurnCount; i++) {\n\t\t\t\tconst id = (i % normalizedSeedCount) + 1;\n\t\t\t\tif (i % 9 === 0) {\n\t\t\t\t\tawait c.db.execute(`DELETE FROM test_data WHERE id = ${id}`);\n\t\t\t\t} else {\n\t\t\t\t\tconst payload = makePayload(768 + (i % 7) * 96);\n\t\t\t\t\tawait c.db.execute(\n\t\t\t\t\t\t`INSERT OR REPLACE INTO test_data (id, value, payload, created_at) VALUES (${id}, 'upd-${i}', '${payload}', ${now + i})`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\trepeatUpdate: async (c, id: number, count: number) => {\n\t\t\tlet value = \"\";\n\t\t\tif (count <= 0) {\n\t\t\t\treturn { value };\n\t\t\t}\n\t\t\tconst statements: string[] = [\"BEGIN\"];\n\t\t\tfor (let i = 0; i < count; i++) {\n\t\t\t\tvalue = `Updated ${i}`;\n\t\t\t\tstatements.push(\n\t\t\t\t\t`UPDATE test_data SET value = '${value}' WHERE id = ${id}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tstatements.push(\"COMMIT\");\n\t\t\tawait c.db.execute(statements.join(\"; \"));\n\t\t\treturn { value };\n\t\t},\n\t\tmultiStatementInsert: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t`BEGIN; INSERT INTO test_data (value, payload, created_at) VALUES ('${value}', '', ${Date.now()}); UPDATE test_data SET value = '${value}-updated' WHERE id = last_insert_rowid(); COMMIT;`,\n\t\t\t);\n\t\t\tconst results = await c.db.execute<{ value: string }>(\n\t\t\t\t`SELECT value FROM test_data ORDER BY id DESC LIMIT 1`,\n\t\t\t);\n\t\t\treturn results[0]?.value ?? null;\n\t\t},\n\t\ttriggerSleep: (c) => {\n\t\t\tc.sleep();\n\t\t},\n\t},\n\toptions: {\n\t\tactionTimeout: 120_000,\n\t\tsleepTimeout: 100,\n\t},\n});\n","import { actor } from \"rivetkit\";\nimport { db } from \"rivetkit/db\";\n\ntype LifecycleCounts = {\n\tcreate: number;\n\tmigrate: number;\n\tcleanup: number;\n};\n\nconst clientActorIds = new WeakMap<object, string>();\n\nconst createCounts = new Map<string, number>();\nconst migrateCounts = new Map<string, number>();\nconst cleanupCounts = new Map<string, number>();\n\nfunction increment(map: Map<string, number>, actorId: string) {\n\tmap.set(actorId, (map.get(actorId) ?? 0) + 1);\n}\n\nfunction getCounts(actorId: string): LifecycleCounts {\n\treturn {\n\t\tcreate: createCounts.get(actorId) ?? 0,\n\t\tmigrate: migrateCounts.get(actorId) ?? 0,\n\t\tcleanup: cleanupCounts.get(actorId) ?? 0,\n\t};\n}\n\nfunction getTotalCleanupCount(): number {\n\tlet total = 0;\n\tfor (const count of cleanupCounts.values()) {\n\t\ttotal += count;\n\t}\n\treturn total;\n}\n\nconst baseProvider = db({\n\tonMigrate: async (dbHandle) => {\n\t\tawait dbHandle.execute(`\n\t\t\tCREATE TABLE IF NOT EXISTS lifecycle_data (\n\t\t\t\tid INTEGER PRIMARY KEY AUTOINCREMENT,\n\t\t\t\tvalue TEXT NOT NULL,\n\t\t\t\tcreated_at INTEGER NOT NULL\n\t\t\t)\n\t\t`);\n\t},\n});\n\nconst lifecycleProvider = {\n\tcreateClient: async (ctx: Parameters<typeof baseProvider.createClient>[0]) => {\n\t\tconst client = await baseProvider.createClient(ctx);\n\t\tclientActorIds.set(client as object, ctx.actorId);\n\t\tincrement(createCounts, ctx.actorId);\n\t\treturn client;\n\t},\n\tonMigrate: async (client: Parameters<typeof baseProvider.onMigrate>[0]) => {\n\t\tconst actorId = clientActorIds.get(client as object);\n\t\tif (actorId) {\n\t\t\tincrement(migrateCounts, actorId);\n\t\t}\n\t\tawait baseProvider.onMigrate(client);\n\t},\n\tonDestroy: async (client: Parameters<NonNullable<typeof baseProvider.onDestroy>>[0]) => {\n\t\tconst actorId = clientActorIds.get(client as object);\n\t\tif (actorId) {\n\t\t\tincrement(cleanupCounts, actorId);\n\t\t}\n\t\t\tawait baseProvider.onDestroy?.(client);\n\t\t},\n\t};\n\nconst failingLifecycleProvider = {\n\tcreateClient: async (ctx: Parameters<typeof baseProvider.createClient>[0]) => {\n\t\tconst client = await baseProvider.createClient(ctx);\n\t\tclientActorIds.set(client as object, ctx.actorId);\n\t\tincrement(createCounts, ctx.actorId);\n\t\treturn client;\n\t},\n\tonMigrate: async (client: Parameters<typeof baseProvider.onMigrate>[0]) => {\n\t\tconst actorId = clientActorIds.get(client as object);\n\t\tif (actorId) {\n\t\t\tincrement(migrateCounts, actorId);\n\t\t}\n\t\tthrow new Error(\"forced migrate failure\");\n\t},\n\tonDestroy: async (client: Parameters<NonNullable<typeof baseProvider.onDestroy>>[0]) => {\n\t\tconst actorId = clientActorIds.get(client as object);\n\t\tif (actorId) {\n\t\t\tincrement(cleanupCounts, actorId);\n\t\t}\n\t\tawait baseProvider.onDestroy?.(client);\n\t},\n};\n\nexport const dbLifecycle = actor({\n\tdb: lifecycleProvider,\n\tactions: {\n\t\tgetActorId: (c) => c.actorId,\n\t\tping: () => \"pong\",\n\t\tinsertValue: async (c, value: string) => {\n\t\t\tawait c.db.execute(\n\t\t\t\t\"INSERT INTO lifecycle_data (value, created_at) VALUES (?, ?)\",\n\t\t\t\tvalue,\n\t\t\t\tDate.now(),\n\t\t\t);\n\t\t},\n\t\tgetCount: async (c) => {\n\t\t\tconst results = await c.db.execute<{ count: number }>(\n\t\t\t\t`SELECT COUNT(*) as count FROM lifecycle_data`,\n\t\t\t);\n\t\t\treturn results[0]?.count ?? 0;\n\t\t},\n\t\ttriggerSleep: (c) => {\n\t\t\tc.sleep();\n\t\t},\n\t\ttriggerDestroy: (c) => {\n\t\t\tc.destroy();\n\t\t},\n\t},\n\toptions: {\n\t\tsleepTimeout: 100,\n\t},\n});\n\nexport const dbLifecycleFailing = actor({\n\tdb: failingLifecycleProvider,\n\tactions: {\n\t\tping: () => \"pong\",\n\t},\n});\n\nexport const dbLifecycleObserver = actor({\n\tactions: {\n\t\tgetCounts: (_c, actorId: string) => {\n\t\t\treturn getCounts(actorId);\n\t\t},\n\t\tgetTotalCleanupCount: () => {\n\t\t\treturn getTotalCleanupCount();\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\nexport const onStateChangeActor = actor({\n\tstate: {\n\t\tvalue: 0,\n\t\tchangeCount: 0,\n\t},\n\tactions: {\n\t\t// Action that modifies state - should trigger onStateChange\n\t\tsetValue: (c, newValue: number) => {\n\t\t\tc.state.value = newValue;\n\t\t\treturn c.state.value;\n\t\t},\n\t\t// Action that modifies state multiple times - should trigger onStateChange for each change\n\t\tincrementMultiple: (c, times: number) => {\n\t\t\tfor (let i = 0; i < times; i++) {\n\t\t\t\tc.state.value++;\n\t\t\t}\n\t\t\treturn c.state.value;\n\t\t},\n\t\t// Action that doesn't modify state - should NOT trigger onStateChange\n\t\tgetValue: (c) => {\n\t\t\treturn c.state.value;\n\t\t},\n\t\t// Action that reads and returns without modifying - should NOT trigger onStateChange\n\t\tgetDoubled: (c) => {\n\t\t\tconst doubled = c.state.value * 2;\n\t\t\treturn doubled;\n\t\t},\n\t\t// Get the count of how many times onStateChange was called\n\t\tgetChangeCount: (c) => {\n\t\t\treturn c.state.changeCount;\n\t\t},\n\t\t// Reset change counter for testing\n\t\tresetChangeCount: (c) => {\n\t\t\tc.state.changeCount = 0;\n\t\t},\n\t},\n\t// Track onStateChange calls\n\tonStateChange: (c) => {\n\t\tc.state.changeCount++;\n\t},\n});\n","import { actor } from \"rivetkit\";\n\nexport const counterWithParams = actor({\n\tstate: { count: 0, initializers: [] as string[] },\n\tcreateConnState: (c, params: { name?: string }) => {\n\t\treturn {\n\t\t\tname: params.name || \"anonymous\",\n\t\t};\n\t},\n\tonConnect: (c, conn) => {\n\t\t// Record connection name\n\t\tc.state.initializers.push(conn.state.name);\n\t},\n\tactions: {\n\t\tincrement: (c, x: number) => {\n\t\t\tc.state.count += x;\n\t\t\tc.broadcast(\"newCount\", {\n\t\t\t\tcount: c.state.count,\n\t\t\t\tby: c.conn.state.name,\n\t\t\t});\n\t\t\treturn c.state.count;\n\t\t},\n\t\tgetInitializers: (c) => {\n\t\t\treturn c.state.initializers;\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\nexport type ConnState = {\n\tusername: string;\n\trole: string;\n\tcounter: number;\n\tcreatedAt: number;\n\tnoCount: boolean;\n};\n\nexport const connStateActor = actor({\n\tstate: {\n\t\tsharedCounter: 0,\n\t\tdisconnectionCount: 0,\n\t},\n\t// Define connection state\n\tcreateConnState: (\n\t\tc,\n\t\tparams: { username?: string; role?: string; noCount?: boolean },\n\t): ConnState => {\n\t\treturn {\n\t\t\tusername: params?.username || \"anonymous\",\n\t\t\trole: params?.role || \"user\",\n\t\t\tcounter: 0,\n\t\t\tcreatedAt: Date.now(),\n\t\t\tnoCount: params?.noCount ?? false,\n\t\t};\n\t},\n\t// Lifecycle hook when a connection is established\n\tonConnect: (c, conn) => {\n\t\t// Broadcast event about the new connection\n\t\tc.broadcast(\"userConnected\", {\n\t\t\tid: conn.id,\n\t\t\tusername: \"anonymous\",\n\t\t\trole: \"user\",\n\t\t});\n\t},\n\t// Lifecycle hook when a connection is closed\n\tonDisconnect: (c, conn) => {\n\t\tif (!conn.state?.noCount) {\n\t\t\tc.state.disconnectionCount += 1;\n\t\t\tc.broadcast(\"userDisconnected\", {\n\t\t\t\tid: conn.id,\n\t\t\t});\n\t\t}\n\t},\n\tactions: {\n\t\t// Action to increment the connection's counter\n\t\tincrementConnCounter: (c, amount = 1) => {\n\t\t\tc.conn.state.counter += amount;\n\t\t},\n\n\t\t// Action to increment the shared counter\n\t\tincrementSharedCounter: (c, amount = 1) => {\n\t\t\tc.state.sharedCounter += amount;\n\t\t\treturn c.state.sharedCounter;\n\t\t},\n\n\t\t// Get the connection state\n\t\tgetConnectionState: (c) => {\n\t\t\treturn { id: c.conn.id, ...c.conn.state };\n\t\t},\n\n\t\t// Check all active connections\n\t\tgetConnectionIds: (c) => {\n\t\t\treturn c.conns\n\t\t\t\t.entries()\n\t\t\t\t.filter((c) => !c[1].state?.noCount)\n\t\t\t\t.map((x) => x[0])\n\t\t\t\t.toArray();\n\t\t},\n\n\t\t// Get disconnection count\n\t\tgetDisconnectionCount: (c) => {\n\t\t\treturn c.state.disconnectionCount;\n\t\t},\n\n\t\t// Get all active connection states\n\t\tgetAllConnectionStates: (c) => {\n\t\t\treturn c.conns\n\t\t\t\t.entries()\n\t\t\t\t.map(([id, conn]) => ({ id, ...conn.state }))\n\t\t\t\t.toArray();\n\t\t},\n\n\t\t// Send message to a specific connection with matching ID\n\t\tsendToConnection: (c, targetId: string, message: string) => {\n\t\t\tif (c.conns.has(targetId)) {\n\t\t\t\tc.conns\n\t\t\t\t\t.get(targetId)!\n\t\t\t\t\t.send(\"directMessage\", { from: c.conn.id, message });\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Update connection state (simulated for tests)\n\t\tupdateConnection: (\n\t\t\tc,\n\t\t\tupdates: Partial<{ username: string; role: string }>,\n\t\t) => {\n\t\t\tif (updates.username) c.conn.state.username = updates.username;\n\t\t\tif (updates.role) c.conn.state.role = updates.role;\n\t\t\treturn c.conn.state;\n\t\t},\n\t\tdisconnectSelf: (c, reason?: string) => {\n\t\t\tc.conn.disconnect(reason ?? \"test.disconnect\");\n\t\t\treturn true;\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\nexport const counter = actor({\n\tstate: { count: 0 },\n\tactions: {\n\t\tincrement: (c, x: number) => {\n\t\t\tc.state.count += x;\n\t\t\tc.broadcast(\"newCount\", c.state.count);\n\t\t\treturn c.state.count;\n\t\t},\n\t\tsetCount: (c, x: number) => {\n\t\t\tc.state.count = x;\n\t\t\tc.broadcast(\"newCount\", x);\n\t\t\treturn c.state.count;\n\t\t},\n\t\tgetCount: (c) => {\n\t\t\treturn c.state.count;\n\t\t},\n\t\tgetKey: (c) => {\n\t\t\treturn c.key;\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\nexport const counterConn = actor({\n\tstate: {\n\t\tconnectionCount: 0,\n\t},\n\tconnState: { count: 0 },\n\tonConnect: (c, conn) => {\n\t\tc.state.connectionCount += 1;\n\t},\n\tonDisconnect: (c, conn) => {\n\t\t// Note: We can't determine if disconnect was graceful from here\n\t\t// For testing purposes, we'll decrement on all disconnects\n\t\t// In real scenarios, you'd use connection tracking with timeouts\n\t\tc.state.connectionCount -= 1;\n\t},\n\tactions: {\n\t\tincrement: (c, x: number) => {\n\t\t\tc.conn.state.count += x;\n\t\t\tc.broadcast(\"newCount\", c.conn.state.count);\n\t\t},\n\t\tsetCount: (c, x: number) => {\n\t\t\tc.conn.state.count = x;\n\t\t\tc.broadcast(\"newCount\", x);\n\t\t},\n\t\tgetCount: (c) => {\n\t\t\treturn c.conn.state.count;\n\t\t},\n\t\tgetConnectionCount: (c) => {\n\t\t\treturn c.state.connectionCount;\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\nimport type { registry } from \"./registry\";\n\nexport const destroyObserver = actor({\n\tstate: { destroyedActors: [] as string[] },\n\tactions: {\n\t\tnotifyDestroyed: (c, actorKey: string) => {\n\t\t\tc.state.destroyedActors.push(actorKey);\n\t\t},\n\t\twasDestroyed: (c, actorKey: string) => {\n\t\t\treturn c.state.destroyedActors.includes(actorKey);\n\t\t},\n\t\treset: (c) => {\n\t\t\tc.state.destroyedActors = [];\n\t\t},\n\t},\n});\n\nexport const destroyActor = actor({\n\tstate: { value: 0, key: \"\" },\n\tonWake: (c) => {\n\t\t// Store the actor key so we can reference it in onDestroy\n\t\tc.state.key = c.key.join(\"/\");\n\t},\n\tonDestroy: async (c) => {\n\t\tconst client = c.client<typeof registry>();\n\t\tconst observer = client.destroyObserver.getOrCreate([\"observer\"]);\n\t\tawait observer.notifyDestroyed(c.state.key);\n\t},\n\tactions: {\n\t\tsetValue: async (c, newValue: number) => {\n\t\t\tc.state.value = newValue;\n\t\t\tawait c.saveState({ immediate: true });\n\t\t\treturn c.state.value;\n\t\t},\n\t\tgetValue: (c) => {\n\t\t\treturn c.state.value;\n\t\t},\n\t\tdestroy: (c) => {\n\t\t\tc.destroy();\n\t\t},\n\t},\n});\n","import { actor, UserError } from \"rivetkit\";\n\nexport const errorHandlingActor = actor({\n\tstate: {\n\t\terrorLog: [] as string[],\n\t},\n\tactions: {\n\t\t// Action that throws a UserError with just a message\n\t\tthrowSimpleError: () => {\n\t\t\tthrow new UserError(\"Simple error message\");\n\t\t},\n\n\t\t// Action that throws a UserError with code and metadata\n\t\tthrowDetailedError: () => {\n\t\t\tthrow new UserError(\"Detailed error message\", {\n\t\t\t\tcode: \"detailed_error\",\n\t\t\t\tmetadata: {\n\t\t\t\t\treason: \"test\",\n\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\n\t\t// Action that throws an internal error\n\t\tthrowInternalError: () => {\n\t\t\tthrow new Error(\"This is an internal error\");\n\t\t},\n\n\t\t// Action that returns successfully\n\t\tsuccessfulAction: () => {\n\t\t\treturn \"success\";\n\t\t},\n\n\t\t// Action that times out (simulated with a long delay)\n\t\ttimeoutAction: async (c) => {\n\t\t\t// This action should time out if the timeout is configured\n\t\t\treturn new Promise((resolve) => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tresolve(\"This should not be reached if timeout works\");\n\t\t\t\t}, 10000); // 10 seconds\n\t\t\t});\n\t\t},\n\n\t\t// Action with configurable delay to test timeout edge cases\n\t\tdelayedAction: async (c, delayMs: number) => {\n\t\t\treturn new Promise((resolve) => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tresolve(`Completed after ${delayMs}ms`);\n\t\t\t\t}, delayMs);\n\t\t\t});\n\t\t},\n\n\t\t// Log an error for inspection\n\t\tlogError: (c, error: string) => {\n\t\t\tc.state.errorLog.push(error);\n\t\t\treturn c.state.errorLog;\n\t\t},\n\n\t\t// Get the error log\n\t\tgetErrorLog: (c) => {\n\t\t\treturn c.state.errorLog;\n\t\t},\n\n\t\t// Clear the error log\n\t\tclearErrorLog: (c) => {\n\t\t\tc.state.errorLog = [];\n\t\t\treturn true;\n\t\t},\n\t},\n\toptions: {\n\t\tactionTimeout: 500, // 500ms timeout for actions\n\t},\n});\n\n// Actor with custom timeout\nexport const customTimeoutActor = actor({\n\tstate: {},\n\tactions: {\n\t\tquickAction: async () => {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 50));\n\t\t\treturn \"Quick action completed\";\n\t\t},\n\t\tslowAction: async () => {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 300));\n\t\t\treturn \"Slow action completed\";\n\t\t},\n\t},\n\toptions: {\n\t\tactionTimeout: 200, // 200ms timeout\n\t},\n});\n","import { actor } from \"rivetkit\";\n\nexport const fileSystemHibernationCleanupActor = actor({\n\tstate: {\n\t\twakeCount: 0,\n\t\tsleepCount: 0,\n\t\tdisconnectWakeCounts: [] as number[],\n\t},\n\tcreateConnState: () => ({}),\n\tonWake: (c) => {\n\t\tc.state.wakeCount += 1;\n\t},\n\tonSleep: (c) => {\n\t\tc.state.sleepCount += 1;\n\t},\n\tonDisconnect: (c, conn) => {\n\t\t// Only track WebSocket connection cleanup. HTTP actions are ephemeral.\n\t\tif (conn.isHibernatable) {\n\t\t\tc.state.disconnectWakeCounts.push(c.state.wakeCount);\n\t\t}\n\t},\n\tactions: {\n\t\tping: () => \"pong\",\n\t\ttriggerSleep: (c) => {\n\t\t\tc.sleep();\n\t\t},\n\t\tgetCounts: (c) => ({\n\t\t\twakeCount: c.state.wakeCount,\n\t\t\tsleepCount: c.state.sleepCount,\n\t\t}),\n\t\tgetDisconnectWakeCounts: (c) => c.state.disconnectWakeCounts,\n\t},\n\toptions: {\n\t\tsleepTimeout: 500,\n\t},\n});\n","import { actor } from \"rivetkit\";\nimport type { registry } from \"./registry\";\n\nexport const inlineClientActor = actor({\n\tstate: { messages: [] as string[] },\n\tactions: {\n\t\t// Action that uses client to call another actor (stateless)\n\t\tcallCounterIncrement: async (c, amount: number) => {\n\t\t\tconst client = c.client<typeof registry>();\n\t\t\tconst result = await client.counter\n\t\t\t\t.getOrCreate([\"inline-test\"])\n\t\t\t\t.increment(amount);\n\t\t\tc.state.messages.push(\n\t\t\t\t`Called counter.increment(${amount}), result: ${result}`,\n\t\t\t);\n\t\t\treturn result;\n\t\t},\n\n\t\t// Action that uses client to get counter state (stateless)\n\t\tgetCounterState: async (c) => {\n\t\t\tconst client = c.client<typeof registry>();\n\t\t\tconst count = await client.counter\n\t\t\t\t.getOrCreate([\"inline-test\"])\n\t\t\t\t.getCount();\n\t\t\tc.state.messages.push(`Got counter state: ${count}`);\n\t\t\treturn count;\n\t\t},\n\n\t\t// Action that uses client with .connect() for stateful communication\n\t\tconnectToCounterAndIncrement: async (c, amount: number) => {\n\t\t\tconst client = c.client<typeof registry>();\n\t\t\tconst handle = client.counter.getOrCreate([\"inline-test-stateful\"]);\n\t\t\tconst connection = handle.connect();\n\n\t\t\t// Set up event listener\n\t\t\tconst events: number[] = [];\n\t\t\tconnection.on(\"newCount\", (count: number) => {\n\t\t\t\tevents.push(count);\n\t\t\t});\n\n\t\t\t// Perform increments\n\t\t\tconst result1 = await connection.increment(amount);\n\t\t\tconst result2 = await connection.increment(amount * 2);\n\n\t\t\tawait connection.dispose();\n\n\t\t\tc.state.messages.push(\n\t\t\t\t`Connected to counter, incremented by ${amount} and ${amount * 2}, results: ${result1}, ${result2}, events: ${JSON.stringify(events)}`,\n\t\t\t);\n\n\t\t\treturn { result1, result2, events };\n\t\t},\n\n\t\t// Get all messages from this actor's state\n\t\tgetMessages: (c) => {\n\t\t\treturn c.state.messages;\n\t\t},\n\n\t\t// Clear messages\n\t\tclearMessages: (c) => {\n\t\t\tc.state.messages = [];\n\t\t},\n\t},\n});\n","import { actor, type ActorContext } from \"rivetkit\";\n\nexport const kvActor = actor({\n\tactions: {\n\t\tputText: async (\n\t\t\tc: ActorContext<any, any, any, any, any, any>,\n\t\t\tkey: string,\n\t\t\tvalue: string,\n\t\t) => {\n\t\t\tawait c.kv.put(key, value);\n\t\t\treturn true;\n\t\t},\n\t\tgetText: async (\n\t\t\tc: ActorContext<any, any, any, any, any, any>,\n\t\t\tkey: string,\n\t\t) => {\n\t\t\treturn await c.kv.get(key);\n\t\t},\n\t\tlistText: async (\n\t\t\tc: ActorContext<any, any, any, any, any, any>,\n\t\t\tprefix: string,\n\t\t) => {\n\t\t\tconst results = await c.kv.list(prefix, { keyType: \"text\" });\n\t\t\treturn results.map(([key, value]) => ({\n\t\t\t\tkey,\n\t\t\t\tvalue,\n\t\t\t}));\n\t\t},\n\t\troundtripArrayBuffer: async (\n\t\t\tc: ActorContext<any, any, any, any, any, any>,\n\t\t\tkey: string,\n\t\t\tvalues: number[],\n\t\t) => {\n\t\t\tconst buffer = new Uint8Array(values).buffer;\n\t\t\tawait c.kv.put(key, buffer, { type: \"arrayBuffer\" });\n\t\t\tconst result = await c.kv.get(key, { type: \"arrayBuffer\" });\n\t\t\tif (!result) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn Array.from(new Uint8Array(result));\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\n/**\n * Actor for testing large payloads without connections\n */\nexport const largePayloadActor = actor({\n\tstate: {},\n\tactions: {\n\t\t/**\n\t\t * Accepts a large request payload and returns its size\n\t\t */\n\t\tprocessLargeRequest: (c, data: { items: string[] }) => {\n\t\t\treturn {\n\t\t\t\titemCount: data.items.length,\n\t\t\t\tfirstItem: data.items[0],\n\t\t\t\tlastItem: data.items[data.items.length - 1],\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Returns a large response payload\n\t\t */\n\t\tgetLargeResponse: (c, itemCount: number) => {\n\t\t\tconst items: string[] = [];\n\t\t\tfor (let i = 0; i < itemCount; i++) {\n\t\t\t\titems.push(`Item ${i} with some additional text to increase size`);\n\t\t\t}\n\t\t\treturn { items };\n\t\t},\n\n\t\t/**\n\t\t * Echo back the request data\n\t\t */\n\t\techo: (c, data: unknown) => {\n\t\t\treturn data;\n\t\t},\n\t},\n});\n\n/**\n * Actor for testing large payloads with connections\n */\nexport const largePayloadConnActor = actor({\n\tstate: {},\n\tconnState: {\n\t\tlastRequestSize: 0,\n\t},\n\tactions: {\n\t\t/**\n\t\t * Accepts a large request payload and returns its size\n\t\t */\n\t\tprocessLargeRequest: (c, data: { items: string[] }) => {\n\t\t\tc.conn.state.lastRequestSize = data.items.length;\n\t\t\treturn {\n\t\t\t\titemCount: data.items.length,\n\t\t\t\tfirstItem: data.items[0],\n\t\t\t\tlastItem: data.items[data.items.length - 1],\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Returns a large response payload\n\t\t */\n\t\tgetLargeResponse: (c, itemCount: number) => {\n\t\t\tconst items: string[] = [];\n\t\t\tfor (let i = 0; i < itemCount; i++) {\n\t\t\t\titems.push(`Item ${i} with some additional text to increase size`);\n\t\t\t}\n\t\t\treturn { items };\n\t\t},\n\n\t\t/**\n\t\t * Echo back the request data\n\t\t */\n\t\techo: (c, data: unknown) => {\n\t\t\treturn data;\n\t\t},\n\n\t\t/**\n\t\t * Get the last request size\n\t\t */\n\t\tgetLastRequestSize: (c) => {\n\t\t\treturn c.conn.state.lastRequestSize;\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\ntype ConnParams = { trackLifecycle?: boolean } | undefined;\n\nexport const counterWithLifecycle = actor({\n\tstate: {\n\t\tcount: 0,\n\t\tevents: [] as string[],\n\t},\n\tcreateConnState: (c, params: ConnParams) => ({\n\t\tjoinTime: Date.now(),\n\t}),\n\tonWake: (c) => {\n\t\tc.state.events.push(\"onWake\");\n\t},\n\tonBeforeConnect: (c, params: ConnParams) => {\n\t\tif (params?.trackLifecycle) c.state.events.push(\"onBeforeConnect\");\n\t},\n\tonConnect: (c, conn) => {\n\t\tif (conn.params?.trackLifecycle) c.state.events.push(\"onConnect\");\n\t},\n\tonDisconnect: (c, conn) => {\n\t\tif (conn.params?.trackLifecycle) c.state.events.push(\"onDisconnect\");\n\t},\n\tactions: {\n\t\tgetEvents: (c) => {\n\t\t\treturn c.state.events;\n\t\t},\n\t\tincrement: (c, x: number) => {\n\t\t\tc.state.count += x;\n\t\t\treturn c.state.count;\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\n// Note: For testing only - metadata API will need to be mocked\n// in tests since this is implementation-specific\nexport const metadataActor = actor({\n\tstate: {\n\t\tlastMetadata: null as any,\n\t\tactorName: \"\",\n\t\t// Store tags and region in state for testing since they may not be\n\t\t// available in the context in all environments\n\t\tstoredTags: {} as Record<string, string>,\n\t\tstoredRegion: null as string | null,\n\t},\n\tonWake: (c) => {\n\t\t// Store the actor name during initialization\n\t\tc.state.actorName = c.name;\n\t},\n\tactions: {\n\t\t// Set up test tags - this will be called by tests to simulate tags\n\t\tsetupTestTags: (c, tags: Record<string, string>) => {\n\t\t\tc.state.storedTags = tags;\n\t\t\treturn tags;\n\t\t},\n\n\t\t// Set up test region - this will be called by tests to simulate region\n\t\tsetupTestRegion: (c, region: string) => {\n\t\t\tc.state.storedRegion = region;\n\t\t\treturn region;\n\t\t},\n\n\t\t// Get all available metadata\n\t\tgetMetadata: (c) => {\n\t\t\t// Create metadata object from stored values\n\t\t\tconst metadata = {\n\t\t\t\tname: c.name,\n\t\t\t\ttags: c.state.storedTags,\n\t\t\t\tregion: c.state.storedRegion,\n\t\t\t};\n\n\t\t\t// Store for later inspection\n\t\t\tc.state.lastMetadata = metadata;\n\t\t\treturn metadata;\n\t\t},\n\n\t\t// Get the actor name\n\t\tgetActorName: (c) => {\n\t\t\treturn c.name;\n\t\t},\n\n\t\t// Get a specific tag by key\n\t\tgetTag: (c, key: string) => {\n\t\t\treturn c.state.storedTags[key] || null;\n\t\t},\n\n\t\t// Get all tags\n\t\tgetTags: (c) => {\n\t\t\treturn c.state.storedTags;\n\t\t},\n\n\t\t// Get the region\n\t\tgetRegion: (c) => {\n\t\t\treturn c.state.storedRegion;\n\t\t},\n\n\t\t// Get the stored actor name (from onWake)\n\t\tgetStoredActorName: (c) => {\n\t\t\treturn c.state.actorName;\n\t\t},\n\n\t\t// Get last retrieved metadata\n\t\tgetLastMetadata: (c) => {\n\t\t\treturn c.state.lastMetadata;\n\t\t},\n\t},\n});\n","import { actor, queue } from \"rivetkit\";\nimport type { registry } from \"./registry\";\n\nconst queueSchemas = {\n\tgreeting: queue<{ hello: string }>(),\n\tself: queue<{ value: number }>(),\n\ta: queue<number>(),\n\tb: queue<number>(),\n\tc: queue<number>(),\n\tone: queue<string>(),\n\ttwo: queue<string>(),\n\tmissing: queue<unknown>(),\n\tabort: queue<unknown>(),\n\ttasks: queue<{ value: number }, { echo: { value: number } }>(),\n\ttimeout: queue<{ value: number }, { ok: true }>(),\n\tnowait: queue<{ value: string }>(),\n\ttwice: queue<{ value: string }, { ok: true }>(),\n} as const;\n\ntype QueueName = keyof typeof queueSchemas;\n\nexport const queueActor = actor({\n\tstate: {},\n\tqueues: queueSchemas,\n\tactions: {\n\t\treceiveOne: async (\n\t\t\tc,\n\t\t\tname: QueueName,\n\t\t\topts?: { timeout?: number },\n\t\t) => {\n\t\t\tconst message = await c.queue.next({\n\t\t\t\tnames: [name],\n\t\t\t\ttimeout: opts?.timeout,\n\t\t\t});\n\t\t\tif (!message) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn { name: message.name, body: message.body };\n\t\t},\n\t\treceiveMany: async (\n\t\t\tc,\n\t\t\tnames: QueueName[],\n\t\t\topts?: { count?: number; timeout?: number },\n\t\t) => {\n\t\t\tconst messages = await c.queue.nextBatch({\n\t\t\t\tnames,\n\t\t\t\tcount: opts?.count,\n\t\t\t\ttimeout: opts?.timeout,\n\t\t\t});\n\t\t\treturn messages.map((message) => ({\n\t\t\t\tname: message.name,\n\t\t\t\tbody: message.body,\n\t\t\t}));\n\t\t},\n\t\treceiveRequest: async (\n\t\t\tc,\n\t\t\trequest: {\n\t\t\t\tnames?: QueueName[];\n\t\t\t\tcount?: number;\n\t\t\t\ttimeout?: number;\n\t\t\t},\n\t\t) => {\n\t\t\tconst messages = await c.queue.nextBatch(request);\n\t\t\treturn messages.map((message) => ({\n\t\t\t\tname: message.name,\n\t\t\t\tbody: message.body,\n\t\t\t}));\n\t\t},\n\t\ttryReceiveMany: async (\n\t\t\tc,\n\t\t\trequest: {\n\t\t\t\tnames?: QueueName[];\n\t\t\t\tcount?: number;\n\t\t\t},\n\t\t) => {\n\t\t\tconst messages = await c.queue.tryNextBatch(request);\n\t\t\treturn messages.map((message) => ({\n\t\t\t\tname: message.name,\n\t\t\t\tbody: message.body,\n\t\t\t}));\n\t\t},\n\t\treceiveWithIterator: async (c, name: QueueName) => {\n\t\t\tfor await (const message of c.queue.iter({ names: [name] })) {\n\t\t\t\treturn { name: message.name, body: message.body };\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\treceiveWithAsyncIterator: async (c) => {\n\t\t\tfor await (const message of c.queue.iter()) {\n\t\t\t\treturn { name: message.name, body: message.body };\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tsendToSelf: async (c, name: QueueName, body: unknown) => {\n\t\t\tconst client = c.client<typeof registry>();\n\t\t\tconst handle = client.queueActor.getForId(c.actorId);\n\t\t\tawait handle.send(name, body);\n\t\t\treturn true;\n\t\t},\n\t\twaitForAbort: async (c) => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tc.destroy();\n\t\t\t}, 10);\n\t\t\tawait c.queue.next({ names: [\"abort\"], timeout: 10_000 });\n\t\t\treturn true;\n\t\t},\n\t\twaitForSignalAbort: async (c) => {\n\t\t\tconst controller = new AbortController();\n\t\t\tcontroller.abort();\n\t\t\ttry {\n\t\t\t\tawait c.queue.next({\n\t\t\t\t\tnames: [\"abort\"],\n\t\t\t\t\ttimeout: 10_000,\n\t\t\t\t\tsignal: controller.signal,\n\t\t\t\t});\n\t\t\t\treturn { ok: false };\n\t\t\t} catch (error) {\n\t\t\t\tconst actorError = error as { group?: string; code?: string };\n\t\t\t\treturn { group: actorError.group, code: actorError.code };\n\t\t\t}\n\t\t},\n\t\twaitForActorAbortWithSignal: async (c) => {\n\t\t\tconst controller = new AbortController();\n\t\t\tsetTimeout(() => {\n\t\t\t\tc.destroy();\n\t\t\t}, 10);\n\t\t\ttry {\n\t\t\t\tawait c.queue.next({\n\t\t\t\t\tnames: [\"abort\"],\n\t\t\t\t\ttimeout: 10_000,\n\t\t\t\t\tsignal: controller.signal,\n\t\t\t\t});\n\t\t\t\treturn { ok: false };\n\t\t\t} catch (error) {\n\t\t\t\tconst actorError = error as { group?: string; code?: string };\n\t\t\t\treturn { group: actorError.group, code: actorError.code };\n\t\t\t}\n\t\t},\n\t\titerWithSignalAbort: async (c) => {\n\t\t\tconst controller = new AbortController();\n\t\t\tcontroller.abort();\n\t\t\tfor await (const _message of c.queue.iter({\n\t\t\t\tnames: [\"abort\"],\n\t\t\t\tsignal: controller.signal,\n\t\t\t})) {\n\t\t\t\treturn { ok: false };\n\t\t\t}\n\t\t\treturn { ok: true };\n\t\t},\n\t\treceiveAndComplete: async (c, name: \"tasks\") => {\n\t\t\tconst message = await c.queue.next({\n\t\t\t\tnames: [name],\n\t\t\t\tcompletable: true,\n\t\t\t});\n\t\t\tif (!message) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tawait message.complete({ echo: message.body });\n\t\t\treturn { name: message.name, body: message.body };\n\t\t},\n\t\treceiveWithoutComplete: async (c, name: \"tasks\") => {\n\t\t\tconst message = await c.queue.next({\n\t\t\t\tnames: [name],\n\t\t\t\tcompletable: true,\n\t\t\t});\n\t\t\tif (!message) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn { name: message.name, body: message.body };\n\t\t},\n\t\treceiveManualThenNextWithoutComplete: async (c, name: \"tasks\") => {\n\t\t\tconst message = await c.queue.next({\n\t\t\t\tnames: [name],\n\t\t\t\tcompletable: true,\n\t\t\t});\n\t\t\tif (!message) {\n\t\t\t\treturn { ok: false, reason: \"no_message\" };\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tawait c.queue.next({ names: [name], timeout: 0 });\n\t\t\t\tc.destroy();\n\t\t\t\treturn { ok: false, reason: \"next_succeeded\" };\n\t\t\t} catch (error) {\n\t\t\t\tc.destroy();\n\t\t\t\tconst actorError = error as { group?: string; code?: string };\n\t\t\t\treturn { group: actorError.group, code: actorError.code };\n\t\t\t}\n\t\t},\n\t\treceiveAndCompleteTwice: async (c, name: \"twice\") => {\n\t\t\tconst message = await c.queue.next({\n\t\t\t\tnames: [name],\n\t\t\t\tcompletable: true,\n\t\t\t});\n\t\t\tif (!message) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tawait message.complete({ ok: true });\n\t\t\ttry {\n\t\t\t\tawait message.complete({ ok: true });\n\t\t\t\treturn { ok: false };\n\t\t\t} catch (error) {\n\t\t\t\tconst actorError = error as { group?: string; code?: string };\n\t\t\t\treturn { group: actorError.group, code: actorError.code };\n\t\t\t}\n\t\t},\n\t\treceiveWithoutCompleteMethod: async (c, name: \"nowait\") => {\n\t\t\tconst message = await c.queue.next({\n\t\t\t\tnames: [name],\n\t\t\t\tcompletable: true,\n\t\t\t});\n\t\t\treturn {\n\t\t\t\thasComplete:\n\t\t\t\t\tmessage !== undefined &&\n\t\t\t\t\ttypeof message.complete === \"function\",\n\t\t\t};\n\t\t},\n\t},\n});\n\nexport const queueLimitedActor = actor({\n\tstate: {},\n\tqueues: {\n\t\tmessage: queue<number>(),\n\t\toversize: queue<string>(),\n\t},\n\tactions: {},\n\toptions: {\n\t\tmaxQueueSize: 1,\n\t\tmaxQueueMessageSize: 64,\n\t},\n});\n","import { Hono } from \"hono\";\nimport { actor, type RequestContext } from \"rivetkit\";\n\nexport const rawHttpActor = actor({\n\tstate: {\n\t\trequestCount: 0,\n\t},\n\tonRequest(\n\t\tctx: RequestContext<any, any, any, any, any, any>,\n\t\trequest: Request,\n\t) {\n\t\tconst url = new URL(request.url);\n\t\tconst method = request.method;\n\n\t\t// Track request count\n\t\tctx.state.requestCount++;\n\n\t\t// Handle different endpoints\n\t\tif (url.pathname === \"/api/hello\") {\n\t\t\treturn new Response(\n\t\t\t\tJSON.stringify({ message: \"Hello from actor!\" }),\n\t\t\t\t{\n\t\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tif (url.pathname === \"/api/echo\" && method === \"POST\") {\n\t\t\treturn new Response(request.body, {\n\t\t\t\theaders: request.headers,\n\t\t\t});\n\t\t}\n\n\t\tif (url.pathname === \"/api/state\") {\n\t\t\treturn new Response(\n\t\t\t\tJSON.stringify({\n\t\t\t\t\trequestCount: ctx.state.requestCount,\n\t\t\t\t}),\n\t\t\t\t{\n\t\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\tif (url.pathname === \"/api/headers\") {\n\t\t\tconst headers: Record<string, string> = {};\n\t\t\trequest.headers.forEach((value, key) => {\n\t\t\t\theaders[key] = value;\n\t\t\t});\n\t\t\treturn new Response(JSON.stringify(headers), {\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t});\n\t\t}\n\n\t\t// Return 404 for unhandled paths\n\t\treturn new Response(\"Not Found\", { status: 404 });\n\t},\n\tactions: {},\n});\n\nexport const rawHttpNoHandlerActor = actor({\n\tactions: {},\n});\n\nexport const rawHttpVoidReturnActor = actor({\n\tonRequest(ctx, request) {\n\t\t// Intentionally return void to test error handling\n\t\treturn undefined as any;\n\t},\n\tactions: {},\n});\n\nexport const rawHttpHonoActor = actor({\n\tcreateVars() {\n\t\tconst router = new Hono();\n\n\t\t// Set up routes\n\t\trouter.get(\"/\", (c: any) =>\n\t\t\tc.json({ message: \"Welcome to Hono actor!\" }),\n\t\t);\n\n\t\trouter.get(\"/users\", (c: any) =>\n\t\t\tc.json([\n\t\t\t\t{ id: 1, name: \"Alice\" },\n\t\t\t\t{ id: 2, name: \"Bob\" },\n\t\t\t]),\n\t\t);\n\n\t\trouter.get(\"/users/:id\", (c: any) => {\n\t\t\tconst id = c.req.param(\"id\");\n\t\t\treturn c.json({\n\t\t\t\tid: parseInt(id),\n\t\t\t\tname: id === \"1\" ? \"Alice\" : \"Bob\",\n\t\t\t});\n\t\t});\n\n\t\trouter.post(\"/users\", async (c: any) => {\n\t\t\tconst body = await c.req.json();\n\t\t\treturn c.json({ id: 3, ...body }, 201);\n\t\t});\n\n\t\trouter.put(\"/users/:id\", async (c: any) => {\n\t\t\tconst id = c.req.param(\"id\");\n\t\t\tconst body = await c.req.json();\n\t\t\treturn c.json({ id: parseInt(id), ...body });\n\t\t});\n\n\t\trouter.delete(\"/users/:id\", (c: any) => {\n\t\t\tconst id = c.req.param(\"id\");\n\t\t\treturn c.json({ message: `User ${id} deleted` });\n\t\t});\n\n\t\t// Return the router as a var\n\t\treturn { router };\n\t},\n\tonRequest(\n\t\tctx: RequestContext<any, any, any, any, any, any>,\n\t\trequest: Request,\n\t) {\n\t\t// Use the Hono router from vars\n\t\treturn ctx.vars.router.fetch(request);\n\t},\n\tactions: {},\n});\n","import { actor, type RequestContext } from \"rivetkit\";\n\nexport const rawHttpRequestPropertiesActor = actor({\n\tactions: {},\n\tonRequest(\n\t\tctx: RequestContext<any, any, any, any, any, any>,\n\t\trequest: Request,\n\t) {\n\t\t// Extract all relevant Request properties\n\t\tconst url = new URL(request.url);\n\t\tconst method = request.method;\n\n\t\t// Get all headers\n\t\tconst headers: Record<string, string> = {};\n\t\trequest.headers.forEach((value, key) => {\n\t\t\theaders[key] = value;\n\t\t});\n\n\t\t// Handle body based on content type\n\t\tconst handleBody = async () => {\n\t\t\tif (!request.body) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst contentType = request.headers.get(\"content-type\") || \"\";\n\n\t\t\ttry {\n\t\t\t\tif (contentType.includes(\"application/json\")) {\n\t\t\t\t\tconst text = await request.text();\n\t\t\t\t\treturn text ? JSON.parse(text) : null;\n\t\t\t\t} else {\n\t\t\t\t\t// For non-JSON, return as text\n\t\t\t\t\tconst text = await request.text();\n\t\t\t\t\treturn text || null; // Return null for empty bodies\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\t// If body parsing fails, return null\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\n\t\t// Special handling for HEAD and OPTIONS requests\n\t\tif (method === \"HEAD\") {\n\t\t\treturn new Response(null, {\n\t\t\t\tstatus: 200,\n\t\t\t});\n\t\t}\n\n\t\tif (method === \"OPTIONS\") {\n\t\t\treturn new Response(null, {\n\t\t\t\tstatus: 204,\n\t\t\t});\n\t\t}\n\n\t\t// Return all request properties as JSON\n\t\treturn handleBody().then((body) => {\n\t\t\tconst responseData = {\n\t\t\t\t// URL properties\n\t\t\t\turl: request.url,\n\t\t\t\tpathname: url.pathname,\n\t\t\t\tsearch: url.search,\n\t\t\t\tsearchParams: Object.fromEntries(url.searchParams.entries()),\n\t\t\t\thash: url.hash,\n\n\t\t\t\t// Method\n\t\t\t\tmethod: request.method,\n\n\t\t\t\t// Headers\n\t\t\t\theaders: headers,\n\n\t\t\t\t// Body\n\t\t\t\tbody,\n\t\t\t\tbodyText:\n\t\t\t\t\ttypeof body === \"string\"\n\t\t\t\t\t\t? body\n\t\t\t\t\t\t: body === null && request.body !== null\n\t\t\t\t\t\t\t? \"\"\n\t\t\t\t\t\t\t: null,\n\n\t\t\t\t// Additional properties that might be available\n\t\t\t\t// Note: Some properties like cache, credentials, mode, etc.\n\t\t\t\t// might not be available in all environments\n\t\t\t\tcache: request.cache || null,\n\t\t\t\tcredentials: request.credentials || null,\n\t\t\t\tmode: request.mode || null,\n\t\t\t\tredirect: request.redirect || null,\n\t\t\t\treferrer: request.referrer || null,\n\t\t\t};\n\n\t\t\treturn new Response(JSON.stringify(responseData), {\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t});\n\t\t});\n\t},\n});\n","import { type ActorContext, actor, type UniversalWebSocket } from \"rivetkit\";\n\nexport const rawWebSocketActor = actor({\n\tstate: {\n\t\tconnectionCount: 0,\n\t\tmessageCount: 0,\n\t},\n\tonWebSocket(ctx, websocket) {\n\t\tctx.state.connectionCount = ctx.state.connectionCount + 1;\n\t\tconsole.log(\n\t\t\t`[ACTOR] New connection, count: ${ctx.state.connectionCount}`,\n\t\t);\n\n\t\t// Send welcome message\n\t\twebsocket.send(\n\t\t\tJSON.stringify({\n\t\t\t\ttype: \"welcome\",\n\t\t\t\tconnectionCount: ctx.state.connectionCount,\n\t\t\t}),\n\t\t);\n\t\tconsole.log(\"[ACTOR] Sent welcome message\");\n\n\t\t// Echo messages back\n\t\twebsocket.addEventListener(\"message\", (event: any) => {\n\t\t\tctx.state.messageCount = ctx.state.messageCount + 1;\n\t\t\tconsole.log(\n\t\t\t\t`[ACTOR] Message received, total count: ${ctx.state.messageCount}, data:`,\n\t\t\t\tevent.data,\n\t\t\t);\n\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 === \"ping\") {\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: \"pong\",\n\t\t\t\t\t\t\t\ttimestamp: Date.now(),\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 === \"getStats\") {\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t`[ACTOR] Sending stats - connections: ${ctx.state.connectionCount}, messages: ${ctx.state.messageCount}`,\n\t\t\t\t\t\t);\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: \"stats\",\n\t\t\t\t\t\t\t\tconnectionCount: ctx.state.connectionCount,\n\t\t\t\t\t\t\t\tmessageCount: ctx.state.messageCount,\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 === \"getRequestInfo\") {\n\t\t\t\t\t\t// Send back the request URL info if available\n\t\t\t\t\t\tconst url = ctx.request?.url || \"ws://actor/websocket\";\n\t\t\t\t\t\tconst urlObj = new URL(url);\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: \"requestInfo\",\n\t\t\t\t\t\t\t\turl: url,\n\t\t\t\t\t\t\t\tpathname: urlObj.pathname,\n\t\t\t\t\t\t\t\tsearch: urlObj.search,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Echo back\n\t\t\t\t\t\twebsocket.send(data);\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// If not JSON, just echo it back\n\t\t\t\t\twebsocket.send(data);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Echo binary data\n\t\t\t\twebsocket.send(data);\n\t\t\t}\n\t\t});\n\n\t\t// Handle close\n\t\twebsocket.addEventListener(\"close\", () => {\n\t\t\tctx.state.connectionCount = ctx.state.connectionCount - 1;\n\t\t\tconsole.log(\n\t\t\t\t`[ACTOR] Connection closed, count: ${ctx.state.connectionCount}`,\n\t\t\t);\n\t\t});\n\t},\n\tactions: {\n\t\tgetStats(ctx: any) {\n\t\t\treturn {\n\t\t\t\tconnectionCount: ctx.state.connectionCount,\n\t\t\t\tmessageCount: ctx.state.messageCount,\n\t\t\t};\n\t\t},\n\t},\n});\n\nexport const rawWebSocketBinaryActor = actor({\n\tonWebSocket(ctx, websocket) {\n\t\t// Handle binary data\n\t\twebsocket.addEventListener(\"message\", (event: any) => {\n\t\t\tconst data = event.data;\n\t\t\tif (data instanceof ArrayBuffer || data instanceof Uint8Array) {\n\t\t\t\t// Reverse the bytes and send back\n\t\t\t\tconst bytes = new Uint8Array(data);\n\t\t\t\tconst reversed = new Uint8Array(bytes.length);\n\t\t\t\tfor (let i = 0; i < bytes.length; i++) {\n\t\t\t\t\treversed[i] = bytes[bytes.length - 1 - i];\n\t\t\t\t}\n\t\t\t\twebsocket.send(reversed);\n\t\t\t}\n\t\t});\n\t},\n\tactions: {},\n});\n","import { actor, type RivetMessageEvent } from \"rivetkit\";\n\n/**\n * Test fixture to verify request object access in all lifecycle hooks\n */\nexport const requestAccessActor = actor({\n\tstate: {\n\t\t// Track request info from different hooks\n\t\tonBeforeConnectRequest: {\n\t\t\thasRequest: false,\n\t\t\trequestUrl: null as string | null,\n\t\t\trequestMethod: null as string | null,\n\t\t\trequestHeaders: {} as Record<string, string>,\n\t\t},\n\t\tcreateConnStateRequest: {\n\t\t\thasRequest: false,\n\t\t\trequestUrl: null as string | null,\n\t\t\trequestMethod: null as string | null,\n\t\t\trequestHeaders: {} as Record<string, string>,\n\t\t},\n\t\tonRequestRequest: {\n\t\t\thasRequest: false,\n\t\t\trequestUrl: null as string | null,\n\t\t\trequestMethod: null as string | null,\n\t\t\trequestHeaders: {} as Record<string, string>,\n\t\t},\n\t\tonWebSocketRequest: {\n\t\t\thasRequest: false,\n\t\t\trequestUrl: null as string | null,\n\t\t\trequestMethod: null as string | null,\n\t\t\trequestHeaders: {} as Record<string, string>,\n\t\t},\n\t},\n\tcreateConnState: (c, params: { trackRequest?: boolean }) => {\n\t\t// In createConnState, the state isn't available yet.\n\n\t\tlet requestInfo: {\n\t\t\thasRequest: boolean;\n\t\t\trequestUrl: string;\n\t\t\trequestMethod: string;\n\t\t\trequestHeaders: Record<string, string>;\n\t\t} | null = null;\n\n\t\tif (params?.trackRequest && c.request) {\n\t\t\tconst headers: Record<string, string> = {};\n\t\t\tc.request.headers.forEach((value, key) => {\n\t\t\t\theaders[key] = value;\n\t\t\t});\n\t\t\trequestInfo = {\n\t\t\t\thasRequest: true,\n\t\t\t\trequestUrl: c.request.url,\n\t\t\t\trequestMethod: c.request.method,\n\t\t\t\trequestHeaders: headers,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\ttrackRequest: params?.trackRequest || false,\n\t\t\trequestInfo,\n\t\t};\n\t},\n\tonConnect: (c, conn) => {\n\t\t// Copy request info from connection state if it was tracked\n\t\tif (conn.state.requestInfo) {\n\t\t\tc.state.createConnStateRequest = conn.state.requestInfo;\n\t\t}\n\t},\n\tonBeforeConnect: (c, params) => {\n\t\tif (params?.trackRequest) {\n\t\t\tif (c.request) {\n\t\t\t\tc.state.onBeforeConnectRequest.hasRequest = true;\n\t\t\t\tc.state.onBeforeConnectRequest.requestUrl = c.request.url;\n\t\t\t\tc.state.onBeforeConnectRequest.requestMethod = c.request.method;\n\n\t\t\t\t// Store select headers\n\t\t\t\tconst headers: Record<string, string> = {};\n\t\t\t\tc.request.headers.forEach((value, key) => {\n\t\t\t\t\theaders[key] = value;\n\t\t\t\t});\n\t\t\t\tc.state.onBeforeConnectRequest.requestHeaders = headers;\n\t\t\t} else {\n\t\t\t\t// Track that we tried but request was not available\n\t\t\t\tc.state.onBeforeConnectRequest.hasRequest = false;\n\t\t\t}\n\t\t}\n\t},\n\tonRequest: (c, request) => {\n\t\t// Store request info\n\t\tc.state.onRequestRequest.hasRequest = true;\n\t\tc.state.onRequestRequest.requestUrl = request.url;\n\t\tc.state.onRequestRequest.requestMethod = request.method;\n\n\t\t// Store select headers\n\t\tconst headers: Record<string, string> = {};\n\t\trequest.headers.forEach((value, key) => {\n\t\t\theaders[key] = value;\n\t\t});\n\t\tc.state.onRequestRequest.requestHeaders = headers;\n\n\t\t// Return response with request info\n\t\treturn new Response(\n\t\t\tJSON.stringify({\n\t\t\t\thasRequest: true,\n\t\t\t\trequestUrl: request.url,\n\t\t\t\trequestMethod: request.method,\n\t\t\t\trequestHeaders: headers,\n\t\t\t}),\n\t\t\t{\n\t\t\t\tstatus: 200,\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t},\n\t\t);\n\t},\n\tonWebSocket: (c, websocket) => {\n\t\tif (!c.request) throw \"Missing request\";\n\t\t// Store request info\n\t\tc.state.onWebSocketRequest.hasRequest = true;\n\t\tc.state.onWebSocketRequest.requestUrl = c.request.url;\n\t\tc.state.onWebSocketRequest.requestMethod = c.request.method;\n\n\t\t// Store select headers\n\t\tconst headers: Record<string, string> = {};\n\t\tc.request.headers.forEach((value, key) => {\n\t\t\theaders[key] = value;\n\t\t});\n\t\tc.state.onWebSocketRequest.requestHeaders = headers;\n\n\t\t// Send request info on connection\n\t\twebsocket.send(\n\t\t\tJSON.stringify({\n\t\t\t\thasRequest: true,\n\t\t\t\trequestUrl: c.request.url,\n\t\t\t\trequestMethod: c.request.method,\n\t\t\t\trequestHeaders: headers,\n\t\t\t}),\n\t\t);\n\n\t\t// Echo messages back\n\t\twebsocket.addEventListener(\"message\", (event: RivetMessageEvent) => {\n\t\t\twebsocket.send(event.data);\n\t\t});\n\t},\n\tactions: {\n\t\tgetRequestInfo: (c) => {\n\t\t\treturn {\n\t\t\t\tonBeforeConnect: c.state.onBeforeConnectRequest,\n\t\t\t\tcreateConnState: c.state.createConnStateRequest,\n\t\t\t\tonRequest: c.state.onRequestRequest,\n\t\t\t\tonWebSocket: c.state.onWebSocketRequest,\n\t\t\t};\n\t\t},\n\t},\n});\n","import { actor, UserError } from \"rivetkit\";\n\nexport const rejectConnectionActor = actor({\n\tonBeforeConnect: async (_c, params: { reject?: boolean }) => {\n\t\tif (params?.reject) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, 500));\n\t\t\tthrow new UserError(\"Rejected connection\", {\n\t\t\t\tcode: \"rejected\",\n\t\t\t});\n\t\t}\n\t},\n\tactions: {\n\t\tping: () => \"pong\",\n\t},\n});\n","import { actor } from \"rivetkit\";\n\nexport const scheduled = actor({\n\tstate: {\n\t\tlastRun: 0,\n\t\tscheduledCount: 0,\n\t\ttaskHistory: [] as string[],\n\t},\n\tactions: {\n\t\t// Schedule using 'at' with specific timestamp\n\t\tscheduleTaskAt: (c, timestamp: number) => {\n\t\t\tc.schedule.at(timestamp, \"onScheduledTask\");\n\t\t\treturn timestamp;\n\t\t},\n\n\t\t// Schedule using 'after' with delay\n\t\tscheduleTaskAfter: (c, delayMs: number) => {\n\t\t\tc.schedule.after(delayMs, \"onScheduledTask\");\n\t\t\treturn Date.now() + delayMs;\n\t\t},\n\n\t\t// Schedule with a task ID for ordering tests\n\t\tscheduleTaskAfterWithId: (c, taskId: string, delayMs: number) => {\n\t\t\tc.schedule.after(delayMs, \"onScheduledTaskWithId\", taskId);\n\t\t\treturn { taskId, scheduledFor: Date.now() + delayMs };\n\t\t},\n\n\t\t// Original method for backward compatibility\n\t\tscheduleTask: (c, delayMs: number) => {\n\t\t\tconst timestamp = Date.now() + delayMs;\n\t\t\tc.schedule.at(timestamp, \"onScheduledTask\");\n\t\t\treturn timestamp;\n\t\t},\n\n\t\t// Getters for state\n\t\tgetLastRun: (c) => {\n\t\t\treturn c.state.lastRun;\n\t\t},\n\n\t\tgetScheduledCount: (c) => {\n\t\t\treturn c.state.scheduledCount;\n\t\t},\n\n\t\tgetTaskHistory: (c) => {\n\t\t\treturn c.state.taskHistory;\n\t\t},\n\n\t\tclearHistory: (c) => {\n\t\t\tc.state.taskHistory = [];\n\t\t\tc.state.scheduledCount = 0;\n\t\t\tc.state.lastRun = 0;\n\t\t\treturn true;\n\t\t},\n\n\t\t// Scheduled task handlers\n\t\tonScheduledTask: (c) => {\n\t\t\tc.state.lastRun = Date.now();\n\t\t\tc.state.scheduledCount++;\n\t\t\tc.broadcast(\"scheduled\", {\n\t\t\t\ttime: c.state.lastRun,\n\t\t\t\tcount: c.state.scheduledCount,\n\t\t\t});\n\t\t},\n\n\t\tonScheduledTaskWithId: (c, taskId: string) => {\n\t\t\tc.state.lastRun = Date.now();\n\t\t\tc.state.scheduledCount++;\n\t\t\tc.state.taskHistory.push(taskId);\n\t\t\tc.broadcast(\"scheduledWithId\", {\n\t\t\t\ttaskId,\n\t\t\t\ttime: c.state.lastRun,\n\t\t\t\tcount: c.state.scheduledCount,\n\t\t\t});\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\n// Actor without state - only has actions\nexport const statelessActor = actor({\n\tactions: {\n\t\tping: () => \"pong\",\n\t\techo: (c, message: string) => message,\n\t\tgetActorId: (c) => c.actorId,\n\t\t// Try to access state - should throw StateNotEnabled\n\t\ttryGetState: (c) => {\n\t\t\ttry {\n\t\t\t\t// State is typed as undefined, but we want to test runtime behavior\n\t\t\t\tconst state = c.state;\n\t\t\t\treturn { success: true, state };\n\t\t\t} catch (error) {\n\t\t\t\treturn { success: false, error: (error as Error).message };\n\t\t\t}\n\t\t},\n\t\t// Try to access db - should throw DatabaseNotEnabled\n\t\ttryGetDb: (c) => {\n\t\t\ttry {\n\t\t\t\t// DB is typed as undefined, but we want to test runtime behavior\n\t\t\t\tconst db = c.db;\n\t\t\t\treturn { success: true, db };\n\t\t\t} catch (error) {\n\t\t\t\treturn { success: false, error: (error as Error).message };\n\t\t\t}\n\t\t},\n\t},\n});\n","import { actor } from \"rivetkit\";\n\n// Actor with static vars\nexport const staticVarActor = actor({\n\tstate: { value: 0 },\n\tconnState: { hello: \"world\" },\n\tvars: { counter: 42, name: \"test-actor\" },\n\tactions: {\n\t\tgetVars: (c) => {\n\t\t\treturn c.vars;\n\t\t},\n\t\tgetName: (c) => {\n\t\t\treturn c.vars.name;\n\t\t},\n\t},\n});\n\n// Actor with nested vars\nexport const nestedVarActor = actor({\n\tstate: { value: 0 },\n\tconnState: { hello: \"world\" },\n\tvars: {\n\t\tcounter: 42,\n\t\tnested: {\n\t\t\tvalue: \"original\",\n\t\t\tarray: [1, 2, 3],\n\t\t\tobj: { key: \"value\" },\n\t\t},\n\t},\n\tactions: {\n\t\tgetVars: (c) => {\n\t\t\treturn c.vars;\n\t\t},\n\t\tmodifyNested: (c) => {\n\t\t\t// Attempt to modify the nested object\n\t\t\tc.vars.nested.value = \"modified\";\n\t\t\tc.vars.nested.array.push(4);\n\t\t\tc.vars.nested.obj.key = \"new-value\";\n\t\t\treturn c.vars;\n\t\t},\n\t},\n});\n\n// Actor with dynamic vars\nexport const dynamicVarActor = actor({\n\tstate: { value: 0 },\n\tconnState: { hello: \"world\" },\n\tcreateVars: () => {\n\t\treturn {\n\t\t\trandom: Math.random(),\n\t\t\tcomputed: `Actor-${Math.floor(Math.random() * 1000)}`,\n\t\t};\n\t},\n\tactions: {\n\t\tgetVars: (c) => {\n\t\t\treturn c.vars;\n\t\t},\n\t},\n});\n\n// Actor with unique vars per instance\nexport const uniqueVarActor = actor({\n\tstate: { value: 0 },\n\tconnState: { hello: \"world\" },\n\tcreateVars: () => {\n\t\treturn {\n\t\t\tid: Math.floor(Math.random() * 1000000),\n\t\t};\n\t},\n\tactions: {\n\t\tgetVars: (c) => {\n\t\t\treturn c.vars;\n\t\t},\n\t},\n});\n\n// Actor that uses driver context\nexport const driverCtxActor = actor({\n\tstate: { value: 0 },\n\tconnState: { hello: \"world\" },\n\tcreateVars: (c, driverCtx: any) => {\n\t\treturn {\n\t\t\thasDriverCtx: Boolean(driverCtx?.isTest),\n\t\t};\n\t},\n\tactions: {\n\t\tgetVars: (c) => {\n\t\t\treturn c.vars;\n\t\t},\n\t},\n});\n","import { setup } from \"rivetkit\";\nimport {\n\taccessControlActor,\n\taccessControlNoQueuesActor,\n} from \"./access-control\";\n\nimport { inputActor } from \"./action-inputs\";\nimport {\n\tdefaultTimeoutActor,\n\tlongTimeoutActor,\n\tshortTimeoutActor,\n\tsyncTimeoutActor,\n} from \"./action-timeout\";\nimport {\n\tasyncActionActor,\n\tpromiseActor,\n\tsyncActionActor,\n} from \"./action-types\";\nimport { dbActorRaw } from \"./actor-db-raw\";\nimport { dbActorDrizzle } from \"./actor-db-drizzle\";\nimport { dbLifecycle, dbLifecycleFailing, dbLifecycleObserver } from \"./db-lifecycle\";\nimport { onStateChangeActor } from \"./actor-onstatechange\";\nimport { counterWithParams } from \"./conn-params\";\nimport { connStateActor } from \"./conn-state\";\n// Import actors from individual files\nimport { counter } from \"./counter\";\nimport { counterConn } from \"./counter-conn\";\nimport { destroyActor, destroyObserver } from \"./destroy\";\nimport { customTimeoutActor, errorHandlingActor } from \"./error-handling\";\nimport { fileSystemHibernationCleanupActor } from \"./file-system-hibernation-cleanup\";\nimport { hibernationActor } from \"./hibernation\";\nimport { inlineClientActor } from \"./inline-client\";\nimport { kvActor } from \"./kv\";\nimport { largePayloadActor, largePayloadConnActor } from \"./large-payloads\";\nimport { counterWithLifecycle } from \"./lifecycle\";\nimport { metadataActor } from \"./metadata\";\nimport { queueActor, queueLimitedActor } from \"./queue\";\nimport {\n\trawHttpActor,\n\trawHttpHonoActor,\n\trawHttpNoHandlerActor,\n\trawHttpVoidReturnActor,\n} from \"./raw-http\";\nimport { rawHttpRequestPropertiesActor } from \"./raw-http-request-properties\";\nimport { rawWebSocketActor, rawWebSocketBinaryActor } from \"./raw-websocket\";\nimport { requestAccessActor } from \"./request-access\";\nimport { rejectConnectionActor } from \"./reject-connection\";\nimport {\n\trunWithError,\n\trunWithEarlyExit,\n\trunWithoutHandler,\n\trunWithQueueConsumer,\n\trunWithTicks,\n} from \"./run\";\nimport { scheduled } from \"./scheduled\";\nimport {\n\tsleep,\n\tsleepWithLongRpc,\n\tsleepWithNoSleepOption,\n\tsleepWithRawHttp,\n\tsleepWithRawWebSocket,\n} from \"./sleep\";\nimport { statelessActor } from \"./stateless\";\nimport {\n\tdriverCtxActor,\n\tdynamicVarActor,\n\tnestedVarActor,\n\tstaticVarActor,\n\tuniqueVarActor,\n} from \"./vars\";\nimport {\n\tworkflowAccessActor,\n\tworkflowCounterActor,\n\tworkflowQueueActor,\n\tworkflowSleepActor,\n\tworkflowStopTeardownActor,\n} from \"./workflow\";\n\n// Consolidated setup with all actors\nexport const registry = setup({\n\tuse: {\n\t\t// From counter.ts\n\t\tcounter,\n\t\t// From counter-conn.ts\n\t\tcounterConn,\n\t\t// From lifecycle.ts\n\t\tcounterWithLifecycle,\n\t\t// From scheduled.ts\n\t\tscheduled,\n\t\t// From sleep.ts\n\t\tsleep,\n\t\tsleepWithLongRpc,\n\t\tsleepWithRawHttp,\n\t\tsleepWithRawWebSocket,\n\t\tsleepWithNoSleepOption,\n\t\t// From error-handling.ts\n\t\terrorHandlingActor,\n\t\tcustomTimeoutActor,\n\t\t// From inline-client.ts\n\t\tinlineClientActor,\n\t\t// From kv.ts\n\t\tkvActor,\n\t\t// From queue.ts\n\t\tqueueActor,\n\t\tqueueLimitedActor,\n\t\t// From action-inputs.ts\n\t\tinputActor,\n\t\t// From action-timeout.ts\n\t\tshortTimeoutActor,\n\t\tlongTimeoutActor,\n\t\tdefaultTimeoutActor,\n\t\tsyncTimeoutActor,\n\t\t// From action-types.ts\n\t\tsyncActionActor,\n\t\tasyncActionActor,\n\t\tpromiseActor,\n\t\t// From conn-params.ts\n\t\tcounterWithParams,\n\t\t// From conn-state.ts\n\t\tconnStateActor,\n\t\t// From metadata.ts\n\t\tmetadataActor,\n\t\t// From vars.ts\n\t\tstaticVarActor,\n\t\tnestedVarActor,\n\t\tdynamicVarActor,\n\t\tuniqueVarActor,\n\t\tdriverCtxActor,\n\t\t// From raw-http.ts\n\t\trawHttpActor,\n\t\trawHttpNoHandlerActor,\n\t\trawHttpVoidReturnActor,\n\t\trawHttpHonoActor,\n\t\t// From raw-http-request-properties.ts\n\t\trawHttpRequestPropertiesActor,\n\t\t// From raw-websocket.ts\n\t\trawWebSocketActor,\n\t\trawWebSocketBinaryActor,\n\t\t// From reject-connection.ts\n\t\trejectConnectionActor,\n\t\t// From request-access.ts\n\t\trequestAccessActor,\n\t\t// From actor-onstatechange.ts\n\t\tonStateChangeActor,\n\t\t// From destroy.ts\n\t\tdestroyActor,\n\t\tdestroyObserver,\n\t\t// From hibernation.ts\n\t\thibernationActor,\n\t\t// From file-system-hibernation-cleanup.ts\n\t\tfileSystemHibernationCleanupActor,\n\t\t// From large-payloads.ts\n\t\tlargePayloadActor,\n\t\tlargePayloadConnActor,\n\t\t// From run.ts\n\t\trunWithTicks,\n\t\trunWithQueueConsumer,\n\t\trunWithEarlyExit,\n\t\trunWithError,\n\t\trunWithoutHandler,\n\t\t// From workflow.ts\n\t\tworkflowCounterActor,\n\t\tworkflowQueueActor,\n\t\tworkflowAccessActor,\n\t\tworkflowSleepActor,\n\t\tworkflowStopTeardownActor,\n\t\t// From actor-db-raw.ts\n\t\tdbActorRaw,\n\t\t// From actor-db-drizzle.ts\n\t\tdbActorDrizzle,\n\t\t// From db-lifecycle.ts\n\t\tdbLifecycle,\n\t\tdbLifecycleFailing,\n\t\tdbLifecycleObserver,\n\t\t// From stateless.ts\n\t\tstatelessActor,\n\t\t// From access-control.ts\n\t\taccessControlActor,\n\t\taccessControlNoQueuesActor,\n\t},\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAC9B,SAAS,SAAS,iBAAiB;AACnC,SAAS,2BAA2B;AACpC,OAAO,eAAe;;;ACHtB,SAAS,iBAAiB;AAO1B,IAAM,sBAGF;AAAA,EACH,cAAc,MAAyB;AAAA,IACtC,cAAc,CAAC,MAAM;AACpB,QAAE,MAAM,yBAAyB,EAAE,KAAK;AACxC,aAAO;AAAA,IACR;AAAA,EACD,CAAC;AAAA,EACD,cAAc,MAAyB;AAAA,IACtC,cAAc,CAAC,MAAM;AACpB,QAAE,MAAM,yBAAyB,EAAE,KAAK;AACxC,aAAO;AAAA,IACR;AAAA,EACD,CAAC;AACF;AAEA,IAAM,sBAGF;AAAA,EACH,cAAc,MAAyB;AAAA,IACtC,YAAY,CAAC,MAAM;AAClB,QAAE,MAAM,uBAAuB,EAAE,KAAK;AACtC,aAAO;AAAA,IACR;AAAA,EACD,CAAC;AAAA,EACD,cAAc,MAAyB;AAAA,IACtC,YAAY,CAAC,MAAM;AAClB,QAAE,MAAM,uBAAuB,EAAE,KAAK;AACtC,aAAO;AAAA,IACR;AAAA,EACD,CAAC;AACF;AAEO,IAAM,qBAAqB,MAAM;AAAA,EACvC,OAAO;AAAA,IACN,sBAAsB;AAAA,IACtB,wBAAwB;AAAA,EACzB;AAAA,EACA,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,iBAAiB,CAAC,IAAI,WAAoC;AACzD,SAAI,iCAAQ,kBAAiB,UAAS,iCAAQ,oBAAmB,OAAO;AACvE,YAAM,IAAI,UAAU;AAAA,IACrB;AAAA,EACD;AAAA,EACA,UAAU,IAAI,SAAS;AACtB,UAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,QAAI,IAAI,aAAa,WAAW;AAC/B,aAAO,SAAS,KAAK,EAAE,IAAI,KAAK,CAAC;AAAA,IAClC;AACA,WAAO,IAAI,SAAS,aAAa,EAAE,QAAQ,IAAI,CAAC;AAAA,EACjD;AAAA,EACA,YAAY,IAAI,WAAW;AAC1B,cAAU,KAAK,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC,CAAC;AAAA,EACnD;AAAA,EACA,SAAS;AAAA,IACR,eAAe,CAAC,IAAI,UAAkB;AACrC,aAAO,WAAW,KAAK;AAAA,IACxB;AAAA,IACA,gCAAgC,CAAC,MAAM;AACtC,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,IACA,kCAAkC,CAAC,MAAM;AACxC,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,IACA,qBAAqB,OAAO,MAAM;AACjC,YAAM,UAAU,MAAM,EAAE,MAAM,QAAQ;AAAA,QACrC,OAAO,CAAC,cAAc;AAAA,MACvB,CAAC;AACD,cAAO,mCAAS,SAAQ;AAAA,IACzB;AAAA,IACA,wBAAwB,OAAO,MAAM;AACpC,YAAM,UAAU,MAAM,EAAE,MAAM,QAAQ;AACtC,cAAO,mCAAS,SAAQ;AAAA,IACzB;AAAA,IACA,8BAA8B,CAAC,GAAG,UAAkB;AACnD,QAAE,UAAU,gBAAgB,EAAE,MAAM,CAAC;AAAA,IACtC;AAAA,IACA,8BAA8B,CAAC,GAAG,UAAkB;AACnD,QAAE,UAAU,gBAAgB,EAAE,MAAM,CAAC;AAAA,IACtC;AAAA,IACA,gCAAgC,CAAC,GAAG,UAAkB;AACrD,QAAE,UAAU,kBAAkB,EAAE,MAAM,CAAC;AAAA,IACxC;AAAA,EACD;AACD,CAAC;AAEM,IAAM,6BAA6B,MAAM;AAAA,EAC/C,OAAO,CAAC;AAAA,EACR,SAAS;AAAA,IACR,cAAc,OAAO,MAAM;AAC1B,YAAM,UAAU,MAAM,EAAE,MAAM,QAAQ;AACtC,cAAO,mCAAS,SAAQ;AAAA,IACzB;AAAA,EACD;AACD,CAAC;;;AClGM,IAAM,aAAa,MAAM;AAAA,EAC/B,aAAa,CAAC,GAAG,UAAiB;AACjC,WAAO;AAAA,MACN,cAAc;AAAA,MACd,eAAe;AAAA,IAChB;AAAA,EACD;AAAA,EAEA,UAAU,CAAC,GAAG,UAAU;AACvB,MAAE,MAAM,gBAAgB;AAAA,EACzB;AAAA,EAEA,SAAS;AAAA,IACR,WAAW,CAAC,MAAM;AACjB,aAAO;AAAA,QACN,cAAc,EAAE,MAAM;AAAA,QACtB,eAAe,EAAE,MAAM;AAAA,MACxB;AAAA,IACD;AAAA,EACD;AACD,CAAC;;;ACzBM,IAAM,oBAAoB,MAAM;AAAA,EACtC,OAAO,EAAE,OAAO,EAAE;AAAA,EAClB,SAAS;AAAA,IACR,eAAe;AAAA;AAAA,EAChB;AAAA,EACA,SAAS;AAAA,IACR,aAAa,OAAO,MAAM;AACzB,aAAO;AAAA,IACR;AAAA,IACA,YAAY,OAAO,MAAM;AAExB,YAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAG,CAAC;AACvD,aAAO;AAAA,IACR;AAAA,EACD;AACD,CAAC;AAGM,IAAM,mBAAmB,MAAM;AAAA,EACrC,OAAO,EAAE,OAAO,EAAE;AAAA,EAClB,SAAS;AAAA,IACR,eAAe;AAAA;AAAA,EAChB;AAAA,EACA,SAAS;AAAA,IACR,eAAe,OAAO,MAAM;AAE3B,YAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAG,CAAC;AACvD,aAAO;AAAA,IACR;AAAA,EACD;AACD,CAAC;AAGM,IAAM,sBAAsB,MAAM;AAAA,EACxC,OAAO,EAAE,OAAO,EAAE;AAAA,EAClB,SAAS;AAAA,IACR,cAAc,OAAO,MAAM;AAC1B,YAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AACtD,aAAO;AAAA,IACR;AAAA,EACD;AACD,CAAC;AAGM,IAAM,mBAAmB,MAAM;AAAA,EACrC,OAAO,EAAE,OAAO,EAAE;AAAA,EAClB,SAAS;AAAA,IACR,eAAe;AAAA;AAAA,EAChB;AAAA,EACA,SAAS;AAAA,IACR,YAAY,CAAC,MAAM;AAClB,aAAO;AAAA,IACR;AAAA,EACD;AACD,CAAC;;;ACtDM,IAAM,kBAAkB,MAAM;AAAA,EACpC,OAAO,EAAE,OAAO,EAAE;AAAA,EAClB,SAAS;AAAA;AAAA,IAER,WAAW,CAAC,GAAG,SAAS,MAAM;AAC7B,QAAE,MAAM,SAAS;AACjB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA;AAAA,IAEA,SAAS,CAAC,MAAM;AACf,aAAO;AAAA,QACN,cAAc,EAAE,MAAM;AAAA,QACtB,WAAW,KAAK,IAAI;AAAA,MACrB;AAAA,IACD;AAAA;AAAA,IAEA,OAAO,CAAC,MAAM;AACb,QAAE,MAAM,QAAQ;AAAA,IACjB;AAAA,EACD;AACD,CAAC;AAGM,IAAM,mBAAmB,MAAM;AAAA,EACrC,OAAO,EAAE,OAAO,GAAG,MAAM,KAAY;AAAA,EACrC,SAAS;AAAA;AAAA,IAER,kBAAkB,OAAO,GAAG,SAAS,MAAM;AAC1C,YAAM,QAAQ,QAAQ;AACtB,QAAE,MAAM,SAAS;AACjB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA;AAAA,IAEA,WAAW,OAAO,GAAG,OAAe;AACnC,YAAM,QAAQ,QAAQ;AAGtB,YAAM,OAAO,EAAE,IAAI,WAAW,KAAK,IAAI,EAAE;AACzC,QAAE,MAAM,OAAO;AACf,aAAO;AAAA,IACR;AAAA;AAAA,IAEA,gBAAgB,OAAO,GAAG,gBAAyB;AAClD,YAAM,QAAQ,QAAQ;AAEtB,UAAI,aAAa;AAChB,cAAM,IAAI,UAAU,mBAAmB;AAAA,MACxC;AAEA,aAAO;AAAA,IACR;AAAA,EACD;AACD,CAAC;AAGM,IAAM,eAAe,MAAM;AAAA,EACjC,OAAO,EAAE,SAAS,CAAC,EAAc;AAAA,EACjC,SAAS;AAAA;AAAA,IAER,iBAAiB,CAAC,MAAM;AACvB,aAAO,QAAQ,QAAQ,gBAAgB;AAAA,IACxC;AAAA;AAAA,IAEA,gBAAgB,CAAC,MAAuB;AACvC,aAAO,IAAI,QAAgB,CAAC,YAAY;AACvC,UAAE,MAAM,QAAQ,KAAK,SAAS;AAC9B,gBAAQ,eAAe;AAAA,MACxB,CAAC;AAAA,IACF;AAAA;AAAA,IAEA,iBAAiB,CAAC,MAAM;AACvB,aAAO,QAAQ,OAAO,IAAI,UAAU,oBAAoB,CAAC;AAAA,IAC1D;AAAA;AAAA,IAEA,YAAY,CAAC,MAAM;AAClB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,EACD;AACD,CAAC;;;AC9ED,SAAS,cAAc,KAAmD;AACzE,MAAI,CAAC,KAAK;AACT,WAAO;AAAA,EACR;AAEA,QAAM,SAAS,OAAO,OAAO,GAAG;AAChC,SAAO,OAAO,SAAS,IAAI,OAAO,CAAC,IAAI;AACxC;AAEA,SAAS,cAAc,OAAwB;AAC9C,MAAI,OAAO,UAAU,UAAU;AAC9B,WAAO,OAAO,KAAK;AAAA,EACpB;AACA,MAAI,OAAO,UAAU,UAAU;AAC9B,WAAO,OAAO,SAAS,KAAK,IAAI,KAAK,MAAM,KAAK,IAAI;AAAA,EACrD;AACA,MAAI,OAAO,UAAU,UAAU;AAC9B,UAAM,SAAS,OAAO,SAAS,OAAO,EAAE;AACxC,WAAO,OAAO,SAAS,MAAM,IAAI,SAAS;AAAA,EAC3C;AACA,SAAO;AACR;AAEA,SAAS,gBAAgB,QAA4B;AACpD,QAAM,aAAa,OACjB,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC,EAC1B,OAAO,CAAC,OAAO,OAAO,SAAS,EAAE,KAAK,KAAK,CAAC;AAC9C,SAAO,MAAM,KAAK,IAAI,IAAI,UAAU,CAAC;AACtC;AAEA,SAAS,YAAY,MAAsB;AAC1C,QAAM,iBAAiB,KAAK,IAAI,GAAG,KAAK,MAAM,IAAI,CAAC;AACnD,SAAO,IAAI,OAAO,cAAc;AACjC;AAEO,IAAM,aAAa,MAAM;AAAA,EAC/B,OAAO;AAAA,IACN,yBAAyB;AAAA,IACzB,yBAAyB;AAAA,EAC1B;AAAA,EACA,IAAI,GAAG;AAAA,IACN,WAAW,OAAOA,QAAO;AACxB,YAAMA,IAAG,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOhB;AAAA,IACF;AAAA,EACD,CAAC;AAAA,EACD,cAAc,OAAO,MAAM;AAC1B,QAAI,CAAC,EAAE,MAAM,yBAAyB;AACrC;AAAA,IACD;AAEA,QAAI,EAAE,MAAM,0BAA0B,GAAG;AACxC,YAAM,IAAI;AAAA,QAAc,CAAC,YACxB,WAAW,SAAS,EAAE,MAAM,uBAAuB;AAAA,MACpD;AAAA,IACD;AAEA,UAAM,EAAE,GAAG;AAAA,MACV,oFAAoF,KAAK,IAAI,CAAC;AAAA,IAC/F;AAAA,EACD;AAAA,EACA,SAAS;AAAA,IACR,2BAA2B,CAAC,GAAG,SAAkB,YAAoB;AACpE,QAAE,MAAM,0BAA0B;AAClC,QAAE,MAAM,0BAA0B,KAAK;AAAA,QACtC;AAAA,QACA,KAAK,MAAM,OAAO;AAAA,MACnB;AAAA,IACD;AAAA,IACA,0BAA0B,OAAO,MAAM;AA9EzC;AA+EG,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAC1B;AAAA,MACD;AACA,eAAO,aAAQ,CAAC,MAAT,mBAAY,UAAS;AAAA,IAC7B;AAAA,IACA,OAAO,OAAO,MAAM;AACnB,YAAM,EAAE,GAAG,QAAQ,uBAAuB;AAAA,IAC3C;AAAA,IACA,aAAa,OAAO,GAAG,UAAkB;AACxC,YAAM,EAAE,GAAG;AAAA,QACV,+DAA+D,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,MACzF;AACA,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAC1B;AAAA,MACD;AACA,aAAO,EAAE,IAAI,QAAQ,CAAC,EAAE,GAAG;AAAA,IAC5B;AAAA,IACA,WAAW,OAAO,MAAM;AACvB,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAM1B;AAAA,MACD;AACA,aAAO;AAAA,IACR;AAAA,IACA,UAAU,OAAO,GAAG,OAAe;AA3GrC;AA4GG,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAC1B,0CAA0C,EAAE;AAAA,MAC7C;AACA,eAAO,aAAQ,CAAC,MAAT,mBAAY,UAAS;AAAA,IAC7B;AAAA,IACA,UAAU,OAAO,MAAM;AACtB,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAC1B;AAAA,MACD;AACA,aAAO,QAAQ,CAAC,EAAE;AAAA,IACnB;AAAA,IACA,gBAAgB,OAAO,MAAM;AAC5B,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAC1B;AAAA,MACD;AACA,aAAO,QAAQ,CAAC,EAAE;AAAA,IACnB;AAAA,IACA,YAAY,OAAO,GAAG,UAAkB;AACvC,UAAI,SAAS,GAAG;AACf,eAAO,EAAE,OAAO,EAAE;AAAA,MACnB;AACA,YAAM,MAAM,KAAK,IAAI;AACrB,YAAM,SAAmB,CAAC;AAC1B,eAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC/B,eAAO,KAAK,UAAU,CAAC,UAAU,GAAG,GAAG;AAAA,MACxC;AACA,YAAM,EAAE,GAAG;AAAA,QACV,6DAA6D,OAAO,KAAK,IAAI,CAAC;AAAA,MAC/E;AACA,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,IACA,aAAa,OAAO,GAAG,IAAY,UAAkB;AACpD,YAAM,EAAE,GAAG;AAAA,QACV,iCAAiC,KAAK,gBAAgB,EAAE;AAAA,MACzD;AACA,aAAO,EAAE,SAAS,KAAK;AAAA,IACxB;AAAA,IACA,aAAa,OAAO,GAAG,OAAe;AACrC,YAAM,EAAE,GAAG,QAAQ,oCAAoC,EAAE,EAAE;AAAA,IAC5D;AAAA,IACA,mBAAmB,OAAO,GAAG,UAAkB;AAC9C,YAAM,EAAE,GAAG;AAAA,QACV,sEAAsE,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,MAChG;AAAA,IACD;AAAA,IACA,qBAAqB,OAAO,GAAG,UAAkB;AAChD,YAAM,EAAE,GAAG;AAAA,QACV,sEAAsE,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,MAChG;AAAA,IACD;AAAA,IACA,qBAAqB,OAAO,GAAG,SAAiB;AAC/C,YAAM,UAAU,IAAI,OAAO,IAAI;AAC/B,YAAM,EAAE,GAAG;AAAA,QACV,0EAA0E,OAAO,MAAM,KAAK,IAAI,CAAC;AAAA,MAClG;AACA,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAC1B;AAAA,MACD;AACA,aAAO,EAAE,IAAI,QAAQ,CAAC,EAAE,IAAI,KAAK;AAAA,IAClC;AAAA,IACA,gBAAgB,OAAO,GAAG,OAAe;AAxK3C;AAyKG,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAC1B,4DAA4D,EAAE;AAAA,MAC/D;AACA,eAAO,aAAQ,CAAC,MAAT,mBAAY,SAAQ;AAAA,IAC5B;AAAA,IACA,mBAAmB,OAAO,GAAG,OAAe,gBAAwB;AACnE,YAAM,kBAAkB,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,CAAC;AACrD,UAAI,oBAAoB,GAAG;AAC1B,eAAO,EAAE,OAAO,EAAE;AAAA,MACnB;AAEA,YAAM,UAAU,YAAY,WAAW;AACvC,YAAM,MAAM,KAAK,IAAI;AACrB,eAAS,IAAI,GAAG,IAAI,iBAAiB,KAAK;AACzC,cAAM,EAAE,GAAG;AAAA,UACV,oEAAoE,CAAC,OAAO,OAAO,MAAM,GAAG;AAAA,QAC7F;AAAA,MACD;AAEA,aAAO,EAAE,OAAO,gBAAgB;AAAA,IACjC;AAAA,IACA,wBAAwB,OACvB,GACA,QACA,eACI;AACJ,YAAM,mBAAmB,gBAAgB,MAAM;AAC/C,YAAM,uBAAuB,KAAK,IAAI,GAAG,KAAK,MAAM,UAAU,CAAC;AAC/D,UAAI,iBAAiB,WAAW,KAAK,yBAAyB,GAAG;AAChE,cAAM,YAAkD,CAAC;AACzD,eAAO;AAAA,MACR;AAEA,eAAS,IAAI,GAAG,IAAI,sBAAsB,KAAK;AAC9C,cAAM,QAAQ,iBAAiB,IAAI,iBAAiB,MAAM,KAAK;AAC/D,cAAM,EAAE,GAAG;AAAA,UACV,mCAAmC,CAAC,gBAAgB,KAAK;AAAA,QAC1D;AAAA,MACD;AAEA,aAAO,MAAM,EAAE,GAAG;AAAA,QACjB,gDAAgD,iBAAiB,KAAK,GAAG,CAAC;AAAA,MAC3E;AAAA,IACD;AAAA,IACA,cAAc,OAAO,MAAM;AAC1B,YAAM,OAAO,MAAM,EAAE,GAAG;AAAA,QACvB;AAAA,MACD;AACA,aAAO,cAAc,cAAc,KAAK,CAAC,CAAC,CAAC;AAAA,IAC5C;AAAA,IACA,QAAQ,OAAO,MAAM;AACpB,YAAM,EAAE,GAAG,QAAQ,QAAQ;AAAA,IAC5B;AAAA,IACA,gBAAgB,OAAO,MAAM;AAC5B,YAAM,OAAO,MAAM,EAAE,GAAG;AAAA,QACvB;AAAA,MACD;AACA,YAAM,QAAQ,cAAc,KAAK,CAAC,CAAC;AACnC,aAAO,OAAO,SAAS,EAAE;AAAA,IAC1B;AAAA,IACA,kBAAkB,OAAO,GAAG,WAAmB,eAAuB;AACrE,YAAM,sBAAsB,KAAK,IAAI,GAAG,KAAK,MAAM,SAAS,CAAC;AAC7D,YAAM,uBAAuB,KAAK,IAAI,GAAG,KAAK,MAAM,UAAU,CAAC;AAC/D,YAAM,MAAM,KAAK,IAAI;AAErB,eAAS,IAAI,GAAG,IAAI,qBAAqB,KAAK;AAC7C,cAAM,UAAU,YAAY,OAAQ,IAAI,IAAK,GAAG;AAChD,cAAM,EAAE,GAAG;AAAA,UACV,6EAA6E,IAAI,CAAC,WAAW,CAAC,OAAO,OAAO,MAAM,GAAG;AAAA,QACtH;AAAA,MACD;AAEA,eAAS,IAAI,GAAG,IAAI,sBAAsB,KAAK;AAC9C,cAAM,KAAM,IAAI,sBAAuB;AACvC,YAAI,IAAI,MAAM,GAAG;AAChB,gBAAM,EAAE,GAAG,QAAQ,oCAAoC,EAAE,EAAE;AAAA,QAC5D,OAAO;AACN,gBAAM,UAAU,YAAY,MAAO,IAAI,IAAK,EAAE;AAC9C,gBAAM,EAAE,GAAG;AAAA,YACV,6EAA6E,EAAE,UAAU,CAAC,OAAO,OAAO,MAAM,MAAM,CAAC;AAAA,UACtH;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IACA,cAAc,OAAO,GAAG,IAAY,UAAkB;AACrD,UAAI,QAAQ;AACZ,UAAI,SAAS,GAAG;AACf,eAAO,EAAE,MAAM;AAAA,MAChB;AACA,YAAM,aAAuB,CAAC,OAAO;AACrC,eAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC/B,gBAAQ,WAAW,CAAC;AACpB,mBAAW;AAAA,UACV,iCAAiC,KAAK,gBAAgB,EAAE;AAAA,QACzD;AAAA,MACD;AACA,iBAAW,KAAK,QAAQ;AACxB,YAAM,EAAE,GAAG,QAAQ,WAAW,KAAK,IAAI,CAAC;AACxC,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,IACA,sBAAsB,OAAO,GAAG,UAAkB;AA7QpD;AA8QG,YAAM,EAAE,GAAG;AAAA,QACV,sEAAsE,KAAK,UAAU,KAAK,IAAI,CAAC,oCAAoC,KAAK;AAAA,MACzI;AACA,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAC1B;AAAA,MACD;AACA,eAAO,aAAQ,CAAC,MAAT,mBAAY,UAAS;AAAA,IAC7B;AAAA,IACA,cAAc,CAAC,MAAM;AACpB,QAAE,MAAM;AAAA,IACT;AAAA,EACD;AAAA,EACA,SAAS;AAAA,IACR,eAAe;AAAA,IACf,cAAc;AAAA,EACf;AACD,CAAC;;;AC9RM,IAAM,aAAa;AAAA,EACzB,SAAS;AAAA,IACR,SAAS;AAAA,MACR;AAAA,QACC,KAAK;AAAA,QACL,MAAM;AAAA,QACN,KAAK;AAAA,QACL,aAAa;AAAA,MACd;AAAA,IACD;AAAA,EACD;AAAA,EACA,YAAY;AAAA,IACX,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQR;AACD;;;ACnBO,IAAM,WAAW,YAAY,aAAa;AAAA,EAChD,IAAI,QAAQ,IAAI,EAAE,WAAW,EAAE,eAAe,KAAK,CAAC;AAAA,EACpD,OAAO,KAAK,OAAO,EAAE,QAAQ;AAAA,EAC7B,SAAS,KAAK,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAAA,EAC7C,WAAW,QAAQ,YAAY,EAAE,QAAQ;AAC1C,CAAC;AAEM,IAAM,SAAS;AAAA,EACrB;AACD;;;ACNA,SAASC,eAAc,KAAmD;AACzE,MAAI,CAAC,KAAK;AACT,WAAO;AAAA,EACR;AAEA,QAAM,SAAS,OAAO,OAAO,GAAG;AAChC,SAAO,OAAO,SAAS,IAAI,OAAO,CAAC,IAAI;AACxC;AAEA,SAASC,eAAc,OAAwB;AAC9C,MAAI,OAAO,UAAU,UAAU;AAC9B,WAAO,OAAO,KAAK;AAAA,EACpB;AACA,MAAI,OAAO,UAAU,UAAU;AAC9B,WAAO,OAAO,SAAS,KAAK,IAAI,KAAK,MAAM,KAAK,IAAI;AAAA,EACrD;AACA,MAAI,OAAO,UAAU,UAAU;AAC9B,UAAM,SAAS,OAAO,SAAS,OAAO,EAAE;AACxC,WAAO,OAAO,SAAS,MAAM,IAAI,SAAS;AAAA,EAC3C;AACA,SAAO;AACR;AAEA,SAASC,iBAAgB,QAA4B;AACpD,QAAM,aAAa,OACjB,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC,EAC1B,OAAO,CAAC,OAAO,OAAO,SAAS,EAAE,KAAK,KAAK,CAAC;AAC9C,SAAO,MAAM,KAAK,IAAI,IAAI,UAAU,CAAC;AACtC;AAEA,SAASC,aAAY,MAAsB;AAC1C,QAAM,iBAAiB,KAAK,IAAI,GAAG,KAAK,MAAM,IAAI,CAAC;AACnD,SAAO,IAAI,OAAO,cAAc;AACjC;AAEO,IAAM,iBAAiB,MAAM;AAAA,EACnC,OAAO;AAAA,IACN,yBAAyB;AAAA,IACzB,yBAAyB;AAAA,EAC1B;AAAA,EACA,IAAIC,IAAG;AAAA,IACN;AAAA,IACA;AAAA,EACD,CAAC;AAAA,EACD,cAAc,OAAO,MAAM;AAC1B,QAAI,CAAC,EAAE,MAAM,yBAAyB;AACrC;AAAA,IACD;AAEA,QAAI,EAAE,MAAM,0BAA0B,GAAG;AACxC,YAAM,IAAI;AAAA,QAAc,CAAC,YACxB,WAAW,SAAS,EAAE,MAAM,uBAAuB;AAAA,MACpD;AAAA,IACD;AAEA,UAAM,EAAE,GAAG;AAAA,MACV,oFAAoF,KAAK,IAAI,CAAC;AAAA,IAC/F;AAAA,EACD;AAAA,EACA,SAAS;AAAA,IACR,2BAA2B,CAAC,GAAG,SAAkB,YAAoB;AACpE,QAAE,MAAM,0BAA0B;AAClC,QAAE,MAAM,0BAA0B,KAAK;AAAA,QACtC;AAAA,QACA,KAAK,MAAM,OAAO;AAAA,MACnB;AAAA,IACD;AAAA,IACA,0BAA0B,OAAO,MAAM;AAxEzC;AAyEG,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAC1B;AAAA,MACD;AACA,eAAO,aAAQ,CAAC,MAAT,mBAAY,UAAS;AAAA,IAC7B;AAAA,IACA,OAAO,OAAO,MAAM;AACnB,YAAM,EAAE,GAAG,QAAQ,uBAAuB;AAAA,IAC3C;AAAA,IACA,aAAa,OAAO,GAAG,UAAkB;AACxC,YAAM,EAAE,GAAG;AAAA,QACV,+DAA+D,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,MACzF;AACA,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAC1B;AAAA,MACD;AACA,aAAO,EAAE,IAAI,QAAQ,CAAC,EAAE,GAAG;AAAA,IAC5B;AAAA,IACA,WAAW,OAAO,MAAM;AACvB,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAM1B;AAAA,MACD;AACA,aAAO;AAAA,IACR;AAAA,IACA,UAAU,OAAO,GAAG,OAAe;AArGrC;AAsGG,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAC1B,0CAA0C,EAAE;AAAA,MAC7C;AACA,eAAO,aAAQ,CAAC,MAAT,mBAAY,UAAS;AAAA,IAC7B;AAAA,IACA,UAAU,OAAO,MAAM;AACtB,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAC1B;AAAA,MACD;AACA,aAAO,QAAQ,CAAC,EAAE;AAAA,IACnB;AAAA,IACA,gBAAgB,OAAO,MAAM;AAjH/B;AAkHG,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAC1B;AAAA,MACD;AACA,eAAO,aAAQ,CAAC,MAAT,mBAAY,UAAS;AAAA,IAC7B;AAAA,IACA,YAAY,OAAO,GAAG,UAAkB;AACvC,UAAI,SAAS,GAAG;AACf,eAAO,EAAE,OAAO,EAAE;AAAA,MACnB;AACA,YAAM,MAAM,KAAK,IAAI;AACrB,YAAM,SAAmB,CAAC;AAC1B,eAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC/B,eAAO,KAAK,UAAU,CAAC,UAAU,GAAG,GAAG;AAAA,MACxC;AACA,YAAM,EAAE,GAAG;AAAA,QACV,6DAA6D,OAAO,KAAK,IAAI,CAAC;AAAA,MAC/E;AACA,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,IACA,aAAa,OAAO,GAAG,IAAY,UAAkB;AACpD,YAAM,EAAE,GAAG;AAAA,QACV,iCAAiC,KAAK,gBAAgB,EAAE;AAAA,MACzD;AACA,aAAO,EAAE,SAAS,KAAK;AAAA,IACxB;AAAA,IACA,aAAa,OAAO,GAAG,OAAe;AACrC,YAAM,EAAE,GAAG,QAAQ,oCAAoC,EAAE,EAAE;AAAA,IAC5D;AAAA,IACA,mBAAmB,OAAO,GAAG,UAAkB;AAC9C,YAAM,EAAE,GAAG;AAAA,QACV,sEAAsE,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,MAChG;AAAA,IACD;AAAA,IACA,qBAAqB,OAAO,GAAG,UAAkB;AAChD,YAAM,EAAE,GAAG;AAAA,QACV,sEAAsE,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,MAChG;AAAA,IACD;AAAA,IACA,qBAAqB,OAAO,GAAG,SAAiB;AAC/C,YAAM,UAAU,IAAI,OAAO,IAAI;AAC/B,YAAM,EAAE,GAAG;AAAA,QACV,0EAA0E,OAAO,MAAM,KAAK,IAAI,CAAC;AAAA,MAClG;AACA,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAC1B;AAAA,MACD;AACA,aAAO,EAAE,IAAI,QAAQ,CAAC,EAAE,IAAI,KAAK;AAAA,IAClC;AAAA,IACA,gBAAgB,OAAO,GAAG,OAAe;AAlK3C;AAmKG,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAC1B,4DAA4D,EAAE;AAAA,MAC/D;AACA,eAAO,aAAQ,CAAC,MAAT,mBAAY,SAAQ;AAAA,IAC5B;AAAA,IACA,mBAAmB,OAAO,GAAG,OAAe,gBAAwB;AACnE,YAAM,kBAAkB,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,CAAC;AACrD,UAAI,oBAAoB,GAAG;AAC1B,eAAO,EAAE,OAAO,EAAE;AAAA,MACnB;AAEA,YAAM,UAAUD,aAAY,WAAW;AACvC,YAAM,MAAM,KAAK,IAAI;AACrB,eAAS,IAAI,GAAG,IAAI,iBAAiB,KAAK;AACzC,cAAM,EAAE,GAAG;AAAA,UACV,oEAAoE,CAAC,OAAO,OAAO,MAAM,GAAG;AAAA,QAC7F;AAAA,MACD;AAEA,aAAO,EAAE,OAAO,gBAAgB;AAAA,IACjC;AAAA,IACA,wBAAwB,OACvB,GACA,QACA,eACI;AACJ,YAAM,mBAAmBD,iBAAgB,MAAM;AAC/C,YAAM,uBAAuB,KAAK,IAAI,GAAG,KAAK,MAAM,UAAU,CAAC;AAC/D,UAAI,iBAAiB,WAAW,KAAK,yBAAyB,GAAG;AAChE,cAAM,YAAkD,CAAC;AACzD,eAAO;AAAA,MACR;AAEA,eAAS,IAAI,GAAG,IAAI,sBAAsB,KAAK;AAC9C,cAAM,QAAQ,iBAAiB,IAAI,iBAAiB,MAAM,KAAK;AAC/D,cAAM,EAAE,GAAG;AAAA,UACV,mCAAmC,CAAC,gBAAgB,KAAK;AAAA,QAC1D;AAAA,MACD;AAEA,aAAO,MAAM,EAAE,GAAG;AAAA,QACjB,gDAAgD,iBAAiB,KAAK,GAAG,CAAC;AAAA,MAC3E;AAAA,IACD;AAAA,IACA,cAAc,OAAO,MAAM;AAC1B,YAAM,OAAO,MAAM,EAAE,GAAG;AAAA,QACvB;AAAA,MACD;AACA,aAAOD,eAAcD,eAAc,KAAK,CAAC,CAAC,CAAC;AAAA,IAC5C;AAAA,IACA,QAAQ,OAAO,MAAM;AACpB,YAAM,EAAE,GAAG,QAAQ,QAAQ;AAAA,IAC5B;AAAA,IACA,gBAAgB,OAAO,MAAM;AAC5B,YAAM,OAAO,MAAM,EAAE,GAAG;AAAA,QACvB;AAAA,MACD;AACA,YAAM,QAAQA,eAAc,KAAK,CAAC,CAAC;AACnC,aAAO,OAAO,SAAS,EAAE;AAAA,IAC1B;AAAA,IACA,kBAAkB,OAAO,GAAG,WAAmB,eAAuB;AACrE,YAAM,sBAAsB,KAAK,IAAI,GAAG,KAAK,MAAM,SAAS,CAAC;AAC7D,YAAM,uBAAuB,KAAK,IAAI,GAAG,KAAK,MAAM,UAAU,CAAC;AAC/D,YAAM,MAAM,KAAK,IAAI;AAErB,eAAS,IAAI,GAAG,IAAI,qBAAqB,KAAK;AAC7C,cAAM,UAAUG,aAAY,OAAQ,IAAI,IAAK,GAAG;AAChD,cAAM,EAAE,GAAG;AAAA,UACV,6EAA6E,IAAI,CAAC,WAAW,CAAC,OAAO,OAAO,MAAM,GAAG;AAAA,QACtH;AAAA,MACD;AAEA,eAAS,IAAI,GAAG,IAAI,sBAAsB,KAAK;AAC9C,cAAM,KAAM,IAAI,sBAAuB;AACvC,YAAI,IAAI,MAAM,GAAG;AAChB,gBAAM,EAAE,GAAG,QAAQ,oCAAoC,EAAE,EAAE;AAAA,QAC5D,OAAO;AACN,gBAAM,UAAUA,aAAY,MAAO,IAAI,IAAK,EAAE;AAC9C,gBAAM,EAAE,GAAG;AAAA,YACV,6EAA6E,EAAE,UAAU,CAAC,OAAO,OAAO,MAAM,MAAM,CAAC;AAAA,UACtH;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IACA,cAAc,OAAO,GAAG,IAAY,UAAkB;AACrD,UAAI,QAAQ;AACZ,UAAI,SAAS,GAAG;AACf,eAAO,EAAE,MAAM;AAAA,MAChB;AACA,YAAM,aAAuB,CAAC,OAAO;AACrC,eAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC/B,gBAAQ,WAAW,CAAC;AACpB,mBAAW;AAAA,UACV,iCAAiC,KAAK,gBAAgB,EAAE;AAAA,QACzD;AAAA,MACD;AACA,iBAAW,KAAK,QAAQ;AACxB,YAAM,EAAE,GAAG,QAAQ,WAAW,KAAK,IAAI,CAAC;AACxC,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,IACA,sBAAsB,OAAO,GAAG,UAAkB;AAvQpD;AAwQG,YAAM,EAAE,GAAG;AAAA,QACV,sEAAsE,KAAK,UAAU,KAAK,IAAI,CAAC,oCAAoC,KAAK;AAAA,MACzI;AACA,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAC1B;AAAA,MACD;AACA,eAAO,aAAQ,CAAC,MAAT,mBAAY,UAAS;AAAA,IAC7B;AAAA,IACA,cAAc,CAAC,MAAM;AACpB,QAAE,MAAM;AAAA,IACT;AAAA,EACD;AAAA,EACA,SAAS;AAAA,IACR,eAAe;AAAA,IACf,cAAc;AAAA,EACf;AACD,CAAC;;;AC/QD,IAAM,iBAAiB,oBAAI,QAAwB;AAEnD,IAAM,eAAe,oBAAI,IAAoB;AAC7C,IAAM,gBAAgB,oBAAI,IAAoB;AAC9C,IAAM,gBAAgB,oBAAI,IAAoB;AAE9C,SAAS,UAAU,KAA0B,SAAiB;AAC7D,MAAI,IAAI,UAAU,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC;AAC7C;AAEA,SAAS,UAAU,SAAkC;AACpD,SAAO;AAAA,IACN,QAAQ,aAAa,IAAI,OAAO,KAAK;AAAA,IACrC,SAAS,cAAc,IAAI,OAAO,KAAK;AAAA,IACvC,SAAS,cAAc,IAAI,OAAO,KAAK;AAAA,EACxC;AACD;AAEA,SAAS,uBAA+B;AACvC,MAAI,QAAQ;AACZ,aAAW,SAAS,cAAc,OAAO,GAAG;AAC3C,aAAS;AAAA,EACV;AACA,SAAO;AACR;AAEA,IAAM,eAAe,GAAG;AAAA,EACvB,WAAW,OAAO,aAAa;AAC9B,UAAM,SAAS,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAMtB;AAAA,EACF;AACD,CAAC;AAED,IAAM,oBAAoB;AAAA,EACzB,cAAc,OAAO,QAAyD;AAC7E,UAAM,SAAS,MAAM,aAAa,aAAa,GAAG;AAClD,mBAAe,IAAI,QAAkB,IAAI,OAAO;AAChD,cAAU,cAAc,IAAI,OAAO;AACnC,WAAO;AAAA,EACR;AAAA,EACA,WAAW,OAAO,WAAyD;AAC1E,UAAM,UAAU,eAAe,IAAI,MAAgB;AACnD,QAAI,SAAS;AACZ,gBAAU,eAAe,OAAO;AAAA,IACjC;AACA,UAAM,aAAa,UAAU,MAAM;AAAA,EACpC;AAAA,EACA,WAAW,OAAO,WAAsE;AA7DzF;AA8DE,UAAM,UAAU,eAAe,IAAI,MAAgB;AACnD,QAAI,SAAS;AACZ,gBAAU,eAAe,OAAO;AAAA,IACjC;AACC,YAAM,kBAAa,cAAb,sCAAyB;AAAA,EAChC;AACD;AAED,IAAM,2BAA2B;AAAA,EAChC,cAAc,OAAO,QAAyD;AAC7E,UAAM,SAAS,MAAM,aAAa,aAAa,GAAG;AAClD,mBAAe,IAAI,QAAkB,IAAI,OAAO;AAChD,cAAU,cAAc,IAAI,OAAO;AACnC,WAAO;AAAA,EACR;AAAA,EACA,WAAW,OAAO,WAAyD;AAC1E,UAAM,UAAU,eAAe,IAAI,MAAgB;AACnD,QAAI,SAAS;AACZ,gBAAU,eAAe,OAAO;AAAA,IACjC;AACA,UAAM,IAAI,MAAM,wBAAwB;AAAA,EACzC;AAAA,EACA,WAAW,OAAO,WAAsE;AApFzF;AAqFE,UAAM,UAAU,eAAe,IAAI,MAAgB;AACnD,QAAI,SAAS;AACZ,gBAAU,eAAe,OAAO;AAAA,IACjC;AACA,YAAM,kBAAa,cAAb,sCAAyB;AAAA,EAChC;AACD;AAEO,IAAM,cAAc,MAAM;AAAA,EAChC,IAAI;AAAA,EACJ,SAAS;AAAA,IACR,YAAY,CAAC,MAAM,EAAE;AAAA,IACrB,MAAM,MAAM;AAAA,IACZ,aAAa,OAAO,GAAG,UAAkB;AACxC,YAAM,EAAE,GAAG;AAAA,QACV;AAAA,QACA;AAAA,QACA,KAAK,IAAI;AAAA,MACV;AAAA,IACD;AAAA,IACA,UAAU,OAAO,MAAM;AAzGzB;AA0GG,YAAM,UAAU,MAAM,EAAE,GAAG;AAAA,QAC1B;AAAA,MACD;AACA,eAAO,aAAQ,CAAC,MAAT,mBAAY,UAAS;AAAA,IAC7B;AAAA,IACA,cAAc,CAAC,MAAM;AACpB,QAAE,MAAM;AAAA,IACT;AAAA,IACA,gBAAgB,CAAC,MAAM;AACtB,QAAE,QAAQ;AAAA,IACX;AAAA,EACD;AAAA,EACA,SAAS;AAAA,IACR,cAAc;AAAA,EACf;AACD,CAAC;AAEM,IAAM,qBAAqB,MAAM;AAAA,EACvC,IAAI;AAAA,EACJ,SAAS;AAAA,IACR,MAAM,MAAM;AAAA,EACb;AACD,CAAC;AAEM,IAAM,sBAAsB,MAAM;AAAA,EACxC,SAAS;AAAA,IACR,WAAW,CAAC,IAAI,YAAoB;AACnC,aAAO,UAAU,OAAO;AAAA,IACzB;AAAA,IACA,sBAAsB,MAAM;AAC3B,aAAO,qBAAqB;AAAA,IAC7B;AAAA,EACD;AACD,CAAC;;;ACzIM,IAAM,qBAAqB,MAAM;AAAA,EACvC,OAAO;AAAA,IACN,OAAO;AAAA,IACP,aAAa;AAAA,EACd;AAAA,EACA,SAAS;AAAA;AAAA,IAER,UAAU,CAAC,GAAG,aAAqB;AAClC,QAAE,MAAM,QAAQ;AAChB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA;AAAA,IAEA,mBAAmB,CAAC,GAAG,UAAkB;AACxC,eAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC/B,UAAE,MAAM;AAAA,MACT;AACA,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA;AAAA,IAEA,UAAU,CAAC,MAAM;AAChB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA;AAAA,IAEA,YAAY,CAAC,MAAM;AAClB,YAAM,UAAU,EAAE,MAAM,QAAQ;AAChC,aAAO;AAAA,IACR;AAAA;AAAA,IAEA,gBAAgB,CAAC,MAAM;AACtB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA;AAAA,IAEA,kBAAkB,CAAC,MAAM;AACxB,QAAE,MAAM,cAAc;AAAA,IACvB;AAAA,EACD;AAAA;AAAA,EAEA,eAAe,CAAC,MAAM;AACrB,MAAE,MAAM;AAAA,EACT;AACD,CAAC;;;ACxCM,IAAM,oBAAoB,MAAM;AAAA,EACtC,OAAO,EAAE,OAAO,GAAG,cAAc,CAAC,EAAc;AAAA,EAChD,iBAAiB,CAAC,GAAG,WAA8B;AAClD,WAAO;AAAA,MACN,MAAM,OAAO,QAAQ;AAAA,IACtB;AAAA,EACD;AAAA,EACA,WAAW,CAAC,GAAG,SAAS;AAEvB,MAAE,MAAM,aAAa,KAAK,KAAK,MAAM,IAAI;AAAA,EAC1C;AAAA,EACA,SAAS;AAAA,IACR,WAAW,CAAC,GAAG,MAAc;AAC5B,QAAE,MAAM,SAAS;AACjB,QAAE,UAAU,YAAY;AAAA,QACvB,OAAO,EAAE,MAAM;AAAA,QACf,IAAI,EAAE,KAAK,MAAM;AAAA,MAClB,CAAC;AACD,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,IACA,iBAAiB,CAAC,MAAM;AACvB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,EACD;AACD,CAAC;;;AChBM,IAAM,iBAAiB,MAAM;AAAA,EACnC,OAAO;AAAA,IACN,eAAe;AAAA,IACf,oBAAoB;AAAA,EACrB;AAAA;AAAA,EAEA,iBAAiB,CAChB,GACA,WACe;AACf,WAAO;AAAA,MACN,WAAU,iCAAQ,aAAY;AAAA,MAC9B,OAAM,iCAAQ,SAAQ;AAAA,MACtB,SAAS;AAAA,MACT,WAAW,KAAK,IAAI;AAAA,MACpB,UAAS,iCAAQ,YAAW;AAAA,IAC7B;AAAA,EACD;AAAA;AAAA,EAEA,WAAW,CAAC,GAAG,SAAS;AAEvB,MAAE,UAAU,iBAAiB;AAAA,MAC5B,IAAI,KAAK;AAAA,MACT,UAAU;AAAA,MACV,MAAM;AAAA,IACP,CAAC;AAAA,EACF;AAAA;AAAA,EAEA,cAAc,CAAC,GAAG,SAAS;AAtC5B;AAuCE,QAAI,GAAC,UAAK,UAAL,mBAAY,UAAS;AACzB,QAAE,MAAM,sBAAsB;AAC9B,QAAE,UAAU,oBAAoB;AAAA,QAC/B,IAAI,KAAK;AAAA,MACV,CAAC;AAAA,IACF;AAAA,EACD;AAAA,EACA,SAAS;AAAA;AAAA,IAER,sBAAsB,CAAC,GAAG,SAAS,MAAM;AACxC,QAAE,KAAK,MAAM,WAAW;AAAA,IACzB;AAAA;AAAA,IAGA,wBAAwB,CAAC,GAAG,SAAS,MAAM;AAC1C,QAAE,MAAM,iBAAiB;AACzB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA;AAAA,IAGA,oBAAoB,CAAC,MAAM;AAC1B,aAAO,EAAE,IAAI,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,MAAM;AAAA,IACzC;AAAA;AAAA,IAGA,kBAAkB,CAAC,MAAM;AACxB,aAAO,EAAE,MACP,QAAQ,EACR,OAAO,CAACE,OAAG;AAnEhB;AAmEmB,kBAAC,KAAAA,GAAE,CAAC,EAAE,UAAL,mBAAY;AAAA,OAAO,EAClC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EACf,QAAQ;AAAA,IACX;AAAA;AAAA,IAGA,uBAAuB,CAAC,MAAM;AAC7B,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA;AAAA,IAGA,wBAAwB,CAAC,MAAM;AAC9B,aAAO,EAAE,MACP,QAAQ,EACR,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,EAAE,IAAI,GAAG,KAAK,MAAM,EAAE,EAC3C,QAAQ;AAAA,IACX;AAAA;AAAA,IAGA,kBAAkB,CAAC,GAAG,UAAkB,YAAoB;AAC3D,UAAI,EAAE,MAAM,IAAI,QAAQ,GAAG;AAC1B,UAAE,MACA,IAAI,QAAQ,EACZ,KAAK,iBAAiB,EAAE,MAAM,EAAE,KAAK,IAAI,QAAQ,CAAC;AACpD,eAAO;AAAA,MACR,OAAO;AACN,eAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA,IAGA,kBAAkB,CACjB,GACA,YACI;AACJ,UAAI,QAAQ,SAAU,GAAE,KAAK,MAAM,WAAW,QAAQ;AACtD,UAAI,QAAQ,KAAM,GAAE,KAAK,MAAM,OAAO,QAAQ;AAC9C,aAAO,EAAE,KAAK;AAAA,IACf;AAAA,IACA,gBAAgB,CAAC,GAAG,WAAoB;AACvC,QAAE,KAAK,WAAW,UAAU,iBAAiB;AAC7C,aAAO;AAAA,IACR;AAAA,EACD;AACD,CAAC;;;AC7GM,IAAM,UAAU,MAAM;AAAA,EAC5B,OAAO,EAAE,OAAO,EAAE;AAAA,EAClB,SAAS;AAAA,IACR,WAAW,CAAC,GAAG,MAAc;AAC5B,QAAE,MAAM,SAAS;AACjB,QAAE,UAAU,YAAY,EAAE,MAAM,KAAK;AACrC,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,IACA,UAAU,CAAC,GAAG,MAAc;AAC3B,QAAE,MAAM,QAAQ;AAChB,QAAE,UAAU,YAAY,CAAC;AACzB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,IACA,UAAU,CAAC,MAAM;AAChB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,IACA,QAAQ,CAAC,MAAM;AACd,aAAO,EAAE;AAAA,IACV;AAAA,EACD;AACD,CAAC;;;ACpBM,IAAM,cAAc,MAAM;AAAA,EAChC,OAAO;AAAA,IACN,iBAAiB;AAAA,EAClB;AAAA,EACA,WAAW,EAAE,OAAO,EAAE;AAAA,EACtB,WAAW,CAAC,GAAG,SAAS;AACvB,MAAE,MAAM,mBAAmB;AAAA,EAC5B;AAAA,EACA,cAAc,CAAC,GAAG,SAAS;AAI1B,MAAE,MAAM,mBAAmB;AAAA,EAC5B;AAAA,EACA,SAAS;AAAA,IACR,WAAW,CAAC,GAAG,MAAc;AAC5B,QAAE,KAAK,MAAM,SAAS;AACtB,QAAE,UAAU,YAAY,EAAE,KAAK,MAAM,KAAK;AAAA,IAC3C;AAAA,IACA,UAAU,CAAC,GAAG,MAAc;AAC3B,QAAE,KAAK,MAAM,QAAQ;AACrB,QAAE,UAAU,YAAY,CAAC;AAAA,IAC1B;AAAA,IACA,UAAU,CAAC,MAAM;AAChB,aAAO,EAAE,KAAK,MAAM;AAAA,IACrB;AAAA,IACA,oBAAoB,CAAC,MAAM;AAC1B,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,EACD;AACD,CAAC;;;AC7BM,IAAM,kBAAkB,MAAM;AAAA,EACpC,OAAO,EAAE,iBAAiB,CAAC,EAAc;AAAA,EACzC,SAAS;AAAA,IACR,iBAAiB,CAAC,GAAG,aAAqB;AACzC,QAAE,MAAM,gBAAgB,KAAK,QAAQ;AAAA,IACtC;AAAA,IACA,cAAc,CAAC,GAAG,aAAqB;AACtC,aAAO,EAAE,MAAM,gBAAgB,SAAS,QAAQ;AAAA,IACjD;AAAA,IACA,OAAO,CAAC,MAAM;AACb,QAAE,MAAM,kBAAkB,CAAC;AAAA,IAC5B;AAAA,EACD;AACD,CAAC;AAEM,IAAM,eAAe,MAAM;AAAA,EACjC,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG;AAAA,EAC3B,QAAQ,CAAC,MAAM;AAEd,MAAE,MAAM,MAAM,EAAE,IAAI,KAAK,GAAG;AAAA,EAC7B;AAAA,EACA,WAAW,OAAO,MAAM;AACvB,UAAM,SAAS,EAAE,OAAwB;AACzC,UAAM,WAAW,OAAO,gBAAgB,YAAY,CAAC,UAAU,CAAC;AAChE,UAAM,SAAS,gBAAgB,EAAE,MAAM,GAAG;AAAA,EAC3C;AAAA,EACA,SAAS;AAAA,IACR,UAAU,OAAO,GAAG,aAAqB;AACxC,QAAE,MAAM,QAAQ;AAChB,YAAM,EAAE,UAAU,EAAE,WAAW,KAAK,CAAC;AACrC,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,IACA,UAAU,CAAC,MAAM;AAChB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,IACA,SAAS,CAAC,MAAM;AACf,QAAE,QAAQ;AAAA,IACX;AAAA,EACD;AACD,CAAC;;;ACxCM,IAAM,qBAAqB,MAAM;AAAA,EACvC,OAAO;AAAA,IACN,UAAU,CAAC;AAAA,EACZ;AAAA,EACA,SAAS;AAAA;AAAA,IAER,kBAAkB,MAAM;AACvB,YAAM,IAAI,UAAU,sBAAsB;AAAA,IAC3C;AAAA;AAAA,IAGA,oBAAoB,MAAM;AACzB,YAAM,IAAI,UAAU,0BAA0B;AAAA,QAC7C,MAAM;AAAA,QACN,UAAU;AAAA,UACT,QAAQ;AAAA,UACR,WAAW,KAAK,IAAI;AAAA,QACrB;AAAA,MACD,CAAC;AAAA,IACF;AAAA;AAAA,IAGA,oBAAoB,MAAM;AACzB,YAAM,IAAI,MAAM,2BAA2B;AAAA,IAC5C;AAAA;AAAA,IAGA,kBAAkB,MAAM;AACvB,aAAO;AAAA,IACR;AAAA;AAAA,IAGA,eAAe,OAAO,MAAM;AAE3B,aAAO,IAAI,QAAQ,CAAC,YAAY;AAC/B,mBAAW,MAAM;AAChB,kBAAQ,6CAA6C;AAAA,QACtD,GAAG,GAAK;AAAA,MACT,CAAC;AAAA,IACF;AAAA;AAAA,IAGA,eAAe,OAAO,GAAG,YAAoB;AAC5C,aAAO,IAAI,QAAQ,CAAC,YAAY;AAC/B,mBAAW,MAAM;AAChB,kBAAQ,mBAAmB,OAAO,IAAI;AAAA,QACvC,GAAG,OAAO;AAAA,MACX,CAAC;AAAA,IACF;AAAA;AAAA,IAGA,UAAU,CAAC,GAAG,UAAkB;AAC/B,QAAE,MAAM,SAAS,KAAK,KAAK;AAC3B,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA;AAAA,IAGA,aAAa,CAAC,MAAM;AACnB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA;AAAA,IAGA,eAAe,CAAC,MAAM;AACrB,QAAE,MAAM,WAAW,CAAC;AACpB,aAAO;AAAA,IACR;AAAA,EACD;AAAA,EACA,SAAS;AAAA,IACR,eAAe;AAAA;AAAA,EAChB;AACD,CAAC;AAGM,IAAM,qBAAqB,MAAM;AAAA,EACvC,OAAO,CAAC;AAAA,EACR,SAAS;AAAA,IACR,aAAa,YAAY;AACxB,YAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AACtD,aAAO;AAAA,IACR;AAAA,IACA,YAAY,YAAY;AACvB,YAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAG,CAAC;AACvD,aAAO;AAAA,IACR;AAAA,EACD;AAAA,EACA,SAAS;AAAA,IACR,eAAe;AAAA;AAAA,EAChB;AACD,CAAC;;;ACxFM,IAAM,oCAAoC,MAAM;AAAA,EACtD,OAAO;AAAA,IACN,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,sBAAsB,CAAC;AAAA,EACxB;AAAA,EACA,iBAAiB,OAAO,CAAC;AAAA,EACzB,QAAQ,CAAC,MAAM;AACd,MAAE,MAAM,aAAa;AAAA,EACtB;AAAA,EACA,SAAS,CAAC,MAAM;AACf,MAAE,MAAM,cAAc;AAAA,EACvB;AAAA,EACA,cAAc,CAAC,GAAG,SAAS;AAE1B,QAAI,KAAK,gBAAgB;AACxB,QAAE,MAAM,qBAAqB,KAAK,EAAE,MAAM,SAAS;AAAA,IACpD;AAAA,EACD;AAAA,EACA,SAAS;AAAA,IACR,MAAM,MAAM;AAAA,IACZ,cAAc,CAAC,MAAM;AACpB,QAAE,MAAM;AAAA,IACT;AAAA,IACA,WAAW,CAAC,OAAO;AAAA,MAClB,WAAW,EAAE,MAAM;AAAA,MACnB,YAAY,EAAE,MAAM;AAAA,IACrB;AAAA,IACA,yBAAyB,CAAC,MAAM,EAAE,MAAM;AAAA,EACzC;AAAA,EACA,SAAS;AAAA,IACR,cAAc;AAAA,EACf;AACD,CAAC;;;AChCM,IAAM,oBAAoB,MAAM;AAAA,EACtC,OAAO,EAAE,UAAU,CAAC,EAAc;AAAA,EAClC,SAAS;AAAA;AAAA,IAER,sBAAsB,OAAO,GAAG,WAAmB;AAClD,YAAM,SAAS,EAAE,OAAwB;AACzC,YAAM,SAAS,MAAM,OAAO,QAC1B,YAAY,CAAC,aAAa,CAAC,EAC3B,UAAU,MAAM;AAClB,QAAE,MAAM,SAAS;AAAA,QAChB,4BAA4B,MAAM,cAAc,MAAM;AAAA,MACvD;AACA,aAAO;AAAA,IACR;AAAA;AAAA,IAGA,iBAAiB,OAAO,MAAM;AAC7B,YAAM,SAAS,EAAE,OAAwB;AACzC,YAAM,QAAQ,MAAM,OAAO,QACzB,YAAY,CAAC,aAAa,CAAC,EAC3B,SAAS;AACX,QAAE,MAAM,SAAS,KAAK,sBAAsB,KAAK,EAAE;AACnD,aAAO;AAAA,IACR;AAAA;AAAA,IAGA,8BAA8B,OAAO,GAAG,WAAmB;AAC1D,YAAM,SAAS,EAAE,OAAwB;AACzC,YAAM,SAAS,OAAO,QAAQ,YAAY,CAAC,sBAAsB,CAAC;AAClE,YAAM,aAAa,OAAO,QAAQ;AAGlC,YAAM,SAAmB,CAAC;AAC1B,iBAAW,GAAG,YAAY,CAAC,UAAkB;AAC5C,eAAO,KAAK,KAAK;AAAA,MAClB,CAAC;AAGD,YAAM,UAAU,MAAM,WAAW,UAAU,MAAM;AACjD,YAAM,UAAU,MAAM,WAAW,UAAU,SAAS,CAAC;AAErD,YAAM,WAAW,QAAQ;AAEzB,QAAE,MAAM,SAAS;AAAA,QAChB,wCAAwC,MAAM,QAAQ,SAAS,CAAC,cAAc,OAAO,KAAK,OAAO,aAAa,KAAK,UAAU,MAAM,CAAC;AAAA,MACrI;AAEA,aAAO,EAAE,SAAS,SAAS,OAAO;AAAA,IACnC;AAAA;AAAA,IAGA,aAAa,CAAC,MAAM;AACnB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA;AAAA,IAGA,eAAe,CAAC,MAAM;AACrB,QAAE,MAAM,WAAW,CAAC;AAAA,IACrB;AAAA,EACD;AACD,CAAC;;;AC7DM,IAAM,UAAU,MAAM;AAAA,EAC5B,SAAS;AAAA,IACR,SAAS,OACR,GACA,KACA,UACI;AACJ,YAAM,EAAE,GAAG,IAAI,KAAK,KAAK;AACzB,aAAO;AAAA,IACR;AAAA,IACA,SAAS,OACR,GACA,QACI;AACJ,aAAO,MAAM,EAAE,GAAG,IAAI,GAAG;AAAA,IAC1B;AAAA,IACA,UAAU,OACT,GACA,WACI;AACJ,YAAM,UAAU,MAAM,EAAE,GAAG,KAAK,QAAQ,EAAE,SAAS,OAAO,CAAC;AAC3D,aAAO,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO;AAAA,QACrC;AAAA,QACA;AAAA,MACD,EAAE;AAAA,IACH;AAAA,IACA,sBAAsB,OACrB,GACA,KACA,WACI;AACJ,YAAM,SAAS,IAAI,WAAW,MAAM,EAAE;AACtC,YAAM,EAAE,GAAG,IAAI,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnD,YAAM,SAAS,MAAM,EAAE,GAAG,IAAI,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1D,UAAI,CAAC,QAAQ;AACZ,eAAO;AAAA,MACR;AACA,aAAO,MAAM,KAAK,IAAI,WAAW,MAAM,CAAC;AAAA,IACzC;AAAA,EACD;AACD,CAAC;;;ACrCM,IAAM,oBAAoB,MAAM;AAAA,EACtC,OAAO,CAAC;AAAA,EACR,SAAS;AAAA;AAAA;AAAA;AAAA,IAIR,qBAAqB,CAAC,GAAG,SAA8B;AACtD,aAAO;AAAA,QACN,WAAW,KAAK,MAAM;AAAA,QACtB,WAAW,KAAK,MAAM,CAAC;AAAA,QACvB,UAAU,KAAK,MAAM,KAAK,MAAM,SAAS,CAAC;AAAA,MAC3C;AAAA,IACD;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB,CAAC,GAAG,cAAsB;AAC3C,YAAM,QAAkB,CAAC;AACzB,eAAS,IAAI,GAAG,IAAI,WAAW,KAAK;AACnC,cAAM,KAAK,QAAQ,CAAC,6CAA6C;AAAA,MAClE;AACA,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,CAAC,GAAG,SAAkB;AAC3B,aAAO;AAAA,IACR;AAAA,EACD;AACD,CAAC;AAKM,IAAM,wBAAwB,MAAM;AAAA,EAC1C,OAAO,CAAC;AAAA,EACR,WAAW;AAAA,IACV,iBAAiB;AAAA,EAClB;AAAA,EACA,SAAS;AAAA;AAAA;AAAA;AAAA,IAIR,qBAAqB,CAAC,GAAG,SAA8B;AACtD,QAAE,KAAK,MAAM,kBAAkB,KAAK,MAAM;AAC1C,aAAO;AAAA,QACN,WAAW,KAAK,MAAM;AAAA,QACtB,WAAW,KAAK,MAAM,CAAC;AAAA,QACvB,UAAU,KAAK,MAAM,KAAK,MAAM,SAAS,CAAC;AAAA,MAC3C;AAAA,IACD;AAAA;AAAA;AAAA;AAAA,IAKA,kBAAkB,CAAC,GAAG,cAAsB;AAC3C,YAAM,QAAkB,CAAC;AACzB,eAAS,IAAI,GAAG,IAAI,WAAW,KAAK;AACnC,cAAM,KAAK,QAAQ,CAAC,6CAA6C;AAAA,MAClE;AACA,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA;AAAA;AAAA;AAAA,IAKA,MAAM,CAAC,GAAG,SAAkB;AAC3B,aAAO;AAAA,IACR;AAAA;AAAA;AAAA;AAAA,IAKA,oBAAoB,CAAC,MAAM;AAC1B,aAAO,EAAE,KAAK,MAAM;AAAA,IACrB;AAAA,EACD;AACD,CAAC;;;ACjFM,IAAM,uBAAuB,MAAM;AAAA,EACzC,OAAO;AAAA,IACN,OAAO;AAAA,IACP,QAAQ,CAAC;AAAA,EACV;AAAA,EACA,iBAAiB,CAAC,GAAG,YAAwB;AAAA,IAC5C,UAAU,KAAK,IAAI;AAAA,EACpB;AAAA,EACA,QAAQ,CAAC,MAAM;AACd,MAAE,MAAM,OAAO,KAAK,QAAQ;AAAA,EAC7B;AAAA,EACA,iBAAiB,CAAC,GAAG,WAAuB;AAC3C,QAAI,iCAAQ,eAAgB,GAAE,MAAM,OAAO,KAAK,iBAAiB;AAAA,EAClE;AAAA,EACA,WAAW,CAAC,GAAG,SAAS;AAlBzB;AAmBE,SAAI,UAAK,WAAL,mBAAa,eAAgB,GAAE,MAAM,OAAO,KAAK,WAAW;AAAA,EACjE;AAAA,EACA,cAAc,CAAC,GAAG,SAAS;AArB5B;AAsBE,SAAI,UAAK,WAAL,mBAAa,eAAgB,GAAE,MAAM,OAAO,KAAK,cAAc;AAAA,EACpE;AAAA,EACA,SAAS;AAAA,IACR,WAAW,CAAC,MAAM;AACjB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,IACA,WAAW,CAAC,GAAG,MAAc;AAC5B,QAAE,MAAM,SAAS;AACjB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,EACD;AACD,CAAC;;;AC7BM,IAAM,gBAAgB,MAAM;AAAA,EAClC,OAAO;AAAA,IACN,cAAc;AAAA,IACd,WAAW;AAAA;AAAA;AAAA,IAGX,YAAY,CAAC;AAAA,IACb,cAAc;AAAA,EACf;AAAA,EACA,QAAQ,CAAC,MAAM;AAEd,MAAE,MAAM,YAAY,EAAE;AAAA,EACvB;AAAA,EACA,SAAS;AAAA;AAAA,IAER,eAAe,CAAC,GAAG,SAAiC;AACnD,QAAE,MAAM,aAAa;AACrB,aAAO;AAAA,IACR;AAAA;AAAA,IAGA,iBAAiB,CAAC,GAAG,WAAmB;AACvC,QAAE,MAAM,eAAe;AACvB,aAAO;AAAA,IACR;AAAA;AAAA,IAGA,aAAa,CAAC,MAAM;AAEnB,YAAM,WAAW;AAAA,QAChB,MAAM,EAAE;AAAA,QACR,MAAM,EAAE,MAAM;AAAA,QACd,QAAQ,EAAE,MAAM;AAAA,MACjB;AAGA,QAAE,MAAM,eAAe;AACvB,aAAO;AAAA,IACR;AAAA;AAAA,IAGA,cAAc,CAAC,MAAM;AACpB,aAAO,EAAE;AAAA,IACV;AAAA;AAAA,IAGA,QAAQ,CAAC,GAAG,QAAgB;AAC3B,aAAO,EAAE,MAAM,WAAW,GAAG,KAAK;AAAA,IACnC;AAAA;AAAA,IAGA,SAAS,CAAC,MAAM;AACf,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA;AAAA,IAGA,WAAW,CAAC,MAAM;AACjB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA;AAAA,IAGA,oBAAoB,CAAC,MAAM;AAC1B,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA;AAAA,IAGA,iBAAiB,CAAC,MAAM;AACvB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,EACD;AACD,CAAC;;;ACvED,IAAM,eAAe;AAAA,EACpB,UAAU,MAAyB;AAAA,EACnC,MAAM,MAAyB;AAAA,EAC/B,GAAG,MAAc;AAAA,EACjB,GAAG,MAAc;AAAA,EACjB,GAAG,MAAc;AAAA,EACjB,KAAK,MAAc;AAAA,EACnB,KAAK,MAAc;AAAA,EACnB,SAAS,MAAe;AAAA,EACxB,OAAO,MAAe;AAAA,EACtB,OAAO,MAAsD;AAAA,EAC7D,SAAS,MAAuC;AAAA,EAChD,QAAQ,MAAyB;AAAA,EACjC,OAAO,MAAuC;AAC/C;AAIO,IAAM,aAAa,MAAM;AAAA,EAC/B,OAAO,CAAC;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,IACR,YAAY,OACX,GACA,MACA,SACI;AACJ,YAAM,UAAU,MAAM,EAAE,MAAM,KAAK;AAAA,QAClC,OAAO,CAAC,IAAI;AAAA,QACZ,SAAS,6BAAM;AAAA,MAChB,CAAC;AACD,UAAI,CAAC,SAAS;AACb,eAAO;AAAA,MACR;AACA,aAAO,EAAE,MAAM,QAAQ,MAAM,MAAM,QAAQ,KAAK;AAAA,IACjD;AAAA,IACA,aAAa,OACZ,GACA,OACA,SACI;AACJ,YAAM,WAAW,MAAM,EAAE,MAAM,UAAU;AAAA,QACxC;AAAA,QACA,OAAO,6BAAM;AAAA,QACb,SAAS,6BAAM;AAAA,MAChB,CAAC;AACD,aAAO,SAAS,IAAI,CAAC,aAAa;AAAA,QACjC,MAAM,QAAQ;AAAA,QACd,MAAM,QAAQ;AAAA,MACf,EAAE;AAAA,IACH;AAAA,IACA,gBAAgB,OACf,GACA,YAKI;AACJ,YAAM,WAAW,MAAM,EAAE,MAAM,UAAU,OAAO;AAChD,aAAO,SAAS,IAAI,CAAC,aAAa;AAAA,QACjC,MAAM,QAAQ;AAAA,QACd,MAAM,QAAQ;AAAA,MACf,EAAE;AAAA,IACH;AAAA,IACA,gBAAgB,OACf,GACA,YAII;AACJ,YAAM,WAAW,MAAM,EAAE,MAAM,aAAa,OAAO;AACnD,aAAO,SAAS,IAAI,CAAC,aAAa;AAAA,QACjC,MAAM,QAAQ;AAAA,QACd,MAAM,QAAQ;AAAA,MACf,EAAE;AAAA,IACH;AAAA,IACA,qBAAqB,OAAO,GAAG,SAAoB;AAClD,uBAAiB,WAAW,EAAE,MAAM,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG;AAC5D,eAAO,EAAE,MAAM,QAAQ,MAAM,MAAM,QAAQ,KAAK;AAAA,MACjD;AACA,aAAO;AAAA,IACR;AAAA,IACA,0BAA0B,OAAO,MAAM;AACtC,uBAAiB,WAAW,EAAE,MAAM,KAAK,GAAG;AAC3C,eAAO,EAAE,MAAM,QAAQ,MAAM,MAAM,QAAQ,KAAK;AAAA,MACjD;AACA,aAAO;AAAA,IACR;AAAA,IACA,YAAY,OAAO,GAAG,MAAiB,SAAkB;AACxD,YAAM,SAAS,EAAE,OAAwB;AACzC,YAAM,SAAS,OAAO,WAAW,SAAS,EAAE,OAAO;AACnD,YAAM,OAAO,KAAK,MAAM,IAAI;AAC5B,aAAO;AAAA,IACR;AAAA,IACA,cAAc,OAAO,MAAM;AAC1B,iBAAW,MAAM;AAChB,UAAE,QAAQ;AAAA,MACX,GAAG,EAAE;AACL,YAAM,EAAE,MAAM,KAAK,EAAE,OAAO,CAAC,OAAO,GAAG,SAAS,IAAO,CAAC;AACxD,aAAO;AAAA,IACR;AAAA,IACA,oBAAoB,OAAO,MAAM;AAChC,YAAM,aAAa,IAAI,gBAAgB;AACvC,iBAAW,MAAM;AACjB,UAAI;AACH,cAAM,EAAE,MAAM,KAAK;AAAA,UAClB,OAAO,CAAC,OAAO;AAAA,UACf,SAAS;AAAA,UACT,QAAQ,WAAW;AAAA,QACpB,CAAC;AACD,eAAO,EAAE,IAAI,MAAM;AAAA,MACpB,SAAS,OAAO;AACf,cAAM,aAAa;AACnB,eAAO,EAAE,OAAO,WAAW,OAAO,MAAM,WAAW,KAAK;AAAA,MACzD;AAAA,IACD;AAAA,IACA,6BAA6B,OAAO,MAAM;AACzC,YAAM,aAAa,IAAI,gBAAgB;AACvC,iBAAW,MAAM;AAChB,UAAE,QAAQ;AAAA,MACX,GAAG,EAAE;AACL,UAAI;AACH,cAAM,EAAE,MAAM,KAAK;AAAA,UAClB,OAAO,CAAC,OAAO;AAAA,UACf,SAAS;AAAA,UACT,QAAQ,WAAW;AAAA,QACpB,CAAC;AACD,eAAO,EAAE,IAAI,MAAM;AAAA,MACpB,SAAS,OAAO;AACf,cAAM,aAAa;AACnB,eAAO,EAAE,OAAO,WAAW,OAAO,MAAM,WAAW,KAAK;AAAA,MACzD;AAAA,IACD;AAAA,IACA,qBAAqB,OAAO,MAAM;AACjC,YAAM,aAAa,IAAI,gBAAgB;AACvC,iBAAW,MAAM;AACjB,uBAAiB,YAAY,EAAE,MAAM,KAAK;AAAA,QACzC,OAAO,CAAC,OAAO;AAAA,QACf,QAAQ,WAAW;AAAA,MACpB,CAAC,GAAG;AACH,eAAO,EAAE,IAAI,MAAM;AAAA,MACpB;AACA,aAAO,EAAE,IAAI,KAAK;AAAA,IACnB;AAAA,IACA,oBAAoB,OAAO,GAAG,SAAkB;AAC/C,YAAM,UAAU,MAAM,EAAE,MAAM,KAAK;AAAA,QAClC,OAAO,CAAC,IAAI;AAAA,QACZ,aAAa;AAAA,MACd,CAAC;AACD,UAAI,CAAC,SAAS;AACb,eAAO;AAAA,MACR;AACA,YAAM,QAAQ,SAAS,EAAE,MAAM,QAAQ,KAAK,CAAC;AAC7C,aAAO,EAAE,MAAM,QAAQ,MAAM,MAAM,QAAQ,KAAK;AAAA,IACjD;AAAA,IACA,wBAAwB,OAAO,GAAG,SAAkB;AACnD,YAAM,UAAU,MAAM,EAAE,MAAM,KAAK;AAAA,QAClC,OAAO,CAAC,IAAI;AAAA,QACZ,aAAa;AAAA,MACd,CAAC;AACD,UAAI,CAAC,SAAS;AACb,eAAO;AAAA,MACR;AACA,aAAO,EAAE,MAAM,QAAQ,MAAM,MAAM,QAAQ,KAAK;AAAA,IACjD;AAAA,IACA,sCAAsC,OAAO,GAAG,SAAkB;AACjE,YAAM,UAAU,MAAM,EAAE,MAAM,KAAK;AAAA,QAClC,OAAO,CAAC,IAAI;AAAA,QACZ,aAAa;AAAA,MACd,CAAC;AACD,UAAI,CAAC,SAAS;AACb,eAAO,EAAE,IAAI,OAAO,QAAQ,aAAa;AAAA,MAC1C;AAEA,UAAI;AACH,cAAM,EAAE,MAAM,KAAK,EAAE,OAAO,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC;AAChD,UAAE,QAAQ;AACV,eAAO,EAAE,IAAI,OAAO,QAAQ,iBAAiB;AAAA,MAC9C,SAAS,OAAO;AACf,UAAE,QAAQ;AACV,cAAM,aAAa;AACnB,eAAO,EAAE,OAAO,WAAW,OAAO,MAAM,WAAW,KAAK;AAAA,MACzD;AAAA,IACD;AAAA,IACA,yBAAyB,OAAO,GAAG,SAAkB;AACpD,YAAM,UAAU,MAAM,EAAE,MAAM,KAAK;AAAA,QAClC,OAAO,CAAC,IAAI;AAAA,QACZ,aAAa;AAAA,MACd,CAAC;AACD,UAAI,CAAC,SAAS;AACb,eAAO;AAAA,MACR;AACA,YAAM,QAAQ,SAAS,EAAE,IAAI,KAAK,CAAC;AACnC,UAAI;AACH,cAAM,QAAQ,SAAS,EAAE,IAAI,KAAK,CAAC;AACnC,eAAO,EAAE,IAAI,MAAM;AAAA,MACpB,SAAS,OAAO;AACf,cAAM,aAAa;AACnB,eAAO,EAAE,OAAO,WAAW,OAAO,MAAM,WAAW,KAAK;AAAA,MACzD;AAAA,IACD;AAAA,IACA,8BAA8B,OAAO,GAAG,SAAmB;AAC1D,YAAM,UAAU,MAAM,EAAE,MAAM,KAAK;AAAA,QAClC,OAAO,CAAC,IAAI;AAAA,QACZ,aAAa;AAAA,MACd,CAAC;AACD,aAAO;AAAA,QACN,aACC,YAAY,UACZ,OAAO,QAAQ,aAAa;AAAA,MAC9B;AAAA,IACD;AAAA,EACD;AACD,CAAC;AAEM,IAAM,oBAAoB,MAAM;AAAA,EACtC,OAAO,CAAC;AAAA,EACR,QAAQ;AAAA,IACP,SAAS,MAAc;AAAA,IACvB,UAAU,MAAc;AAAA,EACzB;AAAA,EACA,SAAS,CAAC;AAAA,EACV,SAAS;AAAA,IACR,cAAc;AAAA,IACd,qBAAqB;AAAA,EACtB;AACD,CAAC;;;ACvOD,SAAS,YAAY;AAGd,IAAM,eAAe,MAAM;AAAA,EACjC,OAAO;AAAA,IACN,cAAc;AAAA,EACf;AAAA,EACA,UACC,KACA,SACC;AACD,UAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,UAAM,SAAS,QAAQ;AAGvB,QAAI,MAAM;AAGV,QAAI,IAAI,aAAa,cAAc;AAClC,aAAO,IAAI;AAAA,QACV,KAAK,UAAU,EAAE,SAAS,oBAAoB,CAAC;AAAA,QAC/C;AAAA,UACC,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,QAC/C;AAAA,MACD;AAAA,IACD;AAEA,QAAI,IAAI,aAAa,eAAe,WAAW,QAAQ;AACtD,aAAO,IAAI,SAAS,QAAQ,MAAM;AAAA,QACjC,SAAS,QAAQ;AAAA,MAClB,CAAC;AAAA,IACF;AAEA,QAAI,IAAI,aAAa,cAAc;AAClC,aAAO,IAAI;AAAA,QACV,KAAK,UAAU;AAAA,UACd,cAAc,IAAI,MAAM;AAAA,QACzB,CAAC;AAAA,QACD;AAAA,UACC,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,QAC/C;AAAA,MACD;AAAA,IACD;AAEA,QAAI,IAAI,aAAa,gBAAgB;AACpC,YAAM,UAAkC,CAAC;AACzC,cAAQ,QAAQ,QAAQ,CAAC,OAAO,QAAQ;AACvC,gBAAQ,GAAG,IAAI;AAAA,MAChB,CAAC;AACD,aAAO,IAAI,SAAS,KAAK,UAAU,OAAO,GAAG;AAAA,QAC5C,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,MAC/C,CAAC;AAAA,IACF;AAGA,WAAO,IAAI,SAAS,aAAa,EAAE,QAAQ,IAAI,CAAC;AAAA,EACjD;AAAA,EACA,SAAS,CAAC;AACX,CAAC;AAEM,IAAM,wBAAwB,MAAM;AAAA,EAC1C,SAAS,CAAC;AACX,CAAC;AAEM,IAAM,yBAAyB,MAAM;AAAA,EAC3C,UAAU,KAAK,SAAS;AAEvB,WAAO;AAAA,EACR;AAAA,EACA,SAAS,CAAC;AACX,CAAC;AAEM,IAAM,mBAAmB,MAAM;AAAA,EACrC,aAAa;AACZ,UAAM,SAAS,IAAI,KAAK;AAGxB,WAAO;AAAA,MAAI;AAAA,MAAK,CAAC,MAChB,EAAE,KAAK,EAAE,SAAS,yBAAyB,CAAC;AAAA,IAC7C;AAEA,WAAO;AAAA,MAAI;AAAA,MAAU,CAAC,MACrB,EAAE,KAAK;AAAA,QACN,EAAE,IAAI,GAAG,MAAM,QAAQ;AAAA,QACvB,EAAE,IAAI,GAAG,MAAM,MAAM;AAAA,MACtB,CAAC;AAAA,IACF;AAEA,WAAO,IAAI,cAAc,CAAC,MAAW;AACpC,YAAM,KAAK,EAAE,IAAI,MAAM,IAAI;AAC3B,aAAO,EAAE,KAAK;AAAA,QACb,IAAI,SAAS,EAAE;AAAA,QACf,MAAM,OAAO,MAAM,UAAU;AAAA,MAC9B,CAAC;AAAA,IACF,CAAC;AAED,WAAO,KAAK,UAAU,OAAO,MAAW;AACvC,YAAM,OAAO,MAAM,EAAE,IAAI,KAAK;AAC9B,aAAO,EAAE,KAAK,EAAE,IAAI,GAAG,GAAG,KAAK,GAAG,GAAG;AAAA,IACtC,CAAC;AAED,WAAO,IAAI,cAAc,OAAO,MAAW;AAC1C,YAAM,KAAK,EAAE,IAAI,MAAM,IAAI;AAC3B,YAAM,OAAO,MAAM,EAAE,IAAI,KAAK;AAC9B,aAAO,EAAE,KAAK,EAAE,IAAI,SAAS,EAAE,GAAG,GAAG,KAAK,CAAC;AAAA,IAC5C,CAAC;AAED,WAAO,OAAO,cAAc,CAAC,MAAW;AACvC,YAAM,KAAK,EAAE,IAAI,MAAM,IAAI;AAC3B,aAAO,EAAE,KAAK,EAAE,SAAS,QAAQ,EAAE,WAAW,CAAC;AAAA,IAChD,CAAC;AAGD,WAAO,EAAE,OAAO;AAAA,EACjB;AAAA,EACA,UACC,KACA,SACC;AAED,WAAO,IAAI,KAAK,OAAO,MAAM,OAAO;AAAA,EACrC;AAAA,EACA,SAAS,CAAC;AACX,CAAC;;;ACzHM,IAAM,gCAAgC,MAAM;AAAA,EAClD,SAAS,CAAC;AAAA,EACV,UACC,KACA,SACC;AAED,UAAM,MAAM,IAAI,IAAI,QAAQ,GAAG;AAC/B,UAAM,SAAS,QAAQ;AAGvB,UAAM,UAAkC,CAAC;AACzC,YAAQ,QAAQ,QAAQ,CAAC,OAAO,QAAQ;AACvC,cAAQ,GAAG,IAAI;AAAA,IAChB,CAAC;AAGD,UAAM,aAAa,YAAY;AAC9B,UAAI,CAAC,QAAQ,MAAM;AAClB,eAAO;AAAA,MACR;AAEA,YAAM,cAAc,QAAQ,QAAQ,IAAI,cAAc,KAAK;AAE3D,UAAI;AACH,YAAI,YAAY,SAAS,kBAAkB,GAAG;AAC7C,gBAAMC,QAAO,MAAM,QAAQ,KAAK;AAChC,iBAAOA,QAAO,KAAK,MAAMA,KAAI,IAAI;AAAA,QAClC,OAAO;AAEN,gBAAMA,QAAO,MAAM,QAAQ,KAAK;AAChC,iBAAOA,SAAQ;AAAA,QAChB;AAAA,MACD,SAAS,OAAO;AAEf,eAAO;AAAA,MACR;AAAA,IACD;AAGA,QAAI,WAAW,QAAQ;AACtB,aAAO,IAAI,SAAS,MAAM;AAAA,QACzB,QAAQ;AAAA,MACT,CAAC;AAAA,IACF;AAEA,QAAI,WAAW,WAAW;AACzB,aAAO,IAAI,SAAS,MAAM;AAAA,QACzB,QAAQ;AAAA,MACT,CAAC;AAAA,IACF;AAGA,WAAO,WAAW,EAAE,KAAK,CAAC,SAAS;AAClC,YAAM,eAAe;AAAA;AAAA,QAEpB,KAAK,QAAQ;AAAA,QACb,UAAU,IAAI;AAAA,QACd,QAAQ,IAAI;AAAA,QACZ,cAAc,OAAO,YAAY,IAAI,aAAa,QAAQ,CAAC;AAAA,QAC3D,MAAM,IAAI;AAAA;AAAA,QAGV,QAAQ,QAAQ;AAAA;AAAA,QAGhB;AAAA;AAAA,QAGA;AAAA,QACA,UACC,OAAO,SAAS,WACb,OACA,SAAS,QAAQ,QAAQ,SAAS,OACjC,KACA;AAAA;AAAA;AAAA;AAAA,QAKL,OAAO,QAAQ,SAAS;AAAA,QACxB,aAAa,QAAQ,eAAe;AAAA,QACpC,MAAM,QAAQ,QAAQ;AAAA,QACtB,UAAU,QAAQ,YAAY;AAAA,QAC9B,UAAU,QAAQ,YAAY;AAAA,MAC/B;AAEA,aAAO,IAAI,SAAS,KAAK,UAAU,YAAY,GAAG;AAAA,QACjD,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,MAC/C,CAAC;AAAA,IACF,CAAC;AAAA,EACF;AACD,CAAC;;;AC5FM,IAAM,oBAAoB,MAAM;AAAA,EACtC,OAAO;AAAA,IACN,iBAAiB;AAAA,IACjB,cAAc;AAAA,EACf;AAAA,EACA,YAAY,KAAK,WAAW;AAC3B,QAAI,MAAM,kBAAkB,IAAI,MAAM,kBAAkB;AACxD,YAAQ;AAAA,MACP,kCAAkC,IAAI,MAAM,eAAe;AAAA,IAC5D;AAGA,cAAU;AAAA,MACT,KAAK,UAAU;AAAA,QACd,MAAM;AAAA,QACN,iBAAiB,IAAI,MAAM;AAAA,MAC5B,CAAC;AAAA,IACF;AACA,YAAQ,IAAI,8BAA8B;AAG1C,cAAU,iBAAiB,WAAW,CAACC,WAAe;AAvBxD;AAwBG,UAAI,MAAM,eAAe,IAAI,MAAM,eAAe;AAClD,cAAQ;AAAA,QACP,0CAA0C,IAAI,MAAM,YAAY;AAAA,QAChEA,OAAM;AAAA,MACP;AAEA,YAAM,OAAOA,OAAM;AACnB,UAAI,OAAO,SAAS,UAAU;AAC7B,YAAI;AACH,gBAAM,SAAS,KAAK,MAAM,IAAI;AAC9B,cAAI,OAAO,SAAS,QAAQ;AAC3B,sBAAU;AAAA,cACT,KAAK,UAAU;AAAA,gBACd,MAAM;AAAA,gBACN,WAAW,KAAK,IAAI;AAAA,cACrB,CAAC;AAAA,YACF;AAAA,UACD,WAAW,OAAO,SAAS,YAAY;AACtC,oBAAQ;AAAA,cACP,wCAAwC,IAAI,MAAM,eAAe,eAAe,IAAI,MAAM,YAAY;AAAA,YACvG;AACA,sBAAU;AAAA,cACT,KAAK,UAAU;AAAA,gBACd,MAAM;AAAA,gBACN,iBAAiB,IAAI,MAAM;AAAA,gBAC3B,cAAc,IAAI,MAAM;AAAA,cACzB,CAAC;AAAA,YACF;AAAA,UACD,WAAW,OAAO,SAAS,kBAAkB;AAE5C,kBAAM,QAAM,SAAI,YAAJ,mBAAa,QAAO;AAChC,kBAAM,SAAS,IAAI,IAAI,GAAG;AAC1B,sBAAU;AAAA,cACT,KAAK,UAAU;AAAA,gBACd,MAAM;AAAA,gBACN;AAAA,gBACA,UAAU,OAAO;AAAA,gBACjB,QAAQ,OAAO;AAAA,cAChB,CAAC;AAAA,YACF;AAAA,UACD,OAAO;AAEN,sBAAU,KAAK,IAAI;AAAA,UACpB;AAAA,QACD,QAAQ;AAEP,oBAAU,KAAK,IAAI;AAAA,QACpB;AAAA,MACD,OAAO;AAEN,kBAAU,KAAK,IAAI;AAAA,MACpB;AAAA,IACD,CAAC;AAGD,cAAU,iBAAiB,SAAS,MAAM;AACzC,UAAI,MAAM,kBAAkB,IAAI,MAAM,kBAAkB;AACxD,cAAQ;AAAA,QACP,qCAAqC,IAAI,MAAM,eAAe;AAAA,MAC/D;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACR,SAAS,KAAU;AAClB,aAAO;AAAA,QACN,iBAAiB,IAAI,MAAM;AAAA,QAC3B,cAAc,IAAI,MAAM;AAAA,MACzB;AAAA,IACD;AAAA,EACD;AACD,CAAC;AAEM,IAAM,0BAA0B,MAAM;AAAA,EAC5C,YAAY,KAAK,WAAW;AAE3B,cAAU,iBAAiB,WAAW,CAACA,WAAe;AACrD,YAAM,OAAOA,OAAM;AACnB,UAAI,gBAAgB,eAAe,gBAAgB,YAAY;AAE9D,cAAM,QAAQ,IAAI,WAAW,IAAI;AACjC,cAAM,WAAW,IAAI,WAAW,MAAM,MAAM;AAC5C,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACtC,mBAAS,CAAC,IAAI,MAAM,MAAM,SAAS,IAAI,CAAC;AAAA,QACzC;AACA,kBAAU,KAAK,QAAQ;AAAA,MACxB;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EACA,SAAS,CAAC;AACX,CAAC;;;AC5GM,IAAM,qBAAqB,MAAM;AAAA,EACvC,OAAO;AAAA;AAAA,IAEN,wBAAwB;AAAA,MACvB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,gBAAgB,CAAC;AAAA,IAClB;AAAA,IACA,wBAAwB;AAAA,MACvB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,gBAAgB,CAAC;AAAA,IAClB;AAAA,IACA,kBAAkB;AAAA,MACjB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,gBAAgB,CAAC;AAAA,IAClB;AAAA,IACA,oBAAoB;AAAA,MACnB,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,gBAAgB,CAAC;AAAA,IAClB;AAAA,EACD;AAAA,EACA,iBAAiB,CAAC,GAAG,WAAuC;AAG3D,QAAI,cAKO;AAEX,SAAI,iCAAQ,iBAAgB,EAAE,SAAS;AACtC,YAAM,UAAkC,CAAC;AACzC,QAAE,QAAQ,QAAQ,QAAQ,CAAC,OAAO,QAAQ;AACzC,gBAAQ,GAAG,IAAI;AAAA,MAChB,CAAC;AACD,oBAAc;AAAA,QACb,YAAY;AAAA,QACZ,YAAY,EAAE,QAAQ;AAAA,QACtB,eAAe,EAAE,QAAQ;AAAA,QACzB,gBAAgB;AAAA,MACjB;AAAA,IACD;AAEA,WAAO;AAAA,MACN,eAAc,iCAAQ,iBAAgB;AAAA,MACtC;AAAA,IACD;AAAA,EACD;AAAA,EACA,WAAW,CAAC,GAAG,SAAS;AAEvB,QAAI,KAAK,MAAM,aAAa;AAC3B,QAAE,MAAM,yBAAyB,KAAK,MAAM;AAAA,IAC7C;AAAA,EACD;AAAA,EACA,iBAAiB,CAAC,GAAG,WAAW;AAC/B,QAAI,iCAAQ,cAAc;AACzB,UAAI,EAAE,SAAS;AACd,UAAE,MAAM,uBAAuB,aAAa;AAC5C,UAAE,MAAM,uBAAuB,aAAa,EAAE,QAAQ;AACtD,UAAE,MAAM,uBAAuB,gBAAgB,EAAE,QAAQ;AAGzD,cAAM,UAAkC,CAAC;AACzC,UAAE,QAAQ,QAAQ,QAAQ,CAAC,OAAO,QAAQ;AACzC,kBAAQ,GAAG,IAAI;AAAA,QAChB,CAAC;AACD,UAAE,MAAM,uBAAuB,iBAAiB;AAAA,MACjD,OAAO;AAEN,UAAE,MAAM,uBAAuB,aAAa;AAAA,MAC7C;AAAA,IACD;AAAA,EACD;AAAA,EACA,WAAW,CAAC,GAAG,YAAY;AAE1B,MAAE,MAAM,iBAAiB,aAAa;AACtC,MAAE,MAAM,iBAAiB,aAAa,QAAQ;AAC9C,MAAE,MAAM,iBAAiB,gBAAgB,QAAQ;AAGjD,UAAM,UAAkC,CAAC;AACzC,YAAQ,QAAQ,QAAQ,CAAC,OAAO,QAAQ;AACvC,cAAQ,GAAG,IAAI;AAAA,IAChB,CAAC;AACD,MAAE,MAAM,iBAAiB,iBAAiB;AAG1C,WAAO,IAAI;AAAA,MACV,KAAK,UAAU;AAAA,QACd,YAAY;AAAA,QACZ,YAAY,QAAQ;AAAA,QACpB,eAAe,QAAQ;AAAA,QACvB,gBAAgB;AAAA,MACjB,CAAC;AAAA,MACD;AAAA,QACC,QAAQ;AAAA,QACR,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,MAC/C;AAAA,IACD;AAAA,EACD;AAAA,EACA,aAAa,CAAC,GAAG,cAAc;AAC9B,QAAI,CAAC,EAAE,QAAS,OAAM;AAEtB,MAAE,MAAM,mBAAmB,aAAa;AACxC,MAAE,MAAM,mBAAmB,aAAa,EAAE,QAAQ;AAClD,MAAE,MAAM,mBAAmB,gBAAgB,EAAE,QAAQ;AAGrD,UAAM,UAAkC,CAAC;AACzC,MAAE,QAAQ,QAAQ,QAAQ,CAAC,OAAO,QAAQ;AACzC,cAAQ,GAAG,IAAI;AAAA,IAChB,CAAC;AACD,MAAE,MAAM,mBAAmB,iBAAiB;AAG5C,cAAU;AAAA,MACT,KAAK,UAAU;AAAA,QACd,YAAY;AAAA,QACZ,YAAY,EAAE,QAAQ;AAAA,QACtB,eAAe,EAAE,QAAQ;AAAA,QACzB,gBAAgB;AAAA,MACjB,CAAC;AAAA,IACF;AAGA,cAAU,iBAAiB,WAAW,CAACC,WAA6B;AACnE,gBAAU,KAAKA,OAAM,IAAI;AAAA,IAC1B,CAAC;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACR,gBAAgB,CAAC,MAAM;AACtB,aAAO;AAAA,QACN,iBAAiB,EAAE,MAAM;AAAA,QACzB,iBAAiB,EAAE,MAAM;AAAA,QACzB,WAAW,EAAE,MAAM;AAAA,QACnB,aAAa,EAAE,MAAM;AAAA,MACtB;AAAA,IACD;AAAA,EACD;AACD,CAAC;;;ACtJM,IAAM,wBAAwB,MAAM;AAAA,EAC1C,iBAAiB,OAAO,IAAI,WAAiC;AAC5D,QAAI,iCAAQ,QAAQ;AACnB,YAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAG,CAAC;AACvD,YAAM,IAAI,UAAU,uBAAuB;AAAA,QAC1C,MAAM;AAAA,MACP,CAAC;AAAA,IACF;AAAA,EACD;AAAA,EACA,SAAS;AAAA,IACR,MAAM,MAAM;AAAA,EACb;AACD,CAAC;;;ACZM,IAAM,YAAY,MAAM;AAAA,EAC9B,OAAO;AAAA,IACN,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,aAAa,CAAC;AAAA,EACf;AAAA,EACA,SAAS;AAAA;AAAA,IAER,gBAAgB,CAAC,GAAG,cAAsB;AACzC,QAAE,SAAS,GAAG,WAAW,iBAAiB;AAC1C,aAAO;AAAA,IACR;AAAA;AAAA,IAGA,mBAAmB,CAAC,GAAG,YAAoB;AAC1C,QAAE,SAAS,MAAM,SAAS,iBAAiB;AAC3C,aAAO,KAAK,IAAI,IAAI;AAAA,IACrB;AAAA;AAAA,IAGA,yBAAyB,CAAC,GAAG,QAAgB,YAAoB;AAChE,QAAE,SAAS,MAAM,SAAS,yBAAyB,MAAM;AACzD,aAAO,EAAE,QAAQ,cAAc,KAAK,IAAI,IAAI,QAAQ;AAAA,IACrD;AAAA;AAAA,IAGA,cAAc,CAAC,GAAG,YAAoB;AACrC,YAAM,YAAY,KAAK,IAAI,IAAI;AAC/B,QAAE,SAAS,GAAG,WAAW,iBAAiB;AAC1C,aAAO;AAAA,IACR;AAAA;AAAA,IAGA,YAAY,CAAC,MAAM;AAClB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,IAEA,mBAAmB,CAAC,MAAM;AACzB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,IAEA,gBAAgB,CAAC,MAAM;AACtB,aAAO,EAAE,MAAM;AAAA,IAChB;AAAA,IAEA,cAAc,CAAC,MAAM;AACpB,QAAE,MAAM,cAAc,CAAC;AACvB,QAAE,MAAM,iBAAiB;AACzB,QAAE,MAAM,UAAU;AAClB,aAAO;AAAA,IACR;AAAA;AAAA,IAGA,iBAAiB,CAAC,MAAM;AACvB,QAAE,MAAM,UAAU,KAAK,IAAI;AAC3B,QAAE,MAAM;AACR,QAAE,UAAU,aAAa;AAAA,QACxB,MAAM,EAAE,MAAM;AAAA,QACd,OAAO,EAAE,MAAM;AAAA,MAChB,CAAC;AAAA,IACF;AAAA,IAEA,uBAAuB,CAAC,GAAG,WAAmB;AAC7C,QAAE,MAAM,UAAU,KAAK,IAAI;AAC3B,QAAE,MAAM;AACR,QAAE,MAAM,YAAY,KAAK,MAAM;AAC/B,QAAE,UAAU,mBAAmB;AAAA,QAC9B;AAAA,QACA,MAAM,EAAE,MAAM;AAAA,QACd,OAAO,EAAE,MAAM;AAAA,MAChB,CAAC;AAAA,IACF;AAAA,EACD;AACD,CAAC;;;ACxEM,IAAM,iBAAiB,MAAM;AAAA,EACnC,SAAS;AAAA,IACR,MAAM,MAAM;AAAA,IACZ,MAAM,CAAC,GAAG,YAAoB;AAAA,IAC9B,YAAY,CAAC,MAAM,EAAE;AAAA;AAAA,IAErB,aAAa,CAAC,MAAM;AACnB,UAAI;AAEH,cAAM,QAAQ,EAAE;AAChB,eAAO,EAAE,SAAS,MAAM,MAAM;AAAA,MAC/B,SAAS,OAAO;AACf,eAAO,EAAE,SAAS,OAAO,OAAQ,MAAgB,QAAQ;AAAA,MAC1D;AAAA,IACD;AAAA;AAAA,IAEA,UAAU,CAAC,MAAM;AAChB,UAAI;AAEH,cAAMC,MAAK,EAAE;AACb,eAAO,EAAE,SAAS,MAAM,IAAAA,IAAG;AAAA,MAC5B,SAAS,OAAO;AACf,eAAO,EAAE,SAAS,OAAO,OAAQ,MAAgB,QAAQ;AAAA,MAC1D;AAAA,IACD;AAAA,EACD;AACD,CAAC;;;AC1BM,IAAM,iBAAiB,MAAM;AAAA,EACnC,OAAO,EAAE,OAAO,EAAE;AAAA,EAClB,WAAW,EAAE,OAAO,QAAQ;AAAA,EAC5B,MAAM,EAAE,SAAS,IAAI,MAAM,aAAa;AAAA,EACxC,SAAS;AAAA,IACR,SAAS,CAAC,MAAM;AACf,aAAO,EAAE;AAAA,IACV;AAAA,IACA,SAAS,CAAC,MAAM;AACf,aAAO,EAAE,KAAK;AAAA,IACf;AAAA,EACD;AACD,CAAC;AAGM,IAAM,iBAAiB,MAAM;AAAA,EACnC,OAAO,EAAE,OAAO,EAAE;AAAA,EAClB,WAAW,EAAE,OAAO,QAAQ;AAAA,EAC5B,MAAM;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,MACP,OAAO;AAAA,MACP,OAAO,CAAC,GAAG,GAAG,CAAC;AAAA,MACf,KAAK,EAAE,KAAK,QAAQ;AAAA,IACrB;AAAA,EACD;AAAA,EACA,SAAS;AAAA,IACR,SAAS,CAAC,MAAM;AACf,aAAO,EAAE;AAAA,IACV;AAAA,IACA,cAAc,CAAC,MAAM;AAEpB,QAAE,KAAK,OAAO,QAAQ;AACtB,QAAE,KAAK,OAAO,MAAM,KAAK,CAAC;AAC1B,QAAE,KAAK,OAAO,IAAI,MAAM;AACxB,aAAO,EAAE;AAAA,IACV;AAAA,EACD;AACD,CAAC;AAGM,IAAM,kBAAkB,MAAM;AAAA,EACpC,OAAO,EAAE,OAAO,EAAE;AAAA,EAClB,WAAW,EAAE,OAAO,QAAQ;AAAA,EAC5B,YAAY,MAAM;AACjB,WAAO;AAAA,MACN,QAAQ,KAAK,OAAO;AAAA,MACpB,UAAU,SAAS,KAAK,MAAM,KAAK,OAAO,IAAI,GAAI,CAAC;AAAA,IACpD;AAAA,EACD;AAAA,EACA,SAAS;AAAA,IACR,SAAS,CAAC,MAAM;AACf,aAAO,EAAE;AAAA,IACV;AAAA,EACD;AACD,CAAC;AAGM,IAAM,iBAAiB,MAAM;AAAA,EACnC,OAAO,EAAE,OAAO,EAAE;AAAA,EAClB,WAAW,EAAE,OAAO,QAAQ;AAAA,EAC5B,YAAY,MAAM;AACjB,WAAO;AAAA,MACN,IAAI,KAAK,MAAM,KAAK,OAAO,IAAI,GAAO;AAAA,IACvC;AAAA,EACD;AAAA,EACA,SAAS;AAAA,IACR,SAAS,CAAC,MAAM;AACf,aAAO,EAAE;AAAA,IACV;AAAA,EACD;AACD,CAAC;AAGM,IAAM,iBAAiB,MAAM;AAAA,EACnC,OAAO,EAAE,OAAO,EAAE;AAAA,EAClB,WAAW,EAAE,OAAO,QAAQ;AAAA,EAC5B,YAAY,CAAC,GAAG,cAAmB;AAClC,WAAO;AAAA,MACN,cAAc,QAAQ,uCAAW,MAAM;AAAA,IACxC;AAAA,EACD;AAAA,EACA,SAAS;AAAA,IACR,SAAS,CAAC,MAAM;AACf,aAAO,EAAE;AAAA,IACV;AAAA,EACD;AACD,CAAC;;;ACXM,IAAM,WAAW,MAAM;AAAA,EAC7B,KAAK;AAAA;AAAA,IAEJ;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,EACD;AACD,CAAC;;;AhCnKD,eAAe,UAA2B;AACzC,QAAM,WAAW;AACjB,QAAM,WAAW;AACjB,QAAM,gBAAgB,MACrB,KAAK,MAAM,KAAK,OAAO,KAAK,WAAW,WAAW,EAAE,IAAI;AAEzD,MAAI,OAAO,cAAc;AACzB,MAAI,cAAc;AAElB,SAAO,cAAc,GAAG;AACvB,QAAI;AACH,YAAM,SAAS,MAAM,IAAI,QAAa,CAAC,SAAS,WAAW;AAC1D,cAAMC,UAAS,aAAa;AAE5B,QAAAA,QAAO,KAAK,SAAS,CAAC,QAAmC;AACxD,cAAI,IAAI,SAAS,cAAc;AAC9B,mBAAO,IAAI,MAAM,QAAQ,IAAI,YAAY,CAAC;AAAA,UAC3C,OAAO;AACN,mBAAO,GAAG;AAAA,UACX;AAAA,QACD,CAAC;AAED,QAAAA,QAAO,KAAK,aAAa,MAAM;AAC9B,kBAAQA,OAAM;AAAA,QACf,CAAC;AAED,QAAAA,QAAO,OAAO,IAAI;AAAA,MACnB,CAAC;AAED,YAAM,IAAI,QAAc,CAAC,YAAY;AACpC,eAAO,MAAM,MAAM,QAAQ,CAAC;AAAA,MAC7B,CAAC;AAED,aAAO;AAAA,IACR,QAAQ;AACP;AACA,UAAI,eAAe,GAAG;AACrB;AAAA,MACD;AACA,aAAO,cAAc;AAAA,IACtB;AAAA,EACD;AAEA,QAAM,IAAI,MAAM,0DAA0D;AAC3E;AAEA,eAAsB,iBAAgD;AA/DtE;AAgEC,WAAS,OAAO,OAAO,EAAE,GAAG,SAAS,OAAO,MAAM,SAAS,KAAK;AAChE,WAAS,OAAO,YAAY;AAAA,IAC3B,SAAS;AAAA,IACT,OAAO,MAAM;AAAA,EACd;AACA,QAAM,OAAO,MAAM,QAAQ;AAC3B,WAAS,OAAO,cAAc;AAC9B,WAAS,OAAO,aAAa;AAAA,IAC5B,GAAG,SAAS,OAAO;AAAA,IACnB,gBAAgB,oBAAoB,IAAI;AAAA,EACzC;AAEA,QAAM,SAAS,MAAM,+BAA+B,MAAM;AAAA,IACzD,MAAM,4BAA4B,OAAO,WAAW,CAAC;AAAA,EACtD,CAAC;AACD,WAAS,OAAO,SAAS;AAEzB,MAAI;AAEJ,QAAM,eAAe,SAAS,YAAY;AAC1C,QAAM,iBAAgB,YAAO,YAAP,gCAAiB;AACvC,YAAU,eAAe,wBAAwB;AACjD,QAAM,EAAE,OAAO,IAAI;AAAA,IAClB;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EACP;AAEA,QAAM,gBAAgB,oBAAoB,EAAE,KAAK,OAAO,CAAC;AACzD,qBAAmB,cAAc;AACjC,gBAAc,uBAAuB,MAAM,gBAAgB;AAE3D,QAAM,SAAS,UAAU;AAAA,IACxB,OAAO,OAAO;AAAA,IACd,UAAU;AAAA,IACV;AAAA,EACD,CAAC;AACD;AAAA,IACC,cAAc,oBAAoB;AAAA,IAClC;AAAA,EACD;AACA,gBAAc,gBAAgB,MAAM;AACpC,QAAM,WAAW,oBAAoB,IAAI;AAEzC,SAAO,EAAE,KAAK,EAAE,KAAK,+BAA+B,KAAK,CAAC;AAE1D,SAAO;AAAA,IACN;AAAA,IACA,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,OAAO,YAAY;AAClB,YAAM,IAAI;AAAA,QAAQ,CAAC,YAClB,OAAO,MAAM,MAAM,QAAQ,MAAS,CAAC;AAAA,MACtC;AAAA,IACD;AAAA,EACD;AACD;AAEA,eAAe,SAAS;AACvB,QAAM,SAAS,MAAM,eAAe;AACpC,UAAQ,OAAO;AAAA,IACd,GAAG,KAAK,UAAU;AAAA,MACjB,UAAU,OAAO;AAAA,MACjB,WAAW,OAAO;AAAA,MAClB,YAAY,OAAO;AAAA,IACpB,CAAC,CAAC;AAAA;AAAA,EACH;AAEA,QAAM,WAAW,YAAY;AAC5B,UAAM,OAAO,MAAM;AACnB,YAAQ,KAAK,CAAC;AAAA,EACf;AAEA,UAAQ,GAAG,UAAU,QAAQ;AAC7B,UAAQ,GAAG,WAAW,QAAQ;AAC/B;AAEA,IAAM,WAAW,QAAQ,KAAK,CAAC;AAC/B,IAAI,YAAY,aAAa,cAAc,YAAY,GAAG,GAAG;AAC5D,SAAO,EAAE,MAAM,CAAC,QAAQ;AACvB,WAAO,EAAE,MAAM,EAAE,KAAK,2BAA2B,OAAO,IAAI,CAAC;AAC7D,YAAQ,KAAK,CAAC;AAAA,EACf,CAAC;AACF;","names":["db","firstRowValue","toSafeInteger","normalizeRowIds","makePayload","db","c","text","event","event","db","server"]}