durable-actors 0.4.0 → 0.4.3
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 +19 -5
- package/dist/cli/control-plane.d.ts.map +1 -1
- package/dist/cli/control-plane.js +8 -8
- package/dist/cli/control-plane.js.map +1 -1
- package/dist/cli/dev.d.ts +2 -0
- package/dist/cli/dev.d.ts.map +1 -1
- package/dist/cli/dev.js +1 -1
- package/dist/cli/dev.js.map +1 -1
- package/dist/cli/generate.d.ts.map +1 -1
- package/dist/cli/generate.js +4 -4
- package/dist/cli/generate.js.map +1 -1
- package/dist/client-runtime/client.d.ts +6 -1
- package/dist/client-runtime/client.d.ts.map +1 -1
- package/dist/client-runtime/client.js +31 -14
- package/dist/client-runtime/client.js.map +1 -1
- package/dist/client-runtime/http.d.ts +2 -0
- package/dist/client-runtime/http.d.ts.map +1 -1
- package/dist/client-runtime/http.js +28 -6
- package/dist/client-runtime/http.js.map +1 -1
- package/dist/compiler/actor-compiler.d.ts +5 -3
- package/dist/compiler/actor-compiler.d.ts.map +1 -1
- package/dist/compiler/actor-compiler.js +10 -3
- package/dist/compiler/actor-compiler.js.map +1 -1
- package/dist/compiler/declarations.d.ts +11 -0
- package/dist/compiler/declarations.d.ts.map +1 -0
- package/dist/compiler/declarations.js +218 -0
- package/dist/compiler/declarations.js.map +1 -0
- package/dist/compiler/generators/backend-generator.d.ts +1 -2
- package/dist/compiler/generators/backend-generator.d.ts.map +1 -1
- package/dist/compiler/generators/backend-generator.js +8 -119
- package/dist/compiler/generators/backend-generator.js.map +1 -1
- package/dist/compiler/generators/client-artifacts.d.ts +6 -0
- package/dist/compiler/generators/client-artifacts.d.ts.map +1 -0
- package/dist/compiler/generators/client-artifacts.js +94 -0
- package/dist/compiler/generators/client-artifacts.js.map +1 -0
- package/dist/compiler/generators/client-generator.d.ts +1 -2
- package/dist/compiler/generators/client-generator.d.ts.map +1 -1
- package/dist/compiler/generators/client-generator.js +2 -2
- package/dist/compiler/generators/client-generator.js.map +1 -1
- package/dist/compiler/json-schema.d.ts.map +1 -1
- package/dist/compiler/json-schema.js +84 -25
- package/dist/compiler/json-schema.js.map +1 -1
- package/dist/compiler/validate-public-contract.d.ts.map +1 -1
- package/dist/compiler/validate-public-contract.js +4 -0
- package/dist/compiler/validate-public-contract.js.map +1 -1
- package/dist/generated/client-runtime.d.ts.map +1 -1
- package/dist/generated/client-runtime.js +1 -1
- package/dist/generated/client-runtime.js.map +1 -1
- package/dist/localRuntime.d.ts +3 -1
- package/dist/localRuntime.d.ts.map +1 -1
- package/dist/localRuntime.js +2 -1
- package/dist/localRuntime.js.map +1 -1
- package/dist/projectSdk.d.ts +1 -1
- package/dist/projectSdk.d.ts.map +1 -1
- package/dist/projectSdk.js +2 -2
- package/dist/projectSdk.js.map +1 -1
- package/dist/templates/actor/README.md +6 -6
- package/dist/templates/actor/package.json +1 -1
- package/dist/templates/ai-chat/package.json +1 -1
- package/dist/templates/chat/package.json +1 -1
- package/dist/templates/documents/package.json +1 -1
- package/dist/wire/public-contract.d.ts +6 -1
- package/dist/wire/public-contract.d.ts.map +1 -1
- package/package.json +7 -7
- package/dist/compiler/generators/typescript-generator.d.ts +0 -8
- package/dist/compiler/generators/typescript-generator.d.ts.map +0 -1
- package/dist/compiler/generators/typescript-generator.js +0 -157
- package/dist/compiler/generators/typescript-generator.js.map +0 -1
package/README.md
CHANGED
|
@@ -22,7 +22,9 @@ Install Node.js 22.19+, pnpm, and Bun 1.3.9+.
|
|
|
22
22
|
npx durable-actors init my-actors
|
|
23
23
|
cd my-actors
|
|
24
24
|
pnpm install
|
|
25
|
-
|
|
25
|
+
# Or with npm:
|
|
26
|
+
npm install
|
|
27
|
+
npx durable-actors dev # Run the server locally on your machine
|
|
26
28
|
```
|
|
27
29
|
|
|
28
30
|
Running dev will also start a watch, every-time you make a change to an actor and save, metadata changes will be stored automatically.
|
|
@@ -32,15 +34,19 @@ Running dev will also start a watch, every-time you make a change to an actor an
|
|
|
32
34
|
In your separate application project's directory (ex: node server), install the generator as a development dependency:
|
|
33
35
|
|
|
34
36
|
```sh
|
|
35
|
-
pnpm
|
|
37
|
+
pnpm install --save-dev durable-actors
|
|
38
|
+
# Or with npm:
|
|
39
|
+
npm install --save-dev durable-actors
|
|
36
40
|
```
|
|
37
41
|
|
|
38
42
|
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.
|
|
39
43
|
|
|
44
|
+
`durable-actors observe` never requires a secret when connecting to `durable-actors dev`, even when application routes use one. The dev runtime binds only to localhost; hosted observability still uses the server's configured authentication.
|
|
45
|
+
|
|
40
46
|
Then generate your client from the same application directory:
|
|
41
47
|
|
|
42
48
|
```sh
|
|
43
|
-
|
|
49
|
+
npx durable-actors generate
|
|
44
50
|
```
|
|
45
51
|
|
|
46
52
|
Now you may call your actor and access the state.
|
|
@@ -56,7 +62,15 @@ For complete sample applications, see [AI Chat](https://github.com/TerseAI/durab
|
|
|
56
62
|
|
|
57
63
|
## Define an Actor
|
|
58
64
|
|
|
59
|
-
|
|
65
|
+
Install `ai` in your actor project:
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
pnpm install ai
|
|
69
|
+
# Or with npm:
|
|
70
|
+
npm install ai
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Define and export actors in your actor project’s `src/actors.ts`, the default entrypoint loaded by `durable-actors dev`. For example, a chat history actor:
|
|
60
74
|
|
|
61
75
|
```ts
|
|
62
76
|
import type { UIMessage } from "ai"
|
|
@@ -78,7 +92,7 @@ export class ChatHistory extends Actor {
|
|
|
78
92
|
|
|
79
93
|
## Stream from the backend (Express)
|
|
80
94
|
|
|
81
|
-
After adding `ChatHistory`, rerun `
|
|
95
|
+
After adding `ChatHistory`, rerun `npx durable-actors generate` in your application and use its generated client:
|
|
82
96
|
|
|
83
97
|
```ts
|
|
84
98
|
import { openai } from "@ai-sdk/openai"
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;IAU1E,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"}
|
|
@@ -9,7 +9,7 @@ class ControlPlaneClient {
|
|
|
9
9
|
this.request = request;
|
|
10
10
|
}
|
|
11
11
|
async checkConnection() {
|
|
12
|
-
await this.requestJson("GET",
|
|
12
|
+
await this.requestJson("GET", `${this.projectPath()}/observe/actors`, undefined, 10_000);
|
|
13
13
|
}
|
|
14
14
|
registerDeployment(deployment) {
|
|
15
15
|
return this.requestJson("PUT", `${this.projectPath()}/deployment`, deployment, 150_000);
|
|
@@ -18,26 +18,26 @@ class ControlPlaneClient {
|
|
|
18
18
|
return this.requestJson("GET", `${this.projectPath()}/deployment/contract`);
|
|
19
19
|
}
|
|
20
20
|
listActors() {
|
|
21
|
-
return this.requestJson("GET",
|
|
21
|
+
return this.requestJson("GET", `${this.projectPath()}/observe/actors`);
|
|
22
22
|
}
|
|
23
23
|
async openActorStream(signal) {
|
|
24
|
-
return this.openStream(
|
|
24
|
+
return this.openStream(`${this.projectPath()}/observe/events`, signal);
|
|
25
25
|
}
|
|
26
26
|
async openRequestStream(signal, after) {
|
|
27
27
|
const query = after ? `?${new URLSearchParams({ after })}` : "";
|
|
28
|
-
return this.openStream(
|
|
28
|
+
return this.openStream(`${this.projectPath()}/observe/requests/events${query}`, signal);
|
|
29
29
|
}
|
|
30
30
|
listRequests(query, signal) {
|
|
31
|
-
return this.requestJson("GET",
|
|
31
|
+
return this.requestJson("GET", `${this.projectPath()}/observe/requests${query.size ? `?${query}` : ""}`, undefined, 30_000, signal);
|
|
32
32
|
}
|
|
33
33
|
getMetrics(query, signal) {
|
|
34
|
-
return this.requestJson("GET",
|
|
34
|
+
return this.requestJson("GET", `${this.projectPath()}/observe/metrics${query.size ? `?${query}` : ""}`, undefined, 30_000, signal);
|
|
35
35
|
}
|
|
36
36
|
listQueueWaits(query, signal) {
|
|
37
|
-
return this.requestJson("GET",
|
|
37
|
+
return this.requestJson("GET", `${this.projectPath()}/observe/queue-waits${query.size ? `?${query}` : ""}`, undefined, 30_000, signal);
|
|
38
38
|
}
|
|
39
39
|
listWebSockets(query, signal) {
|
|
40
|
-
return this.requestJson("GET",
|
|
40
|
+
return this.requestJson("GET", `${this.projectPath()}/observe/websockets${query.size ? `?${query}` : ""}`, undefined, 30_000, signal);
|
|
41
41
|
}
|
|
42
42
|
async openStream(path, signal) {
|
|
43
43
|
const response = await this.request(`${this.connection.controlPlaneUrl}${path}`, {
|
|
@@ -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;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAQ5C,MAAM,kBAAkB;IAEP;IACQ;IAFrB,YACa,UAAkC,EAC1B,OAAqB;QAD7B,eAAU,GAAV,UAAU,CAAwB;QAC1B,YAAO,GAAP,OAAO,CAAc;IACvC,CAAC;IAEJ,KAAK,CAAC,eAAe;QACjB,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,
|
|
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
CHANGED
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,CAwBzD;AA+BD,iBAAe,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAK1D;AA2GD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,EAAE,CAAA"}
|
|
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,sFAAsF;IACtF,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,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
|
@@ -58,7 +58,7 @@ const developmentEnvironment = z.object({
|
|
|
58
58
|
});
|
|
59
59
|
async function runDev(options) {
|
|
60
60
|
const project = await developmentProject(options);
|
|
61
|
-
const local = await projectSdkModule(project, "./cli/dev.js", import.meta.url);
|
|
61
|
+
const local = await projectSdkModule(project, "./cli/dev.js", import.meta.url, options.sdkResolveFrom);
|
|
62
62
|
if (local !== undefined)
|
|
63
63
|
return (await import(local)).runDev({ ...options, project });
|
|
64
64
|
return runDevRuntime(options, project);
|
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,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AAEnE,OAAO,EAA2B,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;
|
|
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;
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAanC,iBAAS,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAUvD;AA+CD,OAAO,EAAE,uBAAuB,EAAE,CAAA"}
|
package/dist/cli/generate.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { rm } from "node:fs/promises";
|
|
2
1
|
import path from "node:path";
|
|
3
2
|
import { z } from "zod";
|
|
4
3
|
import { connectionHelp } from "./connection.js";
|
|
@@ -8,7 +7,7 @@ function registerGenerateCommand(program) {
|
|
|
8
7
|
.command("generate")
|
|
9
8
|
.argument("[entrypoint]", "actor source file to compile instead of fetching from the server")
|
|
10
9
|
.description("Generate actor clients from the running server or an explicit source file")
|
|
11
|
-
.option("--out-dir <directory>", "generated
|
|
10
|
+
.option("--out-dir <directory>", "generated JavaScript and declaration directory", "generated")
|
|
12
11
|
.option("--config <file>", "TypeScript configuration file (local source only)")
|
|
13
12
|
.option("--control-plane-url <url>", "control-plane origin (overrides DURABLE_ACTORS_CONTROL_PLANE_URL)")
|
|
14
13
|
.addHelpText("after", connectionHelp)
|
|
@@ -22,9 +21,10 @@ async function generate(entrypoint, options) {
|
|
|
22
21
|
: await remoteContract(options.controlPlaneUrl);
|
|
23
22
|
const directory = path.resolve(options.outDir);
|
|
24
23
|
await generateClient(contract, directory);
|
|
25
|
-
for (const obsolete of ["contract.json", "contract-source.json"])
|
|
26
|
-
await rm(path.join(directory, obsolete), { force: true });
|
|
27
24
|
console.log(`Generated ${contract.actors.length} actor contract(s) in ${directory}.`);
|
|
25
|
+
const dependencies = Object.entries(contract.typescript.dependencies);
|
|
26
|
+
if (dependencies.length)
|
|
27
|
+
console.log(`Type dependencies: ${dependencies.map(([name, version]) => `${name}@${version}`).join(", ")}. Install compatible versions in the calling project.`);
|
|
28
28
|
}
|
|
29
29
|
function validateOptions(entrypoint, options) {
|
|
30
30
|
if (entrypoint && options.controlPlaneUrl !== undefined)
|
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,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,10 +13,11 @@ export declare class HttpActorClient {
|
|
|
13
13
|
protected readonly now: () => number;
|
|
14
14
|
protected readonly monotonicNow: () => number;
|
|
15
15
|
protected readonly telemetry: TelemetrySink;
|
|
16
|
-
protected readonly targets: Map<string,
|
|
16
|
+
protected readonly targets: Map<string, TargetResolution>;
|
|
17
17
|
constructor(options?: DurableActorsClientOptions, dependencies?: HttpActorClientDependencies);
|
|
18
18
|
invoke(actorName: string, actorId: string, method: string, args: readonly unknown[]): Promise<unknown>;
|
|
19
19
|
private direct;
|
|
20
|
+
private invalidateTarget;
|
|
20
21
|
protected target(invocation: ActorAddress, timeline: LatencyTimeline): Promise<ActorHostTarget>;
|
|
21
22
|
private resolveTarget;
|
|
22
23
|
private throwResponseFailure;
|
|
@@ -25,6 +26,10 @@ export declare class HttpActorClient {
|
|
|
25
26
|
private jsonArguments;
|
|
26
27
|
}
|
|
27
28
|
type ActorAddress = Pick<DirectActorInvocation, "requestId" | "projectId" | "actorName" | "actorId">;
|
|
29
|
+
interface TargetResolution {
|
|
30
|
+
readonly promise: Promise<ActorHostTarget>;
|
|
31
|
+
target?: ActorHostTarget;
|
|
32
|
+
}
|
|
28
33
|
type RemoteActorSettings = ReturnType<typeof configuredSettings>;
|
|
29
34
|
export interface HttpActorClientDependencies {
|
|
30
35
|
readonly environment?: Environment;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client-runtime/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAG3F,OAAO,EAEH,kBAAkB,EAMrB,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAInD,qBAAa,eAAe;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,aAAa,CAAiC;IACtD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IAC3C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,MAAM,CAAA;IAC1C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAA;IAChD,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAA;IACpC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,MAAM,CAAA;IAC7C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAA;IAC3C,SAAS,CAAC,QAAQ,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client-runtime/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAG3F,OAAO,EAEH,kBAAkB,EAMrB,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAInD,qBAAa,eAAe;IACxB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,aAAa,CAAiC;IACtD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IAC3C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,MAAM,CAAA;IAC1C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAA;IAChD,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAA;IACpC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,MAAM,CAAA;IAC7C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAA;IAC3C,SAAS,CAAC,QAAQ,CAAC,OAAO,gCAAsC;gBAEpD,OAAO,CAAC,EAAE,0BAA0B,EAAE,YAAY,GAAE,2BAAgC;IAa1F,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;YA0B9F,MAAM;IA4CpB,OAAO,CAAC,gBAAgB;cAMR,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;YAyBvF,aAAa;IA0C3B,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,UAAU;IAiBlB,SAAS,KAAK,QAAQ,IAAI,mBAAmB,CAI5C;IAED,OAAO,CAAC,aAAa;CAKxB;AAcD,KAAK,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC,CAAA;AACpG,UAAU,gBAAgB;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAC1C,MAAM,CAAC,EAAE,eAAe,CAAA;CAC3B;AACD,KAAK,mBAAmB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAChE,MAAM,WAAW,2BAA2B;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,MAAM,CAAA;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAA;IACvC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,MAAM,CAAA;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAA;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;CACtD;AACD,YAAY,EAAE,0BAA0B,EAAE,CAAA"}
|
|
@@ -53,7 +53,7 @@ export class HttpActorClient {
|
|
|
53
53
|
});
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
async direct(target, invocation,
|
|
56
|
+
async direct(target, invocation, retryAvailable, timeline) {
|
|
57
57
|
try {
|
|
58
58
|
const reply = await this.actorHost.invoke(target, invocation);
|
|
59
59
|
timeline.mark("host_rpc_completed");
|
|
@@ -63,40 +63,57 @@ export class HttpActorClient {
|
|
|
63
63
|
}
|
|
64
64
|
if (reply.type === "failed")
|
|
65
65
|
throw new ActorInvocationError(reply.code, invocation.requestId, reply.message);
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
this.invalidateTarget(invocation, target);
|
|
67
|
+
if (reply.type === "unauthenticated" && !retryAvailable) {
|
|
68
68
|
throw new ActorInvocationError("unauthenticated", invocation.requestId, "actor host rejected the refreshed invocation ticket");
|
|
69
69
|
}
|
|
70
|
-
if (!
|
|
71
|
-
throw new ActorInvocationError("unavailable", invocation.requestId,
|
|
72
|
-
|
|
70
|
+
if (!retryAvailable)
|
|
71
|
+
throw new ActorInvocationError("unavailable", invocation.requestId, reply.type === "not_dispatched"
|
|
72
|
+
? "actor host could not be reached before execution"
|
|
73
|
+
: "actor ownership changed repeatedly before execution");
|
|
73
74
|
const rerouted = await this.target(invocation, timeline);
|
|
74
75
|
return this.direct(rerouted, invocation, false, timeline);
|
|
75
76
|
}
|
|
76
77
|
catch (error) {
|
|
77
78
|
if (error instanceof ActorInvocationError || error instanceof ActorProtocolError)
|
|
78
79
|
throw error;
|
|
79
|
-
this.
|
|
80
|
+
this.invalidateTarget(invocation, target);
|
|
80
81
|
const message = error instanceof Error ? error.message : String(error);
|
|
81
82
|
throw new ActorInvocationError("outcome_unknown", invocation.requestId, `actor-host HTTP request failed after dispatch: ${message}`);
|
|
82
83
|
}
|
|
83
84
|
}
|
|
85
|
+
invalidateTarget(invocation, target) {
|
|
86
|
+
const key = actorKey(invocation.actorName, invocation.actorId);
|
|
87
|
+
const current = this.targets.get(key);
|
|
88
|
+
if (current?.target === target)
|
|
89
|
+
this.targets.delete(key);
|
|
90
|
+
}
|
|
84
91
|
async target(invocation, timeline) {
|
|
85
92
|
const key = actorKey(invocation.actorName, invocation.actorId);
|
|
86
93
|
const current = this.targets.get(key);
|
|
87
94
|
timeline.mark("target_cache_checked");
|
|
88
95
|
if (current) {
|
|
89
|
-
const target = await current;
|
|
96
|
+
const target = await current.promise;
|
|
97
|
+
if (this.targets.get(key) !== current)
|
|
98
|
+
return this.target(invocation, timeline);
|
|
90
99
|
if (target.expiresAtMs > this.now() + TARGET_EXPIRATION_SAFETY_MS)
|
|
91
100
|
return target;
|
|
92
101
|
this.targets.delete(key);
|
|
93
102
|
}
|
|
94
|
-
const resolving =
|
|
95
|
-
this.
|
|
96
|
-
|
|
97
|
-
|
|
103
|
+
const resolving = {
|
|
104
|
+
promise: this.resolveTarget(invocation)
|
|
105
|
+
.then(target => {
|
|
106
|
+
resolving.target = target;
|
|
107
|
+
return target;
|
|
108
|
+
})
|
|
109
|
+
.catch(error => {
|
|
110
|
+
if (this.targets.get(key) === resolving)
|
|
111
|
+
this.targets.delete(key);
|
|
112
|
+
throw error;
|
|
113
|
+
})
|
|
114
|
+
};
|
|
98
115
|
this.targets.set(key, resolving);
|
|
99
|
-
return resolving;
|
|
116
|
+
return resolving.promise;
|
|
100
117
|
}
|
|
101
118
|
async resolveTarget(invocation) {
|
|
102
119
|
let response;
|
|
@@ -115,7 +132,7 @@ export class HttpActorClient {
|
|
|
115
132
|
}
|
|
116
133
|
catch (error) {
|
|
117
134
|
const message = error instanceof Error ? error.message : String(error);
|
|
118
|
-
throw new ActorInvocationError("
|
|
135
|
+
throw new ActorInvocationError("unavailable", invocation.requestId, `control-plane HTTP request failed before dispatch: ${message}`);
|
|
119
136
|
}
|
|
120
137
|
const document = await responseDocument(response);
|
|
121
138
|
if (!response.ok)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client-runtime/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACtE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE9E,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,EACH,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACjB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGhD,MAAM,2BAA2B,GAAG,KAAK,CAAA;AAEzC,MAAM,OAAO,eAAe;IACP,YAAY,CAA6B;IAClD,aAAa,CAAiC;IACnC,WAAW,CAAa;IACxB,YAAY,CAAyB;IACrC,SAAS,CAAc;IACvB,SAAS,CAAoB;IAC7B,GAAG,CAAc;IACjB,YAAY,CAAc;IAC1B,SAAS,CAAe;IACxB,OAAO,GAAG,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client-runtime/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACtE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE9E,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,EACH,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACjB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGhD,MAAM,2BAA2B,GAAG,KAAK,CAAA;AAEzC,MAAM,OAAO,eAAe;IACP,YAAY,CAA6B;IAClD,aAAa,CAAiC;IACnC,WAAW,CAAa;IACxB,YAAY,CAAyB;IACrC,SAAS,CAAc;IACvB,SAAS,CAAoB;IAC7B,GAAG,CAAc;IACjB,YAAY,CAAc;IAC1B,SAAS,CAAe;IACxB,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAA;IAEhE,YAAY,OAAoC,EAAE,eAA4C,EAAE;QAC5F,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC3D,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,WAAW,IAAI,kBAAkB,EAAE,CAAA;QACnE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAA;QAC1D,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAA;QACjF,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,IAAI,IAAI,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACxF,uEAAuE;QACvE,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAA;QACjF,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAA;QAC1E,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACrD,IAAI,CAAC,aAAa,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;IACxF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB,EAAE,OAAe,EAAE,MAAc,EAAE,IAAwB;QACrF,MAAM,SAAS,GAAG,sBAAsB,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QACxE,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACvD,IAAI,OAAO,GAAG,QAAQ,CAAA;QACtB,IAAI,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;YAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;YAC/E,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;YACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YACtD,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;YAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;YACpE,OAAO,GAAG,WAAW,CAAA;YACrB,OAAO,MAAM,CAAA;QACjB,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,SAAS,CAAC;gBACX,KAAK,EAAE,yBAAyB;gBAChC,UAAU,EAAE,SAAS;gBACrB,UAAU,EAAE,SAAS;gBACrB,QAAQ,EAAE,OAAO;gBACjB,MAAM;gBACN,GAAG,QAAQ,CAAC,MAAM,EAAE;gBACpB,OAAO;aACV,CAAC,CAAA;QACN,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,MAAM,CAChB,MAAuB,EACvB,UAAiC,EACjC,cAAuB,EACvB,QAAyB;QAEzB,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;YAC7D,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;YACnC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC7B,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;gBACzC,OAAO,KAAK,CAAC,MAAM,CAAA;YACvB,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,IAAI,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;YAC5G,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;YACzC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtD,MAAM,IAAI,oBAAoB,CAC1B,iBAAiB,EACjB,UAAU,CAAC,SAAS,EACpB,qDAAqD,CACxD,CAAA;YACL,CAAC;YACD,IAAI,CAAC,cAAc;gBACf,MAAM,IAAI,oBAAoB,CAC1B,aAAa,EACb,UAAU,CAAC,SAAS,EACpB,KAAK,CAAC,IAAI,KAAK,gBAAgB;oBAC3B,CAAC,CAAC,kDAAkD;oBACpD,CAAC,CAAC,qDAAqD,CAC9D,CAAA;YACL,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YACxD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,KAAK,YAAY,oBAAoB,IAAI,KAAK,YAAY,kBAAkB;gBAAE,MAAM,KAAK,CAAA;YAC7F,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;YACzC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACtE,MAAM,IAAI,oBAAoB,CAC1B,iBAAiB,EACjB,UAAU,CAAC,SAAS,EACpB,kDAAkD,OAAO,EAAE,CAC9D,CAAA;QACL,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,UAAwB,EAAE,MAAuB;QACtE,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACrC,IAAI,OAAO,EAAE,MAAM,KAAK,MAAM;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC5D,CAAC;IAES,KAAK,CAAC,MAAM,CAAC,UAAwB,EAAE,QAAyB;QACtE,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACrC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;QACrC,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAA;YACpC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,OAAO;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YAC/E,IAAI,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,2BAA2B;gBAAE,OAAO,MAAM,CAAA;YAChF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC5B,CAAC;QACD,MAAM,SAAS,GAAqB;YAChC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;iBAClC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACX,SAAS,CAAC,MAAM,GAAG,MAAM,CAAA;gBACzB,OAAO,MAAM,CAAA;YACjB,CAAC,CAAC;iBACD,KAAK,CAAC,KAAK,CAAC,EAAE;gBACX,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;oBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBACjE,MAAM,KAAK,CAAA;YACf,CAAC,CAAC;SACT,CAAA;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QAChC,OAAO,SAAS,CAAC,OAAO,CAAA;IAC5B,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,UAAwB;QAChD,IAAI,QAAkB,CAAA;QACtB,IAAI,CAAC;YACD,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE;gBACnG,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE;oBACL,MAAM,EAAE,kBAAkB;oBAC1B,GAAG,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;oBACjD,cAAc,EAAE,UAAU,CAAC,SAAS;oBACpC,cAAc,EAAE,kBAAkB;iBACrC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;aACjE,CAAC,CAAA;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACtE,MAAM,IAAI,oBAAoB,CAC1B,aAAa,EACb,UAAU,CAAC,SAAS,EACpB,sDAAsD,OAAO,EAAE,CAClE,CAAA;QACL,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QACjD,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAA;QACrF,IACI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACnB,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;YAClC,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;YAClC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE;YACtB,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC;YACrC,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC;YAEtC,MAAM,IAAI,kBAAkB,CAAC,kEAAkE,CAAC,CAAA;QACpG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC9B,OAAO;YACH,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,WAAW,EAAE,QAAQ,CAAC,WAAW;SACpC,CAAA;IACL,CAAC;IAEO,oBAAoB,CAAC,QAAkB,EAAE,QAAiB,EAAE,SAAiB;QACjF,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;YAClD,MAAM,IAAI,oBAAoB,CAC1B,iBAAiB,EACjB,SAAS,EACT,wDAAwD,CAC3D,CAAA;QACL,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;QAC/D,IACI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAClB,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;YAChC,CAAC,OAAO,CAAC,IAAI;YACb,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;YAEnC,MAAM,IAAI,kBAAkB,CAAC,sBAAsB,QAAQ,CAAC,MAAM,yCAAyC,CAAC,CAAA;QAChH,MAAM,IAAI,oBAAoB,CAC1B,OAAO,CAAC,IAAI,EACZ,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACrE,OAAO,CAAC,OAAO,CAClB,CAAA;IACL,CAAC;IAEO,UAAU,CACd,SAAiB,EACjB,SAAiB,EACjB,OAAe,EACf,MAAc,EACd,IAAwB;QAExB,OAAO;YACH,SAAS;YACT,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;YAClC,SAAS,EAAE,sBAAsB,CAAC,YAAY,EAAE,SAAS,CAAC;YAC1D,OAAO,EAAE,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC;YACpD,MAAM,EAAE,sBAAsB,CAAC,cAAc,EAAE,MAAM,CAAC;YACtD,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;SACjC,CAAA;IACL,CAAC;IAED,IAAc,QAAQ;QAClB,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,aAAa,CAAA;QAC/D,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAA;QAC9E,OAAO,IAAI,CAAC,aAAa,CAAA;IAC7B,CAAC;IAEO,aAAa,CAAC,IAAwB;QAC1C,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAA;QAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,kBAAkB,CAAC,sCAAsC,CAAC,CAAA;QAC/F,OAAO,KAAK,CAAA;IAChB,CAAC;CACJ;AAED,SAAS,SAAS,CAAC,QAA6B,EAAE,SAAiB,EAAE,OAAe;IAChF,MAAM,KAAK,GAAG,sBAAsB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IAC7D,MAAM,EAAE,GAAG,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACtD,OAAO,GAAG,QAAQ,CAAC,eAAe,GAAG,gBAAgB,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,aAAa,CAAA;AACrG,CAAC;AAED,SAAS,QAAQ,CAAC,SAAiB,EAAE,OAAe;IAChD,OAAO,GAAG,SAAS,SAAS,OAAO,EAAE,CAAA;AACzC,CAAC;AACD,SAAS,eAAe,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAA;AAChF,CAAC"}
|
|
@@ -35,6 +35,8 @@ export type ActorHostReply = {
|
|
|
35
35
|
readonly type: "reroute";
|
|
36
36
|
} | {
|
|
37
37
|
readonly type: "unauthenticated";
|
|
38
|
+
} | {
|
|
39
|
+
readonly type: "not_dispatched";
|
|
38
40
|
};
|
|
39
41
|
export interface ActorHostTransport {
|
|
40
42
|
invoke(target: ActorHostTarget, invocation: DirectActorInvocation): Promise<ActorHostReply>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/client-runtime/http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAG1C,qBAAa,sBAAuB,YAAW,kBAAkB;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,GAAE,OAAO,UAAU,CAAC,KAAwB;IAE/E,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/client-runtime/http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAG1C,qBAAa,sBAAuB,YAAW,kBAAkB;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,GAAE,OAAO,UAAU,CAAC,KAAwB;IAE/E,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC;IAgC3F,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvG,OAAO,CAAC,IAAI;CAef;AAgBD,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAM3E;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAC3B;AACD,MAAM,WAAW,eAAe;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC/B;AACD,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACvD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAA;CACtC;AACD,MAAM,MAAM,cAAc,GACpB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GACpC;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAA;AACzC,MAAM,WAAW,kBAAkB;IAC/B,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;IAC3F,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACpG"}
|
|
@@ -6,12 +6,20 @@ export class HttpActorHostTransport {
|
|
|
6
6
|
this.fetchRequest = fetchRequest;
|
|
7
7
|
}
|
|
8
8
|
async invoke(target, invocation) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
let response;
|
|
10
|
+
try {
|
|
11
|
+
response = await this.post(target, invocation, "invoke", {
|
|
12
|
+
requestId: invocation.requestId,
|
|
13
|
+
ownerEpoch: target.ownerEpoch,
|
|
14
|
+
method: invocation.method,
|
|
15
|
+
args: invocation.args
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
if (connectionRefused(error))
|
|
20
|
+
return { type: "not_dispatched" };
|
|
21
|
+
throw error;
|
|
22
|
+
}
|
|
15
23
|
// A 401 is issued before dispatch, so refreshing this ticket cannot repeat actor code.
|
|
16
24
|
if (response.status === 401)
|
|
17
25
|
return { type: "unauthenticated" };
|
|
@@ -49,6 +57,20 @@ export class HttpActorHostTransport {
|
|
|
49
57
|
});
|
|
50
58
|
}
|
|
51
59
|
}
|
|
60
|
+
function connectionRefused(error, ancestors = new Set()) {
|
|
61
|
+
if (!isRecord(error) || ancestors.has(error))
|
|
62
|
+
return false;
|
|
63
|
+
const visited = new Set(ancestors).add(error);
|
|
64
|
+
if (error.code !== undefined && error.code !== "ECONNREFUSED")
|
|
65
|
+
return false;
|
|
66
|
+
if (error.errors !== undefined)
|
|
67
|
+
return (Array.isArray(error.errors) &&
|
|
68
|
+
error.errors.length > 0 &&
|
|
69
|
+
error.errors.every(cause => connectionRefused(cause, visited)));
|
|
70
|
+
if (error.code === "ECONNREFUSED")
|
|
71
|
+
return error.syscall === "connect";
|
|
72
|
+
return connectionRefused(error.cause, visited);
|
|
73
|
+
}
|
|
52
74
|
export async function responseDocument(response) {
|
|
53
75
|
try {
|
|
54
76
|
return await response.json();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/client-runtime/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEhE,MAAM,OAAO,sBAAsB;IACF;IAA7B,YAA6B,eAAwC,UAAU,CAAC,KAAK;QAAxD,iBAAY,GAAZ,YAAY,CAA4C;IAAG,CAAC;IAEzF,KAAK,CAAC,MAAM,CAAC,MAAuB,EAAE,UAAiC;QACnE,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/client-runtime/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
import type { PublicActorContract } from "../wire/public-contract.js";
|
|
3
|
+
import { DeclarationCompiler } from "./declarations.js";
|
|
3
4
|
import { Persistence } from "./types.js";
|
|
4
5
|
import type { ActorAnalysis, ActorSchema, CompilerOptions, SdkSymbols } from "./types.js";
|
|
5
6
|
declare class ActorCompiler {
|
|
6
7
|
private readonly system;
|
|
7
|
-
|
|
8
|
+
private readonly declarations;
|
|
9
|
+
constructor(system?: ts.System, declarations?: Pick<DeclarationCompiler, "compile">);
|
|
8
10
|
check(entrypoint: string, options?: CompilerOptions): readonly ActorSchema[];
|
|
9
11
|
compile(entrypoint: string, options?: CompilerOptions): {
|
|
10
|
-
contract: import("
|
|
12
|
+
contract: import("../wire/contract.js").SocketContract;
|
|
11
13
|
actorName: string;
|
|
12
14
|
fields: readonly import("./types.js").ActorFieldSchema[];
|
|
13
15
|
reentrantMethods?: readonly string[];
|
|
@@ -15,7 +17,7 @@ declare class ActorCompiler {
|
|
|
15
17
|
compileContract(entrypoint: string, options?: CompilerOptions): PublicActorContract;
|
|
16
18
|
compileDeployment(entrypoint: string, options?: CompilerOptions): {
|
|
17
19
|
schemas: {
|
|
18
|
-
contract: import("
|
|
20
|
+
contract: import("../wire/contract.js").SocketContract;
|
|
19
21
|
actorName: string;
|
|
20
22
|
fields: readonly import("./types.js").ActorFieldSchema[];
|
|
21
23
|
reentrantMethods?: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actor-compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/actor-compiler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,YAAY,CAAA;AAI3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"actor-compiler.d.ts","sourceRoot":"","sources":["../../src/compiler/actor-compiler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,YAAY,CAAA;AAI3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAErE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAMvD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,EACR,aAAa,EACb,WAAW,EAEX,eAAe,EAIf,UAAU,EACb,MAAM,YAAY,CAAA;AAEnB,cAAM,aAAa;IAEX,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,MAAM,GAAE,EAAE,CAAC,MAAe,EAC1B,YAAY,GAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,CAAmC;IAGzG,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB;IAIvD,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB;;;;;;IAIzD,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,mBAAmB;IAIvF,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB;;;;;;;;;;IAiCnE,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,OAAO;IAiBf,OAAO,CAAC,IAAI;IAcZ,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,wBAAwB;CAanC;AAED,iBAAS,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,aAAa,CAKrG;AA2HD,iBAAS,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,GAAG,UAAU,CAgBrF;AAWD,iBAAS,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,SAAS,EAAE,CAAC,IAAI,EAAO,GAAG,EAAE,CAAC,UAAU,CAgBjH;AAED,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAA;AAC7F,YAAY,EAAE,eAAe,EAAE,CAAA;AAC/B,YAAY,EACR,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,SAAS,EACT,YAAY,EACf,MAAM,4BAA4B,CAAA"}
|
|
@@ -3,6 +3,7 @@ import { fileURLToPath } from "node:url";
|
|
|
3
3
|
import ts from "typescript";
|
|
4
4
|
import { validateActorComponent } from "../actor/identity.js";
|
|
5
5
|
import { ActorDefinitionError } from "../errors.js";
|
|
6
|
+
import { DeclarationCompiler } from "./declarations.js";
|
|
6
7
|
import { readEmission, readPersistence, validatePersistence } from "./features/persistence.js";
|
|
7
8
|
import { readReentrancy, validateReentrancy } from "./features/reentrancy.js";
|
|
8
9
|
import { extractPublicSchema } from "./public-schema.js";
|
|
@@ -11,8 +12,10 @@ import { socketContract } from "./socket-contract.js";
|
|
|
11
12
|
import { Persistence } from "./types.js";
|
|
12
13
|
class ActorCompiler {
|
|
13
14
|
system;
|
|
14
|
-
|
|
15
|
+
declarations;
|
|
16
|
+
constructor(system = ts.sys, declarations = new DeclarationCompiler(system)) {
|
|
15
17
|
this.system = system;
|
|
18
|
+
this.declarations = declarations;
|
|
16
19
|
}
|
|
17
20
|
check(entrypoint, options = {}) {
|
|
18
21
|
return this.analyze(entrypoint, options).schemas;
|
|
@@ -25,8 +28,7 @@ class ActorCompiler {
|
|
|
25
28
|
}
|
|
26
29
|
compileDeployment(entrypoint, options = {}) {
|
|
27
30
|
const { checker, actors, schemas, program } = this.describe(entrypoint, options);
|
|
28
|
-
const
|
|
29
|
-
version: 1,
|
|
31
|
+
const api = {
|
|
30
32
|
actors: [...schemas]
|
|
31
33
|
.sort((left, right) => left.actorName < right.actorName ? -1 : left.actorName > right.actorName ? 1 : 0)
|
|
32
34
|
.map(schema => ({
|
|
@@ -43,6 +45,11 @@ class ActorCompiler {
|
|
|
43
45
|
rpc: rpcContract(checker, actors.find(actor => actor.name.text === schema.actorName))
|
|
44
46
|
}))
|
|
45
47
|
};
|
|
48
|
+
const contract = {
|
|
49
|
+
...api,
|
|
50
|
+
version: 1,
|
|
51
|
+
typescript: this.declarations.compile(program, actors, api.actors)
|
|
52
|
+
};
|
|
46
53
|
const sources = new Map(program.getSourceFiles().map(file => [file.fileName, file.text]));
|
|
47
54
|
return { schemas, contract, sources };
|
|
48
55
|
}
|