rivetkit 2.0.7 → 2.0.9

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 (105) hide show
  1. package/dist/tsup/{chunk-OSK2VSJF.cjs → chunk-2MJYYF2Q.cjs} +12 -12
  2. package/dist/tsup/{chunk-OSK2VSJF.cjs.map → chunk-2MJYYF2Q.cjs.map} +1 -1
  3. package/dist/tsup/{chunk-NUA6LOOJ.cjs → chunk-4PSLOAXR.cjs} +216 -204
  4. package/dist/tsup/chunk-4PSLOAXR.cjs.map +1 -0
  5. package/dist/tsup/{chunk-F7YL5G7Q.cjs → chunk-4YV6RDZL.cjs} +255 -229
  6. package/dist/tsup/chunk-4YV6RDZL.cjs.map +1 -0
  7. package/dist/tsup/{chunk-3ALZ7EGX.cjs → chunk-7OMMIAWP.cjs} +11 -11
  8. package/dist/tsup/{chunk-3ALZ7EGX.cjs.map → chunk-7OMMIAWP.cjs.map} +1 -1
  9. package/dist/tsup/{chunk-GWJTWY3G.cjs → chunk-A44TWAS5.cjs} +6 -6
  10. package/dist/tsup/{chunk-GWJTWY3G.cjs.map → chunk-A44TWAS5.cjs.map} +1 -1
  11. package/dist/tsup/{chunk-B6N6VM37.js → chunk-APHV6WXU.js} +2 -2
  12. package/dist/tsup/{chunk-ETDWYT2P.cjs → chunk-DL7TPF63.cjs} +7 -7
  13. package/dist/tsup/{chunk-ETDWYT2P.cjs.map → chunk-DL7TPF63.cjs.map} +1 -1
  14. package/dist/tsup/{chunk-YL4VZMMT.js → chunk-DLPIL3VC.js} +2 -2
  15. package/dist/tsup/{chunk-VAF63BEI.cjs → chunk-DZZQG7VH.cjs} +3 -3
  16. package/dist/tsup/{chunk-VAF63BEI.cjs.map → chunk-DZZQG7VH.cjs.map} +1 -1
  17. package/dist/tsup/{chunk-RLBM6D4L.js → chunk-E63WU5PL.js} +3 -3
  18. package/dist/tsup/chunk-E63WU5PL.js.map +1 -0
  19. package/dist/tsup/{chunk-DIHKN7NM.js → chunk-F2YZNUPU.js} +3 -3
  20. package/dist/tsup/{chunk-KHRZPP5T.js → chunk-FZP2IBIX.js} +94 -68
  21. package/dist/tsup/chunk-FZP2IBIX.js.map +1 -0
  22. package/dist/tsup/{chunk-NII4KKHD.js → chunk-KHZ2QSQ4.js} +28 -16
  23. package/dist/tsup/chunk-KHZ2QSQ4.js.map +1 -0
  24. package/dist/tsup/{chunk-4EXJ4ITR.cjs → chunk-QGRYH6TU.cjs} +3 -3
  25. package/dist/tsup/{chunk-4EXJ4ITR.cjs.map → chunk-QGRYH6TU.cjs.map} +1 -1
  26. package/dist/tsup/{chunk-NRELKXIX.js → chunk-R7OP5N25.js} +56 -46
  27. package/dist/tsup/chunk-R7OP5N25.js.map +1 -0
  28. package/dist/tsup/{chunk-NDCVQZBS.cjs → chunk-SDXTJDDR.cjs} +62 -52
  29. package/dist/tsup/chunk-SDXTJDDR.cjs.map +1 -0
  30. package/dist/tsup/{chunk-7OOBMCQI.cjs → chunk-SOC4HWCG.cjs} +23 -22
  31. package/dist/tsup/chunk-SOC4HWCG.cjs.map +1 -0
  32. package/dist/tsup/{chunk-LXAVET4A.cjs → chunk-U2IXX6DY.cjs} +3 -3
  33. package/dist/tsup/{chunk-LXAVET4A.cjs.map → chunk-U2IXX6DY.cjs.map} +1 -1
  34. package/dist/tsup/{chunk-2NL3KGJ7.js → chunk-VVCL5DXN.js} +5 -4
  35. package/dist/tsup/chunk-VVCL5DXN.js.map +1 -0
  36. package/dist/tsup/{chunk-54MAHBLL.js → chunk-WBSPHV5V.js} +2 -2
  37. package/dist/tsup/{chunk-WAT5AE7S.js → chunk-WRSWUDFA.js} +5 -5
  38. package/dist/tsup/{chunk-PD6HCAJE.js → chunk-YR2VY4XS.js} +2 -2
  39. package/dist/tsup/client/mod.cjs +9 -9
  40. package/dist/tsup/client/mod.d.cts +2 -2
  41. package/dist/tsup/client/mod.d.ts +2 -2
  42. package/dist/tsup/client/mod.js +8 -8
  43. package/dist/tsup/common/log.cjs +3 -3
  44. package/dist/tsup/common/log.js +2 -2
  45. package/dist/tsup/common/websocket.cjs +4 -4
  46. package/dist/tsup/common/websocket.js +3 -3
  47. package/dist/tsup/{conn-DCSQgIlw.d.ts → conn-Bt8rkUzm.d.ts} +19 -1
  48. package/dist/tsup/{conn-DdzHTm2E.d.cts → conn-CEh3WKbA.d.cts} +19 -1
  49. package/dist/tsup/driver-helpers/mod.cjs +7 -5
  50. package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
  51. package/dist/tsup/driver-helpers/mod.d.cts +4 -2
  52. package/dist/tsup/driver-helpers/mod.d.ts +4 -2
  53. package/dist/tsup/driver-helpers/mod.js +7 -5
  54. package/dist/tsup/driver-test-suite/mod.cjs +103 -113
  55. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  56. package/dist/tsup/driver-test-suite/mod.d.cts +3 -1
  57. package/dist/tsup/driver-test-suite/mod.d.ts +3 -1
  58. package/dist/tsup/driver-test-suite/mod.js +45 -55
  59. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  60. package/dist/tsup/inspector/mod.cjs +6 -6
  61. package/dist/tsup/inspector/mod.d.cts +2 -2
  62. package/dist/tsup/inspector/mod.d.ts +2 -2
  63. package/dist/tsup/inspector/mod.js +5 -5
  64. package/dist/tsup/mod.cjs +10 -10
  65. package/dist/tsup/mod.d.cts +5 -5
  66. package/dist/tsup/mod.d.ts +5 -5
  67. package/dist/tsup/mod.js +9 -9
  68. package/dist/tsup/test/mod.cjs +11 -11
  69. package/dist/tsup/test/mod.d.cts +1 -1
  70. package/dist/tsup/test/mod.d.ts +1 -1
  71. package/dist/tsup/test/mod.js +10 -10
  72. package/dist/tsup/utils.cjs +2 -2
  73. package/dist/tsup/utils.js +1 -1
  74. package/package.json +2 -2
  75. package/src/actor/instance.ts +20 -7
  76. package/src/actor/router-endpoints.ts +2 -1
  77. package/src/actor/router.ts +27 -24
  78. package/src/client/actor-conn.ts +5 -1
  79. package/src/client/config.ts +2 -0
  80. package/src/driver-helpers/mod.ts +1 -0
  81. package/src/driver-test-suite/mod.ts +11 -2
  82. package/src/driver-test-suite/tests/actor-schedule.ts +14 -37
  83. package/src/driver-test-suite/tests/actor-sleep.ts +18 -18
  84. package/src/drivers/engine/actor-driver.ts +39 -10
  85. package/src/drivers/file-system/manager.ts +5 -1
  86. package/src/manager/driver.ts +1 -1
  87. package/src/manager/router.ts +49 -41
  88. package/src/registry/mod.ts +11 -2
  89. package/src/remote-manager-driver/mod.ts +3 -2
  90. package/src/serde.ts +15 -0
  91. package/dist/tsup/chunk-2NL3KGJ7.js.map +0 -1
  92. package/dist/tsup/chunk-7OOBMCQI.cjs.map +0 -1
  93. package/dist/tsup/chunk-F7YL5G7Q.cjs.map +0 -1
  94. package/dist/tsup/chunk-KHRZPP5T.js.map +0 -1
  95. package/dist/tsup/chunk-NDCVQZBS.cjs.map +0 -1
  96. package/dist/tsup/chunk-NII4KKHD.js.map +0 -1
  97. package/dist/tsup/chunk-NRELKXIX.js.map +0 -1
  98. package/dist/tsup/chunk-NUA6LOOJ.cjs.map +0 -1
  99. package/dist/tsup/chunk-RLBM6D4L.js.map +0 -1
  100. /package/dist/tsup/{chunk-B6N6VM37.js.map → chunk-APHV6WXU.js.map} +0 -0
  101. /package/dist/tsup/{chunk-YL4VZMMT.js.map → chunk-DLPIL3VC.js.map} +0 -0
  102. /package/dist/tsup/{chunk-DIHKN7NM.js.map → chunk-F2YZNUPU.js.map} +0 -0
  103. /package/dist/tsup/{chunk-54MAHBLL.js.map → chunk-WBSPHV5V.js.map} +0 -0
  104. /package/dist/tsup/{chunk-WAT5AE7S.js.map → chunk-WRSWUDFA.js.map} +0 -0
  105. /package/dist/tsup/{chunk-PD6HCAJE.js.map → chunk-YR2VY4XS.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunkETDWYT2Pcjs = require('./chunk-ETDWYT2P.cjs');
3
+ var _chunkDL7TPF63cjs = require('./chunk-DL7TPF63.cjs');
4
4
 
5
5
  // src/inspector/protocol/actor.ts
6
6
  var _client = require('hono/client');
@@ -18,7 +18,7 @@ var _factory = require('hono/factory');
18
18
 
19
19
  // src/inspector/log.ts
20
20
  function inspectorLogger() {
21
- return _chunkETDWYT2Pcjs.getLogger.call(void 0, "inspector");
21
+ return _chunkDL7TPF63cjs.getLogger.call(void 0, "inspector");
22
22
  }
23
23
 
24
24
  // src/inspector/utils.ts
@@ -99,4 +99,4 @@ var configureInspectorAccessToken = (runConfig, managerDriver) => {
99
99
 
100
100
 
101
101
  exports.inspectorLogger = inspectorLogger; exports.compareSecrets = compareSecrets; exports.secureInspector = secureInspector; exports.getInspectorUrl = getInspectorUrl; exports.isInspectorEnabled = isInspectorEnabled; exports.configureInspectorAccessToken = configureInspectorAccessToken; exports.createActorInspectorClient = createActorInspectorClient; exports.createManagerInspectorClient = createManagerInspectorClient;
102
- //# sourceMappingURL=chunk-4EXJ4ITR.cjs.map
102
+ //# sourceMappingURL=chunk-QGRYH6TU.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/nathan/rivetkit/packages/rivetkit/dist/tsup/chunk-4EXJ4ITR.cjs","../../src/inspector/protocol/actor.ts","../../src/inspector/protocol/manager.ts","../../src/inspector/utils.ts","../../src/inspector/log.ts"],"names":["client","hc"],"mappings":"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","file":"/Users/nathan/rivetkit/packages/rivetkit/dist/tsup/chunk-4EXJ4ITR.cjs","sourcesContent":[null,"import { hc } from \"hono/client\";\nimport type { createActorInspectorRouter } from \"../actor\";\n\ntype ActorInspectorRouter = ReturnType<typeof createActorInspectorRouter>;\nconst client = hc<ActorInspectorRouter>(\"\");\nexport type ActorInspectorClient = typeof client;\n\nexport const createActorInspectorClient = (\n\t...args: Parameters<typeof hc>\n): ActorInspectorClient => hc<ActorInspectorRouter>(...args);\n","import { hc } from \"hono/client\";\nimport type { createManagerInspectorRouter } from \"../manager\";\n\ntype ManagerInspectorRouter = ReturnType<typeof createManagerInspectorRouter>;\nconst client = hc<ManagerInspectorRouter>(\"\");\nexport type ManagerInspectorClient = typeof client;\n\nexport const createManagerInspectorClient = (\n\t...args: Parameters<typeof hc>\n): ManagerInspectorClient => hc<ManagerInspectorRouter>(...args);\n","import crypto from \"node:crypto\";\nimport { createMiddleware } from \"hono/factory\";\nimport type { ManagerDriver } from \"@/driver-helpers/mod\";\nimport type { RunConfig } from \"@/mod\";\nimport type { RunConfigInput } from \"@/registry/run-config\";\nimport { inspectorLogger } from \"./log\";\n\nexport function compareSecrets(providedSecret: string, validSecret: string) {\n\t// Early length check to avoid unnecessary processing\n\tif (providedSecret.length !== validSecret.length) {\n\t\treturn false;\n\t}\n\n\tconst encoder = new TextEncoder();\n\n\tconst a = encoder.encode(providedSecret);\n\tconst b = encoder.encode(validSecret);\n\n\tif (a.byteLength !== b.byteLength) {\n\t\treturn false;\n\t}\n\n\t// Perform timing-safe comparison\n\tif (!crypto.timingSafeEqual(a, b)) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nexport const secureInspector = (runConfig: RunConfig) =>\n\tcreateMiddleware(async (c, next) => {\n\t\tconst userToken = c.req.header(\"Authorization\")?.replace(\"Bearer \", \"\");\n\t\tif (!userToken) {\n\t\t\treturn c.text(\"Unauthorized\", 401);\n\t\t}\n\n\t\tconst inspectorToken = runConfig.inspector.token?.();\n\t\tif (!inspectorToken) {\n\t\t\treturn c.text(\"Unauthorized\", 401);\n\t\t}\n\n\t\tconst isValid = compareSecrets(userToken, inspectorToken);\n\n\t\tif (!isValid) {\n\t\t\treturn c.text(\"Unauthorized\", 401);\n\t\t}\n\t\tawait next();\n\t});\n\nexport function getInspectorUrl(runConfig: RunConfigInput | undefined) {\n\tif (!runConfig?.inspector?.enabled) {\n\t\treturn \"disabled\";\n\t}\n\n\tconst accessToken = runConfig?.inspector?.token?.();\n\n\tif (!accessToken) {\n\t\tinspectorLogger().warn(\n\t\t\t\"Inspector Token is not set, but Inspector is enabled. Please set it in the run configuration `inspector.token` or via `RIVETKIT_INSPECTOR_TOKEN` environment variable. Inspector will not be accessible.\",\n\t\t);\n\t\treturn \"disabled\";\n\t}\n\n\tconst url = new URL(\"https://inspect.rivet.dev\");\n\n\turl.searchParams.set(\"t\", accessToken);\n\n\tif (runConfig?.inspector?.defaultEndpoint) {\n\t\turl.searchParams.set(\"u\", runConfig.inspector.defaultEndpoint);\n\t}\n\n\treturn url.href;\n}\n\nexport const isInspectorEnabled = (\n\trunConfig: RunConfig,\n\tcontext: \"actor\" | \"manager\",\n) => {\n\tif (typeof runConfig.inspector?.enabled === \"boolean\") {\n\t\treturn runConfig.inspector.enabled;\n\t} else if (typeof runConfig.inspector?.enabled === \"object\") {\n\t\treturn runConfig.inspector.enabled[context];\n\t}\n\treturn false;\n};\n\nexport const configureInspectorAccessToken = (\n\trunConfig: RunConfig,\n\tmanagerDriver: ManagerDriver,\n) => {\n\tif (!runConfig.inspector?.token()) {\n\t\tconst token = managerDriver.getOrCreateInspectorAccessToken();\n\t\trunConfig.inspector.token = () => token;\n\t}\n};\n","import { getLogger } from \"@/common/log\";\n\nexport function inspectorLogger() {\n\treturn getLogger(\"inspector\");\n}\n"]}
1
+ {"version":3,"sources":["/Users/nathan/rivetkit/packages/rivetkit/dist/tsup/chunk-QGRYH6TU.cjs","../../src/inspector/protocol/actor.ts","../../src/inspector/protocol/manager.ts","../../src/inspector/utils.ts","../../src/inspector/log.ts"],"names":["client","hc"],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;ACJA,qCAAmB;AAInB,IAAM,OAAA,EAAS,wBAAA,EAA2B,CAAA;AAGnC,IAAM,2BAAA,EAA6B,CAAA,GACtC,IAAA,EAAA,GACuB,wBAAA,GAA4B,IAAI,CAAA;ADD3D;AACA;AETA;AAIA,IAAMA,QAAAA,EAASC,wBAAAA,EAA6B,CAAA;AAGrC,IAAM,6BAAA,EAA+B,CAAA,GACxC,IAAA,EAAA,GACyBA,wBAAAA,GAA8B,IAAI,CAAA;AFI/D;AACA;AGdA,gFAAmB;AACnB,uCAAiC;AHgBjC;AACA;AIhBO,SAAS,eAAA,CAAA,EAAkB;AACjC,EAAA,OAAO,yCAAA,WAAqB,CAAA;AAC7B;AJkBA;AACA;AGhBO,SAAS,cAAA,CAAe,cAAA,EAAwB,WAAA,EAAqB;AAE3E,EAAA,GAAA,CAAI,cAAA,CAAe,OAAA,IAAW,WAAA,CAAY,MAAA,EAAQ;AACjD,IAAA,OAAO,KAAA;AAAA,EACR;AAEA,EAAA,MAAM,QAAA,EAAU,IAAI,WAAA,CAAY,CAAA;AAEhC,EAAA,MAAM,EAAA,EAAI,OAAA,CAAQ,MAAA,CAAO,cAAc,CAAA;AACvC,EAAA,MAAM,EAAA,EAAI,OAAA,CAAQ,MAAA,CAAO,WAAW,CAAA;AAEpC,EAAA,GAAA,CAAI,CAAA,CAAE,WAAA,IAAe,CAAA,CAAE,UAAA,EAAY;AAClC,IAAA,OAAO,KAAA;AAAA,EACR;AAGA,EAAA,GAAA,CAAI,CAAC,gBAAA,CAAO,eAAA,CAAgB,CAAA,EAAG,CAAC,CAAA,EAAG;AAClC,IAAA,OAAO,KAAA;AAAA,EACR;AACA,EAAA,OAAO,IAAA;AACR;AAEO,IAAM,gBAAA,EAAkB,CAAC,SAAA,EAAA,GAC/B,uCAAA,MAAiB,CAAO,CAAA,EAAG,IAAA,EAAA,GAAS;AA9BrC,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA+BE,EAAA,MAAM,UAAA,EAAA,CAAY,GAAA,EAAA,CAAA,CAAE,GAAA,CAAI,MAAA,CAAO,eAAe,CAAA,EAAA,GAA5B,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAA+B,OAAA,CAAQ,SAAA,EAAW,EAAA,CAAA;AACpE,EAAA,GAAA,CAAI,CAAC,SAAA,EAAW;AACf,IAAA,OAAO,CAAA,CAAE,IAAA,CAAK,cAAA,EAAgB,GAAG,CAAA;AAAA,EAClC;AAEA,EAAA,MAAM,eAAA,EAAA,CAAiB,GAAA,EAAA,CAAA,GAAA,EAAA,SAAA,CAAU,SAAA,CAAA,CAAU,KAAA,EAAA,GAApB,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA;AACvB,EAAA,GAAA,CAAI,CAAC,cAAA,EAAgB;AACpB,IAAA,OAAO,CAAA,CAAE,IAAA,CAAK,cAAA,EAAgB,GAAG,CAAA;AAAA,EAClC;AAEA,EAAA,MAAM,QAAA,EAAU,cAAA,CAAe,SAAA,EAAW,cAAc,CAAA;AAExD,EAAA,GAAA,CAAI,CAAC,OAAA,EAAS;AACb,IAAA,OAAO,CAAA,CAAE,IAAA,CAAK,cAAA,EAAgB,GAAG,CAAA;AAAA,EAClC;AACA,EAAA,MAAM,IAAA,CAAK,CAAA;AACZ,CAAC,CAAA;AAEK,SAAS,eAAA,CAAgB,SAAA,EAAuC;AAjDvE,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAkDC,EAAA,GAAA,CAAI,CAAA,CAAA,CAAC,GAAA,EAAA,UAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,SAAA,CAAW,SAAA,EAAA,GAAX,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAAsB,OAAA,CAAA,EAAS;AACnC,IAAA,OAAO,UAAA;AAAA,EACR;AAEA,EAAA,MAAM,YAAA,EAAA,CAAc,GAAA,EAAA,CAAA,GAAA,EAAA,UAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,SAAA,CAAW,SAAA,EAAA,GAAX,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAAsB,KAAA,EAAA,GAAtB,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAAA,IAAA,CAAA,EAAA,CAAA;AAEpB,EAAA,GAAA,CAAI,CAAC,WAAA,EAAa;AACjB,IAAA,eAAA,CAAgB,CAAA,CAAE,IAAA;AAAA,MACjB;AAAA,IACD,CAAA;AACA,IAAA,OAAO,UAAA;AAAA,EACR;AAEA,EAAA,MAAM,IAAA,EAAM,IAAI,GAAA,CAAI,2BAA2B,CAAA;AAE/C,EAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,GAAA,EAAK,WAAW,CAAA;AAErC,EAAA,GAAA,CAAA,CAAI,GAAA,EAAA,UAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,SAAA,CAAW,SAAA,EAAA,GAAX,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAAsB,eAAA,EAAiB;AAC1C,IAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,GAAA,EAAK,SAAA,CAAU,SAAA,CAAU,eAAe,CAAA;AAAA,EAC9D;AAEA,EAAA,OAAO,GAAA,CAAI,IAAA;AACZ;AAEO,IAAM,mBAAA,EAAqB,CACjC,SAAA,EACA,OAAA,EAAA,GACI;AA7EL,EAAA,IAAA,EAAA,EAAA,EAAA;AA8EC,EAAA,GAAA,CAAI,OAAA,CAAA,CAAO,GAAA,EAAA,SAAA,CAAU,SAAA,EAAA,GAAV,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAAqB,OAAA,EAAA,IAAY,SAAA,EAAW;AACtD,IAAA,OAAO,SAAA,CAAU,SAAA,CAAU,OAAA;AAAA,EAC5B,EAAA,KAAA,GAAA,CAAW,OAAA,CAAA,CAAO,GAAA,EAAA,SAAA,CAAU,SAAA,EAAA,GAAV,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAAqB,OAAA,EAAA,IAAY,QAAA,EAAU;AAC5D,IAAA,OAAO,SAAA,CAAU,SAAA,CAAU,OAAA,CAAQ,OAAO,CAAA;AAAA,EAC3C;AACA,EAAA,OAAO,KAAA;AACR,CAAA;AAEO,IAAM,8BAAA,EAAgC,CAC5C,SAAA,EACA,aAAA,EAAA,GACI;AAzFL,EAAA,IAAA,EAAA;AA0FC,EAAA,GAAA,CAAI,CAAA,CAAA,CAAC,GAAA,EAAA,SAAA,CAAU,SAAA,EAAA,GAAV,KAAA,EAAA,KAAA,EAAA,EAAA,EAAA,CAAqB,KAAA,CAAA,CAAA,CAAA,EAAS;AAClC,IAAA,MAAM,MAAA,EAAQ,aAAA,CAAc,+BAAA,CAAgC,CAAA;AAC5D,IAAA,SAAA,CAAU,SAAA,CAAU,MAAA,EAAQ,CAAA,EAAA,GAAM,KAAA;AAAA,EACnC;AACD,CAAA;AHJA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,uaAAC","file":"/Users/nathan/rivetkit/packages/rivetkit/dist/tsup/chunk-QGRYH6TU.cjs","sourcesContent":[null,"import { hc } from \"hono/client\";\nimport type { createActorInspectorRouter } from \"../actor\";\n\ntype ActorInspectorRouter = ReturnType<typeof createActorInspectorRouter>;\nconst client = hc<ActorInspectorRouter>(\"\");\nexport type ActorInspectorClient = typeof client;\n\nexport const createActorInspectorClient = (\n\t...args: Parameters<typeof hc>\n): ActorInspectorClient => hc<ActorInspectorRouter>(...args);\n","import { hc } from \"hono/client\";\nimport type { createManagerInspectorRouter } from \"../manager\";\n\ntype ManagerInspectorRouter = ReturnType<typeof createManagerInspectorRouter>;\nconst client = hc<ManagerInspectorRouter>(\"\");\nexport type ManagerInspectorClient = typeof client;\n\nexport const createManagerInspectorClient = (\n\t...args: Parameters<typeof hc>\n): ManagerInspectorClient => hc<ManagerInspectorRouter>(...args);\n","import crypto from \"node:crypto\";\nimport { createMiddleware } from \"hono/factory\";\nimport type { ManagerDriver } from \"@/driver-helpers/mod\";\nimport type { RunConfig } from \"@/mod\";\nimport type { RunConfigInput } from \"@/registry/run-config\";\nimport { inspectorLogger } from \"./log\";\n\nexport function compareSecrets(providedSecret: string, validSecret: string) {\n\t// Early length check to avoid unnecessary processing\n\tif (providedSecret.length !== validSecret.length) {\n\t\treturn false;\n\t}\n\n\tconst encoder = new TextEncoder();\n\n\tconst a = encoder.encode(providedSecret);\n\tconst b = encoder.encode(validSecret);\n\n\tif (a.byteLength !== b.byteLength) {\n\t\treturn false;\n\t}\n\n\t// Perform timing-safe comparison\n\tif (!crypto.timingSafeEqual(a, b)) {\n\t\treturn false;\n\t}\n\treturn true;\n}\n\nexport const secureInspector = (runConfig: RunConfig) =>\n\tcreateMiddleware(async (c, next) => {\n\t\tconst userToken = c.req.header(\"Authorization\")?.replace(\"Bearer \", \"\");\n\t\tif (!userToken) {\n\t\t\treturn c.text(\"Unauthorized\", 401);\n\t\t}\n\n\t\tconst inspectorToken = runConfig.inspector.token?.();\n\t\tif (!inspectorToken) {\n\t\t\treturn c.text(\"Unauthorized\", 401);\n\t\t}\n\n\t\tconst isValid = compareSecrets(userToken, inspectorToken);\n\n\t\tif (!isValid) {\n\t\t\treturn c.text(\"Unauthorized\", 401);\n\t\t}\n\t\tawait next();\n\t});\n\nexport function getInspectorUrl(runConfig: RunConfigInput | undefined) {\n\tif (!runConfig?.inspector?.enabled) {\n\t\treturn \"disabled\";\n\t}\n\n\tconst accessToken = runConfig?.inspector?.token?.();\n\n\tif (!accessToken) {\n\t\tinspectorLogger().warn(\n\t\t\t\"Inspector Token is not set, but Inspector is enabled. Please set it in the run configuration `inspector.token` or via `RIVETKIT_INSPECTOR_TOKEN` environment variable. Inspector will not be accessible.\",\n\t\t);\n\t\treturn \"disabled\";\n\t}\n\n\tconst url = new URL(\"https://inspect.rivet.dev\");\n\n\turl.searchParams.set(\"t\", accessToken);\n\n\tif (runConfig?.inspector?.defaultEndpoint) {\n\t\turl.searchParams.set(\"u\", runConfig.inspector.defaultEndpoint);\n\t}\n\n\treturn url.href;\n}\n\nexport const isInspectorEnabled = (\n\trunConfig: RunConfig,\n\tcontext: \"actor\" | \"manager\",\n) => {\n\tif (typeof runConfig.inspector?.enabled === \"boolean\") {\n\t\treturn runConfig.inspector.enabled;\n\t} else if (typeof runConfig.inspector?.enabled === \"object\") {\n\t\treturn runConfig.inspector.enabled[context];\n\t}\n\treturn false;\n};\n\nexport const configureInspectorAccessToken = (\n\trunConfig: RunConfig,\n\tmanagerDriver: ManagerDriver,\n) => {\n\tif (!runConfig.inspector?.token()) {\n\t\tconst token = managerDriver.getOrCreateInspectorAccessToken();\n\t\trunConfig.inspector.token = () => token;\n\t}\n};\n","import { getLogger } from \"@/common/log\";\n\nexport function inspectorLogger() {\n\treturn getLogger(\"inspector\");\n}\n"]}
@@ -1,56 +1,13 @@
1
1
  import {
2
2
  getLogger
3
- } from "./chunk-YL4VZMMT.js";
3
+ } from "./chunk-DLPIL3VC.js";
4
4
  import {
5
5
  assertUnreachable
6
- } from "./chunk-RLBM6D4L.js";
6
+ } from "./chunk-E63WU5PL.js";
7
7
  import {
8
8
  Unreachable
9
9
  } from "./chunk-YPZFLUO6.js";
10
10
 
11
- // src/common/actor-router-consts.ts
12
- var PATH_CONNECT_WEBSOCKET = "/connect/websocket";
13
- var PATH_RAW_WEBSOCKET_PREFIX = "/raw/websocket/";
14
- var HEADER_ACTOR_QUERY = "x-rivet-query";
15
- var HEADER_ENCODING = "x-rivet-encoding";
16
- var HEADER_CONN_PARAMS = "x-rivet-conn-params";
17
- var HEADER_ACTOR_ID = "x-rivet-actor";
18
- var HEADER_CONN_ID = "x-rivet-conn";
19
- var HEADER_CONN_TOKEN = "x-rivet-conn-token";
20
- var HEADER_RIVET_TOKEN = "x-rivet-token";
21
- var HEADER_RIVET_TARGET = "x-rivet-target";
22
- var HEADER_RIVET_ACTOR = "x-rivet-actor";
23
- var WS_PROTOCOL_STANDARD = "rivet";
24
- var WS_PROTOCOL_TARGET = "rivet_target.";
25
- var WS_PROTOCOL_ACTOR = "rivet_actor.";
26
- var WS_PROTOCOL_ENCODING = "rivet_encoding.";
27
- var WS_PROTOCOL_CONN_PARAMS = "rivet_conn_params.";
28
- var WS_PROTOCOL_CONN_ID = "rivet_conn.";
29
- var WS_PROTOCOL_CONN_TOKEN = "rivet_conn_token.";
30
- var WS_PROTOCOL_TOKEN = "rivet_token.";
31
- var WS_PROTOCOL_TRANSPORT = "test_transport.";
32
- var WS_PROTOCOL_PATH = "test_path.";
33
- var ALLOWED_PUBLIC_HEADERS = [
34
- "Content-Type",
35
- "User-Agent",
36
- HEADER_ACTOR_QUERY,
37
- HEADER_ENCODING,
38
- HEADER_CONN_PARAMS,
39
- HEADER_ACTOR_ID,
40
- HEADER_CONN_ID,
41
- HEADER_CONN_TOKEN,
42
- HEADER_RIVET_TARGET,
43
- HEADER_RIVET_ACTOR,
44
- HEADER_RIVET_TOKEN
45
- ];
46
-
47
- // src/serde.ts
48
- import * as cbor from "cbor-x";
49
- import invariant from "invariant";
50
-
51
- // src/actor/protocol/serde.ts
52
- import { z } from "zod";
53
-
54
11
  // src/actor/log.ts
55
12
  function loggerWithoutContext() {
56
13
  return getLogger("actor-runtime");
@@ -98,7 +55,48 @@ function generateRandomString(length = 32) {
98
55
  return result;
99
56
  }
100
57
 
58
+ // src/common/actor-router-consts.ts
59
+ var PATH_CONNECT_WEBSOCKET = "/connect/websocket";
60
+ var PATH_RAW_WEBSOCKET_PREFIX = "/raw/websocket/";
61
+ var HEADER_ACTOR_QUERY = "x-rivet-query";
62
+ var HEADER_ENCODING = "x-rivet-encoding";
63
+ var HEADER_CONN_PARAMS = "x-rivet-conn-params";
64
+ var HEADER_ACTOR_ID = "x-rivet-actor";
65
+ var HEADER_CONN_ID = "x-rivet-conn";
66
+ var HEADER_CONN_TOKEN = "x-rivet-conn-token";
67
+ var HEADER_RIVET_TOKEN = "x-rivet-token";
68
+ var HEADER_RIVET_TARGET = "x-rivet-target";
69
+ var HEADER_RIVET_ACTOR = "x-rivet-actor";
70
+ var WS_PROTOCOL_STANDARD = "rivet";
71
+ var WS_PROTOCOL_TARGET = "rivet_target.";
72
+ var WS_PROTOCOL_ACTOR = "rivet_actor.";
73
+ var WS_PROTOCOL_ENCODING = "rivet_encoding.";
74
+ var WS_PROTOCOL_CONN_PARAMS = "rivet_conn_params.";
75
+ var WS_PROTOCOL_CONN_ID = "rivet_conn.";
76
+ var WS_PROTOCOL_CONN_TOKEN = "rivet_conn_token.";
77
+ var WS_PROTOCOL_TOKEN = "rivet_token.";
78
+ var WS_PROTOCOL_TRANSPORT = "test_transport.";
79
+ var WS_PROTOCOL_PATH = "test_path.";
80
+ var ALLOWED_PUBLIC_HEADERS = [
81
+ "Content-Type",
82
+ "User-Agent",
83
+ HEADER_ACTOR_QUERY,
84
+ HEADER_ENCODING,
85
+ HEADER_CONN_PARAMS,
86
+ HEADER_ACTOR_ID,
87
+ HEADER_CONN_ID,
88
+ HEADER_CONN_TOKEN,
89
+ HEADER_RIVET_TARGET,
90
+ HEADER_RIVET_ACTOR,
91
+ HEADER_RIVET_TOKEN
92
+ ];
93
+
94
+ // src/serde.ts
95
+ import * as cbor from "cbor-x";
96
+ import invariant from "invariant";
97
+
101
98
  // src/actor/protocol/serde.ts
99
+ import { z } from "zod";
102
100
  var EncodingSchema = z.enum(["json", "cbor", "bare"]);
103
101
  var CachedSerializer = class {
104
102
  #data;
@@ -157,6 +155,17 @@ function jsonStringifyCompat(input) {
157
155
  }
158
156
 
159
157
  // src/serde.ts
158
+ function uint8ArrayToBase64(uint8Array) {
159
+ if (typeof Buffer !== "undefined") {
160
+ return Buffer.from(uint8Array).toString("base64");
161
+ }
162
+ let binary = "";
163
+ const len = uint8Array.byteLength;
164
+ for (let i = 0; i < len; i++) {
165
+ binary += String.fromCharCode(uint8Array[i]);
166
+ }
167
+ return btoa(binary);
168
+ }
160
169
  function encodingIsBinary(encoding) {
161
170
  if (encoding === "json") {
162
171
  return false;
@@ -219,6 +228,7 @@ function deserializeWithEncoding(encoding, buffer, versionedDataHandler) {
219
228
  }
220
229
 
221
230
  export {
231
+ uint8ArrayToBase64,
222
232
  encodingIsBinary,
223
233
  contentTypeForEncoding,
224
234
  serializeWithEncoding,
@@ -256,4 +266,4 @@ export {
256
266
  WS_PROTOCOL_PATH,
257
267
  ALLOWED_PUBLIC_HEADERS
258
268
  };
259
- //# sourceMappingURL=chunk-NRELKXIX.js.map
269
+ //# sourceMappingURL=chunk-R7OP5N25.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/actor/log.ts","../../src/actor/utils.ts","../../src/common/actor-router-consts.ts","../../src/serde.ts","../../src/actor/protocol/serde.ts"],"sourcesContent":["import { getLogger } from \"@/common/log\";\n\n/** Prever to use ActorInstance.rlog child logger. This does not provide context in the log, should only be used as a last resort if you cannot pass the actor's child logger. */\nexport function loggerWithoutContext() {\n\treturn getLogger(\"actor-runtime\");\n}\n","import * as errors from \"./errors\";\nimport { loggerWithoutContext } from \"./log\";\n\nexport function assertUnreachable(x: never): never {\n\tloggerWithoutContext().error({\n\t\tmsg: \"unreachable\",\n\t\tvalue: `${x}`,\n\t\tstack: new Error().stack,\n\t});\n\tthrow new errors.Unreachable(x);\n}\n\nexport const throttle = <\n\t// biome-ignore lint/suspicious/noExplicitAny: we want to allow any function\n\tFn extends (...args: any) => any,\n>(\n\tfn: Fn,\n\tdelay: number,\n) => {\n\tlet lastRan = false;\n\tlet lastArgs: Parameters<Fn> | null = null;\n\n\treturn (...args: Parameters<Fn>) => {\n\t\tif (!lastRan) {\n\t\t\tfn.apply(this, args);\n\t\t\tlastRan = true;\n\t\t\tconst timer = () =>\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tlastRan = false;\n\t\t\t\t\tif (lastArgs) {\n\t\t\t\t\t\tfn.apply(this, lastArgs);\n\t\t\t\t\t\tlastRan = true;\n\t\t\t\t\t\tlastArgs = null;\n\t\t\t\t\t\ttimer();\n\t\t\t\t\t}\n\t\t\t\t}, delay);\n\t\t\ttimer();\n\t\t} else lastArgs = args;\n\t};\n};\n\nexport class DeadlineError extends Error {\n\tconstructor() {\n\t\tsuper(\"Promise did not complete before deadline.\");\n\t}\n}\n\nexport function deadline<T>(promise: Promise<T>, timeout: number): Promise<T> {\n\tconst controller = new AbortController();\n\tconst signal = controller.signal;\n\n\t// Set a timeout to abort the operation\n\tconst timeoutId = setTimeout(() => controller.abort(), timeout);\n\n\treturn Promise.race<T>([\n\t\tpromise,\n\t\tnew Promise<T>((_, reject) => {\n\t\t\tsignal.addEventListener(\"abort\", () => reject(new DeadlineError()));\n\t\t}),\n\t]).finally(() => {\n\t\tclearTimeout(timeoutId);\n\t});\n}\n\nexport class Lock<T> {\n\tprivate _locked = false;\n\tprivate _waiting: Array<() => void> = [];\n\n\tconstructor(private _value: T) {}\n\n\tasync lock(fn: (value: T) => Promise<void>): Promise<void> {\n\t\tif (this._locked) {\n\t\t\tawait new Promise<void>((resolve) => this._waiting.push(resolve));\n\t\t}\n\t\tthis._locked = true;\n\n\t\ttry {\n\t\t\tawait fn(this._value);\n\t\t} finally {\n\t\t\tthis._locked = false;\n\t\t\tconst next = this._waiting.shift();\n\t\t\tif (next) next();\n\t\t}\n\t}\n}\n\nexport function generateSecureToken(length = 32) {\n\tconst array = new Uint8Array(length);\n\tcrypto.getRandomValues(array);\n\t// Replace base64 chars that are not URL safe with URL-safe chars and strip padding\n\treturn btoa(String.fromCharCode(...array))\n\t\t.replace(/\\+/g, \"-\")\n\t\t.replace(/\\//g, \"_\")\n\t\t.replace(/=/g, \"\");\n}\n\nexport function generateRandomString(length = 32) {\n\tconst characters =\n\t\t\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\tlet result = \"\";\n\tfor (let i = 0; i < length; i++) {\n\t\tconst randomIndex = Math.floor(Math.random() * characters.length);\n\t\tresult += characters[randomIndex];\n\t}\n\treturn result;\n}\n","// NOTE: This is in a separate file from the router since it needs to be shared between the client & the server. If this was in the router file, the client would end up importing the *entire* actor router and tree shaking would not work.\n\n// MARK: Paths\nexport const PATH_CONNECT_WEBSOCKET = \"/connect/websocket\";\nexport const PATH_RAW_WEBSOCKET_PREFIX = \"/raw/websocket/\";\n\n// MARK: Headers\nexport const HEADER_ACTOR_QUERY = \"x-rivet-query\";\n\nexport const HEADER_ENCODING = \"x-rivet-encoding\";\n\n// IMPORTANT: Params must be in headers or in an E2EE part of the request (i.e. NOT the URL or query string) in order to ensure that tokens can be securely passed in params.\nexport const HEADER_CONN_PARAMS = \"x-rivet-conn-params\";\n\nexport const HEADER_ACTOR_ID = \"x-rivet-actor\";\n\nexport const HEADER_CONN_ID = \"x-rivet-conn\";\n\nexport const HEADER_CONN_TOKEN = \"x-rivet-conn-token\";\n\nexport const HEADER_RIVET_TOKEN = \"x-rivet-token\";\n\n// MARK: Manager Gateway Headers\nexport const HEADER_RIVET_TARGET = \"x-rivet-target\";\nexport const HEADER_RIVET_ACTOR = \"x-rivet-actor\";\n\n// MARK: WebSocket Protocol Prefixes\n/** Some servers (such as node-ws & Cloudflare) require explicitly match a certain WebSocket protocol. This gives us a static protocol to match against. */\nexport const WS_PROTOCOL_STANDARD = \"rivet\";\nexport const WS_PROTOCOL_TARGET = \"rivet_target.\";\nexport const WS_PROTOCOL_ACTOR = \"rivet_actor.\";\nexport const WS_PROTOCOL_ENCODING = \"rivet_encoding.\";\nexport const WS_PROTOCOL_CONN_PARAMS = \"rivet_conn_params.\";\nexport const WS_PROTOCOL_CONN_ID = \"rivet_conn.\";\nexport const WS_PROTOCOL_CONN_TOKEN = \"rivet_conn_token.\";\nexport const WS_PROTOCOL_TOKEN = \"rivet_token.\";\n\n// MARK: WebSocket Inline Test Protocol Prefixes\nexport const WS_PROTOCOL_TRANSPORT = \"test_transport.\";\nexport const WS_PROTOCOL_PATH = \"test_path.\";\n\n/**\n * Headers that publics can send from public clients.\n *\n * Used for CORS.\n **/\nexport const ALLOWED_PUBLIC_HEADERS = [\n\t\"Content-Type\",\n\t\"User-Agent\",\n\tHEADER_ACTOR_QUERY,\n\tHEADER_ENCODING,\n\tHEADER_CONN_PARAMS,\n\tHEADER_ACTOR_ID,\n\tHEADER_CONN_ID,\n\tHEADER_CONN_TOKEN,\n\tHEADER_RIVET_TARGET,\n\tHEADER_RIVET_ACTOR,\n\tHEADER_RIVET_TOKEN,\n];\n","import * as cbor from \"cbor-x\";\nimport invariant from \"invariant\";\nimport { assertUnreachable } from \"@/common/utils\";\nimport type { VersionedDataHandler } from \"@/common/versioned-data\";\nimport type { Encoding } from \"@/mod\";\nimport { jsonStringifyCompat } from \"./actor/protocol/serde\";\n\nexport function uint8ArrayToBase64(uint8Array: Uint8Array): string {\n\t// Check if Buffer is available (Node.js)\n\tif (typeof Buffer !== \"undefined\") {\n\t\treturn Buffer.from(uint8Array).toString(\"base64\");\n\t}\n\n\t// Browser environment - use btoa\n\tlet binary = \"\";\n\tconst len = uint8Array.byteLength;\n\tfor (let i = 0; i < len; i++) {\n\t\tbinary += String.fromCharCode(uint8Array[i]);\n\t}\n\treturn btoa(binary);\n}\n\nexport function encodingIsBinary(encoding: Encoding): boolean {\n\tif (encoding === \"json\") {\n\t\treturn false;\n\t} else if (encoding === \"cbor\" || encoding === \"bare\") {\n\t\treturn true;\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function contentTypeForEncoding(encoding: Encoding): string {\n\tif (encoding === \"json\") {\n\t\treturn \"application/json\";\n\t} else if (encoding === \"cbor\" || encoding === \"bare\") {\n\t\treturn \"application/octet-stream\";\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function wsBinaryTypeForEncoding(\n\tencoding: Encoding,\n): \"arraybuffer\" | \"blob\" {\n\tif (encoding === \"json\") {\n\t\treturn \"blob\";\n\t} else if (encoding === \"cbor\" || encoding === \"bare\") {\n\t\treturn \"arraybuffer\";\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function serializeWithEncoding<T>(\n\tencoding: Encoding,\n\tvalue: T,\n\tversionedDataHandler: VersionedDataHandler<T> | undefined,\n): Uint8Array | string {\n\tif (encoding === \"json\") {\n\t\treturn jsonStringifyCompat(value);\n\t} else if (encoding === \"cbor\") {\n\t\treturn cbor.encode(value);\n\t} else if (encoding === \"bare\") {\n\t\tif (!versionedDataHandler) {\n\t\t\tthrow new Error(\"VersionedDataHandler is required for 'bare' encoding\");\n\t\t}\n\t\treturn versionedDataHandler.serializeWithEmbeddedVersion(value);\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function deserializeWithEncoding<T>(\n\tencoding: Encoding,\n\tbuffer: Uint8Array | string,\n\tversionedDataHandler: VersionedDataHandler<T> | undefined,\n): T {\n\tif (encoding === \"json\") {\n\t\tif (typeof buffer === \"string\") {\n\t\t\treturn JSON.parse(buffer);\n\t\t} else {\n\t\t\tconst decoder = new TextDecoder(\"utf-8\");\n\t\t\tconst jsonString = decoder.decode(buffer);\n\t\t\treturn JSON.parse(jsonString);\n\t\t}\n\t} else if (encoding === \"cbor\") {\n\t\tinvariant(\n\t\t\ttypeof buffer !== \"string\",\n\t\t\t\"buffer cannot be string for cbor encoding\",\n\t\t);\n\t\treturn cbor.decode(buffer);\n\t} else if (encoding === \"bare\") {\n\t\tinvariant(\n\t\t\ttypeof buffer !== \"string\",\n\t\t\t\"buffer cannot be string for bare encoding\",\n\t\t);\n\t\tif (!versionedDataHandler) {\n\t\t\tthrow new Error(\"VersionedDataHandler is required for 'bare' encoding\");\n\t\t}\n\t\treturn versionedDataHandler.deserializeWithEmbeddedVersion(buffer);\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n","import * as cbor from \"cbor-x\";\nimport { z } from \"zod\";\nimport * as errors from \"@/actor/errors\";\nimport type { VersionedDataHandler } from \"@/common/versioned-data\";\nimport { serializeWithEncoding } from \"@/serde\";\nimport { loggerWithoutContext } from \"../log\";\nimport { assertUnreachable } from \"../utils\";\n\n/** Data that can be deserialized. */\nexport type InputData = string | Buffer | Blob | ArrayBufferLike | Uint8Array;\n\n/** Data that's been serialized. */\nexport type OutputData = string | Uint8Array;\n\nexport const EncodingSchema = z.enum([\"json\", \"cbor\", \"bare\"]);\n\n/**\n * Encoding used to communicate between the client & actor.\n */\nexport type Encoding = z.infer<typeof EncodingSchema>;\n\n/**\n * Helper class that helps serialize data without re-serializing for the same encoding.\n */\nexport class CachedSerializer<T> {\n\t#data: T;\n\t#cache = new Map<Encoding, OutputData>();\n\t#versionedDataHandler: VersionedDataHandler<T>;\n\n\tconstructor(data: T, versionedDataHandler: VersionedDataHandler<T>) {\n\t\tthis.#data = data;\n\t\tthis.#versionedDataHandler = versionedDataHandler;\n\t}\n\n\tpublic get rawData(): T {\n\t\treturn this.#data;\n\t}\n\n\tpublic serialize(encoding: Encoding): OutputData {\n\t\tconst cached = this.#cache.get(encoding);\n\t\tif (cached) {\n\t\t\treturn cached;\n\t\t} else {\n\t\t\tconst serialized = serializeWithEncoding(\n\t\t\t\tencoding,\n\t\t\t\tthis.#data,\n\t\t\t\tthis.#versionedDataHandler,\n\t\t\t);\n\t\t\tthis.#cache.set(encoding, serialized);\n\t\t\treturn serialized;\n\t\t}\n\t}\n}\n\n///**\n// * Use `CachedSerializer` if serializing the same data repeatedly.\n// */\n//export function serialize<T>(value: T, encoding: Encoding): OutputData {\n//\tif (encoding === \"json\") {\n//\t\treturn JSON.stringify(value);\n//\t} else if (encoding === \"cbor\") {\n//\t\t// TODO: Remove this hack, but cbor-x can't handle anything extra in data structures\n//\t\tconst cleanValue = JSON.parse(JSON.stringify(value));\n//\t\treturn cbor.encode(cleanValue);\n//\t} else {\n//\t\tassertUnreachable(encoding);\n//\t}\n//}\n//\n//export async function deserialize(data: InputData, encoding: Encoding) {\n//\tif (encoding === \"json\") {\n//\t\tif (typeof data !== \"string\") {\n//\t\t\tlogger().warn(\"received non-string for json parse\");\n//\t\t\tthrow new errors.MalformedMessage();\n//\t\t} else {\n//\t\t\treturn JSON.parse(data);\n//\t\t}\n//\t} else if (encoding === \"cbor\") {\n//\t\tif (data instanceof Blob) {\n//\t\t\tconst arrayBuffer = await data.arrayBuffer();\n//\t\t\treturn cbor.decode(new Uint8Array(arrayBuffer));\n//\t\t} else if (data instanceof Uint8Array) {\n//\t\t\treturn cbor.decode(data);\n//\t\t} else if (\n//\t\t\tdata instanceof ArrayBuffer ||\n//\t\t\tdata instanceof SharedArrayBuffer\n//\t\t) {\n//\t\t\treturn cbor.decode(new Uint8Array(data));\n//\t\t} else {\n//\t\t\tlogger().warn(\"received non-binary type for cbor parse\");\n//\t\t\tthrow new errors.MalformedMessage();\n//\t\t}\n//\t} else {\n//\t\tassertUnreachable(encoding);\n//\t}\n//}\n\n// TODO: Encode base 128\nfunction base64EncodeUint8Array(uint8Array: Uint8Array): string {\n\tlet binary = \"\";\n\tconst len = uint8Array.byteLength;\n\tfor (let i = 0; i < len; i++) {\n\t\tbinary += String.fromCharCode(uint8Array[i]);\n\t}\n\treturn btoa(binary);\n}\n\nfunction base64EncodeArrayBuffer(arrayBuffer: ArrayBuffer): string {\n\tconst uint8Array = new Uint8Array(arrayBuffer);\n\treturn base64EncodeUint8Array(uint8Array);\n}\n\n/** Converts data that was encoded to a string. Some formats (like SSE) don't support raw binary data. */\nexport function encodeDataToString(message: OutputData): string {\n\tif (typeof message === \"string\") {\n\t\treturn message;\n\t} else if (message instanceof ArrayBuffer) {\n\t\treturn base64EncodeArrayBuffer(message);\n\t} else if (message instanceof Uint8Array) {\n\t\treturn base64EncodeUint8Array(message);\n\t} else {\n\t\tassertUnreachable(message);\n\t}\n}\n\n/** Stringifies with compat for values that BARE & CBOR supports. */\nexport function jsonStringifyCompat(input: any): string {\n\treturn JSON.stringify(input, (_key, value) =>\n\t\ttypeof value === \"bigint\" ? value.toString() : value,\n\t);\n}\n"],"mappings":"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","names":["assertUnreachable","assertUnreachable"]}
@@ -1,59 +1,16 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunkETDWYT2Pcjs = require('./chunk-ETDWYT2P.cjs');
3
+ var _chunkDL7TPF63cjs = require('./chunk-DL7TPF63.cjs');
4
4
 
5
5
 
6
- var _chunkLXAVET4Acjs = require('./chunk-LXAVET4A.cjs');
6
+ var _chunkU2IXX6DYcjs = require('./chunk-U2IXX6DY.cjs');
7
7
 
8
8
 
9
9
  var _chunk5QGQK44Lcjs = require('./chunk-5QGQK44L.cjs');
10
10
 
11
- // src/common/actor-router-consts.ts
12
- var PATH_CONNECT_WEBSOCKET = "/connect/websocket";
13
- var PATH_RAW_WEBSOCKET_PREFIX = "/raw/websocket/";
14
- var HEADER_ACTOR_QUERY = "x-rivet-query";
15
- var HEADER_ENCODING = "x-rivet-encoding";
16
- var HEADER_CONN_PARAMS = "x-rivet-conn-params";
17
- var HEADER_ACTOR_ID = "x-rivet-actor";
18
- var HEADER_CONN_ID = "x-rivet-conn";
19
- var HEADER_CONN_TOKEN = "x-rivet-conn-token";
20
- var HEADER_RIVET_TOKEN = "x-rivet-token";
21
- var HEADER_RIVET_TARGET = "x-rivet-target";
22
- var HEADER_RIVET_ACTOR = "x-rivet-actor";
23
- var WS_PROTOCOL_STANDARD = "rivet";
24
- var WS_PROTOCOL_TARGET = "rivet_target.";
25
- var WS_PROTOCOL_ACTOR = "rivet_actor.";
26
- var WS_PROTOCOL_ENCODING = "rivet_encoding.";
27
- var WS_PROTOCOL_CONN_PARAMS = "rivet_conn_params.";
28
- var WS_PROTOCOL_CONN_ID = "rivet_conn.";
29
- var WS_PROTOCOL_CONN_TOKEN = "rivet_conn_token.";
30
- var WS_PROTOCOL_TOKEN = "rivet_token.";
31
- var WS_PROTOCOL_TRANSPORT = "test_transport.";
32
- var WS_PROTOCOL_PATH = "test_path.";
33
- var ALLOWED_PUBLIC_HEADERS = [
34
- "Content-Type",
35
- "User-Agent",
36
- HEADER_ACTOR_QUERY,
37
- HEADER_ENCODING,
38
- HEADER_CONN_PARAMS,
39
- HEADER_ACTOR_ID,
40
- HEADER_CONN_ID,
41
- HEADER_CONN_TOKEN,
42
- HEADER_RIVET_TARGET,
43
- HEADER_RIVET_ACTOR,
44
- HEADER_RIVET_TOKEN
45
- ];
46
-
47
- // src/serde.ts
48
- var _cborx = require('cbor-x'); var cbor = _interopRequireWildcard(_cborx);
49
- var _invariant = require('invariant'); var _invariant2 = _interopRequireDefault(_invariant);
50
-
51
- // src/actor/protocol/serde.ts
52
- var _zod = require('zod');
53
-
54
11
  // src/actor/log.ts
55
12
  function loggerWithoutContext() {
56
- return _chunkETDWYT2Pcjs.getLogger.call(void 0, "actor-runtime");
13
+ return _chunkDL7TPF63cjs.getLogger.call(void 0, "actor-runtime");
57
14
  }
58
15
 
59
16
  // src/actor/utils.ts
@@ -98,7 +55,48 @@ function generateRandomString(length = 32) {
98
55
  return result;
99
56
  }
100
57
 
58
+ // src/common/actor-router-consts.ts
59
+ var PATH_CONNECT_WEBSOCKET = "/connect/websocket";
60
+ var PATH_RAW_WEBSOCKET_PREFIX = "/raw/websocket/";
61
+ var HEADER_ACTOR_QUERY = "x-rivet-query";
62
+ var HEADER_ENCODING = "x-rivet-encoding";
63
+ var HEADER_CONN_PARAMS = "x-rivet-conn-params";
64
+ var HEADER_ACTOR_ID = "x-rivet-actor";
65
+ var HEADER_CONN_ID = "x-rivet-conn";
66
+ var HEADER_CONN_TOKEN = "x-rivet-conn-token";
67
+ var HEADER_RIVET_TOKEN = "x-rivet-token";
68
+ var HEADER_RIVET_TARGET = "x-rivet-target";
69
+ var HEADER_RIVET_ACTOR = "x-rivet-actor";
70
+ var WS_PROTOCOL_STANDARD = "rivet";
71
+ var WS_PROTOCOL_TARGET = "rivet_target.";
72
+ var WS_PROTOCOL_ACTOR = "rivet_actor.";
73
+ var WS_PROTOCOL_ENCODING = "rivet_encoding.";
74
+ var WS_PROTOCOL_CONN_PARAMS = "rivet_conn_params.";
75
+ var WS_PROTOCOL_CONN_ID = "rivet_conn.";
76
+ var WS_PROTOCOL_CONN_TOKEN = "rivet_conn_token.";
77
+ var WS_PROTOCOL_TOKEN = "rivet_token.";
78
+ var WS_PROTOCOL_TRANSPORT = "test_transport.";
79
+ var WS_PROTOCOL_PATH = "test_path.";
80
+ var ALLOWED_PUBLIC_HEADERS = [
81
+ "Content-Type",
82
+ "User-Agent",
83
+ HEADER_ACTOR_QUERY,
84
+ HEADER_ENCODING,
85
+ HEADER_CONN_PARAMS,
86
+ HEADER_ACTOR_ID,
87
+ HEADER_CONN_ID,
88
+ HEADER_CONN_TOKEN,
89
+ HEADER_RIVET_TARGET,
90
+ HEADER_RIVET_ACTOR,
91
+ HEADER_RIVET_TOKEN
92
+ ];
93
+
94
+ // src/serde.ts
95
+ var _cborx = require('cbor-x'); var cbor = _interopRequireWildcard(_cborx);
96
+ var _invariant = require('invariant'); var _invariant2 = _interopRequireDefault(_invariant);
97
+
101
98
  // src/actor/protocol/serde.ts
99
+ var _zod = require('zod');
102
100
  var EncodingSchema = _zod.z.enum(["json", "cbor", "bare"]);
103
101
  var CachedSerializer = class {
104
102
  #data;
@@ -157,13 +155,24 @@ function jsonStringifyCompat(input) {
157
155
  }
158
156
 
159
157
  // src/serde.ts
158
+ function uint8ArrayToBase64(uint8Array) {
159
+ if (typeof Buffer !== "undefined") {
160
+ return Buffer.from(uint8Array).toString("base64");
161
+ }
162
+ let binary = "";
163
+ const len = uint8Array.byteLength;
164
+ for (let i = 0; i < len; i++) {
165
+ binary += String.fromCharCode(uint8Array[i]);
166
+ }
167
+ return btoa(binary);
168
+ }
160
169
  function encodingIsBinary(encoding) {
161
170
  if (encoding === "json") {
162
171
  return false;
163
172
  } else if (encoding === "cbor" || encoding === "bare") {
164
173
  return true;
165
174
  } else {
166
- _chunkLXAVET4Acjs.assertUnreachable.call(void 0, encoding);
175
+ _chunkU2IXX6DYcjs.assertUnreachable.call(void 0, encoding);
167
176
  }
168
177
  }
169
178
  function contentTypeForEncoding(encoding) {
@@ -172,7 +181,7 @@ function contentTypeForEncoding(encoding) {
172
181
  } else if (encoding === "cbor" || encoding === "bare") {
173
182
  return "application/octet-stream";
174
183
  } else {
175
- _chunkLXAVET4Acjs.assertUnreachable.call(void 0, encoding);
184
+ _chunkU2IXX6DYcjs.assertUnreachable.call(void 0, encoding);
176
185
  }
177
186
  }
178
187
  function serializeWithEncoding(encoding, value, versionedDataHandler) {
@@ -186,7 +195,7 @@ function serializeWithEncoding(encoding, value, versionedDataHandler) {
186
195
  }
187
196
  return versionedDataHandler.serializeWithEmbeddedVersion(value);
188
197
  } else {
189
- _chunkLXAVET4Acjs.assertUnreachable.call(void 0, encoding);
198
+ _chunkU2IXX6DYcjs.assertUnreachable.call(void 0, encoding);
190
199
  }
191
200
  }
192
201
  function deserializeWithEncoding(encoding, buffer, versionedDataHandler) {
@@ -214,7 +223,7 @@ function deserializeWithEncoding(encoding, buffer, versionedDataHandler) {
214
223
  }
215
224
  return versionedDataHandler.deserializeWithEmbeddedVersion(buffer);
216
225
  } else {
217
- _chunkLXAVET4Acjs.assertUnreachable.call(void 0, encoding);
226
+ _chunkU2IXX6DYcjs.assertUnreachable.call(void 0, encoding);
218
227
  }
219
228
  }
220
229
 
@@ -255,5 +264,6 @@ function deserializeWithEncoding(encoding, buffer, versionedDataHandler) {
255
264
 
256
265
 
257
266
 
258
- exports.encodingIsBinary = encodingIsBinary; exports.contentTypeForEncoding = contentTypeForEncoding; exports.serializeWithEncoding = serializeWithEncoding; exports.deserializeWithEncoding = deserializeWithEncoding; exports.loggerWithoutContext = loggerWithoutContext; exports.assertUnreachable = assertUnreachable2; exports.DeadlineError = DeadlineError; exports.deadline = deadline; exports.generateSecureToken = generateSecureToken; exports.generateRandomString = generateRandomString; exports.EncodingSchema = EncodingSchema; exports.CachedSerializer = CachedSerializer; exports.encodeDataToString = encodeDataToString; exports.jsonStringifyCompat = jsonStringifyCompat; exports.PATH_CONNECT_WEBSOCKET = PATH_CONNECT_WEBSOCKET; exports.PATH_RAW_WEBSOCKET_PREFIX = PATH_RAW_WEBSOCKET_PREFIX; exports.HEADER_ACTOR_QUERY = HEADER_ACTOR_QUERY; exports.HEADER_ENCODING = HEADER_ENCODING; exports.HEADER_CONN_PARAMS = HEADER_CONN_PARAMS; exports.HEADER_ACTOR_ID = HEADER_ACTOR_ID; exports.HEADER_CONN_ID = HEADER_CONN_ID; exports.HEADER_CONN_TOKEN = HEADER_CONN_TOKEN; exports.HEADER_RIVET_TOKEN = HEADER_RIVET_TOKEN; exports.HEADER_RIVET_TARGET = HEADER_RIVET_TARGET; exports.HEADER_RIVET_ACTOR = HEADER_RIVET_ACTOR; exports.WS_PROTOCOL_STANDARD = WS_PROTOCOL_STANDARD; exports.WS_PROTOCOL_TARGET = WS_PROTOCOL_TARGET; exports.WS_PROTOCOL_ACTOR = WS_PROTOCOL_ACTOR; exports.WS_PROTOCOL_ENCODING = WS_PROTOCOL_ENCODING; exports.WS_PROTOCOL_CONN_PARAMS = WS_PROTOCOL_CONN_PARAMS; exports.WS_PROTOCOL_CONN_ID = WS_PROTOCOL_CONN_ID; exports.WS_PROTOCOL_CONN_TOKEN = WS_PROTOCOL_CONN_TOKEN; exports.WS_PROTOCOL_TOKEN = WS_PROTOCOL_TOKEN; exports.WS_PROTOCOL_TRANSPORT = WS_PROTOCOL_TRANSPORT; exports.WS_PROTOCOL_PATH = WS_PROTOCOL_PATH; exports.ALLOWED_PUBLIC_HEADERS = ALLOWED_PUBLIC_HEADERS;
259
- //# sourceMappingURL=chunk-NDCVQZBS.cjs.map
267
+
268
+ exports.uint8ArrayToBase64 = uint8ArrayToBase64; exports.encodingIsBinary = encodingIsBinary; exports.contentTypeForEncoding = contentTypeForEncoding; exports.serializeWithEncoding = serializeWithEncoding; exports.deserializeWithEncoding = deserializeWithEncoding; exports.loggerWithoutContext = loggerWithoutContext; exports.assertUnreachable = assertUnreachable2; exports.DeadlineError = DeadlineError; exports.deadline = deadline; exports.generateSecureToken = generateSecureToken; exports.generateRandomString = generateRandomString; exports.EncodingSchema = EncodingSchema; exports.CachedSerializer = CachedSerializer; exports.encodeDataToString = encodeDataToString; exports.jsonStringifyCompat = jsonStringifyCompat; exports.PATH_CONNECT_WEBSOCKET = PATH_CONNECT_WEBSOCKET; exports.PATH_RAW_WEBSOCKET_PREFIX = PATH_RAW_WEBSOCKET_PREFIX; exports.HEADER_ACTOR_QUERY = HEADER_ACTOR_QUERY; exports.HEADER_ENCODING = HEADER_ENCODING; exports.HEADER_CONN_PARAMS = HEADER_CONN_PARAMS; exports.HEADER_ACTOR_ID = HEADER_ACTOR_ID; exports.HEADER_CONN_ID = HEADER_CONN_ID; exports.HEADER_CONN_TOKEN = HEADER_CONN_TOKEN; exports.HEADER_RIVET_TOKEN = HEADER_RIVET_TOKEN; exports.HEADER_RIVET_TARGET = HEADER_RIVET_TARGET; exports.HEADER_RIVET_ACTOR = HEADER_RIVET_ACTOR; exports.WS_PROTOCOL_STANDARD = WS_PROTOCOL_STANDARD; exports.WS_PROTOCOL_TARGET = WS_PROTOCOL_TARGET; exports.WS_PROTOCOL_ACTOR = WS_PROTOCOL_ACTOR; exports.WS_PROTOCOL_ENCODING = WS_PROTOCOL_ENCODING; exports.WS_PROTOCOL_CONN_PARAMS = WS_PROTOCOL_CONN_PARAMS; exports.WS_PROTOCOL_CONN_ID = WS_PROTOCOL_CONN_ID; exports.WS_PROTOCOL_CONN_TOKEN = WS_PROTOCOL_CONN_TOKEN; exports.WS_PROTOCOL_TOKEN = WS_PROTOCOL_TOKEN; exports.WS_PROTOCOL_TRANSPORT = WS_PROTOCOL_TRANSPORT; exports.WS_PROTOCOL_PATH = WS_PROTOCOL_PATH; exports.ALLOWED_PUBLIC_HEADERS = ALLOWED_PUBLIC_HEADERS;
269
+ //# sourceMappingURL=chunk-SDXTJDDR.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/nathan/rivetkit/packages/rivetkit/dist/tsup/chunk-SDXTJDDR.cjs","../../src/actor/log.ts","../../src/actor/utils.ts","../../src/common/actor-router-consts.ts","../../src/serde.ts","../../src/actor/protocol/serde.ts"],"names":["assertUnreachable"],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACPO,SAAS,oBAAA,CAAA,EAAuB;AACtC,EAAA,OAAO,yCAAA,eAAyB,CAAA;AACjC;ADSA;AACA;AEZO,SAASA,kBAAAA,CAAkB,CAAA,EAAiB;AAClD,EAAA,oBAAA,CAAqB,CAAA,CAAE,KAAA,CAAM;AAAA,IAC5B,GAAA,EAAK,aAAA;AAAA,IACL,KAAA,EAAO,CAAA,EAAA;AACA,IAAA;AACP,EAAA;AACgB,EAAA;AAClB;AA+Ba;AACZ,EAAA;AACO,IAAA;AACP,EAAA;AACD;AAEgB;AACT,EAAA;AACA,EAAA;AAGA,EAAA;AAEC,EAAA;AACN,IAAA;AACI,IAAA;AACH,MAAA;AACA,IAAA;AACC,EAAA;AACF,IAAA;AACA,EAAA;AACF;AAwBgB;AACT,EAAA;AACC,EAAA;AAEA,EAAA;AAIR;AAEgB;AACT,EAAA;AAEF,EAAA;AACK,EAAA;AACF,IAAA;AACN,IAAA;AACD,EAAA;AACO,EAAA;AACR;AFjDY;AACA;AGtDC;AACA;AAGA;AAEA;AAGA;AAEA;AAEA;AAEA;AAEA;AAGA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AAOA;AACZ,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACD;AHkCY;AACA;AI7FA;AACL;AJ+FK;AACA;AKhGH;AAaI;AAUA;AACZ,EAAA;AACS,EAAA;AACT,EAAA;AAEA,EAAA;AACM,IAAA;AACA,IAAA;AACN,EAAA;AAEW,EAAA;AACH,IAAA;AACR,EAAA;AAEiB,EAAA;AACV,IAAA;AACF,IAAA;AACH,MAAA;AACM,IAAA;AACA,MAAA;AACL,QAAA;AACA,QAAA;AACA,QAAA;AACD,MAAA;AACK,MAAA;AACL,MAAA;AACD,IAAA;AACD,EAAA;AACD;AA8CS;AACJ,EAAA;AACE,EAAA;AACG,EAAA;AACR,IAAA;AACD,EAAA;AACO,EAAA;AACR;AAES;AACF,EAAA;AACC,EAAA;AACR;AAGgB;AACX,EAAA;AACI,IAAA;AACR,EAAA;AACQ,IAAA;AACR,EAAA;AACQ,IAAA;AACD,EAAA;AACNA,IAAAA;AACD,EAAA;AACD;AAGgB;AACR,EAAA;AAAe,IAAA;AAAc,IAAA;AAEpC,EAAA;AACD;ALyBY;AACA;AIrJI;AAEX,EAAA;AACI,IAAA;AACR,EAAA;AAGI,EAAA;AACE,EAAA;AACG,EAAA;AACR,IAAA;AACD,EAAA;AACO,EAAA;AACR;AAEgB;AACX,EAAA;AACI,IAAA;AACR,EAAA;AACQ,IAAA;AACD,EAAA;AACN,IAAA;AACD,EAAA;AACD;AAEgB;AACX,EAAA;AACI,IAAA;AACR,EAAA;AACQ,IAAA;AACD,EAAA;AACN,IAAA;AACD,EAAA;AACD;AAcgB;AAKX,EAAA;AACI,IAAA;AACR,EAAA;AACa,IAAA;AACb,EAAA;AACM,IAAA;AACE,MAAA;AACP,IAAA;AACO,IAAA;AACD,EAAA;AACN,IAAA;AACD,EAAA;AACD;AAEgB;AAKX,EAAA;AACC,IAAA;AACH,MAAA;AACM,IAAA;AACA,MAAA;AACA,MAAA;AACN,MAAA;AACD,IAAA;AACD,EAAA;AACC,IAAA;AACC,MAAA;AACA,MAAA;AACD,IAAA;AACY,IAAA;AACb,EAAA;AACC,IAAA;AACC,MAAA;AACA,MAAA;AACD,IAAA;AACK,IAAA;AACE,MAAA;AACP,IAAA;AACO,IAAA;AACD,EAAA;AACN,IAAA;AACD,EAAA;AACD;AJ4HY;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/Users/nathan/rivetkit/packages/rivetkit/dist/tsup/chunk-SDXTJDDR.cjs","sourcesContent":[null,"import { getLogger } from \"@/common/log\";\n\n/** Prever to use ActorInstance.rlog child logger. This does not provide context in the log, should only be used as a last resort if you cannot pass the actor's child logger. */\nexport function loggerWithoutContext() {\n\treturn getLogger(\"actor-runtime\");\n}\n","import * as errors from \"./errors\";\nimport { loggerWithoutContext } from \"./log\";\n\nexport function assertUnreachable(x: never): never {\n\tloggerWithoutContext().error({\n\t\tmsg: \"unreachable\",\n\t\tvalue: `${x}`,\n\t\tstack: new Error().stack,\n\t});\n\tthrow new errors.Unreachable(x);\n}\n\nexport const throttle = <\n\t// biome-ignore lint/suspicious/noExplicitAny: we want to allow any function\n\tFn extends (...args: any) => any,\n>(\n\tfn: Fn,\n\tdelay: number,\n) => {\n\tlet lastRan = false;\n\tlet lastArgs: Parameters<Fn> | null = null;\n\n\treturn (...args: Parameters<Fn>) => {\n\t\tif (!lastRan) {\n\t\t\tfn.apply(this, args);\n\t\t\tlastRan = true;\n\t\t\tconst timer = () =>\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tlastRan = false;\n\t\t\t\t\tif (lastArgs) {\n\t\t\t\t\t\tfn.apply(this, lastArgs);\n\t\t\t\t\t\tlastRan = true;\n\t\t\t\t\t\tlastArgs = null;\n\t\t\t\t\t\ttimer();\n\t\t\t\t\t}\n\t\t\t\t}, delay);\n\t\t\ttimer();\n\t\t} else lastArgs = args;\n\t};\n};\n\nexport class DeadlineError extends Error {\n\tconstructor() {\n\t\tsuper(\"Promise did not complete before deadline.\");\n\t}\n}\n\nexport function deadline<T>(promise: Promise<T>, timeout: number): Promise<T> {\n\tconst controller = new AbortController();\n\tconst signal = controller.signal;\n\n\t// Set a timeout to abort the operation\n\tconst timeoutId = setTimeout(() => controller.abort(), timeout);\n\n\treturn Promise.race<T>([\n\t\tpromise,\n\t\tnew Promise<T>((_, reject) => {\n\t\t\tsignal.addEventListener(\"abort\", () => reject(new DeadlineError()));\n\t\t}),\n\t]).finally(() => {\n\t\tclearTimeout(timeoutId);\n\t});\n}\n\nexport class Lock<T> {\n\tprivate _locked = false;\n\tprivate _waiting: Array<() => void> = [];\n\n\tconstructor(private _value: T) {}\n\n\tasync lock(fn: (value: T) => Promise<void>): Promise<void> {\n\t\tif (this._locked) {\n\t\t\tawait new Promise<void>((resolve) => this._waiting.push(resolve));\n\t\t}\n\t\tthis._locked = true;\n\n\t\ttry {\n\t\t\tawait fn(this._value);\n\t\t} finally {\n\t\t\tthis._locked = false;\n\t\t\tconst next = this._waiting.shift();\n\t\t\tif (next) next();\n\t\t}\n\t}\n}\n\nexport function generateSecureToken(length = 32) {\n\tconst array = new Uint8Array(length);\n\tcrypto.getRandomValues(array);\n\t// Replace base64 chars that are not URL safe with URL-safe chars and strip padding\n\treturn btoa(String.fromCharCode(...array))\n\t\t.replace(/\\+/g, \"-\")\n\t\t.replace(/\\//g, \"_\")\n\t\t.replace(/=/g, \"\");\n}\n\nexport function generateRandomString(length = 32) {\n\tconst characters =\n\t\t\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\tlet result = \"\";\n\tfor (let i = 0; i < length; i++) {\n\t\tconst randomIndex = Math.floor(Math.random() * characters.length);\n\t\tresult += characters[randomIndex];\n\t}\n\treturn result;\n}\n","// NOTE: This is in a separate file from the router since it needs to be shared between the client & the server. If this was in the router file, the client would end up importing the *entire* actor router and tree shaking would not work.\n\n// MARK: Paths\nexport const PATH_CONNECT_WEBSOCKET = \"/connect/websocket\";\nexport const PATH_RAW_WEBSOCKET_PREFIX = \"/raw/websocket/\";\n\n// MARK: Headers\nexport const HEADER_ACTOR_QUERY = \"x-rivet-query\";\n\nexport const HEADER_ENCODING = \"x-rivet-encoding\";\n\n// IMPORTANT: Params must be in headers or in an E2EE part of the request (i.e. NOT the URL or query string) in order to ensure that tokens can be securely passed in params.\nexport const HEADER_CONN_PARAMS = \"x-rivet-conn-params\";\n\nexport const HEADER_ACTOR_ID = \"x-rivet-actor\";\n\nexport const HEADER_CONN_ID = \"x-rivet-conn\";\n\nexport const HEADER_CONN_TOKEN = \"x-rivet-conn-token\";\n\nexport const HEADER_RIVET_TOKEN = \"x-rivet-token\";\n\n// MARK: Manager Gateway Headers\nexport const HEADER_RIVET_TARGET = \"x-rivet-target\";\nexport const HEADER_RIVET_ACTOR = \"x-rivet-actor\";\n\n// MARK: WebSocket Protocol Prefixes\n/** Some servers (such as node-ws & Cloudflare) require explicitly match a certain WebSocket protocol. This gives us a static protocol to match against. */\nexport const WS_PROTOCOL_STANDARD = \"rivet\";\nexport const WS_PROTOCOL_TARGET = \"rivet_target.\";\nexport const WS_PROTOCOL_ACTOR = \"rivet_actor.\";\nexport const WS_PROTOCOL_ENCODING = \"rivet_encoding.\";\nexport const WS_PROTOCOL_CONN_PARAMS = \"rivet_conn_params.\";\nexport const WS_PROTOCOL_CONN_ID = \"rivet_conn.\";\nexport const WS_PROTOCOL_CONN_TOKEN = \"rivet_conn_token.\";\nexport const WS_PROTOCOL_TOKEN = \"rivet_token.\";\n\n// MARK: WebSocket Inline Test Protocol Prefixes\nexport const WS_PROTOCOL_TRANSPORT = \"test_transport.\";\nexport const WS_PROTOCOL_PATH = \"test_path.\";\n\n/**\n * Headers that publics can send from public clients.\n *\n * Used for CORS.\n **/\nexport const ALLOWED_PUBLIC_HEADERS = [\n\t\"Content-Type\",\n\t\"User-Agent\",\n\tHEADER_ACTOR_QUERY,\n\tHEADER_ENCODING,\n\tHEADER_CONN_PARAMS,\n\tHEADER_ACTOR_ID,\n\tHEADER_CONN_ID,\n\tHEADER_CONN_TOKEN,\n\tHEADER_RIVET_TARGET,\n\tHEADER_RIVET_ACTOR,\n\tHEADER_RIVET_TOKEN,\n];\n","import * as cbor from \"cbor-x\";\nimport invariant from \"invariant\";\nimport { assertUnreachable } from \"@/common/utils\";\nimport type { VersionedDataHandler } from \"@/common/versioned-data\";\nimport type { Encoding } from \"@/mod\";\nimport { jsonStringifyCompat } from \"./actor/protocol/serde\";\n\nexport function uint8ArrayToBase64(uint8Array: Uint8Array): string {\n\t// Check if Buffer is available (Node.js)\n\tif (typeof Buffer !== \"undefined\") {\n\t\treturn Buffer.from(uint8Array).toString(\"base64\");\n\t}\n\n\t// Browser environment - use btoa\n\tlet binary = \"\";\n\tconst len = uint8Array.byteLength;\n\tfor (let i = 0; i < len; i++) {\n\t\tbinary += String.fromCharCode(uint8Array[i]);\n\t}\n\treturn btoa(binary);\n}\n\nexport function encodingIsBinary(encoding: Encoding): boolean {\n\tif (encoding === \"json\") {\n\t\treturn false;\n\t} else if (encoding === \"cbor\" || encoding === \"bare\") {\n\t\treturn true;\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function contentTypeForEncoding(encoding: Encoding): string {\n\tif (encoding === \"json\") {\n\t\treturn \"application/json\";\n\t} else if (encoding === \"cbor\" || encoding === \"bare\") {\n\t\treturn \"application/octet-stream\";\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function wsBinaryTypeForEncoding(\n\tencoding: Encoding,\n): \"arraybuffer\" | \"blob\" {\n\tif (encoding === \"json\") {\n\t\treturn \"blob\";\n\t} else if (encoding === \"cbor\" || encoding === \"bare\") {\n\t\treturn \"arraybuffer\";\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function serializeWithEncoding<T>(\n\tencoding: Encoding,\n\tvalue: T,\n\tversionedDataHandler: VersionedDataHandler<T> | undefined,\n): Uint8Array | string {\n\tif (encoding === \"json\") {\n\t\treturn jsonStringifyCompat(value);\n\t} else if (encoding === \"cbor\") {\n\t\treturn cbor.encode(value);\n\t} else if (encoding === \"bare\") {\n\t\tif (!versionedDataHandler) {\n\t\t\tthrow new Error(\"VersionedDataHandler is required for 'bare' encoding\");\n\t\t}\n\t\treturn versionedDataHandler.serializeWithEmbeddedVersion(value);\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function deserializeWithEncoding<T>(\n\tencoding: Encoding,\n\tbuffer: Uint8Array | string,\n\tversionedDataHandler: VersionedDataHandler<T> | undefined,\n): T {\n\tif (encoding === \"json\") {\n\t\tif (typeof buffer === \"string\") {\n\t\t\treturn JSON.parse(buffer);\n\t\t} else {\n\t\t\tconst decoder = new TextDecoder(\"utf-8\");\n\t\t\tconst jsonString = decoder.decode(buffer);\n\t\t\treturn JSON.parse(jsonString);\n\t\t}\n\t} else if (encoding === \"cbor\") {\n\t\tinvariant(\n\t\t\ttypeof buffer !== \"string\",\n\t\t\t\"buffer cannot be string for cbor encoding\",\n\t\t);\n\t\treturn cbor.decode(buffer);\n\t} else if (encoding === \"bare\") {\n\t\tinvariant(\n\t\t\ttypeof buffer !== \"string\",\n\t\t\t\"buffer cannot be string for bare encoding\",\n\t\t);\n\t\tif (!versionedDataHandler) {\n\t\t\tthrow new Error(\"VersionedDataHandler is required for 'bare' encoding\");\n\t\t}\n\t\treturn versionedDataHandler.deserializeWithEmbeddedVersion(buffer);\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n","import * as cbor from \"cbor-x\";\nimport { z } from \"zod\";\nimport * as errors from \"@/actor/errors\";\nimport type { VersionedDataHandler } from \"@/common/versioned-data\";\nimport { serializeWithEncoding } from \"@/serde\";\nimport { loggerWithoutContext } from \"../log\";\nimport { assertUnreachable } from \"../utils\";\n\n/** Data that can be deserialized. */\nexport type InputData = string | Buffer | Blob | ArrayBufferLike | Uint8Array;\n\n/** Data that's been serialized. */\nexport type OutputData = string | Uint8Array;\n\nexport const EncodingSchema = z.enum([\"json\", \"cbor\", \"bare\"]);\n\n/**\n * Encoding used to communicate between the client & actor.\n */\nexport type Encoding = z.infer<typeof EncodingSchema>;\n\n/**\n * Helper class that helps serialize data without re-serializing for the same encoding.\n */\nexport class CachedSerializer<T> {\n\t#data: T;\n\t#cache = new Map<Encoding, OutputData>();\n\t#versionedDataHandler: VersionedDataHandler<T>;\n\n\tconstructor(data: T, versionedDataHandler: VersionedDataHandler<T>) {\n\t\tthis.#data = data;\n\t\tthis.#versionedDataHandler = versionedDataHandler;\n\t}\n\n\tpublic get rawData(): T {\n\t\treturn this.#data;\n\t}\n\n\tpublic serialize(encoding: Encoding): OutputData {\n\t\tconst cached = this.#cache.get(encoding);\n\t\tif (cached) {\n\t\t\treturn cached;\n\t\t} else {\n\t\t\tconst serialized = serializeWithEncoding(\n\t\t\t\tencoding,\n\t\t\t\tthis.#data,\n\t\t\t\tthis.#versionedDataHandler,\n\t\t\t);\n\t\t\tthis.#cache.set(encoding, serialized);\n\t\t\treturn serialized;\n\t\t}\n\t}\n}\n\n///**\n// * Use `CachedSerializer` if serializing the same data repeatedly.\n// */\n//export function serialize<T>(value: T, encoding: Encoding): OutputData {\n//\tif (encoding === \"json\") {\n//\t\treturn JSON.stringify(value);\n//\t} else if (encoding === \"cbor\") {\n//\t\t// TODO: Remove this hack, but cbor-x can't handle anything extra in data structures\n//\t\tconst cleanValue = JSON.parse(JSON.stringify(value));\n//\t\treturn cbor.encode(cleanValue);\n//\t} else {\n//\t\tassertUnreachable(encoding);\n//\t}\n//}\n//\n//export async function deserialize(data: InputData, encoding: Encoding) {\n//\tif (encoding === \"json\") {\n//\t\tif (typeof data !== \"string\") {\n//\t\t\tlogger().warn(\"received non-string for json parse\");\n//\t\t\tthrow new errors.MalformedMessage();\n//\t\t} else {\n//\t\t\treturn JSON.parse(data);\n//\t\t}\n//\t} else if (encoding === \"cbor\") {\n//\t\tif (data instanceof Blob) {\n//\t\t\tconst arrayBuffer = await data.arrayBuffer();\n//\t\t\treturn cbor.decode(new Uint8Array(arrayBuffer));\n//\t\t} else if (data instanceof Uint8Array) {\n//\t\t\treturn cbor.decode(data);\n//\t\t} else if (\n//\t\t\tdata instanceof ArrayBuffer ||\n//\t\t\tdata instanceof SharedArrayBuffer\n//\t\t) {\n//\t\t\treturn cbor.decode(new Uint8Array(data));\n//\t\t} else {\n//\t\t\tlogger().warn(\"received non-binary type for cbor parse\");\n//\t\t\tthrow new errors.MalformedMessage();\n//\t\t}\n//\t} else {\n//\t\tassertUnreachable(encoding);\n//\t}\n//}\n\n// TODO: Encode base 128\nfunction base64EncodeUint8Array(uint8Array: Uint8Array): string {\n\tlet binary = \"\";\n\tconst len = uint8Array.byteLength;\n\tfor (let i = 0; i < len; i++) {\n\t\tbinary += String.fromCharCode(uint8Array[i]);\n\t}\n\treturn btoa(binary);\n}\n\nfunction base64EncodeArrayBuffer(arrayBuffer: ArrayBuffer): string {\n\tconst uint8Array = new Uint8Array(arrayBuffer);\n\treturn base64EncodeUint8Array(uint8Array);\n}\n\n/** Converts data that was encoded to a string. Some formats (like SSE) don't support raw binary data. */\nexport function encodeDataToString(message: OutputData): string {\n\tif (typeof message === \"string\") {\n\t\treturn message;\n\t} else if (message instanceof ArrayBuffer) {\n\t\treturn base64EncodeArrayBuffer(message);\n\t} else if (message instanceof Uint8Array) {\n\t\treturn base64EncodeUint8Array(message);\n\t} else {\n\t\tassertUnreachable(message);\n\t}\n}\n\n/** Stringifies with compat for values that BARE & CBOR supports. */\nexport function jsonStringifyCompat(input: any): string {\n\treturn JSON.stringify(input, (_key, value) =>\n\t\ttypeof value === \"bigint\" ? value.toString() : value,\n\t);\n}\n"]}
@@ -2,16 +2,16 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkNDCVQZBScjs = require('./chunk-NDCVQZBS.cjs');
5
+ var _chunkSDXTJDDRcjs = require('./chunk-SDXTJDDR.cjs');
6
6
 
7
7
 
8
- var _chunkETDWYT2Pcjs = require('./chunk-ETDWYT2P.cjs');
8
+ var _chunkDL7TPF63cjs = require('./chunk-DL7TPF63.cjs');
9
9
 
10
10
 
11
11
 
12
12
 
13
13
 
14
- var _chunkLXAVET4Acjs = require('./chunk-LXAVET4A.cjs');
14
+ var _chunkU2IXX6DYcjs = require('./chunk-U2IXX6DY.cjs');
15
15
 
16
16
 
17
17
 
@@ -577,7 +577,7 @@ function getValueLength(value) {
577
577
  } else if (value instanceof ArrayBuffer || value instanceof SharedArrayBuffer || value instanceof Uint8Array) {
578
578
  return value.byteLength;
579
579
  } else {
580
- _chunkLXAVET4Acjs.assertUnreachable.call(void 0, value);
580
+ _chunkU2IXX6DYcjs.assertUnreachable.call(void 0, value);
581
581
  }
582
582
  }
583
583
  async function inputDataToBuffer(data) {
@@ -603,7 +603,7 @@ async function parseMessage(value, opts) {
603
603
  if (buffer instanceof Buffer) {
604
604
  buffer = new Uint8Array(buffer);
605
605
  }
606
- return _chunkNDCVQZBScjs.deserializeWithEncoding.call(void 0, opts.encoding, buffer, TO_SERVER_VERSIONED);
606
+ return _chunkSDXTJDDRcjs.deserializeWithEncoding.call(void 0, opts.encoding, buffer, TO_SERVER_VERSIONED);
607
607
  }
608
608
  async function processMessage(message, actor, conn, handler) {
609
609
  let actionId;
@@ -635,13 +635,13 @@ async function processMessage(message, actor, conn, handler) {
635
635
  isPromise: output instanceof Promise
636
636
  });
637
637
  conn._sendMessage(
638
- new (0, _chunkNDCVQZBScjs.CachedSerializer)(
638
+ new (0, _chunkSDXTJDDRcjs.CachedSerializer)(
639
639
  {
640
640
  body: {
641
641
  tag: "ActionResponse",
642
642
  val: {
643
643
  id,
644
- output: _chunkLXAVET4Acjs.bufferToArrayBuffer.call(void 0, cbor.encode(output))
644
+ output: _chunkU2IXX6DYcjs.bufferToArrayBuffer.call(void 0, cbor.encode(output))
645
645
  }
646
646
  }
647
647
  },
@@ -670,10 +670,10 @@ async function processMessage(message, actor, conn, handler) {
670
670
  subscribe
671
671
  });
672
672
  } else {
673
- _chunkLXAVET4Acjs.assertUnreachable.call(void 0, message.body);
673
+ _chunkU2IXX6DYcjs.assertUnreachable.call(void 0, message.body);
674
674
  }
675
675
  } catch (error) {
676
- const { group, code, message: message2, metadata } = _chunkLXAVET4Acjs.deconstructError.call(void 0,
676
+ const { group, code, message: message2, metadata } = _chunkU2IXX6DYcjs.deconstructError.call(void 0,
677
677
  error,
678
678
  actor.rLog,
679
679
  {
@@ -690,7 +690,7 @@ async function processMessage(message, actor, conn, handler) {
690
690
  message: message2
691
691
  });
692
692
  conn._sendMessage(
693
- new (0, _chunkNDCVQZBScjs.CachedSerializer)(
693
+ new (0, _chunkSDXTJDDRcjs.CachedSerializer)(
694
694
  {
695
695
  body: {
696
696
  tag: "Error",
@@ -698,7 +698,7 @@ async function processMessage(message, actor, conn, handler) {
698
698
  group,
699
699
  code,
700
700
  message: message2,
701
- metadata: _chunkLXAVET4Acjs.bufferToArrayBuffer.call(void 0, cbor.encode(metadata)),
701
+ metadata: _chunkU2IXX6DYcjs.bufferToArrayBuffer.call(void 0, cbor.encode(metadata)),
702
702
  actionId: _nullishCoalesce(actionId, () => ( null))
703
703
  }
704
704
  }
@@ -717,13 +717,14 @@ var ClientConfigSchema = _zod2.default.object({
717
717
  host: _zod2.default.string().default("127.0.0.1"),
718
718
  port: _zod2.default.number().default(6420)
719
719
  }).default({}),
720
- token: _zod2.default.string().optional().transform((x) => _nullishCoalesce(x, () => ( _chunkLXAVET4Acjs.getEnvUniversal.call(void 0, "RIVET_TOKEN")))),
720
+ token: _zod2.default.string().optional().transform((x) => _nullishCoalesce(x, () => ( _chunkU2IXX6DYcjs.getEnvUniversal.call(void 0, "RIVET_TOKEN")))),
721
+ totalSlots: _zod2.default.number().optional(),
721
722
  headers: _zod2.default.record(_zod2.default.string()).optional().default({}),
722
723
  /** Endpoint to connect to the Rivet engine. Can be configured via RIVET_ENGINE env var. */
723
- endpoint: _zod2.default.string().nullable().default(() => _nullishCoalesce(_chunkLXAVET4Acjs.getEnvUniversal.call(void 0, "RIVET_ENGINE"), () => ( null))),
724
- namespace: _zod2.default.string().default(() => _nullishCoalesce(_chunkLXAVET4Acjs.getEnvUniversal.call(void 0, "RIVET_NAMESPACE"), () => ( "default"))),
725
- runnerName: _zod2.default.string().default(() => _nullishCoalesce(_chunkLXAVET4Acjs.getEnvUniversal.call(void 0, "RIVET_RUNNER"), () => ( "rivetkit"))),
726
- encoding: _chunkNDCVQZBScjs.EncodingSchema.default("bare"),
724
+ endpoint: _zod2.default.string().nullable().default(() => _nullishCoalesce(_chunkU2IXX6DYcjs.getEnvUniversal.call(void 0, "RIVET_ENGINE"), () => ( null))),
725
+ namespace: _zod2.default.string().default(() => _nullishCoalesce(_chunkU2IXX6DYcjs.getEnvUniversal.call(void 0, "RIVET_NAMESPACE"), () => ( "default"))),
726
+ runnerName: _zod2.default.string().default(() => _nullishCoalesce(_chunkU2IXX6DYcjs.getEnvUniversal.call(void 0, "RIVET_RUNNER"), () => ( "rivetkit"))),
727
+ encoding: _chunkSDXTJDDRcjs.EncodingSchema.default("bare"),
727
728
  transport: TransportSchema.default("websocket"),
728
729
  // This is a function to allow for lazy configuration of upgradeWebSocket on the
729
730
  // fly. This is required since the dependencies that upgradeWebSocket
@@ -735,14 +736,14 @@ var ClientConfigSchema = _zod2.default.object({
735
736
  // src/inspector/config.ts
736
737
 
737
738
  var defaultTokenFn = () => {
738
- const envToken = _chunkLXAVET4Acjs.getEnvUniversal.call(void 0, "RIVETKIT_INSPECTOR_TOKEN");
739
+ const envToken = _chunkU2IXX6DYcjs.getEnvUniversal.call(void 0, "RIVETKIT_INSPECTOR_TOKEN");
739
740
  if (envToken) {
740
741
  return envToken;
741
742
  }
742
743
  return "";
743
744
  };
744
745
  var defaultEnabled = () => {
745
- return _chunkLXAVET4Acjs.getEnvUniversal.call(void 0, "NODE_ENV") !== "production" || !_chunkLXAVET4Acjs.getEnvUniversal.call(void 0, "RIVETKIT_INSPECTOR_DISABLE");
746
+ return _chunkU2IXX6DYcjs.getEnvUniversal.call(void 0, "NODE_ENV") !== "production" || !_chunkU2IXX6DYcjs.getEnvUniversal.call(void 0, "RIVETKIT_INSPECTOR_DISABLE");
746
747
  };
747
748
  var defaultInspectorOrigins = [
748
749
  "http://localhost:43708",
@@ -832,7 +833,7 @@ var RunConfigSchema = ClientConfigSchema.extend({
832
833
  * */
833
834
  logging: _zod.z.object({
834
835
  baseLogger: _zod.z.custom().optional(),
835
- level: _chunkETDWYT2Pcjs.LogLevelSchema.optional()
836
+ level: _chunkDL7TPF63cjs.LogLevelSchema.optional()
836
837
  }).optional().default({})
837
838
  }).default({});
838
839
 
@@ -1017,9 +1018,9 @@ var PERSISTED_ACTOR_VERSIONED = createVersionedDataHandler({
1017
1018
  // src/driver-helpers/utils.ts
1018
1019
  function serializeEmptyPersistData(input) {
1019
1020
  const persistData = {
1020
- input: input !== void 0 ? _chunkLXAVET4Acjs.bufferToArrayBuffer.call(void 0, cbor2.encode(input)) : null,
1021
+ input: input !== void 0 ? _chunkU2IXX6DYcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(input)) : null,
1021
1022
  hasInitialized: false,
1022
- state: _chunkLXAVET4Acjs.bufferToArrayBuffer.call(void 0, cbor2.encode(void 0)),
1023
+ state: _chunkU2IXX6DYcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(void 0)),
1023
1024
  connections: [],
1024
1025
  scheduledEvents: []
1025
1026
  };
@@ -1043,4 +1044,4 @@ function serializeEmptyPersistData(input) {
1043
1044
 
1044
1045
 
1045
1046
  exports.createVersionedDataHandler = createVersionedDataHandler; exports.TO_SERVER_VERSIONED = TO_SERVER_VERSIONED; exports.TO_CLIENT_VERSIONED = TO_CLIENT_VERSIONED; exports.HTTP_ACTION_REQUEST_VERSIONED = HTTP_ACTION_REQUEST_VERSIONED; exports.HTTP_ACTION_RESPONSE_VERSIONED = HTTP_ACTION_RESPONSE_VERSIONED; exports.HTTP_RESPONSE_ERROR_VERSIONED = HTTP_RESPONSE_ERROR_VERSIONED; exports.PERSISTED_ACTOR_VERSIONED = PERSISTED_ACTOR_VERSIONED; exports.ActionContext = ActionContext; exports.inputDataToBuffer = inputDataToBuffer; exports.parseMessage = parseMessage; exports.processMessage = processMessage; exports.ClientConfigSchema = ClientConfigSchema; exports.DriverConfigSchema = DriverConfigSchema; exports.RunConfigSchema = RunConfigSchema; exports.serializeEmptyPersistData = serializeEmptyPersistData;
1046
- //# sourceMappingURL=chunk-7OOBMCQI.cjs.map
1047
+ //# sourceMappingURL=chunk-SOC4HWCG.cjs.map