durable-actors 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -19
- package/dist/backend.d.ts +3 -10
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +7 -34
- package/dist/backend.js.map +1 -1
- package/dist/cli/actor-source-watcher.d.ts.map +1 -1
- package/dist/cli/actor-source-watcher.js +6 -2
- package/dist/cli/actor-source-watcher.js.map +1 -1
- package/dist/cli/connection.d.ts +2 -2
- package/dist/cli/connection.d.ts.map +1 -1
- package/dist/cli/connection.js +2 -6
- package/dist/cli/connection.js.map +1 -1
- package/dist/cli/control-plane.d.ts +1 -1
- package/dist/cli/control-plane.d.ts.map +1 -1
- package/dist/cli/control-plane.js +11 -6
- package/dist/cli/control-plane.js.map +1 -1
- package/dist/cli/dev.d.ts.map +1 -1
- package/dist/cli/dev.js +51 -28
- package/dist/cli/dev.js.map +1 -1
- package/dist/cli/generate.d.ts.map +1 -1
- package/dist/cli/generate.js +16 -9
- package/dist/cli/generate.js.map +1 -1
- package/dist/cli.js +18 -3
- package/dist/cli.js.map +1 -1
- package/dist/client/clientSettings.d.ts +1 -7
- package/dist/client/clientSettings.d.ts.map +1 -1
- package/dist/client/clientSettings.js +1 -44
- package/dist/client/clientSettings.js.map +1 -1
- package/dist/client/remoteClient.d.ts +4 -35
- package/dist/client/remoteClient.d.ts.map +1 -1
- package/dist/client/remoteClient.js +14 -202
- package/dist/client/remoteClient.js.map +1 -1
- package/dist/client/telemetry.d.ts +4 -12
- package/dist/client/telemetry.d.ts.map +1 -1
- package/dist/client/telemetry.js +3 -19
- package/dist/client/telemetry.js.map +1 -1
- package/dist/client-runtime/client.d.ts +40 -0
- package/dist/client-runtime/client.d.ts.map +1 -0
- package/dist/client-runtime/client.js +183 -0
- package/dist/client-runtime/client.js.map +1 -0
- package/dist/client-runtime/errors.d.ts +30 -0
- package/dist/client-runtime/errors.d.ts.map +1 -0
- package/dist/client-runtime/errors.js +55 -0
- package/dist/client-runtime/errors.js.map +1 -0
- package/dist/client-runtime/http.d.ts +43 -0
- package/dist/client-runtime/http.d.ts.map +1 -0
- package/dist/client-runtime/http.js +63 -0
- package/dist/client-runtime/http.js.map +1 -0
- package/dist/client-runtime/index.browser.d.ts +8 -0
- package/dist/client-runtime/index.browser.d.ts.map +1 -0
- package/dist/client-runtime/index.browser.js +14 -0
- package/dist/client-runtime/index.browser.js.map +1 -0
- package/dist/client-runtime/index.d.ts +6 -0
- package/dist/client-runtime/index.d.ts.map +1 -0
- package/dist/client-runtime/index.js +4 -0
- package/dist/client-runtime/index.js.map +1 -0
- package/dist/client-runtime/json.d.ts +9 -0
- package/dist/client-runtime/json.d.ts.map +1 -0
- package/dist/client-runtime/json.js +16 -0
- package/dist/client-runtime/json.js.map +1 -0
- package/dist/client-runtime/proxy.d.ts +49 -0
- package/dist/client-runtime/proxy.d.ts.map +1 -0
- package/dist/client-runtime/proxy.js +106 -0
- package/dist/client-runtime/proxy.js.map +1 -0
- package/dist/client-runtime/settings.d.ts +20 -0
- package/dist/client-runtime/settings.d.ts.map +1 -0
- package/dist/client-runtime/settings.js +60 -0
- package/dist/client-runtime/settings.js.map +1 -0
- package/dist/client-runtime/stub.d.ts +15 -0
- package/dist/client-runtime/stub.d.ts.map +1 -0
- package/dist/client-runtime/stub.js +44 -0
- package/dist/client-runtime/stub.js.map +1 -0
- package/dist/client-runtime/telemetry.d.ts +13 -0
- package/dist/client-runtime/telemetry.d.ts.map +1 -0
- package/dist/client-runtime/telemetry.js +18 -0
- package/dist/client-runtime/telemetry.js.map +1 -0
- package/dist/compiler/actor-build.d.ts +8 -2
- package/dist/compiler/actor-build.d.ts.map +1 -1
- package/dist/compiler/actor-build.js +58 -4
- package/dist/compiler/actor-build.js.map +1 -1
- package/dist/compiler/actor-compiler.d.ts +11 -0
- package/dist/compiler/actor-compiler.d.ts.map +1 -1
- package/dist/compiler/actor-compiler.js +34 -22
- package/dist/compiler/actor-compiler.js.map +1 -1
- package/dist/compiler/deployment-build.js +18 -5
- package/dist/compiler/deployment-build.js.map +1 -1
- package/dist/compiler/generators/backend-generator.js +4 -4
- package/dist/compiler/generators/backend-generator.js.map +1 -1
- package/dist/compiler/generators/client-generator.d.ts.map +1 -1
- package/dist/compiler/generators/client-generator.js +6 -19
- package/dist/compiler/generators/client-generator.js.map +1 -1
- package/dist/compiler/generators/typescript-generator.d.ts +1 -1
- package/dist/compiler/generators/typescript-generator.d.ts.map +1 -1
- package/dist/compiler/generators/typescript-generator.js +11 -8
- package/dist/compiler/generators/typescript-generator.js.map +1 -1
- package/dist/compiler/json-schema.d.ts.map +1 -1
- package/dist/compiler/json-schema.js +2 -1
- package/dist/compiler/json-schema.js.map +1 -1
- package/dist/errors.d.ts +1 -29
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +1 -54
- package/dist/errors.js.map +1 -1
- package/dist/generated/client-runtime.d.ts +2 -0
- package/dist/generated/client-runtime.d.ts.map +1 -0
- package/dist/generated/client-runtime.js +2 -0
- package/dist/generated/client-runtime.js.map +1 -0
- package/dist/host/actor-host.d.ts +1 -3
- package/dist/host/actor-host.d.ts.map +1 -1
- package/dist/host/actor-host.js +6 -34
- package/dist/host/actor-host.js.map +1 -1
- package/dist/host/actor-worker.js +9 -14
- package/dist/host/actor-worker.js.map +1 -1
- package/dist/host/generic-host.d.ts.map +1 -1
- package/dist/host/generic-host.js +4 -5
- package/dist/host/generic-host.js.map +1 -1
- package/dist/host/protocol.d.ts +2 -4
- package/dist/host/protocol.d.ts.map +1 -1
- package/dist/host/protocol.js +1 -1
- package/dist/host/protocol.js.map +1 -1
- package/dist/host/types.d.ts +1 -8
- package/dist/host/types.d.ts.map +1 -1
- package/dist/host/validate-artifact.d.ts +2 -0
- package/dist/host/validate-artifact.d.ts.map +1 -0
- package/dist/host/validate-artifact.js +10 -0
- package/dist/host/validate-artifact.js.map +1 -0
- package/dist/host/worker-supervisor.d.ts +2 -28
- package/dist/host/worker-supervisor.d.ts.map +1 -1
- package/dist/host/worker-supervisor.js +4 -60
- package/dist/host/worker-supervisor.js.map +1 -1
- package/dist/json.d.ts +1 -1
- package/dist/json.d.ts.map +1 -1
- package/dist/json.js +1 -13
- package/dist/json.js.map +1 -1
- package/dist/localRuntime.d.ts +3 -3
- package/dist/localRuntime.d.ts.map +1 -1
- package/dist/localRuntime.js +13 -4
- package/dist/localRuntime.js.map +1 -1
- package/dist/projectSdk.d.ts +2 -0
- package/dist/projectSdk.d.ts.map +1 -0
- package/dist/projectSdk.js +19 -0
- package/dist/projectSdk.js.map +1 -0
- package/dist/proxy.d.ts +1 -51
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +1 -80
- package/dist/proxy.js.map +1 -1
- package/dist/templates/actor/README.md +6 -6
- package/dist/templates/actor/package.json +2 -2
- package/dist/templates/actor/pnpm-workspace.yaml +2 -0
- package/dist/templates/ai-chat/.env.example +0 -2
- package/dist/templates/ai-chat/README.md +5 -10
- package/dist/templates/ai-chat/package.json +1 -1
- package/dist/templates/ai-chat/pnpm-workspace.yaml +2 -0
- package/dist/templates/ai-chat/src/actors.ts +3 -8
- package/dist/templates/ai-chat/src/backend.ts +2 -12
- package/dist/templates/chat/.env.example +0 -2
- package/dist/templates/chat/README.md +1 -1
- package/dist/templates/chat/package.json +2 -2
- package/dist/templates/chat/pnpm-workspace.yaml +2 -0
- package/dist/templates/documents/.env.example +0 -2
- package/dist/templates/documents/README.md +1 -1
- package/dist/templates/documents/package.json +2 -2
- package/dist/templates/documents/pnpm-workspace.yaml +2 -0
- package/package.json +24 -21
- package/dist/client/actorHostGrpc.d.ts +0 -50
- package/dist/client/actorHostGrpc.d.ts.map +0 -1
- package/dist/client/actorHostGrpc.js +0 -111
- package/dist/client/actorHostGrpc.js.map +0 -1
- package/dist/generated/durable_actors/v1/ActivateActorReply.d.ts +0 -8
- package/dist/generated/durable_actors/v1/ActivateActorReply.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/ActivateActorReply.js +0 -3
- package/dist/generated/durable_actors/v1/ActivateActorReply.js.map +0 -1
- package/dist/generated/durable_actors/v1/ActivateActorRequest.d.ts +0 -8
- package/dist/generated/durable_actors/v1/ActivateActorRequest.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/ActivateActorRequest.js +0 -3
- package/dist/generated/durable_actors/v1/ActivateActorRequest.js.map +0 -1
- package/dist/generated/durable_actors/v1/ActorCompleted.d.ts +0 -9
- package/dist/generated/durable_actors/v1/ActorCompleted.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/ActorCompleted.js +0 -3
- package/dist/generated/durable_actors/v1/ActorCompleted.js.map +0 -1
- package/dist/generated/durable_actors/v1/ActorControlPlaneService.d.ts +0 -21
- package/dist/generated/durable_actors/v1/ActorControlPlaneService.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/ActorControlPlaneService.js +0 -3
- package/dist/generated/durable_actors/v1/ActorControlPlaneService.js.map +0 -1
- package/dist/generated/durable_actors/v1/ActorFailed.d.ts +0 -9
- package/dist/generated/durable_actors/v1/ActorFailed.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/ActorFailed.js +0 -3
- package/dist/generated/durable_actors/v1/ActorFailed.js.map +0 -1
- package/dist/generated/durable_actors/v1/ActorHostService.d.ts +0 -56
- package/dist/generated/durable_actors/v1/ActorHostService.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/ActorHostService.js +0 -3
- package/dist/generated/durable_actors/v1/ActorHostService.js.map +0 -1
- package/dist/generated/durable_actors/v1/ActorKey.d.ts +0 -11
- package/dist/generated/durable_actors/v1/ActorKey.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/ActorKey.js +0 -3
- package/dist/generated/durable_actors/v1/ActorKey.js.map +0 -1
- package/dist/generated/durable_actors/v1/ControlPlaneReply.d.ts +0 -7
- package/dist/generated/durable_actors/v1/ControlPlaneReply.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/ControlPlaneReply.js +0 -3
- package/dist/generated/durable_actors/v1/ControlPlaneReply.js.map +0 -1
- package/dist/generated/durable_actors/v1/ControlPlaneRequest.d.ts +0 -7
- package/dist/generated/durable_actors/v1/ControlPlaneRequest.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/ControlPlaneRequest.js +0 -3
- package/dist/generated/durable_actors/v1/ControlPlaneRequest.js.map +0 -1
- package/dist/generated/durable_actors/v1/Empty.d.ts +0 -5
- package/dist/generated/durable_actors/v1/Empty.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/Empty.js +0 -3
- package/dist/generated/durable_actors/v1/Empty.js.map +0 -1
- package/dist/generated/durable_actors/v1/HostInvokeActorRequest.d.ts +0 -11
- package/dist/generated/durable_actors/v1/HostInvokeActorRequest.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/HostInvokeActorRequest.js +0 -3
- package/dist/generated/durable_actors/v1/HostInvokeActorRequest.js.map +0 -1
- package/dist/generated/durable_actors/v1/HostSocketEventRequest.d.ts +0 -17
- package/dist/generated/durable_actors/v1/HostSocketEventRequest.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/HostSocketEventRequest.js +0 -3
- package/dist/generated/durable_actors/v1/HostSocketEventRequest.js.map +0 -1
- package/dist/generated/durable_actors/v1/InvokeActorReply.d.ts +0 -16
- package/dist/generated/durable_actors/v1/InvokeActorReply.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/InvokeActorReply.js +0 -3
- package/dist/generated/durable_actors/v1/InvokeActorReply.js.map +0 -1
- package/dist/generated/durable_actors/v1/InvokeActorRequest.d.ts +0 -14
- package/dist/generated/durable_actors/v1/InvokeActorRequest.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/InvokeActorRequest.js +0 -3
- package/dist/generated/durable_actors/v1/InvokeActorRequest.js.map +0 -1
- package/dist/generated/durable_actors/v1/PublishSocketEffectsRequest.d.ts +0 -13
- package/dist/generated/durable_actors/v1/PublishSocketEffectsRequest.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/PublishSocketEffectsRequest.js +0 -3
- package/dist/generated/durable_actors/v1/PublishSocketEffectsRequest.js.map +0 -1
- package/dist/generated/durable_actors/v1/ReplicaService.d.ts +0 -42
- package/dist/generated/durable_actors/v1/ReplicaService.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/ReplicaService.js +0 -3
- package/dist/generated/durable_actors/v1/ReplicaService.js.map +0 -1
- package/dist/generated/durable_actors/v1/ReplicaSessionHead.d.ts +0 -14
- package/dist/generated/durable_actors/v1/ReplicaSessionHead.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/ReplicaSessionHead.js +0 -3
- package/dist/generated/durable_actors/v1/ReplicaSessionHead.js.map +0 -1
- package/dist/generated/durable_actors/v1/ReplicaSnapshotRef.d.ts +0 -14
- package/dist/generated/durable_actors/v1/ReplicaSnapshotRef.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/ReplicaSnapshotRef.js +0 -3
- package/dist/generated/durable_actors/v1/ReplicaSnapshotRef.js.map +0 -1
- package/dist/generated/durable_actors/v1/ReplicaStreamHead.d.ts +0 -11
- package/dist/generated/durable_actors/v1/ReplicaStreamHead.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/ReplicaStreamHead.js +0 -3
- package/dist/generated/durable_actors/v1/ReplicaStreamHead.js.map +0 -1
- package/dist/generated/durable_actors/v1/ReplicaStreamIdentity.d.ts +0 -14
- package/dist/generated/durable_actors/v1/ReplicaStreamIdentity.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/ReplicaStreamIdentity.js +0 -3
- package/dist/generated/durable_actors/v1/ReplicaStreamIdentity.js.map +0 -1
- package/dist/generated/durable_actors/v1/Reroute.d.ts +0 -5
- package/dist/generated/durable_actors/v1/Reroute.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/Reroute.js +0 -3
- package/dist/generated/durable_actors/v1/Reroute.js.map +0 -1
- package/dist/generated/durable_actors/v1/SnapshotData.d.ts +0 -7
- package/dist/generated/durable_actors/v1/SnapshotData.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/SnapshotData.js +0 -3
- package/dist/generated/durable_actors/v1/SnapshotData.js.map +0 -1
- package/dist/generated/durable_actors/v1/SnapshotService.d.ts +0 -32
- package/dist/generated/durable_actors/v1/SnapshotService.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/SnapshotService.js +0 -3
- package/dist/generated/durable_actors/v1/SnapshotService.js.map +0 -1
- package/dist/generated/durable_actors/v1/SnapshotWriteReply.d.ts +0 -7
- package/dist/generated/durable_actors/v1/SnapshotWriteReply.d.ts.map +0 -1
- package/dist/generated/durable_actors/v1/SnapshotWriteReply.js +0 -3
- package/dist/generated/durable_actors/v1/SnapshotWriteReply.js.map +0 -1
- package/dist/generated/durable_actors.d.ts +0 -69
- package/dist/generated/durable_actors.d.ts.map +0 -1
- package/dist/generated/durable_actors.js +0 -2
- package/dist/generated/durable_actors.js.map +0 -1
- package/dist/generated/durable_actors.proto +0 -117
- package/dist/generated.browser.d.ts +0 -6
- package/dist/generated.browser.d.ts.map +0 -1
- package/dist/generated.browser.js +0 -10
- package/dist/generated.browser.js.map +0 -1
- package/dist/generated.d.ts +0 -3
- package/dist/generated.d.ts.map +0 -1
- package/dist/generated.js +0 -3
- package/dist/generated.js.map +0 -1
- package/dist/templates/actor/LICENSE.md +0 -9
- package/dist/templates/ai-chat/LICENSE.md +0 -9
- package/dist/templates/chat/LICENSE.md +0 -9
- package/dist/templates/documents/LICENSE.md +0 -9
package/README.md
CHANGED
|
@@ -14,46 +14,35 @@ We offer a clean API to manage webSocket connections, Swift inspired syntax for
|
|
|
14
14
|
|
|
15
15
|
## Local development
|
|
16
16
|
|
|
17
|
-
Install Node.js 22.19+, pnpm, and Bun 1.
|
|
18
|
-
|
|
19
|
-
```sh
|
|
20
|
-
pnpm add --global durable-actors
|
|
21
|
-
```
|
|
17
|
+
Install Node.js 22.19+, pnpm, and Bun 1.3.9+.
|
|
22
18
|
|
|
23
19
|
### Create your actor project in your directory of choice
|
|
24
20
|
|
|
25
21
|
```sh
|
|
26
|
-
durable-actors init my-actors
|
|
22
|
+
npx durable-actors init my-actors
|
|
27
23
|
cd my-actors
|
|
28
24
|
pnpm install
|
|
29
|
-
durable-actors dev
|
|
25
|
+
pnpm exec durable-actors dev # Run the server locally on your machine
|
|
30
26
|
```
|
|
31
27
|
|
|
32
28
|
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
29
|
|
|
34
30
|
### Connect your application
|
|
35
31
|
|
|
36
|
-
In your separate application project's directory (ex: node server), install the
|
|
32
|
+
In your separate application project's directory (ex: node server), install the generator as a development dependency:
|
|
37
33
|
|
|
38
34
|
```sh
|
|
39
|
-
pnpm add durable-actors
|
|
35
|
+
pnpm add -D durable-actors
|
|
40
36
|
```
|
|
41
37
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
```dotenv
|
|
45
|
-
DURABLE_ACTORS_CONTROL_PLANE_URL=http://127.0.0.1:7100
|
|
46
|
-
DURABLE_ACTORS_SECRET='<paste the secret printed by dev>'
|
|
47
|
-
```
|
|
38
|
+
Local CLI commands and backend clients default to project `local` at `http://127.0.0.1:7100`. No project ID or secret is required, and local authentication is disabled unless you set `DURABLE_ACTORS_SECRET` on the actor server and backend.
|
|
48
39
|
|
|
49
40
|
Then generate your client from the same application directory:
|
|
50
41
|
|
|
51
42
|
```sh
|
|
52
|
-
durable-actors generate
|
|
43
|
+
pnpm exec durable-actors generate
|
|
53
44
|
```
|
|
54
45
|
|
|
55
|
-
This contract will match perfectly the actor you have defined!
|
|
56
|
-
|
|
57
46
|
Now you may call your actor and access the state.
|
|
58
47
|
|
|
59
48
|
```ts
|
|
@@ -89,7 +78,7 @@ export class ChatHistory extends Actor {
|
|
|
89
78
|
|
|
90
79
|
## Stream from the backend (Express)
|
|
91
80
|
|
|
92
|
-
After adding `ChatHistory`, rerun `durable-actors generate` in your application and use its generated client:
|
|
81
|
+
After adding `ChatHistory`, rerun `pnpm exec durable-actors generate` in your application and use its generated client:
|
|
93
82
|
|
|
94
83
|
```ts
|
|
95
84
|
import { openai } from "@ai-sdk/openai"
|
package/dist/backend.d.ts
CHANGED
|
@@ -1,15 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ActorRpcMethod, ActorRpcTransport } from "./client-runtime/stub.js";
|
|
2
2
|
import type { DurableActorsClientOptions } from "./client/remoteClient.js";
|
|
3
|
-
|
|
4
|
-
interface ActorRpcMethod {
|
|
5
|
-
readonly name: string;
|
|
6
|
-
readonly result: "void" | "value";
|
|
7
|
-
}
|
|
8
|
-
/** Creates a backend client from generated method definitions. */
|
|
9
|
-
declare function createActorStub<Stub extends object>(actorName: string, actorId: string, methods: readonly ActorRpcMethod[], transport?: ActorRpcTransport): Stub;
|
|
10
|
-
export { createActorStub };
|
|
11
|
-
export type { ActorRpcMethod, ActorRpcTransport };
|
|
3
|
+
export declare function createActorStub<Stub extends object>(actorName: string, actorId: string, methods: readonly ActorRpcMethod[], transport?: ActorRpcTransport): Stub;
|
|
12
4
|
/** Connects backend clients using explicit settings. Keep the API key on the server. */
|
|
13
5
|
export declare function createActorTransport(options: DurableActorsClientOptions): ActorRpcTransport;
|
|
14
6
|
export type { DurableActorsClientOptions };
|
|
7
|
+
export type { ActorRpcMethod, ActorRpcTransport };
|
|
15
8
|
//# sourceMappingURL=backend.d.ts.map
|
package/dist/backend.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AAE1E,wBAAgB,eAAe,CAAC,IAAI,SAAS,MAAM,EAC/C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,SAAS,CAAC,EAAE,iBAAiB,GAC9B,IAAI,CAWN;AACD,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,0BAA0B,GAAG,iBAAiB,CAU3F;AACD,YAAY,EAAE,0BAA0B,EAAE,CAAA;AAE1C,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAA"}
|
package/dist/backend.js
CHANGED
|
@@ -1,40 +1,13 @@
|
|
|
1
1
|
/** @module durable-actors/backend */
|
|
2
|
-
import {
|
|
2
|
+
import { createActorStub as stub } from "./client-runtime/stub.js";
|
|
3
3
|
import { actorClient } from "./client/client.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
for (const method of methods) {
|
|
11
|
-
validateActorComponent("actor method", method.name);
|
|
12
|
-
if (["then", "connect", "broadcast", "onConnect", "onMessage", "onDisconnect"].includes(method.name))
|
|
13
|
-
throw new ActorDefinitionError(`actor method ${actorName}.${method.name} is reserved`);
|
|
14
|
-
if (Object.hasOwn(stub, method.name))
|
|
15
|
-
throw new ActorDefinitionError(`duplicate actor method ${actorName}.${method.name}`);
|
|
16
|
-
Object.defineProperty(stub, method.name, {
|
|
17
|
-
enumerable: true,
|
|
18
|
-
value: async (...args) => {
|
|
19
|
-
const parameters = invocationArguments(args);
|
|
20
|
-
const client = transport ?? (await actorClient());
|
|
21
|
-
const result = await client.invoke(actorName, actorId, method.name, parameters);
|
|
22
|
-
return method.result === "void" ? undefined : result;
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
return stub;
|
|
27
|
-
}
|
|
28
|
-
function invocationArguments(args) {
|
|
29
|
-
let end = args.length;
|
|
30
|
-
while (end > 0 && args[end - 1] === undefined)
|
|
31
|
-
end--;
|
|
32
|
-
const parameters = args.slice(0, end);
|
|
33
|
-
if (parameters.includes(undefined))
|
|
34
|
-
throw new ActorSerializationError("undefined cannot precede a supplied RPC argument in JSON transport");
|
|
35
|
-
return parameters;
|
|
4
|
+
export function createActorStub(actorName, actorId, methods, transport) {
|
|
5
|
+
return stub(actorName, actorId, methods, transport ?? {
|
|
6
|
+
async invoke(...args) {
|
|
7
|
+
return (await actorClient()).invoke(...args);
|
|
8
|
+
}
|
|
9
|
+
});
|
|
36
10
|
}
|
|
37
|
-
export { createActorStub };
|
|
38
11
|
/** Connects backend clients using explicit settings. Keep the API key on the server. */
|
|
39
12
|
export function createActorTransport(options) {
|
|
40
13
|
let client;
|
package/dist/backend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EAAE,eAAe,IAAI,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGhD,MAAM,UAAU,eAAe,CAC3B,SAAiB,EACjB,OAAe,EACf,OAAkC,EAClC,SAA6B;IAE7B,OAAO,IAAI,CACP,SAAS,EACT,OAAO,EACP,OAAO,EACP,SAAS,IAAI;QACT,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;YAChB,OAAO,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAA;QAChD,CAAC;KACJ,CACJ,CAAA;AACL,CAAC;AACD,wFAAwF;AACxF,MAAM,UAAU,oBAAoB,CAAC,OAAmC;IACpE,IAAI,MAA8C,CAAA;IAClD,OAAO;QACH,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI;YAChB,MAAM,KAAK,MAAM,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAC9C,CAAC,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAC5D,CAAA;YACD,OAAO,CAAC,MAAM,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAA;QACzC,CAAC;KACJ,CAAA;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actor-source-watcher.d.ts","sourceRoot":"","sources":["../../src/cli/actor-source-watcher.ts"],"names":[],"mappings":"AAGA,UAAU,yBAAyB;IAC/B,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,UAAU,kBAAkB;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB;AAED,iBAAe,iBAAiB,CAC5B,OAAO,EAAE,yBAAyB,EAClC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC7B,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"actor-source-watcher.d.ts","sourceRoot":"","sources":["../../src/cli/actor-source-watcher.ts"],"names":[],"mappings":"AAGA,UAAU,yBAAyB;IAC/B,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,UAAU,kBAAkB;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB;AAED,iBAAe,iBAAiB,CAC5B,OAAO,EAAE,yBAAyB,EAClC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CAkC7B;AAqBD,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAC5B,YAAY,EAAE,kBAAkB,EAAE,CAAA"}
|
|
@@ -2,7 +2,8 @@ import { watch } from "chokidar";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
async function watchActorSources(options, refresh) {
|
|
4
4
|
const watcher = watch(options.projectDirectory, {
|
|
5
|
-
ignored: watchedPath => ignoredActorPath(watchedPath, options)
|
|
5
|
+
ignored: (watchedPath, stats) => ignoredActorPath(watchedPath, options) ||
|
|
6
|
+
(stats !== undefined && !stats.isDirectory() && (!stats.isFile() || !isActorSource(watchedPath))),
|
|
6
7
|
ignoreInitial: true,
|
|
7
8
|
followSymlinks: false,
|
|
8
9
|
atomic: true,
|
|
@@ -11,7 +12,7 @@ async function watchActorSources(options, refresh) {
|
|
|
11
12
|
let timer;
|
|
12
13
|
let updates = Promise.resolve();
|
|
13
14
|
watcher.on("all", (_event, changedPath) => {
|
|
14
|
-
if (
|
|
15
|
+
if (!isActorSource(changedPath))
|
|
15
16
|
return;
|
|
16
17
|
clearTimeout(timer);
|
|
17
18
|
timer = setTimeout(() => {
|
|
@@ -48,6 +49,9 @@ function ignoredActorPath(candidate, options) {
|
|
|
48
49
|
const state = path.resolve(options.dataDirectory);
|
|
49
50
|
return candidate === state || candidate.startsWith(`${state}${path.sep}`);
|
|
50
51
|
}
|
|
52
|
+
function isActorSource(candidate) {
|
|
53
|
+
return /\.(?:[cm]?[jt]sx?|json|ya?ml)$/u.test(candidate) || path.basename(candidate) === "bun.lock";
|
|
54
|
+
}
|
|
51
55
|
function reportWatchError(error) {
|
|
52
56
|
console.error(`Actor source update failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
53
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actor-source-watcher.js","sourceRoot":"","sources":["../../src/cli/actor-source-watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,IAAI,MAAM,WAAW,CAAA;AAW5B,KAAK,UAAU,iBAAiB,CAC5B,OAAkC,EAClC,OAA4B;IAE5B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE;QAC5C,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"actor-source-watcher.js","sourceRoot":"","sources":["../../src/cli/actor-source-watcher.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/connection.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export declare function connection(environment: NodeJS.ProcessEnv): {
|
|
2
|
-
credential: string;
|
|
3
2
|
projectId: string;
|
|
3
|
+
credential: string | undefined;
|
|
4
4
|
homeRegion: string | undefined;
|
|
5
5
|
controlPlaneUrl: string;
|
|
6
6
|
};
|
|
7
|
-
export declare const connectionHelp = "\nConnection settings (.env or environment):\n DURABLE_ACTORS_PROJECT_ID\n DURABLE_ACTORS_CONTROL_PLANE_URL (default: http://127.0.0.1:7100)\n DURABLE_ACTORS_SECRET";
|
|
7
|
+
export declare const connectionHelp = "\nConnection settings (.env or environment):\n DURABLE_ACTORS_PROJECT_ID (default: local on localhost)\n DURABLE_ACTORS_CONTROL_PLANE_URL (default: http://127.0.0.1:7100)\n DURABLE_ACTORS_SECRET (optional; must match the server's secret when authentication is enabled)";
|
|
8
8
|
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/cli/connection.ts"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU;;;;;
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/cli/connection.ts"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU;;;;;EAOxD;AAED,eAAO,MAAM,cAAc,oRAIuE,CAAA"}
|
package/dist/cli/connection.js
CHANGED
|
@@ -2,10 +2,6 @@ import { configuredSettings } from "../client/clientSettings.js";
|
|
|
2
2
|
import { actorEnvironment } from "../environment.js";
|
|
3
3
|
export function connection(environment) {
|
|
4
4
|
const env = actorEnvironment(environment);
|
|
5
|
-
if (!env.DURABLE_ACTORS_PROJECT_ID)
|
|
6
|
-
throw new Error("Set DURABLE_ACTORS_PROJECT_ID to your actor project ID.");
|
|
7
|
-
if (!env.DURABLE_ACTORS_SECRET)
|
|
8
|
-
throw new Error("Set DURABLE_ACTORS_SECRET to provide the shared secret.");
|
|
9
5
|
return configuredSettings({
|
|
10
6
|
projectId: env.DURABLE_ACTORS_PROJECT_ID,
|
|
11
7
|
controlPlaneUrl: env.DURABLE_ACTORS_CONTROL_PLANE_URL || "http://127.0.0.1:7100",
|
|
@@ -14,7 +10,7 @@ export function connection(environment) {
|
|
|
14
10
|
}
|
|
15
11
|
export const connectionHelp = `
|
|
16
12
|
Connection settings (.env or environment):
|
|
17
|
-
DURABLE_ACTORS_PROJECT_ID
|
|
13
|
+
DURABLE_ACTORS_PROJECT_ID (default: local on localhost)
|
|
18
14
|
DURABLE_ACTORS_CONTROL_PLANE_URL (default: http://127.0.0.1:7100)
|
|
19
|
-
DURABLE_ACTORS_SECRET`;
|
|
15
|
+
DURABLE_ACTORS_SECRET (optional; must match the server's secret when authentication is enabled)`;
|
|
20
16
|
//# sourceMappingURL=connection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/cli/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,UAAU,UAAU,CAAC,WAA8B;IACrD,MAAM,GAAG,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAA;IACzC,
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/cli/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,UAAU,UAAU,CAAC,WAA8B;IACrD,MAAM,GAAG,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAA;IACzC,OAAO,kBAAkB,CAAC;QACtB,SAAS,EAAE,GAAG,CAAC,yBAAyB;QACxC,eAAe,EAAE,GAAG,CAAC,gCAAgC,IAAI,uBAAuB;QAChF,MAAM,EAAE,GAAG,CAAC,qBAAqB;KACpC,CAAC,CAAA;AACN,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG;;;;kGAIoE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-plane.d.ts","sourceRoot":"","sources":["../../src/cli/control-plane.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"control-plane.d.ts","sourceRoot":"","sources":["../../src/cli/control-plane.ts"],"names":[],"mappings":"AAKA,UAAU,sBAAsB;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;CACjC;AAED,cAAM,kBAAkB;IAEhB,QAAQ,CAAC,UAAU,EAAE,sBAAsB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADf,UAAU,EAAE,sBAAsB,EAC1B,OAAO,EAAE,OAAO,KAAK;IAGpC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC,kBAAkB,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAIzD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/B,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAIxB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIvD,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAK/E,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAU5E,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1E,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAU9E,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;YAUhE,UAAU;IAaxB,OAAO,CAAC,WAAW;YAIL,WAAW;CAwB5B;AAED,iBAAS,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,KAAK,GAAG,kBAAkB,CAEnG;AA0BD,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,CAAA;AACvD,YAAY,EAAE,sBAAsB,EAAE,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { validateProjectId } from "../actor/identity.js";
|
|
2
|
+
import { authorizationHeaders } from "../client/clientSettings.js";
|
|
2
3
|
import { connection } from "./connection.js";
|
|
3
4
|
class ControlPlaneClient {
|
|
4
5
|
connection;
|
|
@@ -42,7 +43,7 @@ class ControlPlaneClient {
|
|
|
42
43
|
const response = await this.request(`${this.connection.controlPlaneUrl}${path}`, {
|
|
43
44
|
signal,
|
|
44
45
|
redirect: "error",
|
|
45
|
-
headers: {
|
|
46
|
+
headers: { ...authorizationHeaders(this.connection.credential), accept: "text/event-stream" }
|
|
46
47
|
});
|
|
47
48
|
if (!response.ok || !response.headers.get("content-type")?.startsWith("text/event-stream") || !response.body) {
|
|
48
49
|
await response.body?.cancel();
|
|
@@ -58,7 +59,7 @@ class ControlPlaneClient {
|
|
|
58
59
|
const response = await this.request(`${controlPlaneUrl}${pathname}`, {
|
|
59
60
|
method,
|
|
60
61
|
headers: {
|
|
61
|
-
|
|
62
|
+
...authorizationHeaders(credential),
|
|
62
63
|
...(body === undefined ? {} : { "content-type": "application/json" })
|
|
63
64
|
},
|
|
64
65
|
body: body === undefined ? undefined : JSON.stringify(body),
|
|
@@ -67,20 +68,24 @@ class ControlPlaneClient {
|
|
|
67
68
|
}).catch(() => {
|
|
68
69
|
throw new Error(`Cannot complete ${method} ${pathname} at ${controlPlaneUrl}. Check the URL and runtime.${method === "GET" ? "" : " The request may have reached the server."}`);
|
|
69
70
|
});
|
|
70
|
-
return readResponse(response);
|
|
71
|
+
return readResponse(response, method, `${controlPlaneUrl}${pathname}`);
|
|
71
72
|
}
|
|
72
73
|
}
|
|
73
74
|
function createControlPlaneClient(env, request) {
|
|
74
75
|
return new ControlPlaneClient(connection(env), request);
|
|
75
76
|
}
|
|
76
|
-
async function readResponse(response) {
|
|
77
|
+
async function readResponse(response, method, url) {
|
|
77
78
|
const result = await response.json().catch(() => {
|
|
78
79
|
if (response.ok)
|
|
79
80
|
throw new Error(`Control plane returned invalid JSON (HTTP ${response.status}).`);
|
|
80
81
|
return undefined;
|
|
81
82
|
});
|
|
82
|
-
if (!response.ok)
|
|
83
|
-
|
|
83
|
+
if (!response.ok) {
|
|
84
|
+
const hint = response.status === 404 && url.endsWith("/deployment/contract")
|
|
85
|
+
? "\nCheck the control-plane URL and DURABLE_ACTORS_PROJECT_ID. For local development, run durable-actors dev in the actor project and wait for Ready."
|
|
86
|
+
: "";
|
|
87
|
+
throw new Error(`Control-plane request failed (HTTP ${response.status}): ${errorMessage(result) ?? response.statusText}\n${method} ${url}${hint}`);
|
|
88
|
+
}
|
|
84
89
|
return result;
|
|
85
90
|
}
|
|
86
91
|
function errorMessage(result) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-plane.js","sourceRoot":"","sources":["../../src/cli/control-plane.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"control-plane.js","sourceRoot":"","sources":["../../src/cli/control-plane.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/dev.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAgC,MAAM,WAAW,CAAA;AAejE,UAAU,UAAU;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,GAAG,KAAK,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;CACjB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAgC,MAAM,WAAW,CAAA;AAejE,UAAU,UAAU;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,GAAG,KAAK,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;CACjB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwBzD;AA+BD,iBAAe,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAK1D;AA2GD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,EAAE,CAAA"}
|
package/dist/cli/dev.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { InvalidArgumentError, Option } from "commander";
|
|
2
|
-
import {
|
|
3
|
-
import { tmpdir } from "node:os";
|
|
2
|
+
import { realpath, stat } from "node:fs/promises";
|
|
4
3
|
import path from "node:path";
|
|
5
4
|
import { fileURLToPath } from "node:url";
|
|
6
5
|
import { z } from "zod";
|
|
7
6
|
import { projectIdSchema } from "../actor/identity.js";
|
|
8
7
|
import { configuredSettings } from "../client/clientSettings.js";
|
|
8
|
+
import { projectSdkModule } from "../projectSdk.js";
|
|
9
9
|
import { fetchRuntimeExecutablePath } from "../runtimeInstaller.js";
|
|
10
10
|
import { watchActorSources } from "./actor-source-watcher.js";
|
|
11
11
|
import { ControlPlaneClient } from "./control-plane.js";
|
|
@@ -15,11 +15,17 @@ export function registerDevCommand(program) {
|
|
|
15
15
|
.command("dev")
|
|
16
16
|
.description("Run local actors and reload code changes")
|
|
17
17
|
.option("--no-watch", "disable automatic code reload")
|
|
18
|
-
.addOption(new Option("--port <number>", "
|
|
18
|
+
.addOption(new Option("--port <number>", "localhost port (0 selects a free port)")
|
|
19
19
|
.env("DURABLE_ACTORS_PORT")
|
|
20
20
|
.argParser(portNumber)
|
|
21
21
|
.default(7100))
|
|
22
|
-
.addHelpText("after",
|
|
22
|
+
.addHelpText("after", `
|
|
23
|
+
Run from your actor project directory; dev loads src/actors.ts by default.
|
|
24
|
+
No configuration is required. Optional overrides in .env:
|
|
25
|
+
DURABLE_ACTORS_PROJECT project directory (default: current directory)
|
|
26
|
+
DURABLE_ACTORS_ENTRYPOINT actor source file, relative to the project (default: src/actors.ts)
|
|
27
|
+
|
|
28
|
+
Create a project with: durable-actors init my-project`)
|
|
23
29
|
.action(async (options) => {
|
|
24
30
|
process.exitCode = await runDev(developmentOptions(options, process.env));
|
|
25
31
|
});
|
|
@@ -51,29 +57,53 @@ const developmentEnvironment = z.object({
|
|
|
51
57
|
DURABLE_ACTORS_STORAGE: z.enum(["local", "gcs"]).default("local")
|
|
52
58
|
});
|
|
53
59
|
async function runDev(options) {
|
|
54
|
-
const project = await
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
60
|
+
const project = await developmentProject(options);
|
|
61
|
+
const local = await projectSdkModule(project, "./cli/dev.js", import.meta.url);
|
|
62
|
+
if (local !== undefined)
|
|
63
|
+
return (await import(local)).runDev({ ...options, project });
|
|
64
|
+
return runDevRuntime(options, project);
|
|
65
|
+
}
|
|
66
|
+
async function developmentProject(options) {
|
|
67
|
+
const directory = path.resolve(options.project);
|
|
68
|
+
if (!(await developmentPathStats(directory))?.isDirectory())
|
|
69
|
+
throw new Error(`No actor project directory found at ${directory}.\n` +
|
|
70
|
+
"Run from your actor project directory, or set DURABLE_ACTORS_PROJECT in .env.\n" +
|
|
71
|
+
"Create a project with: durable-actors init my-project");
|
|
72
|
+
const project = await realpath(directory);
|
|
73
|
+
const entrypoint = path.resolve(project, options.entrypoint);
|
|
74
|
+
if (!(await developmentPathStats(entrypoint))?.isFile())
|
|
75
|
+
throw new Error(`No actor source file found at ${entrypoint}.\n` +
|
|
76
|
+
"Run from your actor project directory, or set DURABLE_ACTORS_PROJECT and DURABLE_ACTORS_ENTRYPOINT in .env.\n" +
|
|
77
|
+
"Create a project with: durable-actors init my-project");
|
|
78
|
+
return project;
|
|
65
79
|
}
|
|
66
|
-
async function
|
|
80
|
+
async function developmentPathStats(candidate) {
|
|
81
|
+
return stat(candidate).catch((error) => {
|
|
82
|
+
if (error.code === "ENOENT" || error.code === "ENOTDIR")
|
|
83
|
+
return undefined;
|
|
84
|
+
throw error;
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
async function runDevRuntime(options, project) {
|
|
67
88
|
const executable = await fetchRuntimeExecutablePath();
|
|
68
|
-
const runtime = startRustRuntime(executable, [...devArguments(options), "--
|
|
89
|
+
const runtime = startRustRuntime(executable, [...devArguments(options), "--ready-fd", "3"], runtimeEnvironment(executable), true, true);
|
|
69
90
|
const connection = runtimeConnection(runtime.readiness, runtime.exited);
|
|
70
|
-
const settings = connection.then(value => configuredSettings(z
|
|
91
|
+
const settings = connection.then(value => configuredSettings(z
|
|
92
|
+
.object({
|
|
93
|
+
projectId: z.string(),
|
|
94
|
+
controlPlaneUrl: z.string(),
|
|
95
|
+
apiKey: z
|
|
96
|
+
.string()
|
|
97
|
+
.nullish()
|
|
98
|
+
.transform(value => value ?? undefined)
|
|
99
|
+
})
|
|
100
|
+
.parse(value)));
|
|
71
101
|
const client = settings.then(settings => new ControlPlaneClient(settings, fetch));
|
|
72
102
|
void client.catch(() => { });
|
|
73
103
|
let watcher;
|
|
74
104
|
try {
|
|
75
105
|
if (options.watch) {
|
|
76
|
-
watcher = await watchActorSources({ projectDirectory: project, dataDirectory: options.dataDir }, async () =>
|
|
106
|
+
watcher = await watchActorSources({ projectDirectory: project, dataDirectory: options.dataDir }, async () => publishLocalCode(options, project, await client));
|
|
77
107
|
}
|
|
78
108
|
await client;
|
|
79
109
|
return await runtime.exited;
|
|
@@ -87,22 +117,15 @@ async function runDevRuntime(options, project, contractFile) {
|
|
|
87
117
|
await watcher?.close();
|
|
88
118
|
}
|
|
89
119
|
}
|
|
90
|
-
async function
|
|
91
|
-
const contract = await compileContract(project, options.entrypoint);
|
|
120
|
+
async function publishLocalCode(options, project, client) {
|
|
92
121
|
await client.registerDeployment({
|
|
93
122
|
imageRef: "local",
|
|
94
123
|
workingDirectory: project,
|
|
95
124
|
actorEntrypoint: options.entrypoint,
|
|
96
|
-
secretRefs: []
|
|
97
|
-
contract
|
|
125
|
+
secretRefs: []
|
|
98
126
|
});
|
|
99
127
|
console.log("Updated local actors.");
|
|
100
128
|
}
|
|
101
|
-
async function compileContract(project, entrypoint) {
|
|
102
|
-
const { ActorCompiler } = await import("../compiler/actor-compiler.js");
|
|
103
|
-
const { parsePublicContract } = await import("../compiler/validate-public-contract.js");
|
|
104
|
-
return parsePublicContract(new ActorCompiler().compileContract(path.resolve(project, entrypoint)));
|
|
105
|
-
}
|
|
106
129
|
function devArguments(options) {
|
|
107
130
|
const args = [
|
|
108
131
|
"dev",
|
package/dist/cli/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,oBAAoB,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/cli/dev.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAcnC,iBAAS,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAUvD;
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAcnC,iBAAS,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAUvD;AA4CD,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
|
package/dist/cli/generate.js
CHANGED
|
@@ -6,18 +6,20 @@ import { createControlPlaneClient } from "./control-plane.js";
|
|
|
6
6
|
function registerGenerateCommand(program) {
|
|
7
7
|
program
|
|
8
8
|
.command("generate")
|
|
9
|
-
.argument("[entrypoint]", "actor source file
|
|
10
|
-
.description("Generate clients
|
|
9
|
+
.argument("[entrypoint]", "actor source file to compile instead of fetching from the server")
|
|
10
|
+
.description("Generate actor clients from the running server or an explicit source file")
|
|
11
11
|
.option("--out-dir <directory>", "generated source directory", "generated")
|
|
12
12
|
.option("--config <file>", "TypeScript configuration file (local source only)")
|
|
13
|
-
.option("--
|
|
13
|
+
.option("--control-plane-url <url>", "control-plane origin (overrides DURABLE_ACTORS_CONTROL_PLANE_URL)")
|
|
14
14
|
.addHelpText("after", connectionHelp)
|
|
15
15
|
.action(generate);
|
|
16
16
|
}
|
|
17
17
|
async function generate(entrypoint, options) {
|
|
18
18
|
validateOptions(entrypoint, options);
|
|
19
19
|
const { generateClient } = await import("../compiler/generators/client-generator.js");
|
|
20
|
-
const contract =
|
|
20
|
+
const contract = entrypoint
|
|
21
|
+
? await localContract(entrypoint, options.config)
|
|
22
|
+
: await remoteContract(options.controlPlaneUrl);
|
|
21
23
|
const directory = path.resolve(options.outDir);
|
|
22
24
|
await generateClient(contract, directory);
|
|
23
25
|
for (const obsolete of ["contract.json", "contract-source.json"])
|
|
@@ -25,16 +27,21 @@ async function generate(entrypoint, options) {
|
|
|
25
27
|
console.log(`Generated ${contract.actors.length} actor contract(s) in ${directory}.`);
|
|
26
28
|
}
|
|
27
29
|
function validateOptions(entrypoint, options) {
|
|
28
|
-
if (
|
|
29
|
-
throw new Error("--
|
|
30
|
+
if (entrypoint && options.controlPlaneUrl !== undefined)
|
|
31
|
+
throw new Error("--control-plane-url cannot be combined with a source entrypoint.");
|
|
32
|
+
if (options.config && !entrypoint)
|
|
33
|
+
throw new Error("--config requires a source entrypoint.");
|
|
30
34
|
}
|
|
31
35
|
async function localContract(entrypoint, configFile) {
|
|
32
36
|
const { ActorCompiler } = await import("../compiler/actor-compiler.js");
|
|
33
|
-
return new ActorCompiler().compileContract(entrypoint
|
|
37
|
+
return new ActorCompiler().compileContract(entrypoint, { configFile });
|
|
34
38
|
}
|
|
35
|
-
async function remoteContract() {
|
|
39
|
+
async function remoteContract(controlPlaneUrl) {
|
|
36
40
|
const { parsePublicContract } = await import("../compiler/validate-public-contract.js");
|
|
37
|
-
const client = createControlPlaneClient(
|
|
41
|
+
const client = createControlPlaneClient({
|
|
42
|
+
...process.env,
|
|
43
|
+
DURABLE_ACTORS_CONTROL_PLANE_URL: controlPlaneUrl ?? process.env.DURABLE_ACTORS_CONTROL_PLANE_URL
|
|
44
|
+
}, fetch);
|
|
38
45
|
const publication = publicationSchema.parse(await client.getContract());
|
|
39
46
|
return parsePublicContract(publication.contract);
|
|
40
47
|
}
|
package/dist/cli/generate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AACrC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAQ7D,SAAS,uBAAuB,CAAC,OAAgB;IAC7C,OAAO;SACF,OAAO,CAAC,UAAU,CAAC;SACnB,QAAQ,CAAC,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AACrC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAQ7D,SAAS,uBAAuB,CAAC,OAAgB;IAC7C,OAAO;SACF,OAAO,CAAC,UAAU,CAAC;SACnB,QAAQ,CAAC,cAAc,EAAE,kEAAkE,CAAC;SAC5F,WAAW,CAAC,2EAA2E,CAAC;SACxF,MAAM,CAAC,uBAAuB,EAAE,4BAA4B,EAAE,WAAW,CAAC;SAC1E,MAAM,CAAC,iBAAiB,EAAE,mDAAmD,CAAC;SAC9E,MAAM,CAAC,2BAA2B,EAAE,mEAAmE,CAAC;SACxG,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC;SACpC,MAAM,CAAC,QAAQ,CAAC,CAAA;AACzB,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,UAA8B,EAAE,OAAwB;IAC5E,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACpC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,4CAA4C,CAAC,CAAA;IACrF,MAAM,QAAQ,GAAG,UAAU;QACvB,CAAC,CAAC,MAAM,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC;QACjD,CAAC,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9C,MAAM,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IACzC,KAAK,MAAM,QAAQ,IAAI,CAAC,eAAe,EAAE,sBAAsB,CAAC;QAC5D,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7D,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,MAAM,CAAC,MAAM,yBAAyB,SAAS,GAAG,CAAC,CAAA;AACzF,CAAC;AAED,SAAS,eAAe,CAAC,UAA8B,EAAE,OAAwB;IAC7E,IAAI,UAAU,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;QACnD,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;IACvF,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;AAChG,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,UAAkB,EAAE,UAAmB;IAChE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAA;IACvE,OAAO,IAAI,aAAa,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;AAC1E,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,eAAwB;IAClD,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,yCAAyC,CAAC,CAAA;IACvF,MAAM,MAAM,GAAG,wBAAwB,CACnC;QACI,GAAG,OAAO,CAAC,GAAG;QACd,gCAAgC,EAAE,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,gCAAgC;KACpG,EACD,KAAK,CACR,CAAA;IACD,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IACvE,OAAO,mBAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,iBAAiB,GAAG,CAAC,CAAC,YAAY,CAAC;IACrC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC;IACxD,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;CACxB,CAAC,CAAA;AAEF,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
|