durable-actors 0.2.5 → 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.
- package/README.md +102 -139
- package/dist/actor/actor.d.ts +25 -0
- package/dist/actor/actor.d.ts.map +1 -1
- package/dist/actor/actor.js +17 -0
- package/dist/actor/actor.js.map +1 -1
- package/dist/actor/decorators.d.ts +8 -0
- package/dist/actor/decorators.d.ts.map +1 -1
- package/dist/actor/decorators.js +8 -0
- package/dist/actor/decorators.js.map +1 -1
- package/dist/actor/socket.d.ts +26 -0
- package/dist/actor/socket.d.ts.map +1 -1
- package/dist/actor/socket.js.map +1 -1
- package/dist/actor/socketValidation.d.ts +3 -0
- package/dist/actor/socketValidation.d.ts.map +1 -1
- package/dist/actor/socketValidation.js.map +1 -1
- package/dist/backend.d.ts +5 -3
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +3 -0
- package/dist/backend.js.map +1 -1
- package/dist/cli/actor-source-watcher.js +1 -1
- package/dist/cli/actor-source-watcher.js.map +1 -1
- package/dist/cli/connection.d.ts +2 -8
- package/dist/cli/connection.d.ts.map +1 -1
- package/dist/cli/connection.js +17 -13
- package/dist/cli/connection.js.map +1 -1
- package/dist/cli/control-plane.d.ts +7 -14
- package/dist/cli/control-plane.d.ts.map +1 -1
- package/dist/cli/control-plane.js +17 -21
- package/dist/cli/control-plane.js.map +1 -1
- package/dist/cli/dev.d.ts +13 -2
- package/dist/cli/dev.d.ts.map +1 -1
- package/dist/cli/dev.js +28 -20
- package/dist/cli/dev.js.map +1 -1
- package/dist/cli/generate.d.ts.map +1 -1
- package/dist/cli/generate.js +15 -28
- package/dist/cli/generate.js.map +1 -1
- package/dist/cli/observe.d.ts +2 -2
- package/dist/cli/observe.d.ts.map +1 -1
- package/dist/cli/observe.js +23 -42
- package/dist/cli/observe.js.map +1 -1
- package/dist/cli/start.d.ts +3 -0
- package/dist/cli/start.d.ts.map +1 -0
- package/dist/cli/start.js +12 -0
- package/dist/cli/start.js.map +1 -0
- package/dist/cli.js +8 -35
- package/dist/cli.js.map +1 -1
- package/dist/client/actorHostGrpc.js +2 -2
- package/dist/client/clientSettings.js +1 -1
- package/dist/client/remoteClient.d.ts +3 -3
- package/dist/client/remoteClient.d.ts.map +1 -1
- package/dist/client/remoteClient.js +4 -5
- package/dist/client/remoteClient.js.map +1 -1
- package/dist/errors.d.ts +3 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +3 -0
- package/dist/errors.js.map +1 -1
- package/dist/generated/{durable_object → durable_actors}/v1/ActivateActorReply.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/ActivateActorReply.js +3 -0
- package/dist/generated/durable_actors/v1/ActivateActorReply.js.map +1 -0
- package/dist/generated/durable_actors/v1/ActivateActorRequest.d.ts +8 -0
- package/dist/generated/{durable_object → durable_actors}/v1/ActivateActorRequest.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/ActivateActorRequest.js +3 -0
- package/dist/generated/durable_actors/v1/ActivateActorRequest.js.map +1 -0
- package/dist/generated/{durable_object → durable_actors}/v1/ActorCompleted.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/ActorCompleted.js +3 -0
- package/dist/generated/durable_actors/v1/ActorCompleted.js.map +1 -0
- package/dist/generated/durable_actors/v1/ActorControlPlaneService.d.ts +21 -0
- package/dist/generated/{durable_object → durable_actors}/v1/ActorControlPlaneService.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/ActorControlPlaneService.js +3 -0
- package/dist/generated/durable_actors/v1/ActorControlPlaneService.js.map +1 -0
- package/dist/generated/{durable_object → durable_actors}/v1/ActorFailed.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/ActorFailed.js +3 -0
- package/dist/generated/durable_actors/v1/ActorFailed.js.map +1 -0
- package/dist/generated/durable_actors/v1/ActorHostService.d.ts +56 -0
- package/dist/generated/{durable_object → durable_actors}/v1/ActorHostService.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/ActorHostService.js +3 -0
- package/dist/generated/durable_actors/v1/ActorHostService.js.map +1 -0
- package/dist/generated/{durable_object → durable_actors}/v1/ActorKey.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/ActorKey.js +3 -0
- package/dist/generated/durable_actors/v1/ActorKey.js.map +1 -0
- package/dist/generated/{durable_object → durable_actors}/v1/ControlPlaneReply.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/ControlPlaneReply.js +3 -0
- package/dist/generated/durable_actors/v1/ControlPlaneReply.js.map +1 -0
- package/dist/generated/{durable_object → durable_actors}/v1/ControlPlaneRequest.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/ControlPlaneRequest.js +3 -0
- package/dist/generated/durable_actors/v1/ControlPlaneRequest.js.map +1 -0
- package/dist/generated/{durable_object → durable_actors}/v1/Empty.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/Empty.js +3 -0
- package/dist/generated/durable_actors/v1/Empty.js.map +1 -0
- package/dist/generated/durable_actors/v1/HostInvokeActorRequest.d.ts +11 -0
- package/dist/generated/{durable_object → durable_actors}/v1/HostInvokeActorRequest.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/HostInvokeActorRequest.js +3 -0
- package/dist/generated/durable_actors/v1/HostInvokeActorRequest.js.map +1 -0
- package/dist/generated/{durable_object → durable_actors}/v1/HostSocketEventRequest.d.ts +3 -3
- package/dist/generated/{durable_object → durable_actors}/v1/HostSocketEventRequest.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/HostSocketEventRequest.js +3 -0
- package/dist/generated/durable_actors/v1/HostSocketEventRequest.js.map +1 -0
- package/dist/generated/durable_actors/v1/InvokeActorReply.d.ts +16 -0
- package/dist/generated/{durable_object → durable_actors}/v1/InvokeActorReply.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/InvokeActorReply.js +3 -0
- package/dist/generated/durable_actors/v1/InvokeActorReply.js.map +1 -0
- package/dist/generated/durable_actors/v1/InvokeActorRequest.d.ts +14 -0
- package/dist/generated/{durable_object → durable_actors}/v1/InvokeActorRequest.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/InvokeActorRequest.js +3 -0
- package/dist/generated/durable_actors/v1/InvokeActorRequest.js.map +1 -0
- package/dist/generated/durable_actors/v1/PublishSocketEffectsRequest.d.ts +13 -0
- package/dist/generated/{durable_object → durable_actors}/v1/PublishSocketEffectsRequest.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/PublishSocketEffectsRequest.js +3 -0
- package/dist/generated/{durable_object → durable_actors}/v1/PublishSocketEffectsRequest.js.map +1 -1
- package/dist/generated/durable_actors/v1/ReplicaService.d.ts +42 -0
- package/dist/generated/{durable_object → durable_actors}/v1/ReplicaService.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/ReplicaService.js +3 -0
- package/dist/generated/durable_actors/v1/ReplicaService.js.map +1 -0
- package/dist/generated/durable_actors/v1/ReplicaSessionHead.d.ts +14 -0
- package/dist/generated/{durable_object → durable_actors}/v1/ReplicaSessionHead.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/ReplicaSessionHead.js +3 -0
- package/dist/generated/durable_actors/v1/ReplicaSessionHead.js.map +1 -0
- package/dist/generated/{durable_object → durable_actors}/v1/ReplicaSnapshotRef.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/ReplicaSnapshotRef.js +3 -0
- package/dist/generated/durable_actors/v1/ReplicaSnapshotRef.js.map +1 -0
- package/dist/generated/durable_actors/v1/ReplicaStreamHead.d.ts +11 -0
- package/dist/generated/{durable_object → durable_actors}/v1/ReplicaStreamHead.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/ReplicaStreamHead.js +3 -0
- package/dist/generated/durable_actors/v1/ReplicaStreamHead.js.map +1 -0
- package/dist/generated/{durable_object → durable_actors}/v1/ReplicaStreamIdentity.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/ReplicaStreamIdentity.js +3 -0
- package/dist/generated/durable_actors/v1/ReplicaStreamIdentity.js.map +1 -0
- package/dist/generated/{durable_object → durable_actors}/v1/Reroute.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/Reroute.js +3 -0
- package/dist/generated/durable_actors/v1/Reroute.js.map +1 -0
- package/dist/generated/{durable_object → durable_actors}/v1/SnapshotData.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/SnapshotData.js +3 -0
- package/dist/generated/durable_actors/v1/SnapshotData.js.map +1 -0
- package/dist/generated/durable_actors/v1/SnapshotService.d.ts +32 -0
- package/dist/generated/{durable_object → durable_actors}/v1/SnapshotService.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/SnapshotService.js +3 -0
- package/dist/generated/durable_actors/v1/SnapshotService.js.map +1 -0
- package/dist/generated/{durable_object → durable_actors}/v1/SnapshotWriteReply.d.ts.map +1 -1
- package/dist/generated/durable_actors/v1/SnapshotWriteReply.js +3 -0
- package/dist/generated/durable_actors/v1/SnapshotWriteReply.js.map +1 -0
- package/dist/generated/durable_actors.d.ts +69 -0
- package/dist/generated/{durable_object.d.ts.map → durable_actors.d.ts.map} +1 -1
- package/dist/generated/durable_actors.js +2 -0
- package/dist/generated/durable_actors.js.map +1 -0
- package/dist/generated/{durable_object.proto → durable_actors.proto} +1 -1
- package/dist/host/actor-worker.js +1 -1
- package/dist/host/actor-worker.js.map +1 -1
- package/dist/host.d.ts +1 -1
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +1 -1
- package/dist/host.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/localRuntime.d.ts +9 -1
- package/dist/localRuntime.d.ts.map +1 -1
- package/dist/localRuntime.js +2 -1
- package/dist/localRuntime.js.map +1 -1
- package/dist/proxy.d.ts +10 -1
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +8 -3
- package/dist/proxy.js.map +1 -1
- package/dist/templates/actor/README.md +4 -4
- package/dist/templates/actor/package.json +1 -2
- package/dist/templates/ai-chat/.env.example +6 -0
- package/dist/templates/ai-chat/README.md +44 -16
- package/dist/templates/ai-chat/gitignore +0 -1
- package/dist/templates/ai-chat/package.json +2 -1
- package/dist/templates/ai-chat/src/actors.ts +20 -0
- package/dist/templates/ai-chat/src/backend.ts +18 -5
- package/dist/templates/ai-chat/tsconfig.json +1 -1
- package/dist/templates/chat/.env.example +6 -0
- package/dist/templates/chat/README.md +57 -12
- package/dist/templates/chat/gitignore +0 -1
- package/dist/templates/chat/package.json +4 -3
- package/dist/templates/chat/src/backend.ts +5 -2
- package/dist/templates/documents/.env.example +6 -0
- package/dist/templates/documents/README.md +32 -17
- package/dist/templates/documents/gitignore +0 -1
- package/dist/templates/documents/package.json +4 -3
- package/dist/templates/documents/src/backend.ts +5 -2
- package/package.json +10 -7
- package/dist/cli/deploy.d.ts +0 -4
- package/dist/cli/deploy.d.ts.map +0 -1
- package/dist/cli/deploy.js +0 -39
- package/dist/cli/deploy.js.map +0 -1
- package/dist/cli/objects.d.ts +0 -4
- package/dist/cli/objects.d.ts.map +0 -1
- package/dist/cli/objects.js +0 -68
- package/dist/cli/objects.js.map +0 -1
- package/dist/generated/durable_object/v1/ActivateActorReply.js +0 -3
- package/dist/generated/durable_object/v1/ActivateActorReply.js.map +0 -1
- package/dist/generated/durable_object/v1/ActivateActorRequest.d.ts +0 -8
- package/dist/generated/durable_object/v1/ActivateActorRequest.js +0 -3
- package/dist/generated/durable_object/v1/ActivateActorRequest.js.map +0 -1
- package/dist/generated/durable_object/v1/ActorCompleted.js +0 -3
- package/dist/generated/durable_object/v1/ActorCompleted.js.map +0 -1
- package/dist/generated/durable_object/v1/ActorControlPlaneService.d.ts +0 -21
- package/dist/generated/durable_object/v1/ActorControlPlaneService.js +0 -3
- package/dist/generated/durable_object/v1/ActorControlPlaneService.js.map +0 -1
- package/dist/generated/durable_object/v1/ActorFailed.js +0 -3
- package/dist/generated/durable_object/v1/ActorFailed.js.map +0 -1
- package/dist/generated/durable_object/v1/ActorHostService.d.ts +0 -56
- package/dist/generated/durable_object/v1/ActorHostService.js +0 -3
- package/dist/generated/durable_object/v1/ActorHostService.js.map +0 -1
- package/dist/generated/durable_object/v1/ActorKey.js +0 -3
- package/dist/generated/durable_object/v1/ActorKey.js.map +0 -1
- package/dist/generated/durable_object/v1/ControlPlaneReply.js +0 -3
- package/dist/generated/durable_object/v1/ControlPlaneReply.js.map +0 -1
- package/dist/generated/durable_object/v1/ControlPlaneRequest.js +0 -3
- package/dist/generated/durable_object/v1/ControlPlaneRequest.js.map +0 -1
- package/dist/generated/durable_object/v1/Empty.js +0 -3
- package/dist/generated/durable_object/v1/Empty.js.map +0 -1
- package/dist/generated/durable_object/v1/HostInvokeActorRequest.d.ts +0 -11
- package/dist/generated/durable_object/v1/HostInvokeActorRequest.js +0 -3
- package/dist/generated/durable_object/v1/HostInvokeActorRequest.js.map +0 -1
- package/dist/generated/durable_object/v1/HostSocketEventRequest.js +0 -3
- package/dist/generated/durable_object/v1/HostSocketEventRequest.js.map +0 -1
- package/dist/generated/durable_object/v1/InvokeActorReply.d.ts +0 -16
- package/dist/generated/durable_object/v1/InvokeActorReply.js +0 -3
- package/dist/generated/durable_object/v1/InvokeActorReply.js.map +0 -1
- package/dist/generated/durable_object/v1/InvokeActorRequest.d.ts +0 -14
- package/dist/generated/durable_object/v1/InvokeActorRequest.js +0 -3
- package/dist/generated/durable_object/v1/InvokeActorRequest.js.map +0 -1
- package/dist/generated/durable_object/v1/PublishSocketEffectsRequest.d.ts +0 -13
- package/dist/generated/durable_object/v1/PublishSocketEffectsRequest.js +0 -3
- package/dist/generated/durable_object/v1/ReplicaService.d.ts +0 -42
- package/dist/generated/durable_object/v1/ReplicaService.js +0 -3
- package/dist/generated/durable_object/v1/ReplicaService.js.map +0 -1
- package/dist/generated/durable_object/v1/ReplicaSessionHead.d.ts +0 -14
- package/dist/generated/durable_object/v1/ReplicaSessionHead.js +0 -3
- package/dist/generated/durable_object/v1/ReplicaSessionHead.js.map +0 -1
- package/dist/generated/durable_object/v1/ReplicaSnapshotRef.js +0 -3
- package/dist/generated/durable_object/v1/ReplicaSnapshotRef.js.map +0 -1
- package/dist/generated/durable_object/v1/ReplicaStreamHead.d.ts +0 -11
- package/dist/generated/durable_object/v1/ReplicaStreamHead.js +0 -3
- package/dist/generated/durable_object/v1/ReplicaStreamHead.js.map +0 -1
- package/dist/generated/durable_object/v1/ReplicaStreamIdentity.js +0 -3
- package/dist/generated/durable_object/v1/ReplicaStreamIdentity.js.map +0 -1
- package/dist/generated/durable_object/v1/Reroute.js +0 -3
- package/dist/generated/durable_object/v1/Reroute.js.map +0 -1
- package/dist/generated/durable_object/v1/SnapshotData.js +0 -3
- package/dist/generated/durable_object/v1/SnapshotData.js.map +0 -1
- package/dist/generated/durable_object/v1/SnapshotService.d.ts +0 -32
- package/dist/generated/durable_object/v1/SnapshotService.js +0 -3
- package/dist/generated/durable_object/v1/SnapshotService.js.map +0 -1
- package/dist/generated/durable_object/v1/SnapshotWriteReply.js +0 -3
- package/dist/generated/durable_object/v1/SnapshotWriteReply.js.map +0 -1
- package/dist/generated/durable_object.d.ts +0 -69
- package/dist/generated/durable_object.js +0 -2
- package/dist/generated/durable_object.js.map +0 -1
- package/dist/templates/ai-chat/src/durable-objects.ts +0 -15
- /package/dist/generated/{durable_object → durable_actors}/v1/ActivateActorReply.d.ts +0 -0
- /package/dist/generated/{durable_object → durable_actors}/v1/ActorCompleted.d.ts +0 -0
- /package/dist/generated/{durable_object → durable_actors}/v1/ActorFailed.d.ts +0 -0
- /package/dist/generated/{durable_object → durable_actors}/v1/ActorKey.d.ts +0 -0
- /package/dist/generated/{durable_object → durable_actors}/v1/ControlPlaneReply.d.ts +0 -0
- /package/dist/generated/{durable_object → durable_actors}/v1/ControlPlaneRequest.d.ts +0 -0
- /package/dist/generated/{durable_object → durable_actors}/v1/Empty.d.ts +0 -0
- /package/dist/generated/{durable_object → durable_actors}/v1/ReplicaSnapshotRef.d.ts +0 -0
- /package/dist/generated/{durable_object → durable_actors}/v1/ReplicaStreamIdentity.d.ts +0 -0
- /package/dist/generated/{durable_object → durable_actors}/v1/Reroute.d.ts +0 -0
- /package/dist/generated/{durable_object → durable_actors}/v1/SnapshotData.d.ts +0 -0
- /package/dist/generated/{durable_object → durable_actors}/v1/SnapshotWriteReply.d.ts +0 -0
- /package/dist/templates/actor/src/{durable-objects.ts → actors.ts} +0 -0
- /package/dist/templates/chat/src/{durable-objects.ts → actors.ts} +0 -0
- /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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
68
|
+
## Define an Actor
|
|
58
69
|
|
|
59
|
-
|
|
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 {
|
|
65
|
-
import {
|
|
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
|
-
|
|
76
|
+
export class ChatHistory extends Actor {
|
|
77
|
+
@Persisted private messages: UIMessage[] = []
|
|
75
78
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
durable-actors deploy --image im-customer-build
|
|
80
|
-
```
|
|
79
|
+
async load() {
|
|
80
|
+
return this.messages
|
|
81
|
+
}
|
|
81
82
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
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
|
-
|
|
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
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
const {
|
|
182
|
-
const
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
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
|
-
|
|
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
|
-
-
|
|
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
|
|
package/dist/actor/actor.d.ts
CHANGED
|
@@ -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":"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"}
|
package/dist/actor/actor.js
CHANGED
|
@@ -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
|
}
|
package/dist/actor/actor.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/actor/decorators.js
CHANGED
|
@@ -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"}
|
package/dist/actor/socket.d.ts
CHANGED
|
@@ -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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"}
|