@rikalabs/akter 0.1.0-alpha.0

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 (603) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE +8 -0
  4. package/README.md +116 -0
  5. package/dist/actor/codecs.d.ts +77 -0
  6. package/dist/actor/codecs.js +87 -0
  7. package/dist/actor/connections.d.ts +34 -0
  8. package/dist/actor/connections.js +145 -0
  9. package/dist/actor/definition.d.ts +893 -0
  10. package/dist/actor/definition.js +147 -0
  11. package/dist/actor/descriptor.d.ts +172 -0
  12. package/dist/actor/descriptor.js +367 -0
  13. package/dist/actor/handles.d.ts +77 -0
  14. package/dist/actor/handles.js +265 -0
  15. package/dist/actor/jobs.d.ts +10 -0
  16. package/dist/actor/jobs.js +137 -0
  17. package/dist/actor/layers.d.ts +41 -0
  18. package/dist/actor/layers.js +177 -0
  19. package/dist/actor/reads.d.ts +47 -0
  20. package/dist/actor/reads.js +224 -0
  21. package/dist/actor/served.d.ts +120 -0
  22. package/dist/actor/served.js +72 -0
  23. package/dist/actor/turns.d.ts +13 -0
  24. package/dist/actor/turns.js +332 -0
  25. package/dist/actor/workflows.d.ts +16 -0
  26. package/dist/actor/workflows.js +37 -0
  27. package/dist/client/calls.d.ts +47 -0
  28. package/dist/client/calls.js +425 -0
  29. package/dist/client/clock.d.ts +56 -0
  30. package/dist/client/clock.js +119 -0
  31. package/dist/client/fleet-page.d.ts +15 -0
  32. package/dist/client/fleet-page.js +13 -0
  33. package/dist/client/fleet.d.ts +29 -0
  34. package/dist/client/fleet.js +51 -0
  35. package/dist/client/index.d.ts +17 -0
  36. package/dist/client/index.js +6 -0
  37. package/dist/client/make.d.ts +157 -0
  38. package/dist/client/make.js +221 -0
  39. package/dist/client/offline/queue.d.ts +118 -0
  40. package/dist/client/offline/queue.js +292 -0
  41. package/dist/client/offline/store.d.ts +74 -0
  42. package/dist/client/offline/store.js +78 -0
  43. package/dist/client/optimistic.d.ts +57 -0
  44. package/dist/client/optimistic.js +136 -0
  45. package/dist/client/report.d.ts +2 -0
  46. package/dist/client/report.js +8 -0
  47. package/dist/client/sessions/connection.d.ts +118 -0
  48. package/dist/client/sessions/connection.js +162 -0
  49. package/dist/client/sessions/feed.d.ts +42 -0
  50. package/dist/client/sessions/feed.js +43 -0
  51. package/dist/client/sessions/sse.d.ts +47 -0
  52. package/dist/client/sessions/sse.js +112 -0
  53. package/dist/client/sessions/stream.d.ts +28 -0
  54. package/dist/client/sessions/stream.js +35 -0
  55. package/dist/client/sessions/watch.d.ts +34 -0
  56. package/dist/client/sessions/watch.js +40 -0
  57. package/dist/client/transport.d.ts +37 -0
  58. package/dist/client/transport.js +66 -0
  59. package/dist/contexts/command.d.ts +132 -0
  60. package/dist/contexts/command.js +20 -0
  61. package/dist/contexts/connection.d.ts +68 -0
  62. package/dist/contexts/connection.js +0 -0
  63. package/dist/contexts/job.d.ts +49 -0
  64. package/dist/contexts/job.js +0 -0
  65. package/dist/contexts/workflow.d.ts +147 -0
  66. package/dist/contexts/workflow.js +22 -0
  67. package/dist/errors/actor.d.ts +200 -0
  68. package/dist/errors/actor.js +271 -0
  69. package/dist/errors/content.d.ts +19 -0
  70. package/dist/errors/content.js +14 -0
  71. package/dist/errors/database.d.ts +22 -0
  72. package/dist/errors/database.js +23 -0
  73. package/dist/errors/events.d.ts +17 -0
  74. package/dist/errors/events.js +14 -0
  75. package/dist/errors/subscription.d.ts +12 -0
  76. package/dist/errors/subscription.js +8 -0
  77. package/dist/errors/workflow.d.ts +28 -0
  78. package/dist/errors/workflow.js +17 -0
  79. package/dist/handles/actors.d.ts +17 -0
  80. package/dist/handles/actors.js +7 -0
  81. package/dist/handles/content.d.ts +59 -0
  82. package/dist/handles/content.js +36 -0
  83. package/dist/handles/intents.d.ts +164 -0
  84. package/dist/handles/intents.js +214 -0
  85. package/dist/handles/run.d.ts +31 -0
  86. package/dist/handles/run.js +21 -0
  87. package/dist/handles/workflow.d.ts +27 -0
  88. package/dist/handles/workflow.js +23 -0
  89. package/dist/identity/caller.d.ts +105 -0
  90. package/dist/identity/caller.js +68 -0
  91. package/dist/identity/child.d.ts +18 -0
  92. package/dist/identity/child.js +39 -0
  93. package/dist/identity/command.d.ts +19 -0
  94. package/dist/identity/command.js +21 -0
  95. package/dist/identity/connection.d.ts +24 -0
  96. package/dist/identity/connection.js +29 -0
  97. package/dist/identity/content.d.ts +18 -0
  98. package/dist/identity/content.js +12 -0
  99. package/dist/identity/digest.d.ts +4 -0
  100. package/dist/identity/digest.js +5 -0
  101. package/dist/identity/execution.d.ts +32 -0
  102. package/dist/identity/execution.js +63 -0
  103. package/dist/identity/mint.d.ts +51 -0
  104. package/dist/identity/mint.js +76 -0
  105. package/dist/identity/version.d.ts +2 -0
  106. package/dist/identity/version.js +3 -0
  107. package/dist/index.d.ts +159 -0
  108. package/dist/index.js +97 -0
  109. package/dist/members/blob.d.ts +43 -0
  110. package/dist/members/blob.js +29 -0
  111. package/dist/members/command.d.ts +109 -0
  112. package/dist/members/command.js +61 -0
  113. package/dist/members/connection.d.ts +55 -0
  114. package/dist/members/connection.js +49 -0
  115. package/dist/members/event.d.ts +36 -0
  116. package/dist/members/event.js +24 -0
  117. package/dist/members/job.d.ts +157 -0
  118. package/dist/members/job.js +67 -0
  119. package/dist/members/payload.d.ts +93 -0
  120. package/dist/members/payload.js +145 -0
  121. package/dist/members/reducer.d.ts +64 -0
  122. package/dist/members/reducer.js +27 -0
  123. package/dist/members/stream.d.ts +36 -0
  124. package/dist/members/stream.js +14 -0
  125. package/dist/members/subscription.d.ts +182 -0
  126. package/dist/members/subscription.js +91 -0
  127. package/dist/members/workflow.d.ts +99 -0
  128. package/dist/members/workflow.js +2 -0
  129. package/dist/policies/access.d.ts +35 -0
  130. package/dist/policies/access.js +6 -0
  131. package/dist/policies/command.d.ts +127 -0
  132. package/dist/policies/command.js +45 -0
  133. package/dist/policies/job.d.ts +28 -0
  134. package/dist/policies/job.js +60 -0
  135. package/dist/policies/schedules.d.ts +33 -0
  136. package/dist/policies/schedules.js +131 -0
  137. package/dist/protocol/frames.d.ts +66 -0
  138. package/dist/protocol/frames.js +55 -0
  139. package/dist/protocol/inspection.d.ts +807 -0
  140. package/dist/protocol/inspection.js +243 -0
  141. package/dist/protocol/wire.d.ts +184 -0
  142. package/dist/protocol/wire.js +150 -0
  143. package/dist/runtime/actors.d.ts +155 -0
  144. package/dist/runtime/actors.js +4 -0
  145. package/dist/runtime/admission.d.ts +34 -0
  146. package/dist/runtime/admission.js +72 -0
  147. package/dist/runtime/adoption/backfill.d.ts +27 -0
  148. package/dist/runtime/adoption/backfill.js +144 -0
  149. package/dist/runtime/adoption/enforce.d.ts +55 -0
  150. package/dist/runtime/adoption/enforce.js +241 -0
  151. package/dist/runtime/adoption/observe.d.ts +43 -0
  152. package/dist/runtime/adoption/observe.js +139 -0
  153. package/dist/runtime/adoption/plan.d.ts +45 -0
  154. package/dist/runtime/adoption/plan.js +192 -0
  155. package/dist/runtime/adoption/startup.d.ts +32 -0
  156. package/dist/runtime/adoption/startup.js +76 -0
  157. package/dist/runtime/adoption/status.d.ts +23 -0
  158. package/dist/runtime/adoption/status.js +47 -0
  159. package/dist/runtime/adoption/target.d.ts +33 -0
  160. package/dist/runtime/adoption/target.js +49 -0
  161. package/dist/runtime/connections/holder.d.ts +221 -0
  162. package/dist/runtime/connections/holder.js +816 -0
  163. package/dist/runtime/connections/owner.d.ts +263 -0
  164. package/dist/runtime/connections/owner.js +896 -0
  165. package/dist/runtime/connections/protocol.d.ts +441 -0
  166. package/dist/runtime/connections/protocol.js +222 -0
  167. package/dist/runtime/connections/reads.d.ts +24 -0
  168. package/dist/runtime/connections/reads.js +19 -0
  169. package/dist/runtime/connections/streams.d.ts +62 -0
  170. package/dist/runtime/connections/streams.js +128 -0
  171. package/dist/runtime/connections/transport.d.ts +40 -0
  172. package/dist/runtime/connections/transport.js +68 -0
  173. package/dist/runtime/connections/watch.d.ts +52 -0
  174. package/dist/runtime/connections/watch.js +159 -0
  175. package/dist/runtime/content/grant.d.ts +34 -0
  176. package/dist/runtime/content/grant.js +58 -0
  177. package/dist/runtime/content/store.d.ts +63 -0
  178. package/dist/runtime/content/store.js +294 -0
  179. package/dist/runtime/cron/key.d.ts +2 -0
  180. package/dist/runtime/cron/key.js +2 -0
  181. package/dist/runtime/cron/schedule.d.ts +69 -0
  182. package/dist/runtime/cron/schedule.js +144 -0
  183. package/dist/runtime/database/bounded.d.ts +43 -0
  184. package/dist/runtime/database/bounded.js +108 -0
  185. package/dist/runtime/database/connection.d.ts +8 -0
  186. package/dist/runtime/database/connection.js +18 -0
  187. package/dist/runtime/database/coordination.d.ts +19 -0
  188. package/dist/runtime/database/coordination.js +72 -0
  189. package/dist/runtime/database/flock.d.ts +10 -0
  190. package/dist/runtime/database/flock.js +60 -0
  191. package/dist/runtime/database/gate.d.ts +26 -0
  192. package/dist/runtime/database/gate.js +54 -0
  193. package/dist/runtime/database/keepalive.d.ts +11 -0
  194. package/dist/runtime/database/keepalive.js +22 -0
  195. package/dist/runtime/database/migrations.d.ts +177 -0
  196. package/dist/runtime/database/migrations.js +1018 -0
  197. package/dist/runtime/database/neki/migrations.d.ts +31 -0
  198. package/dist/runtime/database/neki/migrations.js +276 -0
  199. package/dist/runtime/database/neki/session.d.ts +23 -0
  200. package/dist/runtime/database/neki/session.js +31 -0
  201. package/dist/runtime/database/pglite.d.ts +21 -0
  202. package/dist/runtime/database/pglite.js +74 -0
  203. package/dist/runtime/database/replica.d.ts +41 -0
  204. package/dist/runtime/database/replica.js +51 -0
  205. package/dist/runtime/database/shards.d.ts +21 -0
  206. package/dist/runtime/database/shards.js +37 -0
  207. package/dist/runtime/database/snapshot.d.ts +7 -0
  208. package/dist/runtime/database/snapshot.js +7 -0
  209. package/dist/runtime/database/tenancy.d.ts +69 -0
  210. package/dist/runtime/database/tenancy.js +145 -0
  211. package/dist/runtime/database/transient.d.ts +10 -0
  212. package/dist/runtime/database/transient.js +25 -0
  213. package/dist/runtime/drain.d.ts +132 -0
  214. package/dist/runtime/drain.js +109 -0
  215. package/dist/runtime/entity/mailbox.d.ts +86 -0
  216. package/dist/runtime/entity/mailbox.js +121 -0
  217. package/dist/runtime/entity/register.d.ts +424 -0
  218. package/dist/runtime/entity/register.js +669 -0
  219. package/dist/runtime/events/append.d.ts +192 -0
  220. package/dist/runtime/events/append.js +128 -0
  221. package/dist/runtime/events/cursor.d.ts +2 -0
  222. package/dist/runtime/events/cursor.js +5 -0
  223. package/dist/runtime/events/replay.d.ts +20 -0
  224. package/dist/runtime/events/replay.js +45 -0
  225. package/dist/runtime/feeds.d.ts +26 -0
  226. package/dist/runtime/feeds.js +100 -0
  227. package/dist/runtime/fleet/checks.d.ts +17 -0
  228. package/dist/runtime/fleet/checks.js +106 -0
  229. package/dist/runtime/fleet/maintainer.d.ts +38 -0
  230. package/dist/runtime/fleet/maintainer.js +383 -0
  231. package/dist/runtime/fleet/pgoutput.d.ts +41 -0
  232. package/dist/runtime/fleet/pgoutput.js +102 -0
  233. package/dist/runtime/fleet/setup.d.ts +36 -0
  234. package/dist/runtime/fleet/setup.js +58 -0
  235. package/dist/runtime/fleet/subscribe.d.ts +42 -0
  236. package/dist/runtime/fleet/subscribe.js +147 -0
  237. package/dist/runtime/index.d.ts +66 -0
  238. package/dist/runtime/index.js +37 -0
  239. package/dist/runtime/inspector/http.d.ts +19 -0
  240. package/dist/runtime/inspector/http.js +36 -0
  241. package/dist/runtime/inspector/layer.d.ts +46 -0
  242. package/dist/runtime/inspector/layer.js +180 -0
  243. package/dist/runtime/inspector/queries.d.ts +711 -0
  244. package/dist/runtime/inspector/queries.js +494 -0
  245. package/dist/runtime/jobs/attempt.d.ts +254 -0
  246. package/dist/runtime/jobs/attempt.js +413 -0
  247. package/dist/runtime/jobs/isolation.d.ts +20 -0
  248. package/dist/runtime/jobs/isolation.js +10 -0
  249. package/dist/runtime/jobs/progress.d.ts +95 -0
  250. package/dist/runtime/jobs/progress.js +144 -0
  251. package/dist/runtime/layer.d.ts +260 -0
  252. package/dist/runtime/layer.js +876 -0
  253. package/dist/runtime/members.d.ts +381 -0
  254. package/dist/runtime/members.js +8 -0
  255. package/dist/runtime/operators/audit.d.ts +64 -0
  256. package/dist/runtime/operators/audit.js +56 -0
  257. package/dist/runtime/operators/auth.d.ts +29 -0
  258. package/dist/runtime/operators/auth.js +42 -0
  259. package/dist/runtime/operators/export.d.ts +68 -0
  260. package/dist/runtime/operators/export.js +137 -0
  261. package/dist/runtime/operators/grants.d.ts +45 -0
  262. package/dist/runtime/operators/grants.js +40 -0
  263. package/dist/runtime/operators/repair.d.ts +206 -0
  264. package/dist/runtime/operators/repair.js +226 -0
  265. package/dist/runtime/operators/routes.d.ts +35 -0
  266. package/dist/runtime/operators/routes.js +190 -0
  267. package/dist/runtime/operators/seed.d.ts +123 -0
  268. package/dist/runtime/operators/seed.js +123 -0
  269. package/dist/runtime/payloads/versions.d.ts +65 -0
  270. package/dist/runtime/payloads/versions.js +240 -0
  271. package/dist/runtime/peering/authority.d.ts +42 -0
  272. package/dist/runtime/peering/authority.js +132 -0
  273. package/dist/runtime/peering/credentials.d.ts +21 -0
  274. package/dist/runtime/peering/credentials.js +13 -0
  275. package/dist/runtime/peering/transport.d.ts +51 -0
  276. package/dist/runtime/peering/transport.js +175 -0
  277. package/dist/runtime/queries.d.ts +18 -0
  278. package/dist/runtime/queries.js +169 -0
  279. package/dist/runtime/readiness.d.ts +36 -0
  280. package/dist/runtime/readiness.js +44 -0
  281. package/dist/runtime/registration.d.ts +58 -0
  282. package/dist/runtime/registration.js +186 -0
  283. package/dist/runtime/request.d.ts +158 -0
  284. package/dist/runtime/request.js +102 -0
  285. package/dist/runtime/retry.d.ts +8 -0
  286. package/dist/runtime/retry.js +11 -0
  287. package/dist/runtime/runner.d.ts +93 -0
  288. package/dist/runtime/runner.js +122 -0
  289. package/dist/runtime/storage/codec.d.ts +39 -0
  290. package/dist/runtime/storage/codec.js +41 -0
  291. package/dist/runtime/storage/generation.d.ts +69 -0
  292. package/dist/runtime/storage/generation.js +49 -0
  293. package/dist/runtime/storage/placements.d.ts +15 -0
  294. package/dist/runtime/storage/placements.js +38 -0
  295. package/dist/runtime/storage/platform.d.ts +6 -0
  296. package/dist/runtime/storage/platform.js +9 -0
  297. package/dist/runtime/storage/retention.d.ts +73 -0
  298. package/dist/runtime/storage/retention.js +158 -0
  299. package/dist/runtime/subscriptions/identity.d.ts +31 -0
  300. package/dist/runtime/subscriptions/identity.js +45 -0
  301. package/dist/runtime/subscriptions/relay.d.ts +175 -0
  302. package/dist/runtime/subscriptions/relay.js +763 -0
  303. package/dist/runtime/subscriptions/storage.d.ts +40 -0
  304. package/dist/runtime/subscriptions/storage.js +98 -0
  305. package/dist/runtime/sweeps.d.ts +39 -0
  306. package/dist/runtime/sweeps.js +54 -0
  307. package/dist/runtime/telemetry/defects.d.ts +57 -0
  308. package/dist/runtime/telemetry/defects.js +43 -0
  309. package/dist/runtime/telemetry/metrics.d.ts +52 -0
  310. package/dist/runtime/telemetry/metrics.js +138 -0
  311. package/dist/runtime/telemetry/routes.d.ts +19 -0
  312. package/dist/runtime/telemetry/routes.js +18 -0
  313. package/dist/runtime/telemetry/sampler.d.ts +26 -0
  314. package/dist/runtime/telemetry/sampler.js +101 -0
  315. package/dist/runtime/telemetry/spans.d.ts +38 -0
  316. package/dist/runtime/telemetry/spans.js +44 -0
  317. package/dist/runtime/telemetry/usage.d.ts +52 -0
  318. package/dist/runtime/telemetry/usage.js +30 -0
  319. package/dist/runtime/topology/admission.d.ts +13 -0
  320. package/dist/runtime/topology/admission.js +36 -0
  321. package/dist/runtime/topology/locks.d.ts +56 -0
  322. package/dist/runtime/topology/locks.js +81 -0
  323. package/dist/runtime/topology/messages.d.ts +15 -0
  324. package/dist/runtime/topology/messages.js +32 -0
  325. package/dist/runtime/turn/admission.d.ts +22 -0
  326. package/dist/runtime/turn/admission.js +41 -0
  327. package/dist/runtime/turn/blobs.d.ts +38 -0
  328. package/dist/runtime/turn/blobs.js +215 -0
  329. package/dist/runtime/turn/execute.d.ts +208 -0
  330. package/dist/runtime/turn/execute.js +972 -0
  331. package/dist/runtime/turn/group.d.ts +165 -0
  332. package/dist/runtime/turn/group.js +326 -0
  333. package/dist/runtime/turn/hooks.d.ts +44 -0
  334. package/dist/runtime/turn/hooks.js +28 -0
  335. package/dist/runtime/turn/outbox.d.ts +159 -0
  336. package/dist/runtime/turn/outbox.js +269 -0
  337. package/dist/runtime/turn/pipeline.d.ts +68 -0
  338. package/dist/runtime/turn/pipeline.js +83 -0
  339. package/dist/runtime/turn/receipt.d.ts +81 -0
  340. package/dist/runtime/turn/receipt.js +32 -0
  341. package/dist/runtime/turn/relay.d.ts +179 -0
  342. package/dist/runtime/turn/relay.js +685 -0
  343. package/dist/runtime/turn/rows.d.ts +43 -0
  344. package/dist/runtime/turn/rows.js +592 -0
  345. package/dist/runtime/workflows/compatibility.d.ts +125 -0
  346. package/dist/runtime/workflows/compatibility.js +285 -0
  347. package/dist/runtime/workflows/engine.d.ts +107 -0
  348. package/dist/runtime/workflows/engine.js +826 -0
  349. package/dist/runtime/workflows/manifest.d.ts +34 -0
  350. package/dist/runtime/workflows/manifest.js +39 -0
  351. package/dist/runtime/workflows/steps.d.ts +33 -0
  352. package/dist/runtime/workflows/steps.js +152 -0
  353. package/dist/serve/api.d.ts +99 -0
  354. package/dist/serve/api.js +403 -0
  355. package/dist/serve/assertion/binding.d.ts +41 -0
  356. package/dist/serve/assertion/binding.js +92 -0
  357. package/dist/serve/assertion/verify.d.ts +93 -0
  358. package/dist/serve/assertion/verify.js +189 -0
  359. package/dist/serve/auth.d.ts +200 -0
  360. package/dist/serve/auth.js +92 -0
  361. package/dist/serve/clock.d.ts +10 -0
  362. package/dist/serve/clock.js +25 -0
  363. package/dist/serve/jwt.d.ts +65 -0
  364. package/dist/serve/jwt.js +202 -0
  365. package/dist/serve/layer.d.ts +98 -0
  366. package/dist/serve/layer.js +809 -0
  367. package/dist/serve/mcp/endpoint.d.ts +39 -0
  368. package/dist/serve/mcp/endpoint.js +187 -0
  369. package/dist/serve/mcp/tools.d.ts +37 -0
  370. package/dist/serve/mcp/tools.js +125 -0
  371. package/dist/serve/origin.d.ts +6 -0
  372. package/dist/serve/origin.js +21 -0
  373. package/dist/serve/sessions/feed.d.ts +79 -0
  374. package/dist/serve/sessions/feed.js +115 -0
  375. package/dist/serve/sessions/socket.d.ts +56 -0
  376. package/dist/serve/sessions/socket.js +212 -0
  377. package/dist/serve/sessions/sse.d.ts +27 -0
  378. package/dist/serve/sessions/sse.js +26 -0
  379. package/dist/serve/sessions/stream.d.ts +9 -0
  380. package/dist/serve/sessions/stream.js +9 -0
  381. package/dist/serve/sessions/watch.d.ts +12 -0
  382. package/dist/serve/sessions/watch.js +11 -0
  383. package/dist/serve/wire.d.ts +16 -0
  384. package/dist/serve/wire.js +50 -0
  385. package/dist/state/blob.d.ts +71 -0
  386. package/dist/state/blob.js +0 -0
  387. package/dist/state/migration.d.ts +53 -0
  388. package/dist/state/migration.js +29 -0
  389. package/dist/tables/fleet.d.ts +170 -0
  390. package/dist/tables/fleet.js +214 -0
  391. package/dist/tables/owned.d.ts +250 -0
  392. package/dist/tables/owned.js +233 -0
  393. package/dist/testing/actor-test.d.ts +360 -0
  394. package/dist/testing/actor-test.js +337 -0
  395. package/dist/testing/cluster.d.ts +93 -0
  396. package/dist/testing/cluster.js +296 -0
  397. package/dist/testing/conformance/access.d.ts +5 -0
  398. package/dist/testing/conformance/access.js +531 -0
  399. package/dist/testing/conformance/admission.d.ts +11 -0
  400. package/dist/testing/conformance/admission.js +182 -0
  401. package/dist/testing/conformance/adoption.d.ts +2 -0
  402. package/dist/testing/conformance/adoption.js +1019 -0
  403. package/dist/testing/conformance/assertions.d.ts +202 -0
  404. package/dist/testing/conformance/assertions.js +849 -0
  405. package/dist/testing/conformance/batches.d.ts +41 -0
  406. package/dist/testing/conformance/batches.js +388 -0
  407. package/dist/testing/conformance/blobs.d.ts +14 -0
  408. package/dist/testing/conformance/blobs.js +405 -0
  409. package/dist/testing/conformance/capacity.d.ts +8 -0
  410. package/dist/testing/conformance/capacity.js +433 -0
  411. package/dist/testing/conformance/client.d.ts +5 -0
  412. package/dist/testing/conformance/client.js +719 -0
  413. package/dist/testing/conformance/cold-serve.d.ts +16 -0
  414. package/dist/testing/conformance/cold-serve.js +254 -0
  415. package/dist/testing/conformance/connections/actors.d.ts +1143 -0
  416. package/dist/testing/conformance/connections/actors.js +180 -0
  417. package/dist/testing/conformance/connections/harness.d.ts +1754 -0
  418. package/dist/testing/conformance/connections/harness.js +142 -0
  419. package/dist/testing/conformance/connections/holders.d.ts +4 -0
  420. package/dist/testing/conformance/connections/holders.js +165 -0
  421. package/dist/testing/conformance/connections/lifecycle.d.ts +4 -0
  422. package/dist/testing/conformance/connections/lifecycle.js +113 -0
  423. package/dist/testing/conformance/connections/limits.d.ts +4 -0
  424. package/dist/testing/conformance/connections/limits.js +127 -0
  425. package/dist/testing/conformance/connections/reauthorization.d.ts +4 -0
  426. package/dist/testing/conformance/connections/reauthorization.js +170 -0
  427. package/dist/testing/conformance/connections/resync.d.ts +4 -0
  428. package/dist/testing/conformance/connections/resync.js +360 -0
  429. package/dist/testing/conformance/connections/takeover.d.ts +4 -0
  430. package/dist/testing/conformance/connections/takeover.js +287 -0
  431. package/dist/testing/conformance/connections.d.ts +4 -0
  432. package/dist/testing/conformance/connections.js +15 -0
  433. package/dist/testing/conformance/content-blobs.d.ts +16 -0
  434. package/dist/testing/conformance/content-blobs.js +534 -0
  435. package/dist/testing/conformance/counter.d.ts +16 -0
  436. package/dist/testing/conformance/counter.js +813 -0
  437. package/dist/testing/conformance/cron.d.ts +5 -0
  438. package/dist/testing/conformance/cron.js +665 -0
  439. package/dist/testing/conformance/drain.d.ts +26 -0
  440. package/dist/testing/conformance/drain.js +540 -0
  441. package/dist/testing/conformance/effect-control.d.ts +38 -0
  442. package/dist/testing/conformance/effect-control.js +1059 -0
  443. package/dist/testing/conformance/effects.d.ts +23 -0
  444. package/dist/testing/conformance/effects.js +432 -0
  445. package/dist/testing/conformance/events.d.ts +28 -0
  446. package/dist/testing/conformance/events.js +335 -0
  447. package/dist/testing/conformance/export.d.ts +2 -0
  448. package/dist/testing/conformance/export.js +368 -0
  449. package/dist/testing/conformance/fleet.d.ts +444 -0
  450. package/dist/testing/conformance/fleet.js +1009 -0
  451. package/dist/testing/conformance/groups.d.ts +7 -0
  452. package/dist/testing/conformance/groups.js +353 -0
  453. package/dist/testing/conformance/heap.d.ts +3 -0
  454. package/dist/testing/conformance/heap.js +149 -0
  455. package/dist/testing/conformance/http.d.ts +2809 -0
  456. package/dist/testing/conformance/http.js +1234 -0
  457. package/dist/testing/conformance/inspection-views.d.ts +8 -0
  458. package/dist/testing/conformance/inspection-views.js +272 -0
  459. package/dist/testing/conformance/inspector.d.ts +7 -0
  460. package/dist/testing/conformance/inspector.js +650 -0
  461. package/dist/testing/conformance/mint.d.ts +58 -0
  462. package/dist/testing/conformance/mint.js +692 -0
  463. package/dist/testing/conformance/multi-runner.d.ts +8 -0
  464. package/dist/testing/conformance/multi-runner.js +403 -0
  465. package/dist/testing/conformance/neki/plan.d.ts +19 -0
  466. package/dist/testing/conformance/neki/plan.js +30 -0
  467. package/dist/testing/conformance/observability.d.ts +3 -0
  468. package/dist/testing/conformance/observability.js +343 -0
  469. package/dist/testing/conformance/offline.d.ts +4 -0
  470. package/dist/testing/conformance/offline.js +474 -0
  471. package/dist/testing/conformance/operator-harness.d.ts +57 -0
  472. package/dist/testing/conformance/operator-harness.js +78 -0
  473. package/dist/testing/conformance/operator.d.ts +3 -0
  474. package/dist/testing/conformance/operator.js +379 -0
  475. package/dist/testing/conformance/outbox-cross-shard.d.ts +14 -0
  476. package/dist/testing/conformance/outbox-cross-shard.js +160 -0
  477. package/dist/testing/conformance/outbox.d.ts +36 -0
  478. package/dist/testing/conformance/outbox.js +437 -0
  479. package/dist/testing/conformance/payload-migrations.d.ts +3 -0
  480. package/dist/testing/conformance/payload-migrations.js +612 -0
  481. package/dist/testing/conformance/pipeline.d.ts +3 -0
  482. package/dist/testing/conformance/pipeline.js +1040 -0
  483. package/dist/testing/conformance/placement.d.ts +22 -0
  484. package/dist/testing/conformance/placement.js +539 -0
  485. package/dist/testing/conformance/platform.d.ts +40 -0
  486. package/dist/testing/conformance/platform.js +101 -0
  487. package/dist/testing/conformance/progress.d.ts +39 -0
  488. package/dist/testing/conformance/progress.js +666 -0
  489. package/dist/testing/conformance/properties.d.ts +6 -0
  490. package/dist/testing/conformance/properties.js +295 -0
  491. package/dist/testing/conformance/protocols.d.ts +4 -0
  492. package/dist/testing/conformance/protocols.js +618 -0
  493. package/dist/testing/conformance/provider/advertise.d.ts +21 -0
  494. package/dist/testing/conformance/provider/advertise.js +44 -0
  495. package/dist/testing/conformance/read-your-writes.d.ts +20 -0
  496. package/dist/testing/conformance/read-your-writes.js +192 -0
  497. package/dist/testing/conformance/reducers.d.ts +8 -0
  498. package/dist/testing/conformance/reducers.js +258 -0
  499. package/dist/testing/conformance/relay.d.ts +42 -0
  500. package/dist/testing/conformance/relay.js +1115 -0
  501. package/dist/testing/conformance/restore.d.ts +43 -0
  502. package/dist/testing/conformance/restore.js +341 -0
  503. package/dist/testing/conformance/retention.d.ts +14 -0
  504. package/dist/testing/conformance/retention.js +463 -0
  505. package/dist/testing/conformance/rls.d.ts +24 -0
  506. package/dist/testing/conformance/rls.js +576 -0
  507. package/dist/testing/conformance/simulation.d.ts +31 -0
  508. package/dist/testing/conformance/simulation.js +167 -0
  509. package/dist/testing/conformance/single-shard.d.ts +2 -0
  510. package/dist/testing/conformance/single-shard.js +125 -0
  511. package/dist/testing/conformance/singleton.d.ts +3 -0
  512. package/dist/testing/conformance/singleton.js +293 -0
  513. package/dist/testing/conformance/statements.d.ts +60 -0
  514. package/dist/testing/conformance/statements.js +108 -0
  515. package/dist/testing/conformance/streams.d.ts +7 -0
  516. package/dist/testing/conformance/streams.js +280 -0
  517. package/dist/testing/conformance/subscriptions/access.d.ts +4 -0
  518. package/dist/testing/conformance/subscriptions/access.js +98 -0
  519. package/dist/testing/conformance/subscriptions/actors.d.ts +4910 -0
  520. package/dist/testing/conformance/subscriptions/actors.js +372 -0
  521. package/dist/testing/conformance/subscriptions/cluster.d.ts +4 -0
  522. package/dist/testing/conformance/subscriptions/cluster.js +89 -0
  523. package/dist/testing/conformance/subscriptions/delivery.d.ts +4 -0
  524. package/dist/testing/conformance/subscriptions/delivery.js +253 -0
  525. package/dist/testing/conformance/subscriptions/deploys.d.ts +4 -0
  526. package/dist/testing/conformance/subscriptions/deploys.js +162 -0
  527. package/dist/testing/conformance/subscriptions/epochs.d.ts +4 -0
  528. package/dist/testing/conformance/subscriptions/epochs.js +169 -0
  529. package/dist/testing/conformance/subscriptions/failures.d.ts +4 -0
  530. package/dist/testing/conformance/subscriptions/failures.js +108 -0
  531. package/dist/testing/conformance/subscriptions/feeds.d.ts +4 -0
  532. package/dist/testing/conformance/subscriptions/feeds.js +218 -0
  533. package/dist/testing/conformance/subscriptions/harness.d.ts +124 -0
  534. package/dist/testing/conformance/subscriptions/harness.js +143 -0
  535. package/dist/testing/conformance/subscriptions/operator.d.ts +4 -0
  536. package/dist/testing/conformance/subscriptions/operator.js +128 -0
  537. package/dist/testing/conformance/subscriptions/retention.d.ts +4 -0
  538. package/dist/testing/conformance/subscriptions/retention.js +288 -0
  539. package/dist/testing/conformance/subscriptions/routing.d.ts +4 -0
  540. package/dist/testing/conformance/subscriptions/routing.js +179 -0
  541. package/dist/testing/conformance/subscriptions.d.ts +4 -0
  542. package/dist/testing/conformance/subscriptions.js +19 -0
  543. package/dist/testing/conformance/tables.d.ts +125 -0
  544. package/dist/testing/conformance/tables.js +664 -0
  545. package/dist/testing/conformance/transports/actors.d.ts +1907 -0
  546. package/dist/testing/conformance/transports/actors.js +163 -0
  547. package/dist/testing/conformance/transports/client.d.ts +3 -0
  548. package/dist/testing/conformance/transports/client.js +237 -0
  549. package/dist/testing/conformance/transports/feeds.d.ts +3 -0
  550. package/dist/testing/conformance/transports/feeds.js +232 -0
  551. package/dist/testing/conformance/transports/harness.d.ts +93 -0
  552. package/dist/testing/conformance/transports/harness.js +84 -0
  553. package/dist/testing/conformance/transports/streams.d.ts +3 -0
  554. package/dist/testing/conformance/transports/streams.js +96 -0
  555. package/dist/testing/conformance/transports/websocket.d.ts +3 -0
  556. package/dist/testing/conformance/transports/websocket.js +384 -0
  557. package/dist/testing/conformance/transports/wire.d.ts +141 -0
  558. package/dist/testing/conformance/transports/wire.js +204 -0
  559. package/dist/testing/conformance/transports.d.ts +3 -0
  560. package/dist/testing/conformance/transports.js +11 -0
  561. package/dist/testing/conformance/watch.d.ts +59 -0
  562. package/dist/testing/conformance/watch.js +879 -0
  563. package/dist/testing/conformance/workflow-engine.d.ts +97 -0
  564. package/dist/testing/conformance/workflow-engine.js +253 -0
  565. package/dist/testing/conformance/workflow-versions.d.ts +3 -0
  566. package/dist/testing/conformance/workflow-versions.js +545 -0
  567. package/dist/testing/conformance/workflows/access.d.ts +4 -0
  568. package/dist/testing/conformance/workflows/access.js +147 -0
  569. package/dist/testing/conformance/workflows/actors.d.ts +2317 -0
  570. package/dist/testing/conformance/workflows/actors.js +305 -0
  571. package/dist/testing/conformance/workflows/basics.d.ts +4 -0
  572. package/dist/testing/conformance/workflows/basics.js +144 -0
  573. package/dist/testing/conformance/workflows/engine.d.ts +4 -0
  574. package/dist/testing/conformance/workflows/engine.js +80 -0
  575. package/dist/testing/conformance/workflows/guards.d.ts +4 -0
  576. package/dist/testing/conformance/workflows/guards.js +172 -0
  577. package/dist/testing/conformance/workflows/harness.d.ts +14 -0
  578. package/dist/testing/conformance/workflows/harness.js +44 -0
  579. package/dist/testing/conformance/workflows/recovery.d.ts +4 -0
  580. package/dist/testing/conformance/workflows/recovery.js +181 -0
  581. package/dist/testing/conformance/workflows/starts.d.ts +4 -0
  582. package/dist/testing/conformance/workflows/starts.js +57 -0
  583. package/dist/testing/conformance/workflows/suspension.d.ts +4 -0
  584. package/dist/testing/conformance/workflows/suspension.js +106 -0
  585. package/dist/testing/conformance/workflows/waits.d.ts +4 -0
  586. package/dist/testing/conformance/workflows/waits.js +284 -0
  587. package/dist/testing/conformance/workflows.d.ts +4 -0
  588. package/dist/testing/conformance/workflows.js +19 -0
  589. package/dist/testing/conformance.d.ts +330 -0
  590. package/dist/testing/conformance.js +364 -0
  591. package/dist/testing/database.d.ts +31 -0
  592. package/dist/testing/database.js +70 -0
  593. package/dist/testing/foundation.d.ts +41 -0
  594. package/dist/testing/foundation.js +517 -0
  595. package/dist/testing/index.d.ts +20 -0
  596. package/dist/testing/index.js +12 -0
  597. package/dist/testing/property.d.ts +40 -0
  598. package/dist/testing/property.js +95 -0
  599. package/dist/testing/simulate-cluster.d.ts +112 -0
  600. package/dist/testing/simulate-cluster.js +257 -0
  601. package/dist/testing/simulate.d.ts +90 -0
  602. package/dist/testing/simulate.js +127 -0
  603. package/package.json +1 -0
@@ -0,0 +1,159 @@
1
+ import { Effect } from "effect";
2
+ import { InTurn } from "./handles/intents.ts";
3
+ import { InStream } from "./contexts/command.ts";
4
+ import { type Caller } from "./identity/caller.ts";
5
+ import { Query } from "./members/command.ts";
6
+ import { Connection } from "./members/connection.ts";
7
+ import { Cancelled, DeadLetter } from "./members/job.ts";
8
+ import { blob, content } from "./members/blob.ts";
9
+ import { table } from "./tables/owned.ts";
10
+ import { Delivery } from "./members/subscription.ts";
11
+ /**
12
+ * The declaration namespace of `@rikalabs/akter`: one constructor per
13
+ * kind of member, the actor definition, and the ambient-context combinators.
14
+ * Everything here is browser-safe declaration data; serving and runtime
15
+ * assembly live in `@rikalabs/akter/runtime`. An invalid definition
16
+ * throws when it is built, not when the actor first runs.
17
+ *
18
+ * @example
19
+ * const Increment = Actor.command("Increment", { success: Schema.Int })
20
+ * const Counter = Actor.make("Counter", { key: Schema.String, api: { Increment } })
21
+ */
22
+ export declare const Actor: {
23
+ /** Defines an actor type: its key, state, events, tables, blobs, members, creation, schedules, jobs, subscriptions, and policy. */
24
+ make: import("./actor/definition.ts").Make;
25
+ /** Declares a command member; see `Command.make`. */
26
+ command: <const Tag extends string, const P extends import("./index.ts").PayloadOption = import("effect/Schema").Void, Success extends import("./members/command.ts").ValueSchema = import("effect/Schema").Void, Error extends import("./index.ts").DeclaredError = import("effect/Schema").Never>(tag: Tag, options?: {
27
+ readonly payload?: P | undefined;
28
+ readonly success?: Success | undefined;
29
+ readonly error?: Error | undefined;
30
+ } | undefined) => import("./members/command.ts").Member<"command", Tag, import("./members/command.ts").PayloadOf<P>, Success, Error>;
31
+ /** Declares a query member; see `Query.make`. */
32
+ query: <const Tag extends string, const P extends import("./index.ts").PayloadOption = import("effect/Schema").Void, Success extends import("./members/command.ts").ValueSchema = import("effect/Schema").Void, Error extends import("./index.ts").DeclaredError = import("effect/Schema").Never, const Watch extends boolean = false>(tag: Tag, options?: {
33
+ readonly payload?: P;
34
+ readonly success?: Success;
35
+ readonly error?: Error;
36
+ readonly watch?: Watch;
37
+ }) => Query<Tag, import("./members/command.ts").PayloadOf<P>, Success, Error, Watch>;
38
+ /** Declares a connection member: a long-lived session between one client and the actor. */
39
+ connection: <const Tag extends string, Server extends import("./members/command.ts").ValueSchema, const P extends import("./index.ts").PayloadOption = import("effect/Schema").Void, Client extends import("./members/command.ts").ValueSchema = import("effect/Schema").Never, Session extends import("./members/command.ts").ValueSchema | undefined = undefined, Error extends import("./index.ts").DeclaredError = import("effect/Schema").Never, Jobs extends import("./index.ts").ProgressJob = never>(tag: Tag, options: {
40
+ readonly server: Server;
41
+ readonly payload?: P;
42
+ readonly client?: Client;
43
+ readonly session?: Session;
44
+ readonly error?: Error;
45
+ readonly stampCursor?: boolean;
46
+ readonly progress?: {
47
+ readonly jobs: ReadonlyArray<Jobs>;
48
+ readonly to?: "principal" | "all";
49
+ };
50
+ }) => Connection<Tag, import("./members/command.ts").PayloadOf<P>, Server, Client, Session, Error, Jobs>;
51
+ /** Declares a stream member: a live, read-only feed for one subscriber. */
52
+ stream: <const Tag extends string, Success extends import("./members/command.ts").ValueSchema, const P extends import("./index.ts").PayloadOption = import("effect/Schema").Void, Error extends import("./index.ts").DeclaredError = import("effect/Schema").Never>(tag: Tag, options: {
53
+ readonly success: Success;
54
+ readonly payload?: P;
55
+ readonly error?: Error;
56
+ readonly progress?: {
57
+ readonly jobs: ReadonlyArray<import("./index.ts").ProgressJob>;
58
+ };
59
+ }) => import("./index.ts").StreamMember<Tag, import("./members/command.ts").PayloadOf<P>, Success, Error>;
60
+ /** Declares a workflow member and its typed step constructors. */
61
+ workflow: <const Tag extends string, const PayloadFields extends Readonly<Record<string, import("./members/command.ts").ValueSchema>> = {}, Success extends import("./members/command.ts").ValueSchema = import("effect/Schema").Void, Error extends import("./index.ts").DeclaredError = import("effect/Schema").Never>(tag: Tag, options?: {
62
+ readonly payload?: PayloadFields;
63
+ readonly success?: Success;
64
+ readonly error?: Error;
65
+ readonly key?: (payload: import("effect/Schema").Struct<PayloadFields>["Type"]) => string;
66
+ readonly versions?: Readonly<Record<string, import("./members/workflow.ts").VersionRange>>;
67
+ }) => import("./index.ts").Workflow<Tag, import("effect/Schema").Struct<PayloadFields>, Success, Error>;
68
+ /** Declares a durable event class: `const Posted = Actor.event("Posted", fields)`. */
69
+ event: <const Tag extends string, const Fields extends import("effect/Schema").Struct.Fields>(tag: Tag, fields: Fields, options?: import("./index.ts").PayloadOptions) => import("./index.ts").EventOf<Tag, Fields>;
70
+ /** Declares a pure state transition the server runs as an ordinary command turn; a batched one folds queued calls in order. */
71
+ reducer: import("./members/reducer.ts").MakeReducer;
72
+ /** Declares a job class: a request for external I/O that a turn enqueues and an executor runs after commit. */
73
+ job: <const Tag extends string, const Fields extends import("./members/command.ts").PayloadFields = {}, Success extends import("./members/command.ts").ValueSchema = import("effect/Schema").Void, Progress extends import("./members/command.ts").ValueSchema | undefined = undefined>(tag: Tag, options?: {
74
+ readonly payload?: Fields;
75
+ readonly success?: Success;
76
+ readonly progress?: Progress;
77
+ readonly migrations?: import("./index.ts").PayloadMigrations;
78
+ readonly writeVersion?: number;
79
+ }) => import("./index.ts").JobClass<Tag, Fields, Success, Progress>;
80
+ /** The payload schema of a job binding's `onDeadLetter` command: `Actor.DeadLetter(J)`. */
81
+ DeadLetter: typeof DeadLetter;
82
+ /** The payload schema of a job binding's `onCancelled` command: `Actor.Cancelled(J)`. */
83
+ Cancelled: typeof Cancelled;
84
+ /** Declares an actor's keyed state fields and their migrations. */
85
+ state: <const F extends Readonly<Record<string, import("./members/command.ts").ValueSchema>>>(fields: F, options?: {
86
+ readonly migrations?: ReadonlyArray<import("./state/migration.ts").StateMigration>;
87
+ }) => import("./state/migration.ts").ActorState<F>;
88
+ /** Declares an actor-owned Drizzle table whose rows carry the writing actor's identity. */
89
+ table: typeof table;
90
+ /** Declares named binary storage an actor lists in `blobs`. */
91
+ blob: typeof blob;
92
+ /** Declares shared content: immutable bytes stored once per tenant that actors reference by name. */
93
+ content: typeof content;
94
+ /** Builds one step of a state, event, or job migration chain. */
95
+ migration: <const From extends Readonly<Record<string, import("./members/command.ts").ValueSchema>>, const To extends Readonly<Record<string, import("./members/command.ts").ValueSchema>>>(from: From, to: To, upcast: import("./state/migration.ts").StateMigration<From, To>["upcast"], options?: {
96
+ readonly downcast?: (next: import("effect/Schema").Struct<To>["Type"]) => import("effect/Schema").Struct<From>["Type"];
97
+ }) => import("./state/migration.ts").StateMigration<From, To>;
98
+ /** The key of an actor with one instance per tenant; its handle is `X.get()`. */
99
+ singleton: {
100
+ readonly _tag: "Singleton";
101
+ };
102
+ /** Declares a subscription to another actor type's committed events. */
103
+ subscription: import("./members/subscription.ts").SubscriptionFunction;
104
+ /** The payload schema of a subscription handler, which also names the source and events it delivers. */
105
+ Delivery: typeof Delivery;
106
+ /**
107
+ * Ready-made `access` policies for `Actor.make`. `public` allows every caller
108
+ * and kind, which opens the actor to anyone who can reach the server; use it
109
+ * only for demos and deliberately public actors.
110
+ */
111
+ access: {
112
+ public: import("./index.ts").Access;
113
+ };
114
+ /** Provided by the runtime only inside command turns; `X.intents` requires it. */
115
+ InTurn: typeof InTurn;
116
+ /** Provided by the runtime only inside stream handlers; `read.follow` requires it. */
117
+ InStream: typeof InStream;
118
+ /** Runs the piped Effect with `caller` as the ambient caller that handles capture, for trusted code that acts on behalf of a user; without it, in-process code is `System({ source: "process" })`. */
119
+ as: (caller: Caller) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, never>>;
120
+ /** Runs the piped Effect in `tenant`, for trusted code that acts on behalf of a tenant; the default tenant is `"default"`. */
121
+ tenant: (tenant: string) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, never>>;
122
+ /** Gives the command call of the piped Effect the explicit command id `id`, so a retry across processes keeps one identity. */
123
+ commandId: (id: string) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, never>>;
124
+ };
125
+ export type { Aggregate, AggregateKind, AnyFleetView, DerivedTable, FleetFilter, FleetOptions, FleetPage, FleetRow, FleetView, } from "./tables/fleet.ts";
126
+ export { Fleet } from "./tables/fleet.ts";
127
+ export { Actors } from "./handles/actors.ts";
128
+ export { Intent } from "./handles/intents.ts";
129
+ export { Content, ContentStore } from "./handles/content.ts";
130
+ export type { WorkflowRun } from "./handles/run.ts";
131
+ export type { ConnectionHandlers, Executors, Handle, Intents, StreamHandler, } from "./actor/definition.ts";
132
+ export { ActorRef, Anonymous, Caller, CurrentCaller, Tenant, User, System, Principal, } from "./identity/caller.ts";
133
+ export { ContentRef } from "./identity/content.ts";
134
+ export type { ContentEntry } from "./identity/content.ts";
135
+ export type { Access, AccessRequest } from "./policies/access.ts";
136
+ export type { Policy } from "./policies/command.ts";
137
+ export { ActorError, ActorUnavailable, CommandConflict, CommandExpired, InvalidCommandId, InvalidInput, Unauthorized, Timeout, NotCreated, MailboxFull, RunnerAtCapacity, QuotaExceeded, SpendLimitExceeded, ConnectionLimitExceeded, StorageQuotaExceeded, SessionEnded, } from "./errors/actor.ts";
138
+ export { RetentionGap, UnknownCursor } from "./errors/events.ts";
139
+ export { ContentTooLarge, InvalidContentRef } from "./errors/content.ts";
140
+ export { ActivityOutcomeUnknown, InvalidExecutionId, InvalidExecutionKey, } from "./errors/workflow.ts";
141
+ export type { Race, Sleep, Step, Wait, Workflow } from "./members/workflow.ts";
142
+ export type { AnyConnection, Connection } from "./members/connection.ts";
143
+ export type { AnyStream, Stream as StreamMember } from "./members/stream.ts";
144
+ export type { AnyJob, JobBinding, JobClass, ProgressJob, ProgressOf } from "./members/job.ts";
145
+ export type { EventOf } from "./members/event.ts";
146
+ export type { DeclaredError, PayloadOption } from "./members/command.ts";
147
+ export type { PayloadMigrations, PayloadOptions } from "./members/payload.ts";
148
+ export type { Batch, Reducer } from "./members/reducer.ts";
149
+ export type { AnyBlob, AnyContent, Blob, ContentBlob } from "./members/blob.ts";
150
+ export type { AnySubscription, DeliveredEvent, DeliveredGap, DeliveredRejection, Delivery, DeliverySchema, Route, SubscribeContext, SubscribeFrom, Subscription, } from "./members/subscription.ts";
151
+ export type { CommandContext, EventEntry, QueryContext, Turn } from "./contexts/command.ts";
152
+ export type { WorkflowContext } from "./contexts/workflow.ts";
153
+ export type { EnqueueContext, EnqueueOptions, ExecutorContext } from "./contexts/job.ts";
154
+ export type { BroadcastContext, BroadcastOptions, ConnectionContext, ConnectionInfo, FrameOf, SessionAccess, } from "./contexts/connection.ts";
155
+ export type { BlobRead, BlobWrite, ContentRead, ContentWrite } from "./state/blob.ts";
156
+ export type { Filter, Filtered, Group, GroupDatabase, Insert, ListOptions, Order, AdoptedTable, AdoptOptions, OwnedTable, OwnerColumns, ReadAdoptedTable, ReadOptions, Row, ScopedRead, ScopedRows, } from "./tables/owned.ts";
157
+ export { ASSERTION_HEADER, ASSERTION_TYPE, canonicalRequest, KEY_REFRESH_PATH, KEY_REFRESH_TYPE, reauthenticationDigest, requestDigest, } from "./serve/assertion/binding.ts";
158
+ export type { BoundRequest } from "./serve/assertion/binding.ts";
159
+ export { ClientWireMessage, ServerWireMessage, SUBPROTOCOL } from "./protocol/frames.ts";
package/dist/index.js ADDED
@@ -0,0 +1,97 @@
1
+ import { Effect } from "effect";
2
+ import { Definition } from "./actor/definition.js";
3
+ import { InTurn } from "./handles/intents.js";
4
+ import { InStream } from "./contexts/command.js";
5
+ import { CurrentCommandId } from "./identity/command.js";
6
+ import { CurrentCaller, Tenant } from "./identity/caller.js";
7
+ import { Command, Query } from "./members/command.js";
8
+ import { Connection } from "./members/connection.js";
9
+ import { StreamMember } from "./members/stream.js";
10
+ import { EventMember } from "./members/event.js";
11
+ import { Reducer } from "./members/reducer.js";
12
+ import { Cancelled, DeadLetter, JobMember } from "./members/job.js";
13
+ import { ActorStates } from "./state/migration.js";
14
+ import { blob, content } from "./members/blob.js";
15
+ import { table } from "./tables/owned.js";
16
+ import { WorkflowMember } from "./runtime/workflows/steps.js";
17
+ import { Delivery, SubscriptionMember } from "./members/subscription.js";
18
+ import { publicAccess } from "./policies/access.js";
19
+ /**
20
+ * The declaration namespace of `@rikalabs/akter`: one constructor per
21
+ * kind of member, the actor definition, and the ambient-context combinators.
22
+ * Everything here is browser-safe declaration data; serving and runtime
23
+ * assembly live in `@rikalabs/akter/runtime`. An invalid definition
24
+ * throws when it is built, not when the actor first runs.
25
+ *
26
+ * @example
27
+ * const Increment = Actor.command("Increment", { success: Schema.Int })
28
+ * const Counter = Actor.make("Counter", { key: Schema.String, api: { Increment } })
29
+ */
30
+ export const Actor = {
31
+ /** Defines an actor type: its key, state, events, tables, blobs, members, creation, schedules, jobs, subscriptions, and policy. */
32
+ make: Definition.make,
33
+ /** Declares a command member; see `Command.make`. */
34
+ command: Command.make,
35
+ /** Declares a query member; see `Query.make`. */
36
+ query: Query.make,
37
+ /** Declares a connection member: a long-lived session between one client and the actor. */
38
+ connection: Connection.make,
39
+ /** Declares a stream member: a live, read-only feed for one subscriber. */
40
+ stream: StreamMember.make,
41
+ /** Declares a workflow member and its typed step constructors. */
42
+ workflow: WorkflowMember.make,
43
+ /** Declares a durable event class: `const Posted = Actor.event("Posted", fields)`. */
44
+ event: EventMember.make,
45
+ /** Declares a pure state transition the server runs as an ordinary command turn; a batched one folds queued calls in order. */
46
+ reducer: Reducer.make,
47
+ /** Declares a job class: a request for external I/O that a turn enqueues and an executor runs after commit. */
48
+ job: JobMember.make,
49
+ /** The payload schema of a job binding's `onDeadLetter` command: `Actor.DeadLetter(J)`. */
50
+ DeadLetter,
51
+ /** The payload schema of a job binding's `onCancelled` command: `Actor.Cancelled(J)`. */
52
+ Cancelled,
53
+ /** Declares an actor's keyed state fields and their migrations. */
54
+ state: ActorStates.make,
55
+ /** Declares an actor-owned Drizzle table whose rows carry the writing actor's identity. */
56
+ table,
57
+ /** Declares named binary storage an actor lists in `blobs`. */
58
+ blob,
59
+ /** Declares shared content: immutable bytes stored once per tenant that actors reference by name. */
60
+ content,
61
+ /** Builds one step of a state, event, or job migration chain. */
62
+ migration: ActorStates.migration,
63
+ /** The key of an actor with one instance per tenant; its handle is `X.get()`. */
64
+ singleton: Definition.singleton,
65
+ /** Declares a subscription to another actor type's committed events. */
66
+ subscription: SubscriptionMember.make,
67
+ /** The payload schema of a subscription handler, which also names the source and events it delivers. */
68
+ Delivery,
69
+ /**
70
+ * Ready-made `access` policies for `Actor.make`. `public` allows every caller
71
+ * and kind, which opens the actor to anyone who can reach the server; use it
72
+ * only for demos and deliberately public actors.
73
+ */
74
+ access: { public: publicAccess },
75
+ /** Provided by the runtime only inside command turns; `X.intents` requires it. */
76
+ InTurn,
77
+ /** Provided by the runtime only inside stream handlers; `read.follow` requires it. */
78
+ InStream,
79
+ /** Runs the piped Effect with `caller` as the ambient caller that handles capture, for trusted code that acts on behalf of a user; without it, in-process code is `System({ source: "process" })`. */
80
+ as: (caller) => (effect) => Effect.provideService(effect, CurrentCaller, caller),
81
+ /** Runs the piped Effect in `tenant`, for trusted code that acts on behalf of a tenant; the default tenant is `"default"`. */
82
+ tenant: (tenant) => (effect) => Effect.provideService(effect, Tenant, tenant),
83
+ /** Gives the command call of the piped Effect the explicit command id `id`, so a retry across processes keeps one identity. */
84
+ commandId: (id) => (effect) => Effect.provideService(effect, CurrentCommandId, id),
85
+ };
86
+ export { Fleet } from "./tables/fleet.js";
87
+ export { Actors } from "./handles/actors.js";
88
+ export { Intent } from "./handles/intents.js";
89
+ export { Content, ContentStore } from "./handles/content.js";
90
+ export { ActorRef, Anonymous, Caller, CurrentCaller, Tenant, User, System, Principal, } from "./identity/caller.js";
91
+ export { ContentRef } from "./identity/content.js";
92
+ export { ActorError, ActorUnavailable, CommandConflict, CommandExpired, InvalidCommandId, InvalidInput, Unauthorized, Timeout, NotCreated, MailboxFull, RunnerAtCapacity, QuotaExceeded, SpendLimitExceeded, ConnectionLimitExceeded, StorageQuotaExceeded, SessionEnded, } from "./errors/actor.js";
93
+ export { RetentionGap, UnknownCursor } from "./errors/events.js";
94
+ export { ContentTooLarge, InvalidContentRef } from "./errors/content.js";
95
+ export { ActivityOutcomeUnknown, InvalidExecutionId, InvalidExecutionKey, } from "./errors/workflow.js";
96
+ export { ASSERTION_HEADER, ASSERTION_TYPE, canonicalRequest, KEY_REFRESH_PATH, KEY_REFRESH_TYPE, reauthenticationDigest, requestDigest, } from "./serve/assertion/binding.js";
97
+ export { ClientWireMessage, ServerWireMessage, SUBPROTOCOL } from "./protocol/frames.js";
@@ -0,0 +1,43 @@
1
+ declare const BlobTypeId: unique symbol;
2
+ declare const ContentTypeId: unique symbol;
3
+ /**
4
+ * A declared blob: named binary entries each actor of a listing type stores in
5
+ * `actor_blobs`, scoped like every other row the actor owns.
6
+ */
7
+ export interface Blob<Name extends string = string> {
8
+ readonly [BlobTypeId]: Name;
9
+ readonly kind: "blob";
10
+ readonly name: Name;
11
+ }
12
+ /**
13
+ * Declared content: named references to immutable bytes stored once per
14
+ * tenant. A turn attaches and detaches references; only off-turn reads see bytes.
15
+ */
16
+ export interface ContentBlob<Name extends string = string> {
17
+ readonly [ContentTypeId]: Name;
18
+ readonly kind: "content";
19
+ readonly name: Name;
20
+ }
21
+ /** Any declared content, whatever its name. */
22
+ export type AnyContent = ContentBlob<string>;
23
+ /** Anything an actor lists in `blobs`: its own mutable bytes or references to shared content. */
24
+ export type AnyBlob = Blob<string> | AnyContent;
25
+ /** Whether `value` was made by `blob` or `content`. */
26
+ export declare const isBlob: (value: unknown) => value is AnyBlob;
27
+ /** Whether a declared blob is content. Tolerates a value that is not a blob at all, which the declared-blob check then refuses. */
28
+ export declare const isContent: (value: AnyBlob) => value is AnyContent;
29
+ /**
30
+ * `Actor.blob`: declares binary storage an actor lists in `blobs`; the name
31
+ * keys its entries. Throws unless `name` is 1-80 letters, digits, `-` or `_`,
32
+ * starting with a letter.
33
+ *
34
+ * @example
35
+ * const Avatar = Actor.blob("avatar")
36
+ */
37
+ export declare const blob: <const Name extends string>(name: Name) => Blob<Name>;
38
+ /**
39
+ * Declares shared content an actor lists in `blobs`; the name keys its
40
+ * references. The name rules are those of `blob`.
41
+ */
42
+ export declare const content: <const Name extends string>(name: Name) => ContentBlob<Name>;
43
+ export {};
@@ -0,0 +1,29 @@
1
+ import { Predicate } from "effect";
2
+ /** Only values made by `blob` and `content` are registered, so a look-alike object cannot name another namespace. */
3
+ const declared = new WeakSet();
4
+ /** Whether `value` was made by `blob` or `content`. */
5
+ export const isBlob = (value) => value instanceof Object && declared.has(value);
6
+ /** Whether a declared blob is content. Tolerates a value that is not a blob at all, which the declared-blob check then refuses. */
7
+ export const isContent = (value) => Predicate.hasProperty(value, "kind") && value.kind === "content";
8
+ const NAME = /^[A-Za-z][A-Za-z0-9_-]{0,79}$/;
9
+ const declare = (kind, name) => {
10
+ if (!NAME.test(name))
11
+ throw new Error(`Blob name ${name} must be 1-80 letters, digits, - or _, starting with a letter`);
12
+ const value = Object.freeze({ kind, name });
13
+ declared.add(value);
14
+ return value;
15
+ };
16
+ /**
17
+ * `Actor.blob`: declares binary storage an actor lists in `blobs`; the name
18
+ * keys its entries. Throws unless `name` is 1-80 letters, digits, `-` or `_`,
19
+ * starting with a letter.
20
+ *
21
+ * @example
22
+ * const Avatar = Actor.blob("avatar")
23
+ */
24
+ export const blob = (name) => declare("blob", name);
25
+ /**
26
+ * Declares shared content an actor lists in `blobs`; the name keys its
27
+ * references. The name rules are those of `blob`.
28
+ */
29
+ export const content = (name) => declare("content", name);
@@ -0,0 +1,109 @@
1
+ import { type Cause, Schema } from "effect";
2
+ /** A schema that needs no Effect services to encode or decode, so a member codec runs anywhere. */
3
+ export type ValueSchema = Schema.Top & {
4
+ readonly DecodingServices: never;
5
+ readonly EncodingServices: never;
6
+ };
7
+ /**
8
+ * The `error` schema of a member: a tagged error class, a `Schema.Union` of
9
+ * them, or `Schema.Never`. A handler may fail with its values and callers
10
+ * receive them as typed failures; a framework reason can never masquerade as one.
11
+ */
12
+ export type DeclaredError = ValueSchema & {
13
+ readonly Type: Cause.YieldableError & {
14
+ readonly _tag: string;
15
+ };
16
+ };
17
+ /** The struct fields a `payload` option may name instead of a schema. */
18
+ export type PayloadFields = Readonly<Record<string, ValueSchema>>;
19
+ /** A `payload` option: a schema, or struct fields that stand for `Schema.Struct(fields)`. */
20
+ export type PayloadOption = ValueSchema | PayloadFields;
21
+ /** The schema a `payload` option stands for. */
22
+ export type PayloadOf<P extends PayloadOption> = P extends ValueSchema ? P : P extends Schema.Struct.Fields ? Schema.Struct<P> : never;
23
+ /** The kinds of member an actor definition lists. */
24
+ export type MemberKind = "command" | "query" | "reducer" | "connection" | "stream" | "workflow";
25
+ /**
26
+ * An `api` or `internal` member. Commands and reducers run as fenced,
27
+ * receipted turns; queries read committed state without an activation.
28
+ */
29
+ export interface Member<Kind extends MemberKind, Tag extends string, Payload extends ValueSchema, Success extends ValueSchema, Error extends DeclaredError> {
30
+ readonly kind: Kind;
31
+ readonly tag: Tag;
32
+ readonly payload: Payload;
33
+ readonly success: Success;
34
+ readonly error: Error;
35
+ }
36
+ /** A command member: a fenced, receipted turn that may change state, emit events, and stage intents and jobs. */
37
+ export type Command<Tag extends string, Payload extends ValueSchema, Success extends ValueSchema, Error extends DeclaredError> = Member<"command", Tag, Payload, Success, Error>;
38
+ /**
39
+ * A query member: reads committed state without activating the actor, taking
40
+ * the fence, or writing a receipt. A `watch` query can also be observed: its
41
+ * handler may use only `Read`, so the runtime can record what it read.
42
+ */
43
+ export type Query<Tag extends string, Payload extends ValueSchema, Success extends ValueSchema, Error extends DeclaredError, Watch extends boolean = boolean> = Member<"query", Tag, Payload, Success, Error> & {
44
+ readonly watch: Watch;
45
+ };
46
+ /** Any `api` or `internal` member, whatever its schemas. */
47
+ export type AnyMember = Member<MemberKind, string, ValueSchema, ValueSchema, DeclaredError>;
48
+ /** Any command, whatever its schemas. */
49
+ export type AnyCommand = Command<string, ValueSchema, ValueSchema, DeclaredError>;
50
+ /** A record of members keyed by tag, as used by the `api` and `internal` definition sections. */
51
+ export type MemberRecord = Readonly<Record<string, AnyMember>>;
52
+ /** A record of commands keyed by tag. */
53
+ export type CommandRecord = Readonly<Record<string, AnyCommand>>;
54
+ /** Normalizes a `payload` option once: struct fields become `Schema.Struct(fields)`. */
55
+ export declare const payloadSchema: <P extends PayloadOption>(payload: P | undefined) => PayloadOf<P>;
56
+ /**
57
+ * The tagged error classes an `error` schema admits, flattening unions;
58
+ * `Schema.Never` admits none. The served protocol assigns each one its status.
59
+ */
60
+ export declare const declaredErrors: (error: DeclaredError) => ReadonlyArray<DeclaredError>;
61
+ /**
62
+ * Builds a member of `kind`: `payload` and `success` default to `Schema.Void`
63
+ * and `error` to `Schema.Never`.
64
+ */
65
+ export declare const member: <Kind extends MemberKind>(kind: Kind) => <const Tag extends string, const P extends PayloadOption = Schema.Void, Success extends ValueSchema = Schema.Void, Error extends DeclaredError = Schema.Never>(tag: Tag, options?: {
66
+ readonly payload?: P;
67
+ readonly success?: Success;
68
+ readonly error?: Error;
69
+ }) => Member<Kind, Tag, PayloadOf<P>, Success, Error>;
70
+ /**
71
+ * `Command.make` is `Actor.command`: declares a command by tag. `payload` is a
72
+ * schema or struct fields and `success` a schema, both `Schema.Void` when
73
+ * omitted; `error` is the tagged error class, or `Schema.Union` of them, its
74
+ * handler may fail with, which callers receive as typed failures.
75
+ *
76
+ * @example
77
+ * const Increment = Actor.command("Increment", {
78
+ * payload: { by: Schema.Int },
79
+ * success: Schema.Int,
80
+ * })
81
+ */
82
+ export declare const Command: {
83
+ make: <const Tag extends string, const P extends PayloadOption = Schema.Void, Success extends ValueSchema = Schema.Void, Error extends DeclaredError = Schema.Never>(tag: Tag, options?: {
84
+ readonly payload?: P | undefined;
85
+ readonly success?: Success | undefined;
86
+ readonly error?: Error | undefined;
87
+ } | undefined) => Member<"command", Tag, PayloadOf<P>, Success, Error>;
88
+ };
89
+ /**
90
+ * `Query.make` is `Actor.query`: declares a query by tag, with the same
91
+ * options as a command. A query reads committed state only and never
92
+ * activates the actor. With `watch: true` the query can also be observed
93
+ * (`handle.Total.watch()`): its handler may require nothing but `X.Read`,
94
+ * because the runtime records which state, event classes, tables, and blobs
95
+ * each rerun reads and reruns only after a commit that wrote one of them. It
96
+ * sees the clock and random sources as of its rerun, and they trigger no
97
+ * rerun of their own.
98
+ *
99
+ * @example
100
+ * const Total = Actor.query("Total", { success: Schema.Int, watch: true })
101
+ */
102
+ export declare const Query: {
103
+ make: <const Tag extends string, const P extends PayloadOption = Schema.Void, Success extends ValueSchema = Schema.Void, Error extends DeclaredError = Schema.Never, const Watch extends boolean = false>(tag: Tag, options?: {
104
+ readonly payload?: P;
105
+ readonly success?: Success;
106
+ readonly error?: Error;
107
+ readonly watch?: Watch;
108
+ }) => Query<Tag, PayloadOf<P>, Success, Error, Watch>;
109
+ };
@@ -0,0 +1,61 @@
1
+ import { Predicate, Schema, SchemaAST } from "effect";
2
+ /** Normalizes a `payload` option once: struct fields become `Schema.Struct(fields)`. */
3
+ export const payloadSchema = (payload) => (payload === undefined
4
+ ? Schema.Void
5
+ : Schema.isSchema(payload)
6
+ ? payload
7
+ : Schema.Struct(payload));
8
+ /**
9
+ * The tagged error classes an `error` schema admits, flattening unions;
10
+ * `Schema.Never` admits none. The served protocol assigns each one its status.
11
+ */
12
+ export const declaredErrors = (error) => {
13
+ if (SchemaAST.isNever(error.ast))
14
+ return [];
15
+ if (Predicate.hasProperty(error, "members") && Array.isArray(error.members))
16
+ return error.members.flatMap(declaredErrors);
17
+ return [error];
18
+ };
19
+ /**
20
+ * Builds a member of `kind`: `payload` and `success` default to `Schema.Void`
21
+ * and `error` to `Schema.Never`.
22
+ */
23
+ export const member = (kind) => (tag, options) => ({
24
+ kind,
25
+ tag,
26
+ payload: payloadSchema(options?.payload),
27
+ success: (options?.success ?? Schema.Void),
28
+ error: (options?.error ?? Schema.Never),
29
+ });
30
+ /**
31
+ * `Command.make` is `Actor.command`: declares a command by tag. `payload` is a
32
+ * schema or struct fields and `success` a schema, both `Schema.Void` when
33
+ * omitted; `error` is the tagged error class, or `Schema.Union` of them, its
34
+ * handler may fail with, which callers receive as typed failures.
35
+ *
36
+ * @example
37
+ * const Increment = Actor.command("Increment", {
38
+ * payload: { by: Schema.Int },
39
+ * success: Schema.Int,
40
+ * })
41
+ */
42
+ export const Command = { make: member("command") };
43
+ /**
44
+ * `Query.make` is `Actor.query`: declares a query by tag, with the same
45
+ * options as a command. A query reads committed state only and never
46
+ * activates the actor. With `watch: true` the query can also be observed
47
+ * (`handle.Total.watch()`): its handler may require nothing but `X.Read`,
48
+ * because the runtime records which state, event classes, tables, and blobs
49
+ * each rerun reads and reruns only after a commit that wrote one of them. It
50
+ * sees the clock and random sources as of its rerun, and they trigger no
51
+ * rerun of their own.
52
+ *
53
+ * @example
54
+ * const Total = Actor.query("Total", { success: Schema.Int, watch: true })
55
+ */
56
+ export const Query = {
57
+ make: (tag, options) => ({
58
+ ...member("query")(tag, options),
59
+ watch: (options?.watch ?? false),
60
+ }),
61
+ };
@@ -0,0 +1,55 @@
1
+ import { Schema } from "effect";
2
+ import { type DeclaredError, type Member, type PayloadOf, type PayloadOption, type ValueSchema } from "./command.ts";
3
+ import type { ProgressJob } from "./job.ts";
4
+ /**
5
+ * A long-lived session between one client and one actor. Its `payload` is
6
+ * the open params; `server` frames flow to the client and `client` frames to the
7
+ * actor; `session` is the per-connection state the handlers may set.
8
+ */
9
+ export interface Connection<Tag extends string, Params extends ValueSchema, Server extends ValueSchema, Client extends ValueSchema, Session extends ValueSchema | undefined, Error extends DeclaredError, Jobs extends ProgressJob = never> extends Member<"connection", Tag, Params, typeof Schema.Void, Error> {
10
+ readonly server: Server;
11
+ readonly client: Client;
12
+ readonly session: Session;
13
+ /** Stamp member frames with the flushed-through cursor and event cursor. Default true. */
14
+ readonly stampCursor: boolean;
15
+ /** Executor progress this member's connections receive, if any. */
16
+ readonly progress: ConnectionProgress<Jobs> | undefined;
17
+ }
18
+ /**
19
+ * The jobs whose executor progress a connection member receives, and to
20
+ * whom: `"principal"` (the default) only connections whose caller has the
21
+ * enqueueing turn's principal, `"all"` every open connection of the member.
22
+ */
23
+ interface ConnectionProgress<Jobs extends ProgressJob> {
24
+ readonly jobs: ReadonlyArray<Jobs>;
25
+ readonly to: "principal" | "all";
26
+ }
27
+ /** Any connection member, whatever its schemas. */
28
+ export type AnyConnection = Connection<string, ValueSchema, ValueSchema, ValueSchema, ValueSchema | undefined, DeclaredError, ProgressJob>;
29
+ declare const make: <const Tag extends string, Server extends ValueSchema, const P extends PayloadOption = typeof Schema.Void, Client extends ValueSchema = typeof Schema.Never, Session extends ValueSchema | undefined = undefined, Error extends DeclaredError = typeof Schema.Never, Jobs extends ProgressJob = never>(tag: Tag, options: {
30
+ readonly server: Server;
31
+ readonly payload?: P;
32
+ readonly client?: Client;
33
+ readonly session?: Session;
34
+ readonly error?: Error;
35
+ readonly stampCursor?: boolean;
36
+ readonly progress?: {
37
+ readonly jobs: ReadonlyArray<Jobs>;
38
+ readonly to?: "principal" | "all";
39
+ };
40
+ }) => Connection<Tag, PayloadOf<P>, Server, Client, Session, Error, Jobs>;
41
+ /**
42
+ * `Connection.make` is `Actor.connection`: declares a connection by tag.
43
+ * `server` types the frames sent to the client; `payload` the open params,
44
+ * `client` the frames it may send, and `session` the per-connection state
45
+ * handlers may set. Throws when the tag starts with `$`, which names framework
46
+ * members such as the one an event feed opens, or when a frame schema uses a
47
+ * reserved control tag (`Resync`, `ResyncReplayed`, `ResyncDone`).
48
+ *
49
+ * @example
50
+ * const Room = Actor.connection("Room", { server: Message, client: Say })
51
+ */
52
+ export declare const Connection: {
53
+ make: typeof make;
54
+ };
55
+ export {};
@@ -0,0 +1,49 @@
1
+ import { Schema, SchemaAST } from "effect";
2
+ import { member, } from "./command.js";
3
+ /** Tags reserved for framework control frames, which travel in their own envelope variant. */
4
+ const CONTROL_TAGS = new Set(["Resync", "ResyncReplayed", "ResyncDone"]);
5
+ const taggedIdentifiers = (schema) => {
6
+ const ast = SchemaAST.toEncoded(schema.ast);
7
+ const members = SchemaAST.isUnion(ast) ? ast.types : [ast];
8
+ const tags = [];
9
+ for (const member of members)
10
+ if (SchemaAST.isObjects(member))
11
+ for (const signature of member.propertySignatures)
12
+ if (signature.name === "_tag" && SchemaAST.isLiteral(signature.type))
13
+ tags.push(String(signature.type.literal));
14
+ return tags;
15
+ };
16
+ const make = (tag, options) => {
17
+ if (tag.startsWith("$"))
18
+ throw new Error(`Connection ${tag} may not start with $`);
19
+ for (const schema of [options.server, options.client])
20
+ if (schema !== undefined)
21
+ for (const reserved of taggedIdentifiers(schema))
22
+ if (CONTROL_TAGS.has(reserved))
23
+ throw new Error(`Connection ${tag} frames may not use the control tag ${reserved}`);
24
+ return {
25
+ ...member("connection")(tag, {
26
+ payload: options.payload,
27
+ error: options.error,
28
+ }),
29
+ server: options.server,
30
+ client: (options.client ?? Schema.Never),
31
+ session: options.session,
32
+ stampCursor: options.stampCursor ?? true,
33
+ progress: options.progress === undefined
34
+ ? undefined
35
+ : { jobs: options.progress.jobs, to: options.progress.to ?? "principal" },
36
+ };
37
+ };
38
+ /**
39
+ * `Connection.make` is `Actor.connection`: declares a connection by tag.
40
+ * `server` types the frames sent to the client; `payload` the open params,
41
+ * `client` the frames it may send, and `session` the per-connection state
42
+ * handlers may set. Throws when the tag starts with `$`, which names framework
43
+ * members such as the one an event feed opens, or when a frame schema uses a
44
+ * reserved control tag (`Resync`, `ResyncReplayed`, `ResyncDone`).
45
+ *
46
+ * @example
47
+ * const Room = Actor.connection("Room", { server: Message, client: Say })
48
+ */
49
+ export const Connection = { make };
@@ -0,0 +1,36 @@
1
+ import { Schema } from "effect";
2
+ import type { ValueSchema } from "./command.ts";
3
+ import { type PayloadOptions } from "./payload.ts";
4
+ /**
5
+ * A declared event class. Its schema identifier is its tag, which is stored
6
+ * with each committed event so replay can filter and decode by class.
7
+ */
8
+ export type EventClass = ValueSchema & {
9
+ readonly identifier: string;
10
+ readonly Type: {
11
+ readonly _tag: string;
12
+ };
13
+ };
14
+ /** The class `Actor.event` returns for tag `Tag` and fields `Fields`. */
15
+ export type EventOf<Tag extends string, Fields extends Schema.Struct.Fields> = Schema.Class<Schema.TaggedStruct<Tag, Fields>["Type"], Schema.TaggedStruct<Tag, Fields>, {}>;
16
+ /**
17
+ * `EventMember.make` is `Actor.event`: declares a durable event class. Its schema identifier is
18
+ * fixed to the tag, so a stored event names its class. `migrations` upcasts
19
+ * events stored at older versions when they are read; stored events are never
20
+ * rewritten. An invalid migration chain throws when the class is built. The
21
+ * value is itself the class: `Posted.make(...)`, `new Posted(...)`, and
22
+ * `instanceof` all work.
23
+ *
24
+ * @example
25
+ * const Posted = Actor.event("Posted", { text: Schema.String })
26
+ */
27
+ declare const make: <const Tag extends string, const Fields extends Schema.Struct.Fields>(tag: Tag, fields: Fields, options?: PayloadOptions) => EventOf<Tag, Fields>;
28
+ /** `Actor.event`; see `make`. */
29
+ export declare const EventMember: {
30
+ make: typeof make;
31
+ };
32
+ /** Entries one `read.events` call returns when the reader names no `limit`. */
33
+ export declare const DEFAULT_REPLAY_LIMIT = 1000;
34
+ /** The largest page a reader may ask for; it bounds rows per page, not their bytes. */
35
+ export declare const MAX_REPLAY_LIMIT = 10000;
36
+ export {};