terse-sdk 0.9.2 → 0.9.4

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 CHANGED
@@ -72,6 +72,30 @@ The trigger builders and resource constants come from `src/terse.generated.ts`,
72
72
 
73
73
  Full reference: [docs.useterse.ai/reference/typescript-sdk](https://docs.useterse.ai/reference/typescript-sdk).
74
74
 
75
+ ## WebSocket setup timeout
76
+
77
+ Set this on the backend that issues connection grants to allow up to two minutes for actor startup:
78
+
79
+ ```sh
80
+ export TERSE_ACTOR_SETUP_TIMEOUT_MS=120000
81
+ ```
82
+
83
+ Existing generated `actors.Counter.prepareWebsocket(...)` and `ActorProxy.handle(...)` calls use this setting after you update the SDK. You do not need to regenerate the client.
84
+
85
+ You can also set `setupTimeoutMs` on `SocketProxy` from `terse-sdk/actors`:
86
+
87
+ ```ts
88
+ import { SocketProxy } from "terse-sdk/actors"
89
+
90
+ const proxy = new SocketProxy({ Counter: {} }, { setupTimeoutMs: 120_000 })
91
+ // Authenticate the user and check access to this actor before issuing the grant.
92
+ const grant = await proxy.handle({ actorName: "Counter", actorId: "visits", metadata: { userId: "authorized-user" } })
93
+ ```
94
+
95
+ `ActorProxy` from `terse-sdk/proxy` accepts the same option alongside `projectId` and `projectKey`. An explicit option takes precedence over the environment variable. Values must be whole milliseconds from 1,000 to 600,000. Unset or blank environment values preserve the existing defaults: 10 seconds for Terse Cloud grant requests and the runtime's default for direct actor URLs.
96
+
97
+ This setting controls the backend grant request. It does not change socket authorization lifetime, browser connection timers, or message timeouts. Give your backend host and browser enough time to wait for the configured grant request.
98
+
75
99
  ## Environment
76
100
 
77
101
  | Variable | Description |
@@ -3,6 +3,8 @@ export interface ActorProxyOptions {
3
3
  projectId: string;
4
4
  projectKey: string;
5
5
  backendUrl?: string;
6
+ /** Grant-request timeout, 1000–600000 ms. Overrides TERSE_ACTOR_SETUP_TIMEOUT_MS; defaults to 10000 ms. */
7
+ setupTimeoutMs?: number;
6
8
  fetch?: typeof globalThis.fetch;
7
9
  }
8
10
  export declare class ActorProxy<Actors extends Record<string, ProxyActor>> {
@@ -1 +1 @@
1
- {"version":3,"file":"actorProxy.d.ts","sourceRoot":"","sources":["../src/actorProxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAMxF,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAClC;AASD,qBAAa,UAAU,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;IAEzD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB;IAGzC,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;CAqBjF;AAED,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"actorProxy.d.ts","sourceRoot":"","sources":["../src/actorProxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAOxF,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2GAA2G;IAC3G,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAClC;AASD,qBAAa,UAAU,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;IAEzD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB;IAGzC,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;CAsBjF;AAED,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { ApiRoutes, buildRoute } from "terse-types";
2
2
  import { z } from "zod";
3
+ import { resolveSocketSetupTimeoutMs } from "./actorSocketSettings.js";
3
4
  import { resolveTerseBackendUrl } from "./backendRequest.js";
4
5
  const grantSchema = z.object({
5
6
  websocketUrl: z.url().refine(value => ["ws:", "wss:"].includes(new URL(value).protocol)),
@@ -17,6 +18,7 @@ export class ActorProxy {
17
18
  async handle(authorization) {
18
19
  if (!this.options.projectKey)
19
20
  throw new Error("ActorProxy requires projectKey");
21
+ const setupTimeoutMs = resolveSocketSetupTimeoutMs(this.options.setupTimeoutMs) ?? 10_000;
20
22
  const { actorName, actorId, metadata, authorizationLifetimeMs } = authorization;
21
23
  if (!Object.hasOwn(this.actors, actorName))
22
24
  throw new Error(`Unknown actor name: ${actorName}`);
@@ -30,7 +32,7 @@ export class ActorProxy {
30
32
  Accept: "application/json"
31
33
  },
32
34
  body: JSON.stringify({ actorName, actorId, metadata: jsonMetadata, authorizationLifetimeMs }),
33
- signal: AbortSignal.timeout(10_000),
35
+ signal: AbortSignal.timeout(setupTimeoutMs),
34
36
  redirect: "error"
35
37
  });
36
38
  if (!response.ok)
@@ -1 +1 @@
1
- {"version":3,"file":"actorProxy.js","sourceRoot":"","sources":["../src/actorProxy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAS5D,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,YAAY,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC7B,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;CACtC,CAAC,CAAA;AAEF,MAAM,OAAO,UAAU;IAEE;IACA;IAFrB,YACqB,MAAc,EACd,OAA0B;QAD1B,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAmB;IAC5C,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,aAA0C;QACnD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAC/E,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,GAAG,aAAa,CAAA;QAC/E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAA;QAC/F,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAE7C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,sBAAsB,EAAE,CAAC,CAAA;QACxJ,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;YACjE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,aAAa,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;gBAClD,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC7B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,uBAAuB,EAAE,CAAC;YAC7F,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,OAAO;SACpB,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;QACzG,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IACnD,CAAC;CACJ"}
1
+ {"version":3,"file":"actorProxy.js","sourceRoot":"","sources":["../src/actorProxy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAW5D,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,YAAY,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC7B,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;CACtC,CAAC,CAAA;AAEF,MAAM,OAAO,UAAU;IAEE;IACA;IAFrB,YACqB,MAAc,EACd,OAA0B;QAD1B,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAmB;IAC5C,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,aAA0C;QACnD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAC/E,MAAM,cAAc,GAAG,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,MAAM,CAAA;QACzF,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,GAAG,aAAa,CAAA;QAC/E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAA;QAC/F,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAE7C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,sBAAsB,EAAE,CAAC,CAAA;QACxJ,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE;YACjE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,aAAa,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;gBAClD,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC7B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,uBAAuB,EAAE,CAAC;YAC7F,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC;YAC3C,QAAQ,EAAE,OAAO;SACpB,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,oDAAoD,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;QACzG,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;IACnD,CAAC;CACJ"}
@@ -0,0 +1,3 @@
1
+ /** Resolve the grant-request timeout without changing the selected transport's default. */
2
+ export declare function resolveSocketSetupTimeoutMs(explicit?: number): number | undefined;
3
+ //# sourceMappingURL=actorSocketSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actorSocketSettings.d.ts","sourceRoot":"","sources":["../src/actorSocketSettings.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,wBAAgB,2BAA2B,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOjF"}
@@ -0,0 +1,10 @@
1
+ /** Resolve the grant-request timeout without changing the selected transport's default. */
2
+ export function resolveSocketSetupTimeoutMs(explicit) {
3
+ const configured = process.env.TERSE_ACTOR_SETUP_TIMEOUT_MS?.trim();
4
+ const value = explicit ?? (configured ? Number(configured) : undefined);
5
+ if (value !== undefined && (!Number.isSafeInteger(value) || value < 1_000 || value > 600_000)) {
6
+ throw new Error("Socket setupTimeoutMs / TERSE_ACTOR_SETUP_TIMEOUT_MS must be an integer between 1000 and 600000 milliseconds");
7
+ }
8
+ return value;
9
+ }
10
+ //# sourceMappingURL=actorSocketSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actorSocketSettings.js","sourceRoot":"","sources":["../src/actorSocketSettings.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,UAAU,2BAA2B,CAAC,QAAiB;IACzD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,EAAE,CAAA;IACnE,MAAM,KAAK,GAAG,QAAQ,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACvE,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC;QAC5F,MAAM,IAAI,KAAK,CAAC,8GAA8G,CAAC,CAAA;IACnI,CAAC;IACD,OAAO,KAAK,CAAA;AAChB,CAAC"}
package/dist/actors.d.ts CHANGED
@@ -4,10 +4,14 @@ export declare function createActorStub<Stub extends object>(actorName: string,
4
4
  export interface SocketProxyDependencies {
5
5
  fetch?: typeof globalThis.fetch;
6
6
  }
7
+ export interface SocketProxyOptions extends SocketProxyDependencies {
8
+ /** Grant-request timeout, 1000–600000 ms. Overrides TERSE_ACTOR_SETUP_TIMEOUT_MS; otherwise preserves the transport default. */
9
+ setupTimeoutMs?: number;
10
+ }
7
11
  export declare class SocketProxy<Actors extends Record<string, ProxyActor>> {
8
12
  private readonly actors;
9
- private readonly dependencies;
10
- constructor(actors: Actors, dependencies?: SocketProxyDependencies);
13
+ private readonly options;
14
+ constructor(actors: Actors, options?: SocketProxyOptions);
11
15
  handle(authorization: SocketAuthorization<Actors>): Promise<SocketGrant>;
12
16
  }
13
17
  export type { ActorRpcTransport } from "durable-actors/backend";
@@ -1 +1 @@
1
- {"version":3,"file":"actors.d.ts","sourceRoot":"","sources":["../src/actors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAA6C,MAAM,wBAAwB,CAAA;AAM/H,OAAO,EAAc,KAAK,UAAU,EAAE,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAczG,wBAAgB,eAAe,CAAC,IAAI,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,cAAc,EAAE,EAAE,SAAS,GAAE,iBAAkC,GAAG,IAAI,CAEhL;AAWD,MAAM,WAAW,uBAAuB;IACpC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAClC;AAED,qBAAa,WAAW,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;IAE1D,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,uBAA4B;IAGzD,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;CAkBjF;AAED,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"actors.d.ts","sourceRoot":"","sources":["../src/actors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAA6C,MAAM,wBAAwB,CAAA;AAM/H,OAAO,EAAc,KAAK,UAAU,EAAE,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAezG,wBAAgB,eAAe,CAAC,IAAI,SAAS,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,cAAc,EAAE,EAAE,SAAS,GAAE,iBAAkC,GAAG,IAAI,CAEhL;AAWD,MAAM,WAAW,uBAAuB;IACpC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAClC;AAED,MAAM,WAAW,kBAAmB,SAAQ,uBAAuB;IAC/D,gIAAgI;IAChI,cAAc,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,qBAAa,WAAW,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;IAE1D,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,kBAAuB;IAG/C,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;CAoBjF;AAED,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA"}
package/dist/actors.js CHANGED
@@ -4,6 +4,7 @@ import { rethrowActorError } from "terse-types/ActorDiagnostics";
4
4
  import { DEFAULT_ACTOR_URL, isLocalActorEndpoint, parseActorEndpoint } from "terse-types/ActorEndpoint";
5
5
  import { ActorAccessTransport } from "./actorAccess.js";
6
6
  import { ActorProxy } from "./actorProxy.js";
7
+ import { resolveSocketSetupTimeoutMs } from "./actorSocketSettings.js";
7
8
  const directTransport = new ActorAccessTransport(actorConnectionSettings);
8
9
  const terseTransport = {
9
10
  async invoke(actorName, actorId, method, args) {
@@ -28,16 +29,17 @@ function actorConnectionSettings() {
28
29
  }
29
30
  export class SocketProxy {
30
31
  actors;
31
- dependencies;
32
- constructor(actors, dependencies = {}) {
32
+ options;
33
+ constructor(actors, options = {}) {
33
34
  this.actors = actors;
34
- this.dependencies = dependencies;
35
+ this.options = options;
35
36
  }
36
37
  async handle(authorization) {
37
38
  const { endpoint, apiKey } = actorConnectionSettings();
39
+ const setupTimeoutMs = resolveSocketSetupTimeoutMs(this.options.setupTimeoutMs);
38
40
  if (endpoint.kind === "runtime") {
39
41
  try {
40
- return await new RuntimeSocketProxy(this.actors, { projectId: endpoint.projectId, controlPlaneUrl: endpoint.origin, apiKey: apiKey || undefined }, this.dependencies).handle(authorization);
42
+ return await new RuntimeSocketProxy(this.actors, { projectId: endpoint.projectId, controlPlaneUrl: endpoint.origin, apiKey: apiKey || undefined, setupTimeoutMs }, this.options).handle(authorization);
41
43
  }
42
44
  catch (error) {
43
45
  rethrowActorError(error);
@@ -47,7 +49,8 @@ export class SocketProxy {
47
49
  projectId: endpoint.projectId,
48
50
  projectKey: apiKey,
49
51
  backendUrl: endpoint.origin,
50
- fetch: this.dependencies.fetch
52
+ setupTimeoutMs,
53
+ fetch: this.options.fetch
51
54
  }).handle(authorization);
52
55
  }
53
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"actors.js","sourceRoot":"","sources":["../src/actors.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,eAAe,IAAI,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAC/H,OAAO,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAEvG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,UAAU,EAA+D,MAAM,iBAAiB,CAAA;AAEzG,MAAM,eAAe,GAAG,IAAI,oBAAoB,CAAC,uBAAuB,CAAC,CAAA;AAEzE,MAAM,cAAc,GAAsB;IACtC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI;QACzC,IAAI,CAAC;YACD,OAAO,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,iBAAiB,CAAC,KAAK,CAAC,CAAA;QAC5B,CAAC;IACL,CAAC;CACJ,CAAA;AAED,MAAM,UAAU,eAAe,CAAsB,SAAiB,EAAE,OAAe,EAAE,OAAkC,EAAE,YAA+B,cAAc;IACtK,OAAO,sBAAsB,CAAO,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;AAC/E,CAAC;AAED,SAAS,uBAAuB;IAC5B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,iBAAiB,CAAC,CAAA;IAC7F,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IACtD,IAAI,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAA;IAClG,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;AAC/B,CAAC;AAMD,MAAM,OAAO,WAAW;IAEC;IACA;IAFrB,YACqB,MAAc,EACd,eAAwC,EAAE;QAD1C,WAAM,GAAN,MAAM,CAAQ;QACd,iBAAY,GAAZ,YAAY,CAA8B;IAC5D,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,aAA0C;QACnD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,uBAAuB,EAAE,CAAA;QACtD,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACD,OAAO,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,eAAe,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,SAAS,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CACxK,aAAa,CAChB,CAAA;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,iBAAiB,CAAC,KAAK,CAAC,CAAA;YAC5B,CAAC;QACL,CAAC;QACD,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE;YAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,UAAU,EAAE,MAAM;YAClB,UAAU,EAAE,QAAQ,CAAC,MAAM;YAC3B,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;SACjC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;IAC5B,CAAC;CACJ"}
1
+ {"version":3,"file":"actors.js","sourceRoot":"","sources":["../src/actors.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "terse-sdk",
3
- "version": "0.9.2",
3
+ "version": "0.9.4",
4
4
  "type": "module",
5
5
  "sideEffects": [
6
6
  "./dist/context.js"
@@ -54,10 +54,10 @@
54
54
  "zod": "^4.3.6"
55
55
  },
56
56
  "dependencies": {
57
- "durable-actors": "0.7.4",
57
+ "durable-actors": "0.7.7",
58
58
  "little-durable": "0.1.3",
59
59
  "ms": "2.1.3",
60
- "terse-types": "0.9.2"
60
+ "terse-types": "0.9.4"
61
61
  },
62
62
  "scripts": {
63
63
  "build": "rm -rf dist && tsc",