@alchemy.run/effect-cluster 0.0.0 → 2.0.0-beta.87
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/LICENSE +201 -0
- package/README.md +101 -4
- package/lib/AWS/Database.d.ts +54 -0
- package/lib/AWS/Database.d.ts.map +1 -0
- package/lib/AWS/Database.js +96 -0
- package/lib/AWS/Database.js.map +1 -0
- package/lib/AWS/EcsPool.d.ts +56 -0
- package/lib/AWS/EcsPool.d.ts.map +1 -0
- package/lib/AWS/EcsPool.js +87 -0
- package/lib/AWS/EcsPool.js.map +1 -0
- package/lib/AWS/index.d.ts +7 -0
- package/lib/AWS/index.d.ts.map +1 -0
- package/lib/AWS/index.js +7 -0
- package/lib/AWS/index.js.map +1 -0
- package/lib/AWS/internal/Gateway.d.ts +23 -0
- package/lib/AWS/internal/Gateway.d.ts.map +1 -0
- package/lib/AWS/internal/Gateway.js +70 -0
- package/lib/AWS/internal/Gateway.js.map +1 -0
- package/lib/Cloudflare/DurableObjectPool.d.ts +42 -0
- package/lib/Cloudflare/DurableObjectPool.d.ts.map +1 -0
- package/lib/Cloudflare/DurableObjectPool.js +136 -0
- package/lib/Cloudflare/DurableObjectPool.js.map +1 -0
- package/lib/Cloudflare/PoolWorker.d.ts +186 -0
- package/lib/Cloudflare/PoolWorker.d.ts.map +1 -0
- package/lib/Cloudflare/PoolWorker.js +75 -0
- package/lib/Cloudflare/PoolWorker.js.map +1 -0
- package/lib/Cloudflare/index.d.ts +7 -0
- package/lib/Cloudflare/index.d.ts.map +1 -0
- package/lib/Cloudflare/index.js +7 -0
- package/lib/Cloudflare/index.js.map +1 -0
- package/lib/Cloudflare/internal/Objects.d.ts +38 -0
- package/lib/Cloudflare/internal/Objects.d.ts.map +1 -0
- package/lib/Cloudflare/internal/Objects.js +102 -0
- package/lib/Cloudflare/internal/Objects.js.map +1 -0
- package/lib/Cron.d.ts +143 -0
- package/lib/Cron.d.ts.map +1 -0
- package/lib/Cron.js +83 -0
- package/lib/Cron.js.map +1 -0
- package/lib/Database.d.ts +95 -0
- package/lib/Database.d.ts.map +1 -0
- package/lib/Database.js +38 -0
- package/lib/Database.js.map +1 -0
- package/lib/Docker/Database.d.ts +42 -0
- package/lib/Docker/Database.d.ts.map +1 -0
- package/lib/Docker/Database.js +53 -0
- package/lib/Docker/Database.js.map +1 -0
- package/lib/Docker/SwarmPool.d.ts +44 -0
- package/lib/Docker/SwarmPool.d.ts.map +1 -0
- package/lib/Docker/SwarmPool.js +56 -0
- package/lib/Docker/SwarmPool.js.map +1 -0
- package/lib/Docker/index.d.ts +7 -0
- package/lib/Docker/index.d.ts.map +1 -0
- package/lib/Docker/index.js +7 -0
- package/lib/Docker/index.js.map +1 -0
- package/lib/Entity.d.ts +348 -0
- package/lib/Entity.d.ts.map +1 -0
- package/lib/Entity.js +308 -0
- package/lib/Entity.js.map +1 -0
- package/lib/Fly/Database.d.ts +50 -0
- package/lib/Fly/Database.d.ts.map +1 -0
- package/lib/Fly/Database.js +56 -0
- package/lib/Fly/Database.js.map +1 -0
- package/lib/Fly/MachinePool.d.ts +39 -0
- package/lib/Fly/MachinePool.d.ts.map +1 -0
- package/lib/Fly/MachinePool.js +51 -0
- package/lib/Fly/MachinePool.js.map +1 -0
- package/lib/Fly/index.d.ts +7 -0
- package/lib/Fly/index.d.ts.map +1 -0
- package/lib/Fly/index.js +7 -0
- package/lib/Fly/index.js.map +1 -0
- package/lib/GCP/ComputeEnginePool.d.ts +41 -0
- package/lib/GCP/ComputeEnginePool.d.ts.map +1 -0
- package/lib/GCP/ComputeEnginePool.js +172 -0
- package/lib/GCP/ComputeEnginePool.js.map +1 -0
- package/lib/GCP/Database.d.ts +48 -0
- package/lib/GCP/Database.d.ts.map +1 -0
- package/lib/GCP/Database.js +115 -0
- package/lib/GCP/Database.js.map +1 -0
- package/lib/GCP/index.d.ts +7 -0
- package/lib/GCP/index.d.ts.map +1 -0
- package/lib/GCP/index.js +7 -0
- package/lib/GCP/index.js.map +1 -0
- package/lib/Hetzner/Database.d.ts +48 -0
- package/lib/Hetzner/Database.d.ts.map +1 -0
- package/lib/Hetzner/Database.js +91 -0
- package/lib/Hetzner/Database.js.map +1 -0
- package/lib/Hetzner/ServerPool.d.ts +35 -0
- package/lib/Hetzner/ServerPool.d.ts.map +1 -0
- package/lib/Hetzner/ServerPool.js +98 -0
- package/lib/Hetzner/ServerPool.js.map +1 -0
- package/lib/Hetzner/index.d.ts +7 -0
- package/lib/Hetzner/index.d.ts.map +1 -0
- package/lib/Hetzner/index.js +7 -0
- package/lib/Hetzner/index.js.map +1 -0
- package/lib/Host.d.ts +60 -0
- package/lib/Host.d.ts.map +1 -0
- package/lib/Host.js +31 -0
- package/lib/Host.js.map +1 -0
- package/lib/Kubernetes/Database.d.ts +40 -0
- package/lib/Kubernetes/Database.d.ts.map +1 -0
- package/lib/Kubernetes/Database.js +56 -0
- package/lib/Kubernetes/Database.js.map +1 -0
- package/lib/Kubernetes/DeploymentPool.d.ts +54 -0
- package/lib/Kubernetes/DeploymentPool.d.ts.map +1 -0
- package/lib/Kubernetes/DeploymentPool.js +49 -0
- package/lib/Kubernetes/DeploymentPool.js.map +1 -0
- package/lib/Kubernetes/index.d.ts +7 -0
- package/lib/Kubernetes/index.d.ts.map +1 -0
- package/lib/Kubernetes/index.js +7 -0
- package/lib/Kubernetes/index.js.map +1 -0
- package/lib/Pool.d.ts +66 -0
- package/lib/Pool.d.ts.map +1 -0
- package/lib/Pool.js +47 -0
- package/lib/Pool.js.map +1 -0
- package/lib/Providers.d.ts +19 -0
- package/lib/Providers.d.ts.map +1 -0
- package/lib/Providers.js +31 -0
- package/lib/Providers.js.map +1 -0
- package/lib/ShardGroups.d.ts +24 -0
- package/lib/ShardGroups.d.ts.map +1 -0
- package/lib/ShardGroups.js +19 -0
- package/lib/ShardGroups.js.map +1 -0
- package/lib/Singleton.d.ts +110 -0
- package/lib/Singleton.d.ts.map +1 -0
- package/lib/Singleton.js +60 -0
- package/lib/Singleton.js.map +1 -0
- package/lib/Workflow.d.ts +251 -0
- package/lib/Workflow.d.ts.map +1 -0
- package/lib/Workflow.js +288 -0
- package/lib/Workflow.js.map +1 -0
- package/lib/index.d.ts +12 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +12 -0
- package/lib/index.js.map +1 -0
- package/lib/internal/Bootstrap.d.ts +28 -0
- package/lib/internal/Bootstrap.d.ts.map +1 -0
- package/lib/internal/Bootstrap.js +257 -0
- package/lib/internal/Bootstrap.js.map +1 -0
- package/lib/internal/EntityRuntime.d.ts +40 -0
- package/lib/internal/EntityRuntime.d.ts.map +1 -0
- package/lib/internal/EntityRuntime.js +698 -0
- package/lib/internal/EntityRuntime.js.map +1 -0
- package/lib/internal/Gateway.d.ts +82 -0
- package/lib/internal/Gateway.d.ts.map +1 -0
- package/lib/internal/Gateway.js +219 -0
- package/lib/internal/Gateway.js.map +1 -0
- package/lib/internal/HostedPlatform.d.ts +36 -0
- package/lib/internal/HostedPlatform.d.ts.map +1 -0
- package/lib/internal/HostedPlatform.js +36 -0
- package/lib/internal/HostedPlatform.js.map +1 -0
- package/lib/internal/HostedRuntime.d.ts +58 -0
- package/lib/internal/HostedRuntime.d.ts.map +1 -0
- package/lib/internal/HostedRuntime.js +72 -0
- package/lib/internal/HostedRuntime.js.map +1 -0
- package/lib/internal/Naming.d.ts +12 -0
- package/lib/internal/Naming.d.ts.map +1 -0
- package/lib/internal/Naming.js +40 -0
- package/lib/internal/Naming.js.map +1 -0
- package/lib/internal/ObjectSharding.d.ts +141 -0
- package/lib/internal/ObjectSharding.d.ts.map +1 -0
- package/lib/internal/ObjectSharding.js +337 -0
- package/lib/internal/ObjectSharding.js.map +1 -0
- package/lib/internal/PoolHost.d.ts +80 -0
- package/lib/internal/PoolHost.d.ts.map +1 -0
- package/lib/internal/PoolHost.js +203 -0
- package/lib/internal/PoolHost.js.map +1 -0
- package/lib/internal/PoolHostService.d.ts +25 -0
- package/lib/internal/PoolHostService.d.ts.map +1 -0
- package/lib/internal/PoolHostService.js +10 -0
- package/lib/internal/PoolHostService.js.map +1 -0
- package/lib/internal/Wire.d.ts +60 -0
- package/lib/internal/Wire.d.ts.map +1 -0
- package/lib/internal/Wire.js +36 -0
- package/lib/internal/Wire.js.map +1 -0
- package/lib/internal/WorkflowGateway.d.ts +36 -0
- package/lib/internal/WorkflowGateway.d.ts.map +1 -0
- package/lib/internal/WorkflowGateway.js +124 -0
- package/lib/internal/WorkflowGateway.js.map +1 -0
- package/lib/internal/external-runner.d.ts +2 -0
- package/lib/internal/external-runner.d.ts.map +1 -0
- package/lib/internal/external-runner.js +7 -0
- package/lib/internal/external-runner.js.map +1 -0
- package/lib/internal/runner.d.ts +2 -0
- package/lib/internal/runner.d.ts.map +1 -0
- package/lib/internal/runner.js +5 -0
- package/lib/internal/runner.js.map +1 -0
- package/package.json +128 -3
- package/src/AWS/Database.ts +139 -0
- package/src/AWS/EcsPool.ts +118 -0
- package/src/AWS/index.ts +6 -0
- package/src/AWS/internal/Gateway.ts +82 -0
- package/src/Cloudflare/DurableObjectPool.ts +198 -0
- package/src/Cloudflare/PoolWorker.ts +124 -0
- package/src/Cloudflare/index.ts +6 -0
- package/src/Cloudflare/internal/Objects.ts +160 -0
- package/src/Cron.ts +202 -0
- package/src/Database.ts +116 -0
- package/src/Docker/Database.ts +94 -0
- package/src/Docker/SwarmPool.ts +83 -0
- package/src/Docker/index.ts +6 -0
- package/src/Entity.ts +621 -0
- package/src/Fly/Database.ts +102 -0
- package/src/Fly/MachinePool.ts +72 -0
- package/src/Fly/index.ts +6 -0
- package/src/GCP/ComputeEnginePool.ts +203 -0
- package/src/GCP/Database.ts +168 -0
- package/src/GCP/index.ts +6 -0
- package/src/Hetzner/Database.ts +142 -0
- package/src/Hetzner/ServerPool.ts +116 -0
- package/src/Hetzner/index.ts +6 -0
- package/src/Host.ts +68 -0
- package/src/Kubernetes/Database.ts +89 -0
- package/src/Kubernetes/DeploymentPool.ts +77 -0
- package/src/Kubernetes/index.ts +6 -0
- package/src/Pool.ts +104 -0
- package/src/Providers.ts +49 -0
- package/src/ShardGroups.ts +41 -0
- package/src/Singleton.ts +153 -0
- package/src/Workflow.ts +556 -0
- package/src/index.ts +11 -0
- package/src/internal/Bootstrap.ts +368 -0
- package/src/internal/EntityRuntime.ts +996 -0
- package/src/internal/Gateway.ts +367 -0
- package/src/internal/HostedPlatform.ts +83 -0
- package/src/internal/HostedRuntime.ts +118 -0
- package/src/internal/Naming.ts +44 -0
- package/src/internal/ObjectSharding.ts +578 -0
- package/src/internal/PoolHost.ts +330 -0
- package/src/internal/PoolHostService.ts +25 -0
- package/src/internal/Wire.ts +83 -0
- package/src/internal/WorkflowGateway.ts +188 -0
- package/src/internal/external-runner.ts +10 -0
- package/src/internal/runner.ts +5 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityRuntime.js","sources":["../../src/internal/EntityRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How callers reach entities. Inside the cluster (a runner, where
|
|
3
|
+
* `Sharding` is in context) calls go straight through Effect Cluster's own
|
|
4
|
+
* client. Anywhere else they go through the gateway the pool serves: each
|
|
5
|
+
* entity's RPCs as an RPC group over HTTP, addressed by entity id, behind a
|
|
6
|
+
* bearer token, so a caller needs no database access and no route to the
|
|
7
|
+
* pool.
|
|
8
|
+
*
|
|
9
|
+
* Either way the caller's client middleware runs in the caller, and the
|
|
10
|
+
* headers it sets reach the entity's own middleware on the runner.
|
|
11
|
+
*
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
import { type Entity, Sharding } from "effect/cluster";
|
|
15
|
+
import * as Effect from "effect/Effect";
|
|
16
|
+
import * as HttpServerRequest from "effect/http/HttpServerRequest";
|
|
17
|
+
import * as HttpServerResponse from "effect/http/HttpServerResponse";
|
|
18
|
+
import * as Layer from "effect/Layer";
|
|
19
|
+
import { Rpc, RpcGroup } from "effect/rpc";
|
|
20
|
+
import type { Workflow, WorkflowEngine } from "effect/workflow";
|
|
21
|
+
/** The path every gateway serves its RPCs on. */
|
|
22
|
+
export declare const GATEWAY_PATH = "/rpc";
|
|
23
|
+
/** The port runners serve the gateway on inside their network. */
|
|
24
|
+
export declare const GATEWAY_PORT = 34500;
|
|
25
|
+
/** The port runners talk to each other on inside their network. */
|
|
26
|
+
export declare const RUNNER_PORT = 34431;
|
|
27
|
+
/** Where a caller reaches an entity, and how it proves it may. */
|
|
28
|
+
export interface GatewayTarget {
|
|
29
|
+
readonly url: string;
|
|
30
|
+
readonly token: string;
|
|
31
|
+
/**
|
|
32
|
+
* The environment key of a service binding to the gateway, when the
|
|
33
|
+
* caller is a Worker and the gateway is one too: Workers can't fetch
|
|
34
|
+
* another Worker's `workers.dev` URL in the same account.
|
|
35
|
+
*/
|
|
36
|
+
readonly service?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Give the runtime being deployed a direct route, bound under `key`, to the
|
|
40
|
+
* gateway Worker `worker`. A host whose gateway is a Worker registers one;
|
|
41
|
+
* it binds nothing for a caller that isn't a Worker.
|
|
42
|
+
*/
|
|
43
|
+
export type RouteBinder = (key: string, worker: unknown) => Effect.Effect<void, never, any>;
|
|
44
|
+
/** Register a host's {@link RouteBinder}. @internal */
|
|
45
|
+
export declare const registerRouteBinder: (binder: RouteBinder) => void;
|
|
46
|
+
/** A host's gateway Worker serves `type` (an entity type, or `Workflow/${name}`). @internal */
|
|
47
|
+
export declare const routeType: (type: string, worker: unknown) => void;
|
|
48
|
+
/**
|
|
49
|
+
* While deploying, bind a route to the gateway Worker serving `type` into
|
|
50
|
+
* the runtime being deployed, under `key`. Returns the key when one exists.
|
|
51
|
+
*/
|
|
52
|
+
export declare const bindRoute: (type: string, key: string) => Effect.Effect<string | undefined, never, any>;
|
|
53
|
+
/**
|
|
54
|
+
* The `fetch` of the service binding under `key`, inside a Worker that has
|
|
55
|
+
* one; otherwise the global `fetch`.
|
|
56
|
+
*/
|
|
57
|
+
export declare const gatewayFetch: (key: string | undefined) => Effect.Effect<typeof fetch, never, never>;
|
|
58
|
+
type AnyEntity = Entity.Entity<string, Rpc.Any>;
|
|
59
|
+
/**
|
|
60
|
+
* A caller's view of one entity type: `getByName(entityId)` returns a
|
|
61
|
+
* client with the same shape as Effect Cluster's `Entity.client(entityId)`.
|
|
62
|
+
*/
|
|
63
|
+
export declare const makeNamespace: (entity: AnyEntity, target: GatewayTarget) => {
|
|
64
|
+
getByName: (entityId: string) => Effect.Effect<Record<string, unknown>, never, never>;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* What a gateway serves: one RPC group with every hosted entity's RPCs (and
|
|
68
|
+
* the workflow RPCs, when it hosts workflows), and the handlers that route
|
|
69
|
+
* each call to Effect Cluster.
|
|
70
|
+
*/
|
|
71
|
+
export declare const gatewayServer: (entities: ReadonlyArray<AnyEntity>, workflows?: ReadonlyMap<string, Workflow.Any>) => {
|
|
72
|
+
group: RpcGroup.RpcGroup<Rpc.Any>;
|
|
73
|
+
handlers: Layer.Layer<never, never, Sharding.Sharding | WorkflowEngine.WorkflowEngine>;
|
|
74
|
+
};
|
|
75
|
+
/** Serve `app` to callers with the token; `/health` answers anyone. */
|
|
76
|
+
export declare const authorized: (token: string) => <E, R>(app: Effect.Effect<HttpServerResponse.HttpServerResponse, E, R>) => Effect.Effect<HttpServerResponse.HttpServerResponse, E, R | HttpServerRequest.HttpServerRequest>;
|
|
77
|
+
/** The gateway a runner serves: every hosted entity's RPCs, behind the token. */
|
|
78
|
+
export declare function gatewayLayer(entities: ReadonlyArray<AnyEntity>, token: string): Layer.Layer<never, never, Sharding.Sharding>;
|
|
79
|
+
/** With the workflows the runner hosts, served on its own `WorkflowEngine`. */
|
|
80
|
+
export declare function gatewayLayer(entities: ReadonlyArray<AnyEntity>, token: string, workflows: ReadonlyMap<string, Workflow.Any>): Layer.Layer<never, never, Sharding.Sharding | WorkflowEngine.WorkflowEngine>;
|
|
81
|
+
export {};
|
|
82
|
+
//# sourceMappingURL=Gateway.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Gateway.d.ts","sources":["../../src/internal/Gateway.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,KAAK,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAQvD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAMxC,OAAO,KAAK,iBAAiB,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,kBAAkB,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EACL,GAAG,EAEH,QAAQ,EAKT,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGhE,iDAAiD;AACjD,eAAO,MAAM,YAAY,SAAS,CAAC;AAEnC,kEAAkE;AAClE,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,mEAAmE;AACnE,eAAO,MAAM,WAAW,QAAQ,CAAC;AAEjC,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAW5F,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,WAAY,WAAW,SAEtD,CAAC;AAEF,+FAA+F;AAC/F,eAAO,MAAM,SAAS,SAAU,MAAM,UAAU,OAAO,SAEtD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,SAAU,MAAM,OAAO,MAAM,kDAM/C,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,YAAY,QAAS,MAAM,GAAG,SAAS,8CAMhD,CAAC;AAEL,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAmFhD;;;GAGG;AACH,eAAO,MAAM,aAAa,WAAY,SAAS,UAAU,aAAa;0BAQvC,MAAM;CAqDpC,CAAC;AAyCF;;;;GAIG;AACH,eAAO,MAAM,aAAa,aACd,aAAa,CAAC,SAAS,CAAC,cACvB,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC;;;CAY7C,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,UAAU,UACb,MAAM,MACb,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC,qGAUlE,CAAC;AAEP,iFAAiF;AACjF,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,EAClC,KAAK,EAAE,MAAM,GACZ,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAChD,+EAA+E;AAC/E,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,EAClC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,GAC3C,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { WorkerEnvironment } from "alchemy/Workers/WorkerEnvironment";
|
|
2
|
+
/**
|
|
3
|
+
* How callers reach entities. Inside the cluster (a runner, where
|
|
4
|
+
* `Sharding` is in context) calls go straight through Effect Cluster's own
|
|
5
|
+
* client. Anywhere else they go through the gateway the pool serves: each
|
|
6
|
+
* entity's RPCs as an RPC group over HTTP, addressed by entity id, behind a
|
|
7
|
+
* bearer token, so a caller needs no database access and no route to the
|
|
8
|
+
* pool.
|
|
9
|
+
*
|
|
10
|
+
* Either way the caller's client middleware runs in the caller, and the
|
|
11
|
+
* headers it sets reach the entity's own middleware on the runner.
|
|
12
|
+
*
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
import { Sharding } from "effect/cluster";
|
|
16
|
+
import { AlreadyProcessingMessage, EntityNotAssignedToRunner, MailboxFull, PersistenceError, } from "effect/cluster/ClusterError";
|
|
17
|
+
import * as Context from "effect/Context";
|
|
18
|
+
import * as Effect from "effect/Effect";
|
|
19
|
+
import * as FetchHttpClient from "effect/http/FetchHttpClient";
|
|
20
|
+
import * as Headers from "effect/http/Headers";
|
|
21
|
+
import * as HttpClient from "effect/http/HttpClient";
|
|
22
|
+
import * as HttpClientRequest from "effect/http/HttpClientRequest";
|
|
23
|
+
import * as HttpRouter from "effect/http/HttpRouter";
|
|
24
|
+
import * as HttpServerRequest from "effect/http/HttpServerRequest";
|
|
25
|
+
import * as HttpServerResponse from "effect/http/HttpServerResponse";
|
|
26
|
+
import * as Layer from "effect/Layer";
|
|
27
|
+
import * as Option from "effect/Option";
|
|
28
|
+
import { Rpc, RpcClient, RpcGroup, RpcSchema, RpcSerialization, RpcServer, } from "effect/rpc";
|
|
29
|
+
import * as Schema from "effect/Schema";
|
|
30
|
+
import * as Stream from "effect/Stream";
|
|
31
|
+
import { WorkflowRpcs, workflowHandlers } from "./WorkflowGateway.js";
|
|
32
|
+
/** The path every gateway serves its RPCs on. */
|
|
33
|
+
export const GATEWAY_PATH = "/rpc";
|
|
34
|
+
/** The port runners serve the gateway on inside their network. */
|
|
35
|
+
export const GATEWAY_PORT = 34500;
|
|
36
|
+
/** The port runners talk to each other on inside their network. */
|
|
37
|
+
export const RUNNER_PORT = 34431;
|
|
38
|
+
const routeBinders = (globalThis[Symbol.for("alchemy/Cluster/RouteBinders")] ??= []);
|
|
39
|
+
/** The gateway Workers hosted types are served by, while deploying. */
|
|
40
|
+
const routedTypes = (globalThis[Symbol.for("alchemy/Cluster/RoutedTypes")] ??= new Map());
|
|
41
|
+
/** Register a host's {@link RouteBinder}. @internal */
|
|
42
|
+
export const registerRouteBinder = (binder) => {
|
|
43
|
+
if (!routeBinders.includes(binder))
|
|
44
|
+
routeBinders.push(binder);
|
|
45
|
+
};
|
|
46
|
+
/** A host's gateway Worker serves `type` (an entity type, or `Workflow/${name}`). @internal */
|
|
47
|
+
export const routeType = (type, worker) => {
|
|
48
|
+
routedTypes.set(type, worker);
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* While deploying, bind a route to the gateway Worker serving `type` into
|
|
52
|
+
* the runtime being deployed, under `key`. Returns the key when one exists.
|
|
53
|
+
*/
|
|
54
|
+
export const bindRoute = (type, key) => Effect.gen(function* () {
|
|
55
|
+
const worker = routedTypes.get(type);
|
|
56
|
+
if (worker === undefined)
|
|
57
|
+
return undefined;
|
|
58
|
+
for (const binder of routeBinders)
|
|
59
|
+
yield* binder(key, worker);
|
|
60
|
+
return key;
|
|
61
|
+
});
|
|
62
|
+
/**
|
|
63
|
+
* The `fetch` of the service binding under `key`, inside a Worker that has
|
|
64
|
+
* one; otherwise the global `fetch`.
|
|
65
|
+
*/
|
|
66
|
+
export const gatewayFetch = (key) => Effect.map(Effect.serviceOption(WorkerEnvironment), (env) => {
|
|
67
|
+
const service = key === undefined ? undefined : Option.getOrUndefined(env)?.[key];
|
|
68
|
+
return typeof service?.fetch === "function"
|
|
69
|
+
? service.fetch.bind(service)
|
|
70
|
+
: globalThis.fetch;
|
|
71
|
+
});
|
|
72
|
+
const clientErrors = [MailboxFull, AlreadyProcessingMessage, PersistenceError];
|
|
73
|
+
const requestErrors = [...clientErrors, EntityNotAssignedToRunner];
|
|
74
|
+
/** The errors an RPC's middleware can fail with, which the gateway must carry too. */
|
|
75
|
+
const middlewareErrors = (rpc) => [...rpc.middlewares].map((middleware) => middleware.error);
|
|
76
|
+
/**
|
|
77
|
+
* Each entity RPC as a gateway RPC: `${type}.${tag}` and its `Discard`
|
|
78
|
+
* twin, taking the entity id, the payload and the caller's headers. Like
|
|
79
|
+
* Effect Cluster's `EntityProxy`, plus the headers and middleware errors.
|
|
80
|
+
*/
|
|
81
|
+
const groupOf = (entity) => {
|
|
82
|
+
const rpcs = [];
|
|
83
|
+
for (const parent_ of entity.protocol.requests.values()) {
|
|
84
|
+
const parent = parent_;
|
|
85
|
+
const payload = Schema.Struct({
|
|
86
|
+
entityId: Schema.String,
|
|
87
|
+
payload: parent.payloadSchema,
|
|
88
|
+
headers: Schema.Record(Schema.String, Schema.String),
|
|
89
|
+
});
|
|
90
|
+
rpcs.push(Rpc.make(`${entity.type}.${parent._tag}`, {
|
|
91
|
+
payload,
|
|
92
|
+
error: Schema.Union([parent.errorSchema, ...middlewareErrors(parent), ...requestErrors]),
|
|
93
|
+
success: parent.successSchema,
|
|
94
|
+
}).annotateMerge(parent.annotations), Rpc.make(`${entity.type}.${parent._tag}Discard`, {
|
|
95
|
+
payload,
|
|
96
|
+
error: Schema.Union([...middlewareErrors(parent), ...clientErrors]),
|
|
97
|
+
}).annotateMerge(parent.annotations));
|
|
98
|
+
}
|
|
99
|
+
return RpcGroup.make(...rpcs);
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Run the caller's client middleware for `rpc` and return the headers it
|
|
103
|
+
* set. Middleware is looked up the way `RpcClient` does, from the caller's
|
|
104
|
+
* context (`RpcMiddleware.layerClient`); a middleware with no client side
|
|
105
|
+
* is skipped.
|
|
106
|
+
*/
|
|
107
|
+
const clientHeaders = (services, rpc, payload, options) => Effect.gen(function* () {
|
|
108
|
+
let headers = Headers.merge(yield* RpcClient.CurrentHeaders, Headers.fromInput(options?.headers ?? {}));
|
|
109
|
+
const middlewares = [...rpc.middlewares].flatMap((tag) => {
|
|
110
|
+
const client = services.mapUnsafe.get(`${tag.key}/Client`);
|
|
111
|
+
return client === undefined ? [] : [client];
|
|
112
|
+
});
|
|
113
|
+
const loop = (request, index) => index === -1
|
|
114
|
+
? Effect.sync(() => {
|
|
115
|
+
headers = request.headers;
|
|
116
|
+
})
|
|
117
|
+
: middlewares[index]({
|
|
118
|
+
rpc,
|
|
119
|
+
request,
|
|
120
|
+
next: (next) => loop(next, index - 1),
|
|
121
|
+
});
|
|
122
|
+
yield* loop({ _tag: "Request", id: 0n, tag: rpc._tag, payload, headers }, middlewares.length - 1);
|
|
123
|
+
return headers;
|
|
124
|
+
});
|
|
125
|
+
/**
|
|
126
|
+
* A caller's view of one entity type: `getByName(entityId)` returns a
|
|
127
|
+
* client with the same shape as Effect Cluster's `Entity.client(entityId)`.
|
|
128
|
+
*/
|
|
129
|
+
export const makeNamespace = (entity, target) => {
|
|
130
|
+
const group = groupOf(entity);
|
|
131
|
+
// NDJSON frames each message, so a streamed RPC delivers as it goes.
|
|
132
|
+
const protocol = RpcClient.layerProtocolHttp({
|
|
133
|
+
url: `${target.url.replace(/\/+$/, "")}${GATEWAY_PATH}`,
|
|
134
|
+
transformClient: HttpClient.mapRequest(HttpClientRequest.bearerToken(target.token)),
|
|
135
|
+
}).pipe(Layer.provide([FetchHttpClient.layer, RpcSerialization.layerNdjson]));
|
|
136
|
+
const getByName = (entityId) => Effect.gen(function* () {
|
|
137
|
+
const services = yield* Effect.context();
|
|
138
|
+
// Inside the cluster, Effect Cluster routes the call itself.
|
|
139
|
+
const sharding = Option.getOrUndefined(yield* Effect.serviceOption(Sharding.Sharding));
|
|
140
|
+
const native = sharding === undefined
|
|
141
|
+
? undefined
|
|
142
|
+
: (yield* Effect.provideService(entity.client, Sharding.Sharding, sharding))(entityId);
|
|
143
|
+
const methods = {};
|
|
144
|
+
for (const [tag, rpc_] of entity.protocol.requests) {
|
|
145
|
+
const rpc = rpc_;
|
|
146
|
+
const isStream = RpcSchema.isStreamSchema(rpc.successSchema);
|
|
147
|
+
const send = (payload, options) => Effect.gen(function* () {
|
|
148
|
+
const headers = yield* clientHeaders(services, rpc, payload, options);
|
|
149
|
+
const discard = options?.discard === true;
|
|
150
|
+
if (native !== undefined)
|
|
151
|
+
return native[tag](payload, { headers, discard });
|
|
152
|
+
const client = (yield* RpcClient.make(group));
|
|
153
|
+
return client[`${entity.type}.${tag}${discard ? "Discard" : ""}`]({
|
|
154
|
+
entityId,
|
|
155
|
+
payload,
|
|
156
|
+
headers: Object.fromEntries(Object.entries(headers)),
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
methods[tag] = isStream
|
|
160
|
+
? (payload, options) => Stream.unwrap(Effect.map(gatewayFetch(target.service), (fetch) => Stream.unwrap(send(payload, options)).pipe(Stream.scoped, Stream.provide(protocol), Stream.provideService(FetchHttpClient.Fetch, fetch))))
|
|
161
|
+
: (payload, options) => Effect.flatMap(send(payload, options), (result) => result).pipe(Effect.scoped, Effect.provide(protocol), Effect.provideServiceEffect(FetchHttpClient.Fetch, gatewayFetch(target.service)));
|
|
162
|
+
}
|
|
163
|
+
return methods;
|
|
164
|
+
});
|
|
165
|
+
return { getByName };
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* The gateway handlers for one entity: each call goes to Effect Cluster's
|
|
169
|
+
* own client with the caller's headers, so the entity's middleware sees
|
|
170
|
+
* them. Requires the runner's `Sharding`, which routes each call to the
|
|
171
|
+
* runner that owns the entity.
|
|
172
|
+
*/
|
|
173
|
+
const handlersOf = (entity) => Layer.effectContext(Effect.gen(function* () {
|
|
174
|
+
const context = yield* Effect.context();
|
|
175
|
+
const client = yield* entity.client;
|
|
176
|
+
const handlers = new Map();
|
|
177
|
+
for (const parent of entity.protocol.requests.values()) {
|
|
178
|
+
const tag = `${entity.type}.${parent._tag}`;
|
|
179
|
+
const call = (discard) => ({ entityId, payload, headers, }) => client(entityId)[parent._tag](payload, { headers, discard });
|
|
180
|
+
handlers.set(`effect/rpc/Rpc/${tag}`, { context, tag, handler: call(false) });
|
|
181
|
+
handlers.set(`effect/rpc/Rpc/${tag}Discard`, {
|
|
182
|
+
context,
|
|
183
|
+
tag: `${tag}Discard`,
|
|
184
|
+
handler: call(true),
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
return Context.makeUnsafe(handlers);
|
|
188
|
+
}));
|
|
189
|
+
/**
|
|
190
|
+
* What a gateway serves: one RPC group with every hosted entity's RPCs (and
|
|
191
|
+
* the workflow RPCs, when it hosts workflows), and the handlers that route
|
|
192
|
+
* each call to Effect Cluster.
|
|
193
|
+
*/
|
|
194
|
+
export const gatewayServer = (entities, workflows = new Map()) => {
|
|
195
|
+
const groups = [...entities.map(groupOf), ...(workflows.size > 0 ? [WorkflowRpcs] : [])];
|
|
196
|
+
const [first, ...rest] = groups;
|
|
197
|
+
const group = rest.reduce((all, next) => all.merge(next), first ?? RpcGroup.make());
|
|
198
|
+
const handlers = Layer.mergeAll(...[
|
|
199
|
+
...entities.map(handlersOf),
|
|
200
|
+
...(workflows.size > 0 ? [workflowHandlers(workflows)] : []),
|
|
201
|
+
]);
|
|
202
|
+
return { group, handlers };
|
|
203
|
+
};
|
|
204
|
+
/** Serve `app` to callers with the token; `/health` answers anyone. */
|
|
205
|
+
export const authorized = (token) => (app) => Effect.gen(function* () {
|
|
206
|
+
const request = yield* HttpServerRequest.HttpServerRequest;
|
|
207
|
+
// Load balancers check the gateway without the token.
|
|
208
|
+
if (request.url === "/health" || request.url.endsWith("/health")) {
|
|
209
|
+
return HttpServerResponse.text("ok");
|
|
210
|
+
}
|
|
211
|
+
return request.headers.authorization === `Bearer ${token}`
|
|
212
|
+
? yield* app
|
|
213
|
+
: HttpServerResponse.empty({ status: 401 });
|
|
214
|
+
});
|
|
215
|
+
export function gatewayLayer(entities, token, workflows = new Map()) {
|
|
216
|
+
const { group, handlers } = gatewayServer(entities, workflows);
|
|
217
|
+
return HttpRouter.serve(RpcServer.layerHttp({ group, path: GATEWAY_PATH, protocol: "http" }).pipe(Layer.provide(handlers), Layer.provide(RpcSerialization.layerNdjson)), { disableListenLog: true, middleware: authorized(token) });
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=Gateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Gateway.js","sources":["../../src/internal/Gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Platform and provider behind a class a pool hosts that callers never
|
|
3
|
+
* address (a singleton, a cron): a resource whose only attribute is the
|
|
4
|
+
* shard group of the pool that hosts it.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
import type { InputProps } from "alchemy/Input";
|
|
9
|
+
import { Platform, type PlatformProps } from "alchemy/Platform";
|
|
10
|
+
import * as Provider from "alchemy/Provider";
|
|
11
|
+
import type { Resource } from "alchemy/Resource";
|
|
12
|
+
import type * as Context from "effect/Context";
|
|
13
|
+
import * as Effect from "effect/Effect";
|
|
14
|
+
import type * as Layer from "effect/Layer";
|
|
15
|
+
import type { EntityBindingContract } from "../Entity.ts";
|
|
16
|
+
import type { Providers } from "../Providers.ts";
|
|
17
|
+
import { type HostedRuntimeContext } from "./HostedRuntime.ts";
|
|
18
|
+
export interface HostedProps extends PlatformProps {
|
|
19
|
+
/**
|
|
20
|
+
* The module whose default export is this class, or the Layer its
|
|
21
|
+
* `.make(...)` returned. Usually `import.meta.url`.
|
|
22
|
+
*/
|
|
23
|
+
main: string;
|
|
24
|
+
}
|
|
25
|
+
export interface HostedAttributes {
|
|
26
|
+
/** The shard group of the pool that hosts it. */
|
|
27
|
+
pool: string | undefined;
|
|
28
|
+
}
|
|
29
|
+
export interface HostedResource<Type extends string, Props extends HostedProps = HostedProps> extends Resource<Type, Props, HostedAttributes, EntityBindingContract, Providers> {
|
|
30
|
+
}
|
|
31
|
+
export declare const makeHostedPlatform: <Type extends string, Hosted, Props extends HostedProps = HostedProps>(typeId: Type, build: (id: string, returned: unknown, context: Context.Context<never>, props: Props) => Hosted, check?: (id: string, context: Context.Context<never>, props: Props) => Effect.Effect<void>) => {
|
|
32
|
+
platform: Platform<HostedResource<Type, Props>, any, unknown, HostedRuntimeContext<Hosted>, {}, Props>;
|
|
33
|
+
provider: () => Layer.Layer<Provider.Provider<HostedResource<Type, Props>>, never, never>;
|
|
34
|
+
declare: (id: string, members: object, props?: InputProps<Props>, impl?: unknown) => any;
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=HostedPlatform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HostedPlatform.d.ts","sources":["../../src/internal/HostedPlatform.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,KAAK,oBAAoB,EAA4B,MAAM,oBAAoB,CAAC;AAEzF,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc,CAC7B,IAAI,SAAS,MAAM,EACnB,KAAK,SAAS,WAAW,GAAG,WAAW,CACvC,SAAQ,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,SAAS,CAAC;CAAG;AAEtF,eAAO,MAAM,kBAAkB,GAC7B,IAAI,SAAS,MAAM,EACnB,MAAM,EACN,KAAK,SAAS,WAAW,wBAEjB,IAAI,SACL,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,MAAM,UACvF,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;;kBA4BrE,MAAM,WAAW,MAAM,UAAU,UAAU,CAAC,KAAK,CAAC,SAAS,OAAO;CAWxF,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Platform } from "alchemy/Platform";
|
|
2
|
+
import * as Provider from "alchemy/Provider";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import { makeHostedRuntimeContext } from "./HostedRuntime.js";
|
|
5
|
+
export const makeHostedPlatform = (typeId, build, check) => {
|
|
6
|
+
const platform = Platform(typeId, {
|
|
7
|
+
createRuntimeContext: makeHostedRuntimeContext(typeId, build, check),
|
|
8
|
+
});
|
|
9
|
+
const provider = () => Provider.succeed(platform, {
|
|
10
|
+
stables: [],
|
|
11
|
+
reconcile: ({ bindings }) => Effect.sync(() => {
|
|
12
|
+
const attrs = { pool: undefined };
|
|
13
|
+
for (const { data } of bindings)
|
|
14
|
+
attrs.pool = data.pool ?? attrs.pool;
|
|
15
|
+
return attrs;
|
|
16
|
+
}),
|
|
17
|
+
delete: () => Effect.void,
|
|
18
|
+
});
|
|
19
|
+
/**
|
|
20
|
+
* The class: with `impl`, the class itself is the implementation;
|
|
21
|
+
* without, a declaration with `.make(props, impl)`, its implementation as
|
|
22
|
+
* a Layer.
|
|
23
|
+
*/
|
|
24
|
+
const declare = (id, members, props, impl) => {
|
|
25
|
+
if (impl !== undefined)
|
|
26
|
+
return platform()(id, props, impl);
|
|
27
|
+
const tag = platform()(id);
|
|
28
|
+
return Object.assign(class {
|
|
29
|
+
}, members, {
|
|
30
|
+
LogicalId: id,
|
|
31
|
+
make: (props, impl) => tag.make(props, impl),
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
return { platform, provider, declare };
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=HostedPlatform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HostedPlatform.js","sources":["../../src/internal/HostedPlatform.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAsB,MAAM,kBAAkB,CAAC;AAChE,OAAO,KAAK,QAAQ,MAAM,kBAAkB,CAAC;AAG7C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,EAA6B,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAoBzF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAKhC,MAAY,EACZ,KAA+F,EAC/F,KAA0F,EAC1F,EAAE;IACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE;QAChC,oBAAoB,EAAE,wBAAwB,CAAS,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;KAC7E,CAKA,CAAC;IAEF,MAAM,QAAQ,GAAG,GAAG,EAAE,CACpB,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE;QACzB,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;YACf,MAAM,KAAK,GAAqB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YACpD,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,QAAQ;gBAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QACJ,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI;KAC1B,CAAC,CAAC;IAEL;;;;OAIG;IACH,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,OAAe,EAAE,KAAyB,EAAE,IAAc,EAAE,EAAE;QACzF,IAAI,IAAI,KAAK,SAAS;YAAE,OAAQ,QAAgB,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACpE,MAAM,GAAG,GAAI,QAAgB,EAAE,CAAC,EAAE,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC,MAAM,CAAC;SAAQ,EAAE,OAAO,EAAE;YACtC,SAAS,EAAE,EAAE;YACb,IAAI,EAAE,CAAC,KAAwB,EAAE,IAAa,EAAE,EAAE,CAChD,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAmC;SAC1D,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACzC,CAAC,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The runtime context of something a pool hosts (an entity, a workflow):
|
|
3
|
+
* while deploying, its pool Layer registers how to deploy it, and it is
|
|
4
|
+
* deployed once its Construction phase has run; on a runner, the built
|
|
5
|
+
* class is kept for the runner to run.
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
import { type HostRuntimeContext } from "alchemy/Runtime/Process";
|
|
10
|
+
import * as Context from "effect/Context";
|
|
11
|
+
import * as Effect from "effect/Effect";
|
|
12
|
+
/** Declares the pool resources for one hosted class, given its collected env. */
|
|
13
|
+
export type DeployToPool = (env: Record<string, unknown>) => Effect.Effect<void, never, any>;
|
|
14
|
+
export interface HostedRuntimeContext<Hosted> extends HostRuntimeContext {
|
|
15
|
+
readonly Type: string;
|
|
16
|
+
readonly alwaysServe: true;
|
|
17
|
+
/**
|
|
18
|
+
* Called by a pool Layer while the Construction phase runs: `deploy`
|
|
19
|
+
* declares the pool that hosts this class, once its env is collected.
|
|
20
|
+
*/
|
|
21
|
+
readonly registerPool: (deploy: DeployToPool) => Effect.Effect<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Called by a pool Layer with the services it was built with: those
|
|
24
|
+
* provided to it, like an entity's RPC middleware, stay with the class
|
|
25
|
+
* after the Construction phase that provided them ends.
|
|
26
|
+
*/
|
|
27
|
+
readonly provideServices: (services: Context.Context<never>) => Effect.Effect<void>;
|
|
28
|
+
/** At runtime, the built class, once its Construction phase has run. */
|
|
29
|
+
readonly hosted: () => Hosted | undefined;
|
|
30
|
+
}
|
|
31
|
+
/** A hosted class as its pool sees it: the resource, with its runtime context. */
|
|
32
|
+
export interface HostedClass {
|
|
33
|
+
readonly Type: string;
|
|
34
|
+
readonly LogicalId: string;
|
|
35
|
+
readonly Props: {
|
|
36
|
+
readonly main: string;
|
|
37
|
+
readonly handler?: string;
|
|
38
|
+
};
|
|
39
|
+
readonly registerPool: (deploy: DeployToPool) => Effect.Effect<void>;
|
|
40
|
+
readonly provideServices: (services: Context.Context<never>) => Effect.Effect<void>;
|
|
41
|
+
readonly bind: any;
|
|
42
|
+
}
|
|
43
|
+
declare const HasNoPool_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
44
|
+
readonly _tag: "Cluster.HasNoPool";
|
|
45
|
+
} & Readonly<A>;
|
|
46
|
+
/** The class was deployed without a pool Layer, so nothing would host it. */
|
|
47
|
+
export declare class HasNoPool extends HasNoPool_base<{
|
|
48
|
+
readonly message: string;
|
|
49
|
+
}> {
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* `build` turns what the Construction phase returned, the services it ran
|
|
53
|
+
* with and the class's props into what the runner runs. `check`, while
|
|
54
|
+
* deploying, fails the deploy when those services can't run it.
|
|
55
|
+
*/
|
|
56
|
+
export declare const makeHostedRuntimeContext: <Hosted>(typeId: string, build: (id: string, returned: unknown, context: Context.Context<never>, props: any) => Hosted, check?: (id: string, context: Context.Context<never>, props: any) => Effect.Effect<void>) => (id: string) => HostedRuntimeContext<Hosted>;
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=HostedRuntime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HostedRuntime.d.ts","sources":["../../src/internal/HostedRuntime.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE5F,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,iFAAiF;AACjF,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAE7F,MAAM,WAAW,oBAAoB,CAAC,MAAM,CAAE,SAAQ,kBAAkB;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrE;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpF,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CAC3C;AAED,kFAAkF;AAClF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,QAAQ,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrE,QAAQ,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpF,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;CACpB;;;;AAED,6EAA6E;AAC7E,qBAAa,SAAU,SAAQ,eAAsC;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;CAAG;AAEL;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GAClC,MAAM,UACG,MAAM,SACP,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,MAAM,UACrF,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAErF,MAAM,KAAG,oBAAoB,CAAC,MAAM,CAsDxC,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The runtime context of something a pool hosts (an entity, a workflow):
|
|
3
|
+
* while deploying, its pool Layer registers how to deploy it, and it is
|
|
4
|
+
* deployed once its Construction phase has run; on a runner, the built
|
|
5
|
+
* class is kept for the runner to run.
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
import { createHostRuntimeContext } from "alchemy/Runtime/Process";
|
|
10
|
+
import { Self } from "alchemy/Self";
|
|
11
|
+
import * as Context from "effect/Context";
|
|
12
|
+
import * as Data from "effect/Data";
|
|
13
|
+
import * as Effect from "effect/Effect";
|
|
14
|
+
import * as Option from "effect/Option";
|
|
15
|
+
import { PoolHost } from "./PoolHostService.js";
|
|
16
|
+
/** The class was deployed without a pool Layer, so nothing would host it. */
|
|
17
|
+
export class HasNoPool extends Data.TaggedError("Cluster.HasNoPool") {
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* `build` turns what the Construction phase returned, the services it ran
|
|
21
|
+
* with and the class's props into what the runner runs. `check`, while
|
|
22
|
+
* deploying, fails the deploy when those services can't run it.
|
|
23
|
+
*/
|
|
24
|
+
export const makeHostedRuntimeContext = (typeId, build, check) => (id) => {
|
|
25
|
+
const base = createHostRuntimeContext(typeId)(id);
|
|
26
|
+
let deploy;
|
|
27
|
+
let hosted;
|
|
28
|
+
let services = Context.empty();
|
|
29
|
+
const ctx = {
|
|
30
|
+
...base,
|
|
31
|
+
Type: typeId,
|
|
32
|
+
// The Construction phase returns what the runner runs rather than a
|
|
33
|
+
// handler shape: always hand it to `serve`.
|
|
34
|
+
alwaysServe: true,
|
|
35
|
+
registerPool: (next) => Effect.sync(() => {
|
|
36
|
+
deploy = next;
|
|
37
|
+
}),
|
|
38
|
+
provideServices: (next) => Effect.sync(() => {
|
|
39
|
+
services = Context.merge(services, next);
|
|
40
|
+
}),
|
|
41
|
+
hosted: () => hosted,
|
|
42
|
+
serve: (_handler, options) => Effect.gen(function* () {
|
|
43
|
+
// Runners provided to the class's Layer rather than its
|
|
44
|
+
// implementation: ask them to host it now.
|
|
45
|
+
const host = Option.getOrUndefined(yield* Effect.serviceOption(PoolHost));
|
|
46
|
+
const self = Option.getOrUndefined(yield* Effect.serviceOption(Self));
|
|
47
|
+
if (deploy === undefined && host !== undefined && self !== undefined) {
|
|
48
|
+
yield* host.host(self);
|
|
49
|
+
}
|
|
50
|
+
const context = Context.merge(services, yield* Effect.context());
|
|
51
|
+
// The props are on the resource, which `Self` is.
|
|
52
|
+
const props = self?.Props;
|
|
53
|
+
if (globalThis.__ALCHEMY_RUNTIME__) {
|
|
54
|
+
hosted = build(id, options?.shape, context, props);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (deploy === undefined) {
|
|
58
|
+
return yield* Effect.die(new HasNoPool({
|
|
59
|
+
message: `${typeId} '${id}' has no pool. Provide a pool Layer to its implementation, ` +
|
|
60
|
+
`for example ClusterDocker.SwarmPool("Default").`,
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
if (check !== undefined) {
|
|
64
|
+
yield* check(id, context, props);
|
|
65
|
+
}
|
|
66
|
+
// The Construction phase has run, so every Config value it read is in `env`.
|
|
67
|
+
yield* deploy(base.env);
|
|
68
|
+
}),
|
|
69
|
+
};
|
|
70
|
+
return ctx;
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=HostedRuntime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HostedRuntime.js","sources":["../../src/internal/HostedRuntime.ts"],"names":[],"mappings":"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"}
|