durable-actors 0.2.4 → 0.2.7

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 (274) hide show
  1. package/README.md +102 -139
  2. package/dist/actor/actor.d.ts +25 -0
  3. package/dist/actor/actor.d.ts.map +1 -1
  4. package/dist/actor/actor.js +17 -0
  5. package/dist/actor/actor.js.map +1 -1
  6. package/dist/actor/decorators.d.ts +8 -0
  7. package/dist/actor/decorators.d.ts.map +1 -1
  8. package/dist/actor/decorators.js +8 -0
  9. package/dist/actor/decorators.js.map +1 -1
  10. package/dist/actor/socket.d.ts +26 -0
  11. package/dist/actor/socket.d.ts.map +1 -1
  12. package/dist/actor/socket.js.map +1 -1
  13. package/dist/actor/socketValidation.d.ts +3 -0
  14. package/dist/actor/socketValidation.d.ts.map +1 -1
  15. package/dist/actor/socketValidation.js.map +1 -1
  16. package/dist/backend.d.ts +5 -3
  17. package/dist/backend.d.ts.map +1 -1
  18. package/dist/backend.js +3 -0
  19. package/dist/backend.js.map +1 -1
  20. package/dist/cli/actor-source-watcher.js +1 -1
  21. package/dist/cli/actor-source-watcher.js.map +1 -1
  22. package/dist/cli/connection.d.ts +2 -8
  23. package/dist/cli/connection.d.ts.map +1 -1
  24. package/dist/cli/connection.js +17 -13
  25. package/dist/cli/connection.js.map +1 -1
  26. package/dist/cli/control-plane.d.ts +7 -14
  27. package/dist/cli/control-plane.d.ts.map +1 -1
  28. package/dist/cli/control-plane.js +17 -21
  29. package/dist/cli/control-plane.js.map +1 -1
  30. package/dist/cli/dev.d.ts +13 -2
  31. package/dist/cli/dev.d.ts.map +1 -1
  32. package/dist/cli/dev.js +28 -20
  33. package/dist/cli/dev.js.map +1 -1
  34. package/dist/cli/generate.d.ts.map +1 -1
  35. package/dist/cli/generate.js +15 -28
  36. package/dist/cli/generate.js.map +1 -1
  37. package/dist/cli/observe.d.ts +2 -2
  38. package/dist/cli/observe.d.ts.map +1 -1
  39. package/dist/cli/observe.js +23 -42
  40. package/dist/cli/observe.js.map +1 -1
  41. package/dist/cli/rust-runtime.js +3 -3
  42. package/dist/cli/start.d.ts +3 -0
  43. package/dist/cli/start.d.ts.map +1 -0
  44. package/dist/cli/start.js +12 -0
  45. package/dist/cli/start.js.map +1 -0
  46. package/dist/cli.js +8 -35
  47. package/dist/cli.js.map +1 -1
  48. package/dist/client/actorHostGrpc.js +2 -2
  49. package/dist/client/clientSettings.js +1 -1
  50. package/dist/client/remoteClient.d.ts +3 -3
  51. package/dist/client/remoteClient.d.ts.map +1 -1
  52. package/dist/client/remoteClient.js +4 -5
  53. package/dist/client/remoteClient.js.map +1 -1
  54. package/dist/client/telemetry.js +1 -1
  55. package/dist/environment.d.ts.map +1 -1
  56. package/dist/environment.js +0 -8
  57. package/dist/environment.js.map +1 -1
  58. package/dist/errors.d.ts +3 -0
  59. package/dist/errors.d.ts.map +1 -1
  60. package/dist/errors.js +3 -0
  61. package/dist/errors.js.map +1 -1
  62. package/dist/generated/{durable_object → durable_actors}/v1/ActivateActorReply.d.ts.map +1 -1
  63. package/dist/generated/durable_actors/v1/ActivateActorReply.js +3 -0
  64. package/dist/generated/durable_actors/v1/ActivateActorReply.js.map +1 -0
  65. package/dist/generated/durable_actors/v1/ActivateActorRequest.d.ts +8 -0
  66. package/dist/generated/{durable_object → durable_actors}/v1/ActivateActorRequest.d.ts.map +1 -1
  67. package/dist/generated/durable_actors/v1/ActivateActorRequest.js +3 -0
  68. package/dist/generated/durable_actors/v1/ActivateActorRequest.js.map +1 -0
  69. package/dist/generated/{durable_object → durable_actors}/v1/ActorCompleted.d.ts.map +1 -1
  70. package/dist/generated/durable_actors/v1/ActorCompleted.js +3 -0
  71. package/dist/generated/durable_actors/v1/ActorCompleted.js.map +1 -0
  72. package/dist/generated/durable_actors/v1/ActorControlPlaneService.d.ts +21 -0
  73. package/dist/generated/{durable_object → durable_actors}/v1/ActorControlPlaneService.d.ts.map +1 -1
  74. package/dist/generated/durable_actors/v1/ActorControlPlaneService.js +3 -0
  75. package/dist/generated/durable_actors/v1/ActorControlPlaneService.js.map +1 -0
  76. package/dist/generated/{durable_object → durable_actors}/v1/ActorFailed.d.ts.map +1 -1
  77. package/dist/generated/durable_actors/v1/ActorFailed.js +3 -0
  78. package/dist/generated/durable_actors/v1/ActorFailed.js.map +1 -0
  79. package/dist/generated/durable_actors/v1/ActorHostService.d.ts +56 -0
  80. package/dist/generated/{durable_object → durable_actors}/v1/ActorHostService.d.ts.map +1 -1
  81. package/dist/generated/durable_actors/v1/ActorHostService.js +3 -0
  82. package/dist/generated/durable_actors/v1/ActorHostService.js.map +1 -0
  83. package/dist/generated/{durable_object → durable_actors}/v1/ActorKey.d.ts.map +1 -1
  84. package/dist/generated/durable_actors/v1/ActorKey.js +3 -0
  85. package/dist/generated/durable_actors/v1/ActorKey.js.map +1 -0
  86. package/dist/generated/{durable_object → durable_actors}/v1/ControlPlaneReply.d.ts.map +1 -1
  87. package/dist/generated/durable_actors/v1/ControlPlaneReply.js +3 -0
  88. package/dist/generated/durable_actors/v1/ControlPlaneReply.js.map +1 -0
  89. package/dist/generated/{durable_object → durable_actors}/v1/ControlPlaneRequest.d.ts.map +1 -1
  90. package/dist/generated/durable_actors/v1/ControlPlaneRequest.js +3 -0
  91. package/dist/generated/durable_actors/v1/ControlPlaneRequest.js.map +1 -0
  92. package/dist/generated/{durable_object → durable_actors}/v1/Empty.d.ts.map +1 -1
  93. package/dist/generated/durable_actors/v1/Empty.js +3 -0
  94. package/dist/generated/durable_actors/v1/Empty.js.map +1 -0
  95. package/dist/generated/durable_actors/v1/HostInvokeActorRequest.d.ts +11 -0
  96. package/dist/generated/{durable_object → durable_actors}/v1/HostInvokeActorRequest.d.ts.map +1 -1
  97. package/dist/generated/durable_actors/v1/HostInvokeActorRequest.js +3 -0
  98. package/dist/generated/durable_actors/v1/HostInvokeActorRequest.js.map +1 -0
  99. package/dist/generated/{durable_object → durable_actors}/v1/HostSocketEventRequest.d.ts +3 -3
  100. package/dist/generated/{durable_object → durable_actors}/v1/HostSocketEventRequest.d.ts.map +1 -1
  101. package/dist/generated/durable_actors/v1/HostSocketEventRequest.js +3 -0
  102. package/dist/generated/durable_actors/v1/HostSocketEventRequest.js.map +1 -0
  103. package/dist/generated/durable_actors/v1/InvokeActorReply.d.ts +16 -0
  104. package/dist/generated/{durable_object → durable_actors}/v1/InvokeActorReply.d.ts.map +1 -1
  105. package/dist/generated/durable_actors/v1/InvokeActorReply.js +3 -0
  106. package/dist/generated/durable_actors/v1/InvokeActorReply.js.map +1 -0
  107. package/dist/generated/durable_actors/v1/InvokeActorRequest.d.ts +14 -0
  108. package/dist/generated/{durable_object → durable_actors}/v1/InvokeActorRequest.d.ts.map +1 -1
  109. package/dist/generated/durable_actors/v1/InvokeActorRequest.js +3 -0
  110. package/dist/generated/durable_actors/v1/InvokeActorRequest.js.map +1 -0
  111. package/dist/generated/durable_actors/v1/PublishSocketEffectsRequest.d.ts +13 -0
  112. package/dist/generated/{durable_object → durable_actors}/v1/PublishSocketEffectsRequest.d.ts.map +1 -1
  113. package/dist/generated/durable_actors/v1/PublishSocketEffectsRequest.js +3 -0
  114. package/dist/generated/{durable_object → durable_actors}/v1/PublishSocketEffectsRequest.js.map +1 -1
  115. package/dist/generated/durable_actors/v1/ReplicaService.d.ts +42 -0
  116. package/dist/generated/{durable_object → durable_actors}/v1/ReplicaService.d.ts.map +1 -1
  117. package/dist/generated/durable_actors/v1/ReplicaService.js +3 -0
  118. package/dist/generated/durable_actors/v1/ReplicaService.js.map +1 -0
  119. package/dist/generated/durable_actors/v1/ReplicaSessionHead.d.ts +14 -0
  120. package/dist/generated/{durable_object → durable_actors}/v1/ReplicaSessionHead.d.ts.map +1 -1
  121. package/dist/generated/durable_actors/v1/ReplicaSessionHead.js +3 -0
  122. package/dist/generated/durable_actors/v1/ReplicaSessionHead.js.map +1 -0
  123. package/dist/generated/{durable_object → durable_actors}/v1/ReplicaSnapshotRef.d.ts.map +1 -1
  124. package/dist/generated/durable_actors/v1/ReplicaSnapshotRef.js +3 -0
  125. package/dist/generated/durable_actors/v1/ReplicaSnapshotRef.js.map +1 -0
  126. package/dist/generated/durable_actors/v1/ReplicaStreamHead.d.ts +11 -0
  127. package/dist/generated/{durable_object → durable_actors}/v1/ReplicaStreamHead.d.ts.map +1 -1
  128. package/dist/generated/durable_actors/v1/ReplicaStreamHead.js +3 -0
  129. package/dist/generated/durable_actors/v1/ReplicaStreamHead.js.map +1 -0
  130. package/dist/generated/{durable_object → durable_actors}/v1/ReplicaStreamIdentity.d.ts.map +1 -1
  131. package/dist/generated/durable_actors/v1/ReplicaStreamIdentity.js +3 -0
  132. package/dist/generated/durable_actors/v1/ReplicaStreamIdentity.js.map +1 -0
  133. package/dist/generated/{durable_object → durable_actors}/v1/Reroute.d.ts.map +1 -1
  134. package/dist/generated/durable_actors/v1/Reroute.js +3 -0
  135. package/dist/generated/durable_actors/v1/Reroute.js.map +1 -0
  136. package/dist/generated/{durable_object → durable_actors}/v1/SnapshotData.d.ts.map +1 -1
  137. package/dist/generated/durable_actors/v1/SnapshotData.js +3 -0
  138. package/dist/generated/durable_actors/v1/SnapshotData.js.map +1 -0
  139. package/dist/generated/durable_actors/v1/SnapshotService.d.ts +32 -0
  140. package/dist/generated/{durable_object → durable_actors}/v1/SnapshotService.d.ts.map +1 -1
  141. package/dist/generated/durable_actors/v1/SnapshotService.js +3 -0
  142. package/dist/generated/durable_actors/v1/SnapshotService.js.map +1 -0
  143. package/dist/generated/{durable_object → durable_actors}/v1/SnapshotWriteReply.d.ts.map +1 -1
  144. package/dist/generated/durable_actors/v1/SnapshotWriteReply.js +3 -0
  145. package/dist/generated/durable_actors/v1/SnapshotWriteReply.js.map +1 -0
  146. package/dist/generated/durable_actors.d.ts +69 -0
  147. package/dist/generated/{durable_object.d.ts.map → durable_actors.d.ts.map} +1 -1
  148. package/dist/generated/durable_actors.js +2 -0
  149. package/dist/generated/durable_actors.js.map +1 -0
  150. package/dist/generated/{durable_object.proto → durable_actors.proto} +1 -1
  151. package/dist/host/actor-host.js +8 -8
  152. package/dist/host/actor-worker.js +1 -1
  153. package/dist/host/actor-worker.js.map +1 -1
  154. package/dist/host.d.ts +1 -1
  155. package/dist/host.d.ts.map +1 -1
  156. package/dist/host.js +1 -1
  157. package/dist/host.js.map +1 -1
  158. package/dist/index.d.ts +1 -0
  159. package/dist/index.d.ts.map +1 -1
  160. package/dist/index.js +1 -0
  161. package/dist/index.js.map +1 -1
  162. package/dist/localRuntime.d.ts +9 -1
  163. package/dist/localRuntime.d.ts.map +1 -1
  164. package/dist/localRuntime.js +4 -3
  165. package/dist/localRuntime.js.map +1 -1
  166. package/dist/proxy.d.ts +10 -1
  167. package/dist/proxy.d.ts.map +1 -1
  168. package/dist/proxy.js +8 -3
  169. package/dist/proxy.js.map +1 -1
  170. package/dist/templates/actor/README.md +4 -4
  171. package/dist/templates/actor/package.json +1 -2
  172. package/dist/templates/ai-chat/.env.example +6 -0
  173. package/dist/templates/ai-chat/README.md +44 -16
  174. package/dist/templates/ai-chat/gitignore +0 -1
  175. package/dist/templates/ai-chat/package.json +2 -1
  176. package/dist/templates/ai-chat/src/actors.ts +20 -0
  177. package/dist/templates/ai-chat/src/backend.ts +18 -5
  178. package/dist/templates/ai-chat/tsconfig.json +1 -1
  179. package/dist/templates/chat/.env.example +6 -0
  180. package/dist/templates/chat/README.md +57 -12
  181. package/dist/templates/chat/gitignore +0 -1
  182. package/dist/templates/chat/package.json +4 -3
  183. package/dist/templates/chat/src/backend.ts +5 -2
  184. package/dist/templates/documents/.env.example +6 -0
  185. package/dist/templates/documents/README.md +32 -17
  186. package/dist/templates/documents/gitignore +0 -1
  187. package/dist/templates/documents/package.json +4 -3
  188. package/dist/templates/documents/src/backend.ts +5 -2
  189. package/package.json +10 -7
  190. package/dist/cli/deploy.d.ts +0 -4
  191. package/dist/cli/deploy.d.ts.map +0 -1
  192. package/dist/cli/deploy.js +0 -39
  193. package/dist/cli/deploy.js.map +0 -1
  194. package/dist/cli/objects.d.ts +0 -4
  195. package/dist/cli/objects.d.ts.map +0 -1
  196. package/dist/cli/objects.js +0 -68
  197. package/dist/cli/objects.js.map +0 -1
  198. package/dist/generated/durable_object/v1/ActivateActorReply.js +0 -3
  199. package/dist/generated/durable_object/v1/ActivateActorReply.js.map +0 -1
  200. package/dist/generated/durable_object/v1/ActivateActorRequest.d.ts +0 -8
  201. package/dist/generated/durable_object/v1/ActivateActorRequest.js +0 -3
  202. package/dist/generated/durable_object/v1/ActivateActorRequest.js.map +0 -1
  203. package/dist/generated/durable_object/v1/ActorCompleted.js +0 -3
  204. package/dist/generated/durable_object/v1/ActorCompleted.js.map +0 -1
  205. package/dist/generated/durable_object/v1/ActorControlPlaneService.d.ts +0 -21
  206. package/dist/generated/durable_object/v1/ActorControlPlaneService.js +0 -3
  207. package/dist/generated/durable_object/v1/ActorControlPlaneService.js.map +0 -1
  208. package/dist/generated/durable_object/v1/ActorFailed.js +0 -3
  209. package/dist/generated/durable_object/v1/ActorFailed.js.map +0 -1
  210. package/dist/generated/durable_object/v1/ActorHostService.d.ts +0 -56
  211. package/dist/generated/durable_object/v1/ActorHostService.js +0 -3
  212. package/dist/generated/durable_object/v1/ActorHostService.js.map +0 -1
  213. package/dist/generated/durable_object/v1/ActorKey.js +0 -3
  214. package/dist/generated/durable_object/v1/ActorKey.js.map +0 -1
  215. package/dist/generated/durable_object/v1/ControlPlaneReply.js +0 -3
  216. package/dist/generated/durable_object/v1/ControlPlaneReply.js.map +0 -1
  217. package/dist/generated/durable_object/v1/ControlPlaneRequest.js +0 -3
  218. package/dist/generated/durable_object/v1/ControlPlaneRequest.js.map +0 -1
  219. package/dist/generated/durable_object/v1/Empty.js +0 -3
  220. package/dist/generated/durable_object/v1/Empty.js.map +0 -1
  221. package/dist/generated/durable_object/v1/HostInvokeActorRequest.d.ts +0 -11
  222. package/dist/generated/durable_object/v1/HostInvokeActorRequest.js +0 -3
  223. package/dist/generated/durable_object/v1/HostInvokeActorRequest.js.map +0 -1
  224. package/dist/generated/durable_object/v1/HostSocketEventRequest.js +0 -3
  225. package/dist/generated/durable_object/v1/HostSocketEventRequest.js.map +0 -1
  226. package/dist/generated/durable_object/v1/InvokeActorReply.d.ts +0 -16
  227. package/dist/generated/durable_object/v1/InvokeActorReply.js +0 -3
  228. package/dist/generated/durable_object/v1/InvokeActorReply.js.map +0 -1
  229. package/dist/generated/durable_object/v1/InvokeActorRequest.d.ts +0 -14
  230. package/dist/generated/durable_object/v1/InvokeActorRequest.js +0 -3
  231. package/dist/generated/durable_object/v1/InvokeActorRequest.js.map +0 -1
  232. package/dist/generated/durable_object/v1/PublishSocketEffectsRequest.d.ts +0 -13
  233. package/dist/generated/durable_object/v1/PublishSocketEffectsRequest.js +0 -3
  234. package/dist/generated/durable_object/v1/ReplicaService.d.ts +0 -42
  235. package/dist/generated/durable_object/v1/ReplicaService.js +0 -3
  236. package/dist/generated/durable_object/v1/ReplicaService.js.map +0 -1
  237. package/dist/generated/durable_object/v1/ReplicaSessionHead.d.ts +0 -14
  238. package/dist/generated/durable_object/v1/ReplicaSessionHead.js +0 -3
  239. package/dist/generated/durable_object/v1/ReplicaSessionHead.js.map +0 -1
  240. package/dist/generated/durable_object/v1/ReplicaSnapshotRef.js +0 -3
  241. package/dist/generated/durable_object/v1/ReplicaSnapshotRef.js.map +0 -1
  242. package/dist/generated/durable_object/v1/ReplicaStreamHead.d.ts +0 -11
  243. package/dist/generated/durable_object/v1/ReplicaStreamHead.js +0 -3
  244. package/dist/generated/durable_object/v1/ReplicaStreamHead.js.map +0 -1
  245. package/dist/generated/durable_object/v1/ReplicaStreamIdentity.js +0 -3
  246. package/dist/generated/durable_object/v1/ReplicaStreamIdentity.js.map +0 -1
  247. package/dist/generated/durable_object/v1/Reroute.js +0 -3
  248. package/dist/generated/durable_object/v1/Reroute.js.map +0 -1
  249. package/dist/generated/durable_object/v1/SnapshotData.js +0 -3
  250. package/dist/generated/durable_object/v1/SnapshotData.js.map +0 -1
  251. package/dist/generated/durable_object/v1/SnapshotService.d.ts +0 -32
  252. package/dist/generated/durable_object/v1/SnapshotService.js +0 -3
  253. package/dist/generated/durable_object/v1/SnapshotService.js.map +0 -1
  254. package/dist/generated/durable_object/v1/SnapshotWriteReply.js +0 -3
  255. package/dist/generated/durable_object/v1/SnapshotWriteReply.js.map +0 -1
  256. package/dist/generated/durable_object.d.ts +0 -69
  257. package/dist/generated/durable_object.js +0 -2
  258. package/dist/generated/durable_object.js.map +0 -1
  259. package/dist/templates/ai-chat/src/durable-objects.ts +0 -15
  260. /package/dist/generated/{durable_object → durable_actors}/v1/ActivateActorReply.d.ts +0 -0
  261. /package/dist/generated/{durable_object → durable_actors}/v1/ActorCompleted.d.ts +0 -0
  262. /package/dist/generated/{durable_object → durable_actors}/v1/ActorFailed.d.ts +0 -0
  263. /package/dist/generated/{durable_object → durable_actors}/v1/ActorKey.d.ts +0 -0
  264. /package/dist/generated/{durable_object → durable_actors}/v1/ControlPlaneReply.d.ts +0 -0
  265. /package/dist/generated/{durable_object → durable_actors}/v1/ControlPlaneRequest.d.ts +0 -0
  266. /package/dist/generated/{durable_object → durable_actors}/v1/Empty.d.ts +0 -0
  267. /package/dist/generated/{durable_object → durable_actors}/v1/ReplicaSnapshotRef.d.ts +0 -0
  268. /package/dist/generated/{durable_object → durable_actors}/v1/ReplicaStreamIdentity.d.ts +0 -0
  269. /package/dist/generated/{durable_object → durable_actors}/v1/Reroute.d.ts +0 -0
  270. /package/dist/generated/{durable_object → durable_actors}/v1/SnapshotData.d.ts +0 -0
  271. /package/dist/generated/{durable_object → durable_actors}/v1/SnapshotWriteReply.d.ts +0 -0
  272. /package/dist/templates/actor/src/{durable-objects.ts → actors.ts} +0 -0
  273. /package/dist/templates/chat/src/{durable-objects.ts → actors.ts} +0 -0
  274. /package/dist/templates/documents/src/{durable-objects.ts → actors.ts} +0 -0
package/README.md CHANGED
@@ -1,47 +1,60 @@
1
1
  # Durable Actors
2
2
 
3
- Named actors with serial method calls and saved state. Requires Node.js 20.19+ or 22.12+ (matching Vite's runtime requirement). The CLI uses Node.js; actor execution requires Bun 1.4.2+.
3
+ Managing state is hard! Back in the pre-agent era, building a multiplayer app showed just how hard this could be. You had to lock resources, deal with websockets at scale, handle peak loads etc...
4
+
5
+ Now with AI, we've got agents working with agents and agents working with people to worry about. Furthermore, we have agent swarms coming!
6
+
7
+ Durable Actors is a primitive to help developers build the next generation of collaborative software. We provide a mechanism to serve shared, concurrency safe state to your app.
8
+
9
+ Based on the Actor principle from Erlang, all state is durably persisted for you. Only one Agent/person can be in the actor at a time, protecting you from race conditions.
10
+
11
+ We are fully horizontally scalable, and instances go dormant when not in use. Only pay for what your users are using.
12
+
13
+ We offer a clean API to manage webSocket connections, Swift inspired syntax for building your actor and full observability into your deployed actors.
4
14
 
5
15
  ## Local development
6
16
 
7
- Install the CLI once with pnpm:
17
+ Install Node.js 22.19+, pnpm, and Bun 1.4.2+. Install the CLI once:
8
18
 
9
19
  ```sh
10
20
  pnpm add --global durable-actors
11
21
  ```
12
22
 
13
- Create a standalone actor project and start its server:
23
+ ### Create your actor project in your directory of choice
14
24
 
15
25
  ```sh
16
26
  durable-actors init my-actors
17
27
  cd my-actors
18
28
  pnpm install
19
- durable-actors dev
29
+ durable-actors dev // this will run the server locally on your machine
20
30
  ```
21
31
 
22
- The project contains a persisted counter in `src/durable-objects.ts`, TypeScript configuration, and scripts to check and build your actors. Keep the actor server running.
32
+ Running dev will also start a watch, every-time you make a change to an actor and save, metadata changes will be stored automatically.
33
+
34
+ ### Connect your application
23
35
 
24
- In your separate application project's directory, install the SDK:
36
+ In your separate application project's directory (ex: node server), install the SDK:
25
37
 
26
38
  ```sh
27
39
  pnpm add durable-actors
28
40
  ```
29
41
 
30
- Copy the settings printed under **Connect your application** into that application's `.env` file:
42
+ Copy the three settings printed by `dev` into that application's `.env` file:
31
43
 
32
44
  ```dotenv
33
- DURABLE_ACTORS_PROJECT_ID=local
34
45
  DURABLE_ACTORS_CONTROL_PLANE_URL=http://127.0.0.1:7100
35
46
  DURABLE_ACTORS_SECRET='<paste the secret printed by dev>'
36
47
  ```
37
48
 
38
- Generate the client from your application directory:
49
+ Then generate your client from the same application directory:
39
50
 
40
51
  ```sh
41
52
  durable-actors generate
42
53
  ```
43
54
 
44
- The CLI loads `.env` automatically and fetches the contract from your actor server. Use the generated client in your backend:
55
+ This contract will match perfectly the actor you have defined!
56
+
57
+ Now you may call your actor and access the state.
45
58
 
46
59
  ```ts
47
60
  import { actors } from "./generated/index.js"
@@ -50,156 +63,106 @@ const counter = actors.Counter.get("example")
50
63
  console.log(await counter.increment())
51
64
  ```
52
65
 
53
- Start your backend with that `.env` loaded, using your usual development command. Generated clients contain public types without importing actor source or its private dependencies.
54
-
55
- Edit actors in the actor project's `src/durable-objects.ts`. Annotate every instance field with `@Persisted` or `@Ephemeral`, imported from `durable-actors`. Rerun `durable-actors generate` in your application when actor method signatures change. `dev` mints a fresh shared secret on restart unless one is configured, so update your application's `.env` and restart its backend too.
66
+ For complete sample applications, see [AI Chat](https://github.com/TerseAI/durable-actors/tree/main/examples/ai-chat), [Collaborative documents](https://github.com/TerseAI/durable-actors/tree/main/examples/documents), and [Chatroom](https://github.com/TerseAI/durable-actors/tree/main/examples/chat).
56
67
 
57
- For complete application templates, use `durable-actors init <directory> --template chat`, `--template ai-chat`, or `--template documents`. See the [chat](https://github.com/TerseAI/durable-actors/tree/main/examples/chat), [AI chat](https://github.com/TerseAI/durable-actors/tree/main/examples/ai-chat), and [documents](https://github.com/TerseAI/durable-actors/tree/main/examples/documents) examples.
68
+ ## Define an Actor
58
69
 
59
- ## Generate clients programmatically
60
-
61
- Build tools can generate the same files in memory through the public compiler and codegen APIs:
70
+ Define and export actors in your actor project’s `src/durable-objects.ts`. For example, a chat history actor:
62
71
 
63
72
  ```ts
64
- import { generateTypeScript } from "durable-actors/codegen"
65
- import { ActorCompiler } from "durable-actors/compiler"
66
-
67
- const contract = new ActorCompiler().compileContract("src/durable-objects.ts")
68
- const files = await generateTypeScript(contract)
69
- // files is a ReadonlyMap<string, string> of relative filenames to TypeScript source.
70
- ```
71
-
72
- The caller chooses where to write the files. Generation does not execute actor code. The CLI writes only generated TypeScript clients.
73
+ import type { UIMessage } from "ai"
74
+ import { Actor, Persisted } from "durable-actors"
73
75
 
74
- ## Deploy and generate remote clients
76
+ export class ChatHistory extends Actor {
77
+ @Persisted private messages: UIMessage[] = []
75
78
 
76
- For a hosted deployment, configure the [remote connection](#hosted-backends), then supply your published customer build image. The control plane compiles the code and public contract, publishes the snapshot, and registers the deployment in one request:
77
-
78
- ```sh
79
- durable-actors deploy --image im-customer-build
80
- ```
79
+ async load() {
80
+ return this.messages
81
+ }
81
82
 
82
- Then generate clients in another repository using the same environment settings:
83
-
84
- ```sh
85
- durable-actors generate
86
- ```
87
-
88
- Deploy assigns a revision automatically, and generation uses the latest deployment. The server stores only its active contract. See the [CLI reference](../docs/reference/cli.md#generate-from-the-control-plane) for deployment and credentials.
89
-
90
- The npm package installs the `durable-actors` CLI. On first use, `dev` downloads and caches the matching native runtime automatically. It watches TypeScript files across the actor project and publishes valid source changes to the local control plane; rerun `durable-actors generate` when the public contract changes. Start your frontend and application backend with their usual tooling. Restart the application backend after restarting the actor runtime to reload cached settings. State survives restarts in `.durable-actors/`.
91
-
92
- `durable-actors dev --help` lists options. There is no CLI client runner; browser applications use native WebSockets as shown below.
93
-
94
- ## Test runners
95
-
96
- Start a local server programmatically and pass its connection settings to your test runner:
97
-
98
- ```ts
99
- import { startLocalActors } from "durable-actors/dev"
100
-
101
- const runtime = await startLocalActors({ entrypoint: "src/actors.ts" })
102
- try {
103
- await runTests(runtime.connection)
104
- } finally {
105
- await runtime.stop()
83
+ async append(message: UIMessage) {
84
+ this.messages.push(message)
85
+ return this.messages
86
+ }
106
87
  }
107
88
  ```
108
89
 
109
- The launcher downloads the matching runtime and waits for readiness. It defaults to a free loopback port and `.durable-actors/`; set `project`, `dataDir`, or `port` to override them. `stop()` preserves state and waits for shutdown. `connection` exposes the server settings; `closed` rejects on process failure.
110
-
111
- ## Hosted backends
112
-
113
- Configure the [remote connection](https://github.com/TerseAI/durable-actors/blob/main/docs/reference/configuration.md) once for your CLI and backend. Local development uses the connection settings printed by `dev`.
90
+ ## Stream from the backend (Express)
114
91
 
115
- Keep the shared secret on your backend, where you check user permissions. The SDK connects to the named actor and calls its methods. Mobile and browser apps use [WebSockets authorized by your backend](https://github.com/TerseAI/durable-actors/blob/main/docs/guides/self-hosting.md#browser-connections).
116
-
117
- See [self-hosting](https://github.com/TerseAI/durable-actors/blob/main/docs/guides/self-hosting.md) for deployment and credentials. Runtime distributions bundle the Go provider.
118
-
119
- ## WebSocket API
120
-
121
- The gateway keeps connections while actors hibernate. Actors use `onConnect`, `onMessage`, and `onDisconnect` to manage application messages. Browser connections receive explicit actor messages plus automatic snapshots and committed updates of public `@Persisted @Emittable` fields. Private, protected, and non-emittable fields are excluded.
122
-
123
- For long-running async methods, import the experimental `Reentrant` decorator and apply `@Reentrant` to allow other calls and socket hooks to run while the method awaits. The method retains actor state access, but state can change across awaits. Undecorated calls block all new invocations until completion and persistence; already-running reentrant continuations may still resume during their awaits. Direct `this.method()` calls inherit the current invocation's mode.
124
-
125
- Declaring any reentrant method disables application-error rollback for the whole actor class. Failed-call mutations remain in memory and may be saved by another successful call. Persistence still occurs on successful completion, so this does not make streamed progress immediately durable. See the [scheduling and persistence contract](https://github.com/TerseAI/durable-actors/blob/main/docs/reference/api.md#reentrant-methods-experimental) before opting in.
126
-
127
- Inside actor hooks and backend SDK connections, send JSON values with `socket.send({ type: "chat", text: "Hello" })`. The backend SDK encodes and parses these values. Native browser sockets use `JSON.stringify` and `JSON.parse`.
128
-
129
- `Actor<Metadata, Incoming, Outgoing = Incoming, Tag extends string = string>` types metadata, both message directions, and tags. Use `ActorSocketOf<ChatRoom>` and `ActorMessageOf<ChatRoom>` in hooks to reuse those types. Generated JSON schemas are checked at deployment and are not enforced with AJV during execution. Optional static Zod schemas validate metadata, incoming and outgoing messages, and tags at runtime; see [generics and wire validation](https://github.com/TerseAI/durable-actors/blob/main/docs/reference/api.md#generics-and-wire-validation).
130
-
131
- | API | Behavior |
132
- | ------------------------------------ | ---------------------------------------------------- |
133
- | `Actor.get(id).connect(metadata)` | Opens a connection with JSON-serializable metadata. |
134
- | `onMessage(socket, message)` | Handles incoming messages on the actor. |
135
- | `onDisconnect(socket)` | Handles a closed connection. |
136
- | `this.broadcast(message)` | Sends to connected clients. |
137
- | `socket.send(message)` | Sends to one client. |
138
- | `socket.setTags(...tags)` | Tags a connection for filtered broadcasts. |
139
- | `socket.close()` / `socket.reject()` | Closes a connection / rejects it during `onConnect`. |
140
-
141
- `await this.getConnections()` fetches connections on demand and caches the result for that invocation. Ordinary methods that do not enumerate connections skip the gateway lookup. From application code, `Actor.get(id).broadcast(message)` sends transient output without invoking the actor or saving state.
142
-
143
- For a separate WebSocket gateway, see [gateway configuration](https://github.com/TerseAI/durable-actors/blob/main/docs/reference/configuration.md).
144
-
145
- ## Browser clients
146
-
147
- Generate backend helpers from your actor entrypoint:
148
-
149
- ```sh
150
- npx durable-actors generate
151
- ```
152
-
153
- The generated `index.ts` exposes typed backend RPC stubs and WebSocket grants under `actors`. Your frontend uses the browser's native `WebSocket`; it needs no generated client or SDK import.
154
-
155
- Your backend authenticates the user and checks actor access before issuing a grant:
92
+ After adding `ChatHistory`, rerun `durable-actors generate` in your application and use its generated client:
156
93
 
157
94
  ```ts
95
+ import { openai } from "@ai-sdk/openai"
96
+ import { convertToModelMessages, generateId, pipeUIMessageStreamToResponse, streamText, toUIMessageStream, validateUIMessages } from "ai"
97
+ import express from "express"
98
+
158
99
  import { actors } from "./generated/index.js"
159
100
 
160
- export async function POST(request: Request) {
161
- const user = await requireUser(request)
162
- const roomId = "lobby"
163
- await requireRoomAccess(user, roomId)
164
- const grant = await actors.ChatRoom.prepareWebsocket({
165
- actorId: roomId,
166
- metadata: { userId: user.id }
101
+ const app = express()
102
+ app.use(express.json())
103
+
104
+ app.get("/api/chat/:id", async (request, response) => {
105
+ response.json(await actors.ChatHistory.get(request.params.id).load())
106
+ })
107
+
108
+ app.post("/api/chat", async (request, response) => {
109
+ const [message] = await validateUIMessages({ messages: [request.body.messages.at(-1)] })
110
+ if (message.role !== "user") return response.sendStatus(400)
111
+ const chat = actors.ChatHistory.get(request.body.id)
112
+ const messages = await chat.append(message)
113
+ const result = streamText({
114
+ model: openai("gpt-5-mini"),
115
+ messages: await convertToModelMessages(messages)
167
116
  })
168
- return Response.json(grant, { headers: { "cache-control": "no-store" } })
169
- }
117
+ await pipeUIMessageStreamToResponse({
118
+ response,
119
+ stream: toUIMessageStream({
120
+ stream: result.stream,
121
+ originalMessages: messages,
122
+ generateMessageId: generateId,
123
+ onEnd: async ({ responseMessage, outcome }) => {
124
+ if (outcome.status === "completed") await chat.append(responseMessage)
125
+ }
126
+ })
127
+ })
128
+ })
170
129
  ```
171
130
 
172
- `prepareWebsocket` returns `{ websocketUrl, key }`. The URL already includes the signed key and can be passed directly to `new WebSocket()`. The key grants socket access to one actor; it cannot invoke backend RPC methods or issue other keys. Metadata comes from your backend and is validated by the actor host.
173
-
174
- The helper reads connection settings from environment variables. For overrides or an injected transport, use `actors.ChatRoom.prepareWebsocket(authorization, options, { fetch })`. `ActorProxy.handle({ actorName, actorId, metadata })` remains available for dynamic actor selection.
175
-
176
- The frontend fetches your application endpoint and opens the returned URL:
177
-
178
- ```js
179
- const response = await fetch("/api/socket/ChatRoom/lobby", { method: "POST" })
180
- if (!response.ok) throw new Error("Connection denied")
181
- const { websocketUrl } = await response.json()
182
- const socket = new WebSocket(websocketUrl)
183
-
184
- socket.onopen = () => socket.send(JSON.stringify({ type: "post", text: "Hello" }))
185
- socket.onmessage = event => renderMessage(JSON.parse(event.data))
186
- socket.onclose = event => showDisconnected(event.code)
187
- socket.onerror = () => showConnectionError()
131
+ ## Connect the frontend (React)
132
+
133
+ ```tsx
134
+ import { useChat } from "@ai-sdk/react"
135
+ import type { UIMessage } from "ai"
136
+
137
+ const history: UIMessage[] = await fetch("/api/chat/lobby").then(response => response.json())
138
+
139
+ function Chat() {
140
+ const { messages, sendMessage, status } = useChat({ id: "lobby", messages: history })
141
+ const busy = status === "submitted" || status === "streaming"
142
+
143
+ return (
144
+ <>
145
+ {messages.map(message => (
146
+ <p key={message.id}>
147
+ {message.role}: {message.parts.map(part => (part.type === "text" ? part.text : "")).join("")}
148
+ </p>
149
+ ))}
150
+ <form
151
+ action={async form => {
152
+ await sendMessage({ text: String(form.get("message")) })
153
+ }}
154
+ >
155
+ <input name="message" aria-label="Message" required disabled={busy} />
156
+ <button disabled={busy}>Send</button>
157
+ </form>
158
+ </>
159
+ )
160
+ }
188
161
  ```
189
162
 
190
- Messages are application JSON in text frames, with no SDK envelopes, initialization frames, or special subprotocol. Actors send initial application data explicitly from `onConnect` and use `socket.send()` or `this.broadcast()` for updates. Public `@Persisted @Emittable` fields also send automatic `state` snapshots and committed `state_update` messages. Actors without emittable fields send only application messages. Reconnection, message replay, and ticket renewal remain application responsibilities.
191
-
192
- Open a grant within 60 seconds. Connection authorization defaults to 15 minutes; set `authorizationLifetimeMs` in `prepareWebsocket` to change it, subject to the server's maximum. The server closes expired connections with code `4408`, including while idle or running a handler. Your application decides whether to request a fresh grant and open another socket.
193
-
194
- Treat both the URL and key as credentials. Keep the backend shared secret on the server and omit signed URL query strings from logs. Call `socket.close()` when the view is finished.
195
-
196
- ## Reference
163
+ ## Host it yourself
197
164
 
198
- - [Configuration](https://github.com/TerseAI/durable-actors/blob/main/docs/reference/configuration.md): local defaults, environment variables, credentials, and server settings.
199
- - [CLI reference](https://github.com/TerseAI/durable-actors/blob/main/docs/reference/cli.md): commands and options.
200
- - [TypeScript API reference](https://github.com/TerseAI/durable-actors/blob/main/docs/reference/api.md): actors, methods, connections, types, and errors.
201
- - [HTTP and WebSocket reference](https://github.com/TerseAI/durable-actors/blob/main/docs/reference/http.md): deployments, backend access, connections, and callbacks.
202
- - [Local development](https://github.com/TerseAI/durable-actors/blob/main/docs/guides/local-development.md): install from npm and run actors locally.
165
+ Follow the [self-hosting guide](https://github.com/TerseAI/durable-actors/blob/main/docs/reference/self-hosting.md) to connect your backend with an API key and deploy your actors.
203
166
 
204
167
  ## License
205
168
 
@@ -4,11 +4,23 @@ import type { ActorBroadcastOptions, ActorConnection, ActorSocket } from "./sock
4
4
  import type { ActorSchemas } from "./socketValidation.js";
5
5
  declare const actorTypes: unique symbol;
6
6
  interface Actor<Metadata = JsonValue, Incoming = JsonValue, Outgoing = Incoming, Tag extends string = string> {
7
+ /** Accepts a joining connection on success. Call `socket.reject(4003, reason)` to deny it. */
7
8
  onConnect?(socket: ActorSocket<Metadata, Outgoing, Tag>): Promise<void>;
9
+ /** Handles a parsed JSON message. */
8
10
  onMessage?(socket: ActorSocket<Metadata, Outgoing, Tag>, message: Incoming): Promise<void>;
11
+ /** Runs after disconnection; may be skipped on server failure. */
9
12
  onDisconnect?(socket: ActorSocket<Metadata, Outgoing, Tag>, code: number, reason: string, wasClean: boolean): Promise<void>;
10
13
  }
14
+ /**
15
+ * Base class for durable actors. Extend directly, with no required constructor arguments.
16
+ * Application methods must be async; instance fields require `@Persisted` or `@Ephemeral`.
17
+ * @typeParam Metadata - Connection metadata supplied by the backend.
18
+ * @typeParam Incoming - Application messages received by the actor.
19
+ * @typeParam Outgoing - Application messages sent by the actor.
20
+ * @typeParam Tag - Allowed connection tags.
21
+ */
11
22
  declare abstract class Actor<Metadata = JsonValue, Incoming = JsonValue, Outgoing = Incoming, Tag extends string = string> {
23
+ /** @internal */
12
24
  readonly [actorTypes]: {
13
25
  metadata: Metadata;
14
26
  incoming: Incoming;
@@ -16,9 +28,18 @@ declare abstract class Actor<Metadata = JsonValue, Incoming = JsonValue, Outgoin
16
28
  tag: Tag;
17
29
  };
18
30
  protected constructor();
31
+ /**
32
+ * Returns a backend reference. The first call starts the actor if needed.
33
+ * @param actorId - 1–128 ASCII letters, digits, dots, underscores, or hyphens.
34
+ */
19
35
  static get<TActorClass extends ActorClass>(this: ValidActorClass<TActorClass>, actorId: string): ActorReference<TActorClass["prototype"]>;
36
+ /** The bound actor ID; unavailable during construction. */
20
37
  protected get id(): string;
38
+ /**
39
+ * Lists connections during an actor call. Includes a joining socket; excludes a disconnected one.
40
+ */
21
41
  protected getConnections(): Promise<readonly ActorSocket<Metadata, Outgoing, Tag>[]>;
42
+ /** Sends JSON to matching connections, including the sender by default. Messages are not saved. */
22
43
  protected broadcast(message: Outgoing, options?: ActorBroadcastOptions<Tag>): void;
23
44
  }
24
45
  declare function registerActorClass<Instance extends AnyActor>(actorClass: ActorClass<Instance>, state: ActorSchema): ActorDefinition;
@@ -51,7 +72,9 @@ type ValidActorClass<TActorClass extends ActorClass> = TActorClass extends Publi
51
72
  type ActorReference<Instance extends AnyActor> = {
52
73
  [Key in keyof Instance as Instance[Key] extends AsyncMethod ? Key extends SocketLifecycleMethod ? never : Key : never]: Instance[Key];
53
74
  } & {
75
+ /** Opens a backend socket. Attach listeners immediately; acceptance may still be pending. */
54
76
  connect(metadata: SocketMetadata<Instance>): Promise<ActorConnection<SocketIncoming<Instance>, SocketOutgoing<Instance>, JsonObject>>;
77
+ /** Sends to all connections without running actor code. Messages are not saved. */
55
78
  broadcast(message: SocketOutgoing<Instance>): Promise<void>;
56
79
  };
57
80
  type SocketLifecycleMethod = "onConnect" | "onMessage" | "onDisconnect";
@@ -59,7 +82,9 @@ type SocketMetadata<Instance extends AnyActor> = Instance[typeof actorTypes]["me
59
82
  type SocketIncoming<Instance extends AnyActor> = Instance[typeof actorTypes]["incoming"];
60
83
  type SocketOutgoing<Instance extends AnyActor> = Instance[typeof actorTypes]["outgoing"];
61
84
  type SocketTag<Instance extends AnyActor> = Instance[typeof actorTypes]["tag"];
85
+ /** Socket type for an actor instance type, for example `ActorSocketOf<ChatRoom>`. */
62
86
  type ActorSocketOf<Instance extends AnyActor> = ActorSocket<SocketMetadata<Instance>, SocketOutgoing<Instance>, SocketTag<Instance>>;
87
+ /** Incoming message type for an actor instance type. */
63
88
  type ActorMessageOf<Instance extends AnyActor> = SocketIncoming<Instance>;
64
89
  export { Actor, bindActorIdentity, findActorDefinition, registerActorClass };
65
90
  export type { ActorClass, ActorDefinition, ActorMessageOf, ActorReference, ActorSocketOf, AnyActor };
@@ -1 +1 @@
1
- {"version":3,"file":"actor.d.ts","sourceRoot":"","sources":["../../src/actor/actor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actor.d.ts","sourceRoot":"","sources":["../../src/actor/actor.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAGvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,WAAW,EAAsB,MAAM,aAAa,CAAA;AAE1G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,OAAO,CAAC,MAAM,UAAU,EAAE,OAAO,MAAM,CAAA;AAOvC,UAAU,KAAK,CAAC,QAAQ,GAAG,SAAS,EAAE,QAAQ,GAAG,SAAS,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,SAAS,MAAM,GAAG,MAAM;IACxG,8FAA8F;IAC9F,SAAS,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvE,qCAAqC;IACrC,SAAS,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1F,kEAAkE;IAClE,YAAY,CAAC,CACT,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,EAC5C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,OAAO,GAClB,OAAO,CAAC,IAAI,CAAC,CAAA;CACnB;AAED;;;;;;;GAOG;AACH,uBAAe,KAAK,CAAC,QAAQ,GAAG,SAAS,EAAE,QAAQ,GAAG,SAAS,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,SAAS,MAAM,GAAG,MAAM;IAC7G,gBAAgB;IAChB,SAAiB,CAAC,UAAU,CAAC,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAC;QAAC,GAAG,EAAE,GAAG,CAAA;KAAE,CAAA;IAEvG,SAAS;IAET;;;OAGG;IACH,MAAM,CAAC,GAAG,CAAC,WAAW,SAAS,UAAU,EACrC,IAAI,EAAE,eAAe,CAAC,WAAW,CAAC,EAClC,OAAO,EAAE,MAAM,GAChB,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAI3C,2DAA2D;IAC3D,SAAS,KAAK,EAAE,IAAI,MAAM,CAEzB;IAED;;OAEG;IACH,SAAS,CAAC,cAAc,IAAI,OAAO,CAAC,SAAS,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;IAIpF,mGAAmG;IACnG,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,qBAAqB,CAAC,GAAG,CAAC,GAAG,IAAI;CAGrF;AAED,iBAAS,kBAAkB,CAAC,QAAQ,SAAS,QAAQ,EACjD,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,EAChC,KAAK,EAAE,WAAW,GACnB,eAAe,CAYjB;AAED,iBAAS,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAE3E;AAUD,iBAAS,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAEpE;AAyGD,UAAU,eAAgB,SAAQ,qBAAqB;IACnD,KAAK,EAAE,WAAW,CAAA;CACrB;AAED,UAAU,qBAAqB;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CACxC;AAMD,KAAK,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AAChD,KAAK,UAAU,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,IAAI,QAAQ,GAAG;IAC/D,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAA;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAA;CAClC,CAAA;AAED,KAAK,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AACzD,KAAK,+BAA+B,GAAG,QAAQ,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,QAAQ,CAAA;AAClF,KAAK,kBAAkB,CAAC,QAAQ,SAAS,QAAQ,IAAI;KAChD,GAAG,IAAI,MAAM,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,GACrF,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,WAAW,GAC1C,KAAK,GACL,GAAG,GACP,KAAK;CACd,CAAC,MAAM,QAAQ,CAAC,CAAA;AACjB,KAAK,eAAe,CAAC,WAAW,SAAS,UAAU,IAAI,WAAW,SAAS,+BAA+B,GACpG,KAAK,GACL,kBAAkB,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,SAAS,KAAK,GACxD,WAAW,SAAS;IAChB,QAAQ,CAAC,OAAO,EAAE,YAAY,CAC1B,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EACxC,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EACxC,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EACxC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CACtC,CAAA;CACJ,GACG,WAAW,GACX,WAAW,SAAS;IAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC/C,KAAK,GACL,WAAW,GACjB,KAAK,CAAA;AACb,KAAK,cAAc,CAAC,QAAQ,SAAS,QAAQ,IAAI;KAEzC,GAAG,IAAI,MAAM,QAAQ,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,WAAW,GACpD,GAAG,SAAS,qBAAqB,GAC7B,KAAK,GACL,GAAG,GACP,KAAK,GACZ,QAAQ,CAAC,GAAG,CAAC;CACnB,GAAG;IACA,6FAA6F;IAC7F,OAAO,CACH,QAAQ,EAAE,cAAc,CAAC,QAAQ,CAAC,GACnC,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC,CAAA;IAC3F,mFAAmF;IACnF,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9D,CAAA;AACD,KAAK,qBAAqB,GAAG,WAAW,GAAG,WAAW,GAAG,cAAc,CAAA;AACvE,KAAK,cAAc,CAAC,QAAQ,SAAS,QAAQ,IAAI,QAAQ,CAAC,OAAO,UAAU,CAAC,CAAC,UAAU,CAAC,CAAA;AACxF,KAAK,cAAc,CAAC,QAAQ,SAAS,QAAQ,IAAI,QAAQ,CAAC,OAAO,UAAU,CAAC,CAAC,UAAU,CAAC,CAAA;AACxF,KAAK,cAAc,CAAC,QAAQ,SAAS,QAAQ,IAAI,QAAQ,CAAC,OAAO,UAAU,CAAC,CAAC,UAAU,CAAC,CAAA;AACxF,KAAK,SAAS,CAAC,QAAQ,SAAS,QAAQ,IAAI,QAAQ,CAAC,OAAO,UAAU,CAAC,CAAC,KAAK,CAAC,CAAA;AAC9E,qFAAqF;AACrF,KAAK,aAAa,CAAC,QAAQ,SAAS,QAAQ,IAAI,WAAW,CACvD,cAAc,CAAC,QAAQ,CAAC,EACxB,cAAc,CAAC,QAAQ,CAAC,EACxB,SAAS,CAAC,QAAQ,CAAC,CACtB,CAAA;AACD,wDAAwD;AACxD,KAAK,cAAc,CAAC,QAAQ,SAAS,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAA;AAEzE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAA;AAC5E,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAA"}
@@ -7,17 +7,34 @@ const actorMetadata = new WeakMap();
7
7
  const actorDefinitions = new Map();
8
8
  const asyncFunction = Object.getPrototypeOf(async () => { }).constructor;
9
9
  const referenceClasses = new WeakMap();
10
+ /**
11
+ * Base class for durable actors. Extend directly, with no required constructor arguments.
12
+ * Application methods must be async; instance fields require `@Persisted` or `@Ephemeral`.
13
+ * @typeParam Metadata - Connection metadata supplied by the backend.
14
+ * @typeParam Incoming - Application messages received by the actor.
15
+ * @typeParam Outgoing - Application messages sent by the actor.
16
+ * @typeParam Tag - Allowed connection tags.
17
+ */
10
18
  class Actor {
11
19
  constructor() { }
20
+ /**
21
+ * Returns a backend reference. The first call starts the actor if needed.
22
+ * @param actorId - 1–128 ASCII letters, digits, dots, underscores, or hyphens.
23
+ */
12
24
  static get(actorId) {
13
25
  return getActorReference(this, validateActorComponent("actor ID", actorId));
14
26
  }
27
+ /** The bound actor ID; unavailable during construction. */
15
28
  get id() {
16
29
  return metadataFor(this).actorId;
17
30
  }
31
+ /**
32
+ * Lists connections during an actor call. Includes a joining socket; excludes a disconnected one.
33
+ */
18
34
  getConnections() {
19
35
  return actorConnections(this);
20
36
  }
37
+ /** Sends JSON to matching connections, including the sender by default. Messages are not saved. */
21
38
  broadcast(message, options) {
22
39
  broadcastActor(this, message, options);
23
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"actor.js","sourceRoot":"","sources":["../../src/actor/actor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAGnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAEtD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE9D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAKvE,MAAM,aAAa,GAAG,IAAI,OAAO,EAAyB,CAAA;AAC1D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA2B,CAAA;AAC3D,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC,WAAW,CAAA;AACvE,MAAM,gBAAgB,GAAG,IAAI,OAAO,EAAiC,CAAA;AAarE,MAAe,KAAK;IAGhB,gBAAyB,CAAC;IAE1B,MAAM,CAAC,GAAG,CAEN,OAAe;QAEf,OAAO,iBAAiB,CAAC,IAAI,EAAE,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/E,CAAC;IAED,IAAc,EAAE;QACZ,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAA;IACpC,CAAC;IAES,cAAc;QACpB,OAAO,gBAAgB,CAA0B,IAAI,CAAC,CAAA;IAC1D,CAAC;IAES,SAAS,CAAC,OAAiB,EAAE,OAAoC;QACvE,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC1C,CAAC;CACJ;AAED,SAAS,kBAAkB,CACvB,UAAgC,EAChC,KAAkB;IAElB,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;IAC5C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAChD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,QAAQ,CAAC,UAAU,KAAK,UAAU;YAAE,MAAM,IAAI,oBAAoB,CAAC,wBAAwB,SAAS,EAAE,CAAC,CAAA;QAC3G,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;QACtB,OAAO,QAAQ,CAAA;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,EAAE,GAAG,kBAAkB,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAA;IAC/D,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAC3C,OAAO,UAAU,CAAA;AACrB,CAAC;AAED,SAAS,mBAAmB,CAAC,SAAiB;IAC1C,OAAO,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AAC1C,CAAC;AAED,SAAS,iBAAiB,CACtB,UAAuB,EACvB,OAAe;IAEf,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;IAC5C,OAAO,IAAI,SAAS,CAAC,OAAO,CAAwD,CAAA;AACxF,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAkB,EAAE,OAAe;IAC1D,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;AACzF,CAAC;AAED,SAAS,cAAc,CAAC,UAAsB;IAC1C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACjD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAA;IAC3C,MAAM,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;IAEjD,MAAM,cAAe,SAAQ,KAAK;QAC9B,YAAY,OAAe;YACvB,KAAK,EAAE,CAAA;YACP,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACpC,CAAC;KACJ;IAED,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE;QACvD,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,SAAS,YAAY,CAAc,QAAiB;YACvD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;YAC/B,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;YAC/D,OAAO,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAC/B,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CACtF,CAAA;QACL,CAAC;KACJ,CAAC,CAAA;IAEF,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE;QACzD,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,SAAS,qBAAqB,CAAc,OAA2B;YAC1E,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;YAC/B,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;YAC7D,OAAO,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAA;QACxG,CAAC;KACJ,CAAC,CAAA;IAEF,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAChC,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE;YACpD,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,SAAS,kBAAkB,CAAc,GAAG,IAAe;gBAC9D,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gBAClC,OAAO,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;YAC5G,CAAC;SACJ,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IACF,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;IAC3D,OAAO,cAAc,CAAA;AACzB,CAAC;AAED,SAAS,WAAW,CAAC,QAAkB;IACnC,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC5C,IAAI,QAAQ,KAAK,SAAS;QACtB,MAAM,IAAI,oBAAoB,CAAC,2DAA2D,CAAC,CAAA;IAC/F,OAAO,QAAQ,CAAA;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAsB;IAC9C,MAAM,SAAS,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;IAC5C,kBAAkB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IACzC,OAAO;QACH,SAAS,EAAE,sBAAsB,CAAC,YAAY,EAAE,SAAS,CAAC;QAC1D,UAAU;QACV,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,EAAE;QACjC,OAAO,EAAE,IAAI,GAAG,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;KAC3D,CAAA;AACL,CAAC;AAED,SAAS,eAAe,CAAC,UAAsB,EAAE,SAAiB;IAC9D,IAAI,MAAM,CAAC,qBAAqB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;QAC7D,MAAM,IAAI,oBAAoB,CAAC,eAAe,SAAS,+BAA+B,CAAC,CAAA;IAE3F,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE;QACzG,IAAI,IAAI,KAAK,aAAa;YAAE,OAAO,EAAE,CAAA;QACrC,IAAI,UAAU,CAAC,GAAG,KAAK,SAAS,IAAI,UAAU,CAAC,GAAG,KAAK,SAAS;YAC5D,MAAM,IAAI,oBAAoB,CAAC,eAAe,SAAS,2BAA2B,IAAI,EAAE,CAAC,CAAA;QAC7F,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU;YAAE,OAAO,EAAE,CAAA;QACrD,sBAAsB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;QAC5C,IAAI,IAAI,KAAK,MAAM;YAAE,MAAM,IAAI,oBAAoB,CAAC,eAAe,SAAS,4BAA4B,CAAC,CAAA;QACzG,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,WAAW;YAC1C,MAAM,IAAI,oBAAoB,CAAC,eAAe,SAAS,kCAAkC,IAAI,EAAE,CAAC,CAAA;QACpG,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,YAAY,aAAa,CAAC;YAC5C,MAAM,IAAI,oBAAoB,CAAC,gBAAgB,SAAS,IAAI,IAAI,gBAAgB,CAAC,CAAA;QACrF,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAA;QACzC,OAAO,CAAC,IAAI,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACN,CAAC;AAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC,CAAA;AAE5E,SAAS,kBAAkB,CAAC,UAAsB,EAAE,SAAiB;IACjE,IAAI,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,SAAS;QAC/D,MAAM,IAAI,oBAAoB,CAAC,eAAe,SAAS,6BAA6B,CAAC,CAAA;IACzF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QACvB,MAAM,IAAI,oBAAoB,CAAC,eAAe,SAAS,uCAAuC,CAAC,CAAA;AACvG,CAAC;AAED,SAAS,cAAc,CAAC,UAAsB;IAC1C,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,oBAAoB,CAAC,6BAA6B,CAAC,CAAA;IAC/F,OAAO,UAAU,CAAC,IAAI,CAAA;AAC1B,CAAC;AA0ED,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAA"}
1
+ {"version":3,"file":"actor.js","sourceRoot":"","sources":["../../src/actor/actor.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,14 @@
1
+ /**
2
+ * Lets other calls run during awaits. State may change while waiting.
3
+ * Disables error rollback for the whole actor class. State is saved on successful completion.
4
+ * @experimental
5
+ */
1
6
  declare function Reentrant(_value: Function, context: ClassMethodDecoratorContext): void;
7
+ /** Saves a field after successful calls. Cannot decorate `#private` fields. */
2
8
  declare function Persisted(_value: undefined, context: ClassFieldDecoratorContext): void;
9
+ /** Marks a temporary field that may reset between calls. */
3
10
  declare function Ephemeral(_value: undefined, context: ClassFieldDecoratorContext): void;
11
+ /** Sends browser state updates for a public `@Persisted` field. */
4
12
  declare function Emittable(_value: undefined, context: ClassFieldDecoratorContext): void;
5
13
  export { Emittable, Ephemeral, Persisted, Reentrant };
6
14
  //# sourceMappingURL=decorators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/actor/decorators.ts"],"names":[],"mappings":"AAEA,iBAAS,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,GAAG,IAAI,CAG/E;AAED,iBAAS,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,GAAG,IAAI,CAG/E;AAED,iBAAS,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,GAAG,IAAI,CAE/E;AAED,iBAAS,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,GAAG,IAAI,CAG/E;AAOD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/actor/decorators.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,iBAAS,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,GAAG,IAAI,CAG/E;AAED,+EAA+E;AAC/E,iBAAS,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,GAAG,IAAI,CAG/E;AAED,4DAA4D;AAC5D,iBAAS,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,GAAG,IAAI,CAE/E;AAED,mEAAmE;AACnE,iBAAS,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,GAAG,IAAI,CAG/E;AAOD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAA"}
@@ -1,16 +1,24 @@
1
1
  import { ActorDefinitionError } from "../errors.js";
2
+ /**
3
+ * Lets other calls run during awaits. State may change while waiting.
4
+ * Disables error rollback for the whole actor class. State is saved on successful completion.
5
+ * @experimental
6
+ */
2
7
  function Reentrant(_value, context) {
3
8
  if (context.kind !== "method" || context.static || context.private || typeof context.name !== "string")
4
9
  throw new ActorDefinitionError("@Reentrant requires a public instance async method");
5
10
  }
11
+ /** Saves a field after successful calls. Cannot decorate `#private` fields. */
6
12
  function Persisted(_value, context) {
7
13
  validateField("Persisted", context);
8
14
  if (context.private)
9
15
  throw new ActorDefinitionError("@Persisted cannot decorate a JavaScript private field");
10
16
  }
17
+ /** Marks a temporary field that may reset between calls. */
11
18
  function Ephemeral(_value, context) {
12
19
  validateField("Ephemeral", context);
13
20
  }
21
+ /** Sends browser state updates for a public `@Persisted` field. */
14
22
  function Emittable(_value, context) {
15
23
  validateField("Emittable", context);
16
24
  if (context.private)
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/actor/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAEnD,SAAS,SAAS,CAAC,MAAgB,EAAE,OAAoC;IACrE,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAClG,MAAM,IAAI,oBAAoB,CAAC,oDAAoD,CAAC,CAAA;AAC5F,CAAC;AAED,SAAS,SAAS,CAAC,MAAiB,EAAE,OAAmC;IACrE,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IACnC,IAAI,OAAO,CAAC,OAAO;QAAE,MAAM,IAAI,oBAAoB,CAAC,uDAAuD,CAAC,CAAA;AAChH,CAAC;AAED,SAAS,SAAS,CAAC,MAAiB,EAAE,OAAmC;IACrE,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;AACvC,CAAC;AAED,SAAS,SAAS,CAAC,MAAiB,EAAE,OAAmC;IACrE,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IACnC,IAAI,OAAO,CAAC,OAAO;QAAE,MAAM,IAAI,oBAAoB,CAAC,oCAAoC,CAAC,CAAA;AAC7F,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,OAAmC;IACpE,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAC9E,MAAM,IAAI,oBAAoB,CAAC,IAAI,IAAI,gDAAgD,CAAC,CAAA;AAChG,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/actor/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAEnD;;;;GAIG;AACH,SAAS,SAAS,CAAC,MAAgB,EAAE,OAAoC;IACrE,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAClG,MAAM,IAAI,oBAAoB,CAAC,oDAAoD,CAAC,CAAA;AAC5F,CAAC;AAED,+EAA+E;AAC/E,SAAS,SAAS,CAAC,MAAiB,EAAE,OAAmC;IACrE,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IACnC,IAAI,OAAO,CAAC,OAAO;QAAE,MAAM,IAAI,oBAAoB,CAAC,uDAAuD,CAAC,CAAA;AAChH,CAAC;AAED,4DAA4D;AAC5D,SAAS,SAAS,CAAC,MAAiB,EAAE,OAAmC;IACrE,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;AACvC,CAAC;AAED,mEAAmE;AACnE,SAAS,SAAS,CAAC,MAAiB,EAAE,OAAmC;IACrE,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IACnC,IAAI,OAAO,CAAC,OAAO;QAAE,MAAM,IAAI,oBAAoB,CAAC,oCAAoC,CAAC,CAAA;AAC7F,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,OAAmC;IACpE,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAC9E,MAAM,IAAI,oBAAoB,CAAC,IAAI,IAAI,gDAAgD,CAAC,CAAA;AAChG,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAA"}
@@ -2,26 +2,52 @@ import type { JsonValue } from "../json.js";
2
2
  import type { SocketConnection, SocketEffect, SocketMessage } from "./socketProtocol.js";
3
3
  import type { ActorSchemas, ActorStateMessage, ActorStateUpdate } from "./socketValidation.js";
4
4
  type ActorSocketState = "connecting" | "open" | "closed";
5
+ /** A JSON value, encoded automatically when sent. */
5
6
  type ActorSocketMessage = JsonValue;
7
+ /** Actor-side socket. Metadata and tags last only for this connection. */
6
8
  interface ActorSocket<Metadata = JsonValue, Outgoing = JsonValue, Tag extends string = string> {
7
9
  readonly id: string;
10
+ /** Assign the whole value to update it. Maximum: 64 KiB of JSON. */
8
11
  metadata: Metadata;
9
12
  readonly tags: readonly Tag[];
10
13
  readonly state: ActorSocketState;
14
+ /** Sends JSON. Throws if closed. Delivery does not confirm saved state. */
11
15
  send(message: Outgoing): void;
16
+ /**
17
+ * @param code - Defaults to 1000; accepts 1000 or application codes 3000–4999.
18
+ * @param reason - Defaults to an empty string; at most 123 UTF-8 bytes.
19
+ */
12
20
  close(code?: number, reason?: string): void;
21
+ /**
22
+ * Rejects a connection during `onConnect`. Pass an explicit code, such as 4003.
23
+ * @param code - Use 3000–4999; the default 1008 is currently rejected.
24
+ * @param reason - Defaults to "connection rejected"; at most 123 UTF-8 bytes.
25
+ */
13
26
  reject(code?: number, reason?: string): void;
27
+ /** Replaces tags. Maximum: 128 unique tags, 1–256 code units each, 8 KiB total UTF-8. */
14
28
  setTags(...tags: Tag[]): void;
15
29
  }
30
+ /** Filters connections for a broadcast. */
16
31
  interface ActorBroadcastOptions<Tag extends string = string> {
32
+ /** Excludes up to 128 connections. */
17
33
  readonly except?: Pick<ActorSocket, "id"> | readonly Pick<ActorSocket, "id">[];
34
+ /** Empty or omitted selects all connections. */
18
35
  readonly tags?: readonly Tag[];
36
+ /** Defaults to "all". */
19
37
  readonly tagMatch?: "all" | "any";
20
38
  }
39
+ /**
40
+ * Backend socket with automatic JSON encoding. Attach listeners after `connect()`.
41
+ * Reconnect in your application; messages are not replayed.
42
+ */
21
43
  interface ActorConnection<Send = JsonValue, Receive = Send, State = JsonValue> {
44
+ /** WebSocket state: 0 connecting, 1 open, 2 closing, 3 closed. */
22
45
  readonly readyState: number;
46
+ /** Sends JSON while open. Pass objects directly. */
23
47
  send(data: Send): void;
48
+ /** Reasons are limited to 123 UTF-8 bytes. */
24
49
  close(code?: number, reason?: string): void;
50
+ /** The `open` event normally fires before `connect()` resolves. */
25
51
  addEventListener<Type extends keyof ActorConnectionEventMap<Receive, State>>(type: Type, listener: (event: ActorConnectionEventMap<Receive, State>[Type]) => void): void;
26
52
  removeEventListener<Type extends keyof ActorConnectionEventMap<Receive, State>>(type: Type, listener: (event: ActorConnectionEventMap<Receive, State>[Type]) => void): void;
27
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/actor/socket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../src/actor/socket.ts"],"names":[],"mappings":"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"}