@opencode-ai/util 0.0.0-dev-18758 → 0.0.0-dev-18759

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.
@@ -1,3 +1,3 @@
1
1
  import { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner";
2
- export declare const node: import("./effect/layer-node.js").Node<ChildProcessSpawner, never, import("./effect/layer-node.js").Tag<"global">>;
2
+ export declare const node: import("./effect/layer-node.js").Provider<ChildProcessSpawner, never, import("./effect/layer-node.js").Tag<"global">>;
3
3
  export * as CrossSpawnSpawner from "./cross-spawn-spawner.js";
@@ -1,6 +1,6 @@
1
1
  import { FileSystem, Path } from "effect";
2
2
  import { HttpClient } from "effect/unstable/http";
3
- export declare const filesystem: import("./layer-node.js").Node<FileSystem.FileSystem, never, import("./layer-node.js").Tag<"global">>;
4
- export declare const path: import("./layer-node.js").Node<Path.Path, never, import("./layer-node.js").Tag<"global">>;
5
- export declare const httpClient: import("./layer-node.js").Node<HttpClient.HttpClient, never, import("./layer-node.js").Tag<"global">>;
3
+ export declare const filesystem: import("./layer-node.js").Provider<FileSystem.FileSystem, never, import("./layer-node.js").Tag<"global">>;
4
+ export declare const path: import("./layer-node.js").Provider<Path.Path, never, import("./layer-node.js").Tag<"global">>;
5
+ export declare const httpClient: import("./layer-node.js").Provider<HttpClient.HttpClient, never, import("./layer-node.js").Tag<"global">>;
6
6
  export * as LayerNodePlatform from "./app-node-platform.js";
@@ -3,48 +3,60 @@ export declare const tags: LayerNode.Tags<{
3
3
  readonly location: readonly ["global"];
4
4
  readonly global: readonly [];
5
5
  }>;
6
- export type GlobalNode<A, E = never> = LayerNode.Node<A, E, (typeof tags.values)["global"]>;
7
- export type LocationNode<A, E = never> = LayerNode.Node<A, E, (typeof tags.values)["location"]>;
8
- export declare const makeGlobalNode: <const Implementation extends import("effect/Layer").Any, const Items extends readonly [] | readonly [LayerNode.Node<unknown, unknown, any>, ...LayerNode.Node<unknown, unknown, any>[]]>(input: (Omit<{
6
+ export type GlobalGraph<A, E = never> = LayerNode.Graph<A, E, (typeof tags.values)["global"]>;
7
+ export type LocationGraph<A, E = never> = LayerNode.Graph<A, E, (typeof tags.values)["location"]>;
8
+ export declare const makeGlobalNode: <const Implementation extends import("effect/Layer").Any, const Items extends readonly [] | readonly [/*elided*/ any, .../*elided*/ any[]]>(input: (Omit<{
9
9
  readonly service: import("effect/Context").Service.Any;
10
10
  readonly name?: never;
11
11
  } & {
12
- readonly layer: Implementation;
13
- readonly deps: Items & ([Exclude<import("effect/Layer").Services<Implementation>, LayerNode.Output<NoInfer<Items>[number]>>] extends [never] ? unknown : {
14
- readonly "Missing dependencies": Exclude<import("effect/Layer").Services<Implementation>, LayerNode.Output<NoInfer<Items>[number]>>;
12
+ readonly tag: LayerNode.Tag<"global">;
13
+ } & {
14
+ readonly layer: Implementation & ([NoInfer<Implementation>] extends [import("effect/Layer").Layer<never, unknown, unknown>] ? unknown : {
15
+ readonly "Layer contract must be preserved": NoInfer<Implementation>;
16
+ });
17
+ readonly deps: Items & ([Exclude<import("effect/Layer").Services<Implementation>, [NoInfer<Items>] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? /*elided*/ any : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T ? T extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T extends unknown ? [Head] extends [LayerNode.Graph<T, unknown, LayerNode.Tag<string> | undefined>] ? T : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_1 ? T_1 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_1 extends unknown ? [Head] extends [LayerNode.Graph<T_1, unknown, LayerNode.Tag<string> | undefined>] ? T_1 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_2 ? T_2 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_2 extends unknown ? [Head] extends [LayerNode.Graph<T_2, unknown, LayerNode.Tag<string> | undefined>] ? T_2 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_3 ? T_3 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_3 extends unknown ? [Head] extends [LayerNode.Graph<T_3, unknown, LayerNode.Tag<string> | undefined>] ? T_3 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_4 ? T_4 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_4 extends unknown ? [Head] extends [LayerNode.Graph<T_4, unknown, LayerNode.Tag<string> | undefined>] ? T_4 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_5 ? T_5 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_5 extends unknown ? [Head] extends [LayerNode.Graph<T_5, unknown, LayerNode.Tag<string> | undefined>] ? T_5 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_6 ? T_6 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_6 extends unknown ? [Head] extends [LayerNode.Graph<T_6, unknown, LayerNode.Tag<string> | undefined>] ? T_6 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_7 ? T_7 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_7 extends unknown ? [Head] extends [LayerNode.Graph<T_7, unknown, LayerNode.Tag<string> | undefined>] ? T_7 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_8 ? T_8 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_8 extends unknown ? [Head] extends [LayerNode.Graph<T_8, unknown, LayerNode.Tag<string> | undefined>] ? T_8 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_9 ? T_9 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_9 extends unknown ? [Head] extends [LayerNode.Graph<T_9, unknown, LayerNode.Tag<string> | undefined>] ? T_9 : never : never : never : never : never>] extends [never] ? unknown : {
18
+ readonly "Missing dependencies": Exclude<import("effect/Layer").Services<Implementation>, [NoInfer<Items>] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? /*elided*/ any : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_10 ? T_10 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_10 extends unknown ? [Head] extends [LayerNode.Graph<T_10, unknown, LayerNode.Tag<string> | undefined>] ? T_10 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_11 ? T_11 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_11 extends unknown ? [Head] extends [LayerNode.Graph<T_11, unknown, LayerNode.Tag<string> | undefined>] ? T_11 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_12 ? T_12 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_12 extends unknown ? [Head] extends [LayerNode.Graph<T_12, unknown, LayerNode.Tag<string> | undefined>] ? T_12 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_13 ? T_13 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_13 extends unknown ? [Head] extends [LayerNode.Graph<T_13, unknown, LayerNode.Tag<string> | undefined>] ? T_13 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_14 ? T_14 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_14 extends unknown ? [Head] extends [LayerNode.Graph<T_14, unknown, LayerNode.Tag<string> | undefined>] ? T_14 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_15 ? T_15 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_15 extends unknown ? [Head] extends [LayerNode.Graph<T_15, unknown, LayerNode.Tag<string> | undefined>] ? T_15 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_16 ? T_16 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_16 extends unknown ? [Head] extends [LayerNode.Graph<T_16, unknown, LayerNode.Tag<string> | undefined>] ? T_16 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_17 ? T_17 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_17 extends unknown ? [Head] extends [LayerNode.Graph<T_17, unknown, LayerNode.Tag<string> | undefined>] ? T_17 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_18 ? T_18 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_18 extends unknown ? [Head] extends [LayerNode.Graph<T_18, unknown, LayerNode.Tag<string> | undefined>] ? T_18 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_19 ? T_19 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_19 extends unknown ? [Head] extends [LayerNode.Graph<T_19, unknown, LayerNode.Tag<string> | undefined>] ? T_19 : never : never : never : never : never>;
15
19
  });
16
- readonly tag?: LayerNode.Tag<"global"> | undefined;
17
20
  }, "tag"> | Omit<{
18
21
  readonly name: string;
19
22
  readonly service?: never;
20
23
  } & {
21
- readonly layer: Implementation;
22
- readonly deps: Items & ([Exclude<import("effect/Layer").Services<Implementation>, LayerNode.Output<NoInfer<Items>[number]>>] extends [never] ? unknown : {
23
- readonly "Missing dependencies": Exclude<import("effect/Layer").Services<Implementation>, LayerNode.Output<NoInfer<Items>[number]>>;
24
+ readonly tag: LayerNode.Tag<"global">;
25
+ } & {
26
+ readonly layer: Implementation & ([NoInfer<Implementation>] extends [import("effect/Layer").Layer<never, unknown, unknown>] ? unknown : {
27
+ readonly "Layer contract must be preserved": NoInfer<Implementation>;
28
+ });
29
+ readonly deps: Items & ([Exclude<import("effect/Layer").Services<Implementation>, [NoInfer<Items>] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? /*elided*/ any : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_20 ? T_20 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_20 extends unknown ? [Head] extends [LayerNode.Graph<T_20, unknown, LayerNode.Tag<string> | undefined>] ? T_20 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_21 ? T_21 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_21 extends unknown ? [Head] extends [LayerNode.Graph<T_21, unknown, LayerNode.Tag<string> | undefined>] ? T_21 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_22 ? T_22 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_22 extends unknown ? [Head] extends [LayerNode.Graph<T_22, unknown, LayerNode.Tag<string> | undefined>] ? T_22 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_23 ? T_23 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_23 extends unknown ? [Head] extends [LayerNode.Graph<T_23, unknown, LayerNode.Tag<string> | undefined>] ? T_23 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_24 ? T_24 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_24 extends unknown ? [Head] extends [LayerNode.Graph<T_24, unknown, LayerNode.Tag<string> | undefined>] ? T_24 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_25 ? T_25 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_25 extends unknown ? [Head] extends [LayerNode.Graph<T_25, unknown, LayerNode.Tag<string> | undefined>] ? T_25 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_26 ? T_26 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_26 extends unknown ? [Head] extends [LayerNode.Graph<T_26, unknown, LayerNode.Tag<string> | undefined>] ? T_26 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_27 ? T_27 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_27 extends unknown ? [Head] extends [LayerNode.Graph<T_27, unknown, LayerNode.Tag<string> | undefined>] ? T_27 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_28 ? T_28 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_28 extends unknown ? [Head] extends [LayerNode.Graph<T_28, unknown, LayerNode.Tag<string> | undefined>] ? T_28 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_29 ? T_29 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_29 extends unknown ? [Head] extends [LayerNode.Graph<T_29, unknown, LayerNode.Tag<string> | undefined>] ? T_29 : never : never : never : never : never>] extends [never] ? unknown : {
30
+ readonly "Missing dependencies": Exclude<import("effect/Layer").Services<Implementation>, [NoInfer<Items>] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? /*elided*/ any : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_30 ? T_30 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_30 extends unknown ? [Head] extends [LayerNode.Graph<T_30, unknown, LayerNode.Tag<string> | undefined>] ? T_30 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_31 ? T_31 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_31 extends unknown ? [Head] extends [LayerNode.Graph<T_31, unknown, LayerNode.Tag<string> | undefined>] ? T_31 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_32 ? T_32 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_32 extends unknown ? [Head] extends [LayerNode.Graph<T_32, unknown, LayerNode.Tag<string> | undefined>] ? T_32 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_33 ? T_33 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_33 extends unknown ? [Head] extends [LayerNode.Graph<T_33, unknown, LayerNode.Tag<string> | undefined>] ? T_33 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_34 ? T_34 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_34 extends unknown ? [Head] extends [LayerNode.Graph<T_34, unknown, LayerNode.Tag<string> | undefined>] ? T_34 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_35 ? T_35 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_35 extends unknown ? [Head] extends [LayerNode.Graph<T_35, unknown, LayerNode.Tag<string> | undefined>] ? T_35 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_36 ? T_36 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_36 extends unknown ? [Head] extends [LayerNode.Graph<T_36, unknown, LayerNode.Tag<string> | undefined>] ? T_36 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_37 ? T_37 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_37 extends unknown ? [Head] extends [LayerNode.Graph<T_37, unknown, LayerNode.Tag<string> | undefined>] ? T_37 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_38 ? T_38 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_38 extends unknown ? [Head] extends [LayerNode.Graph<T_38, unknown, LayerNode.Tag<string> | undefined>] ? T_38 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_39 ? T_39 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_39 extends unknown ? [Head] extends [LayerNode.Graph<T_39, unknown, LayerNode.Tag<string> | undefined>] ? T_39 : never : never : never : never : never>;
24
31
  });
25
- readonly tag?: LayerNode.Tag<"global"> | undefined;
26
- }, "tag">) & ([Exclude<Items[number], LayerNode.Node<unknown, unknown, LayerNode.Tag<"global"> | undefined>>] extends [never] ? unknown : {
27
- readonly "Invalid tag dependencies": Exclude<Items[number], LayerNode.Node<unknown, unknown, LayerNode.Tag<"global"> | undefined>>;
28
- })) => LayerNode.Node<import("effect/Layer").Success<Implementation>, import("effect/Layer").Error<Implementation> | LayerNode.Error<Items[number]>, LayerNode.Tag<"global">>;
29
- export declare const makeLocationNode: <const Implementation extends import("effect/Layer").Any, const Items extends readonly [] | readonly [LayerNode.Node<unknown, unknown, any>, ...LayerNode.Node<unknown, unknown, any>[]]>(input: (Omit<{
32
+ }, "tag">) & ([Exclude<[Items[number]] extends [never] ? undefined : Items[number] extends infer T_40 ? T_40 extends Items[number] ? T_40 extends LayerNode.Graph<never, unknown, infer T_41 extends LayerNode.Tag<string> | undefined> ? T_41 : never : never : never, LayerNode.Tag<"global"> | undefined>] extends [never] ? unknown : {
33
+ readonly "Invalid tag dependencies": Exclude<[Items[number]] extends [never] ? undefined : Items[number] extends infer T_42 ? T_42 extends Items[number] ? T_42 extends LayerNode.Graph<never, unknown, infer T_41 extends LayerNode.Tag<string> | undefined> ? T_41 : never : never : never, LayerNode.Tag<"global"> | undefined>;
34
+ })) => LayerNode.Provider<import("effect/Layer").Success<Implementation> extends infer T_43 ? T_43 extends import("effect/Layer").Success<Implementation> ? T_43 extends unknown ? [Implementation] extends [import("effect/Layer").Layer<T_43, unknown, unknown>] ? T_43 : never : never : never : never, import("effect/Layer").Error<Implementation> | LayerNode.Error<Items[number]>, LayerNode.Tag<"global">>;
35
+ export declare const makeLocationNode: <const Implementation extends import("effect/Layer").Any, const Items extends readonly [] | readonly [/*elided*/ any, .../*elided*/ any[]]>(input: (Omit<{
30
36
  readonly service: import("effect/Context").Service.Any;
31
37
  readonly name?: never;
32
38
  } & {
33
- readonly layer: Implementation;
34
- readonly deps: Items & ([Exclude<import("effect/Layer").Services<Implementation>, LayerNode.Output<NoInfer<Items>[number]>>] extends [never] ? unknown : {
35
- readonly "Missing dependencies": Exclude<import("effect/Layer").Services<Implementation>, LayerNode.Output<NoInfer<Items>[number]>>;
39
+ readonly tag: LayerNode.Tag<"location">;
40
+ } & {
41
+ readonly layer: Implementation & ([NoInfer<Implementation>] extends [import("effect/Layer").Layer<never, unknown, unknown>] ? unknown : {
42
+ readonly "Layer contract must be preserved": NoInfer<Implementation>;
43
+ });
44
+ readonly deps: Items & ([Exclude<import("effect/Layer").Services<Implementation>, [NoInfer<Items>] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? /*elided*/ any : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T ? T extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T extends unknown ? [Head] extends [LayerNode.Graph<T, unknown, LayerNode.Tag<string> | undefined>] ? T : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_1 ? T_1 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_1 extends unknown ? [Head] extends [LayerNode.Graph<T_1, unknown, LayerNode.Tag<string> | undefined>] ? T_1 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_2 ? T_2 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_2 extends unknown ? [Head] extends [LayerNode.Graph<T_2, unknown, LayerNode.Tag<string> | undefined>] ? T_2 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_3 ? T_3 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_3 extends unknown ? [Head] extends [LayerNode.Graph<T_3, unknown, LayerNode.Tag<string> | undefined>] ? T_3 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_4 ? T_4 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_4 extends unknown ? [Head] extends [LayerNode.Graph<T_4, unknown, LayerNode.Tag<string> | undefined>] ? T_4 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_5 ? T_5 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_5 extends unknown ? [Head] extends [LayerNode.Graph<T_5, unknown, LayerNode.Tag<string> | undefined>] ? T_5 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_6 ? T_6 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_6 extends unknown ? [Head] extends [LayerNode.Graph<T_6, unknown, LayerNode.Tag<string> | undefined>] ? T_6 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_7 ? T_7 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_7 extends unknown ? [Head] extends [LayerNode.Graph<T_7, unknown, LayerNode.Tag<string> | undefined>] ? T_7 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_8 ? T_8 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_8 extends unknown ? [Head] extends [LayerNode.Graph<T_8, unknown, LayerNode.Tag<string> | undefined>] ? T_8 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_9 ? T_9 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_9 extends unknown ? [Head] extends [LayerNode.Graph<T_9, unknown, LayerNode.Tag<string> | undefined>] ? T_9 : never : never : never : never : never>] extends [never] ? unknown : {
45
+ readonly "Missing dependencies": Exclude<import("effect/Layer").Services<Implementation>, [NoInfer<Items>] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? /*elided*/ any : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_10 ? T_10 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_10 extends unknown ? [Head] extends [LayerNode.Graph<T_10, unknown, LayerNode.Tag<string> | undefined>] ? T_10 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_11 ? T_11 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_11 extends unknown ? [Head] extends [LayerNode.Graph<T_11, unknown, LayerNode.Tag<string> | undefined>] ? T_11 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_12 ? T_12 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_12 extends unknown ? [Head] extends [LayerNode.Graph<T_12, unknown, LayerNode.Tag<string> | undefined>] ? T_12 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_13 ? T_13 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_13 extends unknown ? [Head] extends [LayerNode.Graph<T_13, unknown, LayerNode.Tag<string> | undefined>] ? T_13 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_14 ? T_14 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_14 extends unknown ? [Head] extends [LayerNode.Graph<T_14, unknown, LayerNode.Tag<string> | undefined>] ? T_14 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_15 ? T_15 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_15 extends unknown ? [Head] extends [LayerNode.Graph<T_15, unknown, LayerNode.Tag<string> | undefined>] ? T_15 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_16 ? T_16 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_16 extends unknown ? [Head] extends [LayerNode.Graph<T_16, unknown, LayerNode.Tag<string> | undefined>] ? T_16 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_17 ? T_17 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_17 extends unknown ? [Head] extends [LayerNode.Graph<T_17, unknown, LayerNode.Tag<string> | undefined>] ? T_17 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_18 ? T_18 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_18 extends unknown ? [Head] extends [LayerNode.Graph<T_18, unknown, LayerNode.Tag<string> | undefined>] ? T_18 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_19 ? T_19 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_19 extends unknown ? [Head] extends [LayerNode.Graph<T_19, unknown, LayerNode.Tag<string> | undefined>] ? T_19 : never : never : never : never : never>;
36
46
  });
37
- readonly tag?: LayerNode.Tag<"location"> | undefined;
38
47
  }, "tag"> | Omit<{
39
48
  readonly name: string;
40
49
  readonly service?: never;
41
50
  } & {
42
- readonly layer: Implementation;
43
- readonly deps: Items & ([Exclude<import("effect/Layer").Services<Implementation>, LayerNode.Output<NoInfer<Items>[number]>>] extends [never] ? unknown : {
44
- readonly "Missing dependencies": Exclude<import("effect/Layer").Services<Implementation>, LayerNode.Output<NoInfer<Items>[number]>>;
51
+ readonly tag: LayerNode.Tag<"location">;
52
+ } & {
53
+ readonly layer: Implementation & ([NoInfer<Implementation>] extends [import("effect/Layer").Layer<never, unknown, unknown>] ? unknown : {
54
+ readonly "Layer contract must be preserved": NoInfer<Implementation>;
55
+ });
56
+ readonly deps: Items & ([Exclude<import("effect/Layer").Services<Implementation>, [NoInfer<Items>] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? /*elided*/ any : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_20 ? T_20 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_20 extends unknown ? [Head] extends [LayerNode.Graph<T_20, unknown, LayerNode.Tag<string> | undefined>] ? T_20 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_21 ? T_21 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_21 extends unknown ? [Head] extends [LayerNode.Graph<T_21, unknown, LayerNode.Tag<string> | undefined>] ? T_21 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_22 ? T_22 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_22 extends unknown ? [Head] extends [LayerNode.Graph<T_22, unknown, LayerNode.Tag<string> | undefined>] ? T_22 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_23 ? T_23 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_23 extends unknown ? [Head] extends [LayerNode.Graph<T_23, unknown, LayerNode.Tag<string> | undefined>] ? T_23 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_24 ? T_24 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_24 extends unknown ? [Head] extends [LayerNode.Graph<T_24, unknown, LayerNode.Tag<string> | undefined>] ? T_24 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_25 ? T_25 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_25 extends unknown ? [Head] extends [LayerNode.Graph<T_25, unknown, LayerNode.Tag<string> | undefined>] ? T_25 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_26 ? T_26 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_26 extends unknown ? [Head] extends [LayerNode.Graph<T_26, unknown, LayerNode.Tag<string> | undefined>] ? T_26 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_27 ? T_27 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_27 extends unknown ? [Head] extends [LayerNode.Graph<T_27, unknown, LayerNode.Tag<string> | undefined>] ? T_27 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_28 ? T_28 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_28 extends unknown ? [Head] extends [LayerNode.Graph<T_28, unknown, LayerNode.Tag<string> | undefined>] ? T_28 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_29 ? T_29 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_29 extends unknown ? [Head] extends [LayerNode.Graph<T_29, unknown, LayerNode.Tag<string> | undefined>] ? T_29 : never : never : never : never : never>] extends [never] ? unknown : {
57
+ readonly "Missing dependencies": Exclude<import("effect/Layer").Services<Implementation>, [NoInfer<Items>] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? [Tail] extends [readonly [infer Head extends /*elided*/ any, ...infer Tail extends readonly /*elided*/ any[]]] ? /*elided*/ any : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_30 ? T_30 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_30 extends unknown ? [Head] extends [LayerNode.Graph<T_30, unknown, LayerNode.Tag<string> | undefined>] ? T_30 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_31 ? T_31 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_31 extends unknown ? [Head] extends [LayerNode.Graph<T_31, unknown, LayerNode.Tag<string> | undefined>] ? T_31 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_32 ? T_32 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_32 extends unknown ? [Head] extends [LayerNode.Graph<T_32, unknown, LayerNode.Tag<string> | undefined>] ? T_32 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_33 ? T_33 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_33 extends unknown ? [Head] extends [LayerNode.Graph<T_33, unknown, LayerNode.Tag<string> | undefined>] ? T_33 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_34 ? T_34 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_34 extends unknown ? [Head] extends [LayerNode.Graph<T_34, unknown, LayerNode.Tag<string> | undefined>] ? T_34 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_35 ? T_35 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_35 extends unknown ? [Head] extends [LayerNode.Graph<T_35, unknown, LayerNode.Tag<string> | undefined>] ? T_35 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_36 ? T_36 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_36 extends unknown ? [Head] extends [LayerNode.Graph<T_36, unknown, LayerNode.Tag<string> | undefined>] ? T_36 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_37 ? T_37 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_37 extends unknown ? [Head] extends [LayerNode.Graph<T_37, unknown, LayerNode.Tag<string> | undefined>] ? T_37 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_38 ? T_38 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_38 extends unknown ? [Head] extends [LayerNode.Graph<T_38, unknown, LayerNode.Tag<string> | undefined>] ? T_38 : never : never : never : never : (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) extends infer T_39 ? T_39 extends (Head extends LayerNode.Graph<infer A, unknown, LayerNode.Tag<string> | undefined> ? A : never) ? T_39 extends unknown ? [Head] extends [LayerNode.Graph<T_39, unknown, LayerNode.Tag<string> | undefined>] ? T_39 : never : never : never : never : never>;
45
58
  });
46
- readonly tag?: LayerNode.Tag<"location"> | undefined;
47
- }, "tag">) & ([Exclude<Items[number], LayerNode.Node<unknown, unknown, LayerNode.Tag<"location" | "global"> | undefined>>] extends [never] ? unknown : {
48
- readonly "Invalid tag dependencies": Exclude<Items[number], LayerNode.Node<unknown, unknown, LayerNode.Tag<"location" | "global"> | undefined>>;
49
- })) => LayerNode.Node<import("effect/Layer").Success<Implementation>, import("effect/Layer").Error<Implementation> | LayerNode.Error<Items[number]>, LayerNode.Tag<"location">>;
59
+ }, "tag">) & ([Exclude<[Items[number]] extends [never] ? undefined : Items[number] extends infer T_40 ? T_40 extends Items[number] ? T_40 extends LayerNode.Graph<never, unknown, infer T_41 extends LayerNode.Tag<string> | undefined> ? T_41 : never : never : never, LayerNode.Tag<"location" | "global"> | undefined>] extends [never] ? unknown : {
60
+ readonly "Invalid tag dependencies": Exclude<[Items[number]] extends [never] ? undefined : Items[number] extends infer T_42 ? T_42 extends Items[number] ? T_42 extends LayerNode.Graph<never, unknown, infer T_41 extends LayerNode.Tag<string> | undefined> ? T_41 : never : never : never, LayerNode.Tag<"location" | "global"> | undefined>;
61
+ })) => LayerNode.Provider<import("effect/Layer").Success<Implementation> extends infer T_43 ? T_43 extends import("effect/Layer").Success<Implementation> ? T_43 extends unknown ? [Implementation] extends [import("effect/Layer").Layer<T_43, unknown, unknown>] ? T_43 : never : never : never : never, import("effect/Layer").Error<Implementation> | LayerNode.Error<Items[number]>, LayerNode.Tag<"location">>;
50
62
  export * as Node from "./app-node.js";
@@ -1,79 +1,135 @@
1
1
  import { Brand, Context, Layer } from "effect";
2
- type AnyNode = Node<unknown, unknown, any>;
3
- type NodeList<Item extends AnyNode = AnyNode> = readonly [] | readonly [Item, ...Item[]];
4
- export type Output<Item> = [Item] extends [never] ? never : Item extends Node<infer A, unknown, any> ? A : never;
5
- export type Error<Item> = [Item] extends [never] ? never : Item extends Node<unknown, infer E, any> ? E : never;
6
- type NodeTag<Item> = [Item] extends [never] ? undefined : Item extends Node<unknown, unknown, infer T> ? T : never;
7
- type Missing<Required, Dependencies extends NodeList> = Exclude<Required, Output<Dependencies[number]>>;
8
- type CheckDependencies<Implementation extends Layer.Any, Dependencies extends NodeList> = [
9
- Missing<Layer.Services<Implementation>, Dependencies>
10
- ] extends [never] ? unknown : {
11
- readonly "Missing dependencies": Missing<Layer.Services<Implementation>, Dependencies>;
12
- };
13
- declare const $OutputType: unique symbol;
14
- declare const $ErrorType: unique symbol;
2
+ export * as LayerNode from "./layer-node.js";
3
+ declare const GraphTypeId: unique symbol;
4
+ declare const VarianceTypeId: unique symbol;
5
+ declare const NodeTypeId: unique symbol;
6
+ declare const ReplacementTypeId: unique symbol;
15
7
  export type Tag<Name extends string = string> = Name & Brand.Brand<"LayerNode.Tag">;
16
- export interface Node<A, E = never, T extends Tag | undefined = undefined> {
17
- readonly kind: "layer" | "unbound" | "group";
8
+ export type Graph<A, E = never, T extends Tag | undefined = Tag | undefined> = GraphValue<A, E, T>;
9
+ export type Node<A, E = never, T extends Tag | undefined = undefined> = NodeValue<A, E, T>;
10
+ export type Provider<A, E = never, T extends Tag | undefined = undefined> = ProviderNode<A, E, T>;
11
+ export type Replacement = ReplacementValue;
12
+ export type Replacements = readonly Replacement[];
13
+ type AnyGraph = Graph<never, unknown>;
14
+ type AnyNode = AnyGraph & {
15
+ readonly [NodeTypeId]: unknown;
16
+ readonly tag: Tag | undefined;
17
+ };
18
+ type RuntimeLayer = Layer.Layer<never, unknown, unknown>;
19
+ type GraphList = readonly [] | readonly [AnyGraph, ...AnyGraph[]];
20
+ export type Output<Item> = CommonOutput<Item, Item extends Graph<infer A, unknown> ? A : never>;
21
+ export type Error<Item> = Item extends Graph<never, infer E> ? E : never;
22
+ type GraphTag<Item> = [Item] extends [never] ? undefined : Item extends Graph<never, unknown, infer T> ? T : never;
23
+ type CommonOutput<Item, A> = A extends unknown ? ([Item] extends [Graph<A, unknown>] ? A : never) : never;
24
+ type LayerOutput<Item extends Layer.Any, A = Layer.Success<Item>> = A extends unknown ? [Item] extends [Layer.Layer<A, unknown, unknown>] ? A : never : never;
25
+ type ListOutput<Items extends readonly AnyGraph[], A = never> = [Items] extends [
26
+ readonly [infer Head extends AnyGraph, ...infer Tail extends readonly AnyGraph[]]
27
+ ] ? ListOutput<Tail, A | Output<Head>> : A;
28
+ type Definition = {
29
+ readonly kind: "group";
30
+ readonly name: string;
31
+ readonly dependencies: readonly AnyGraph[];
32
+ } | {
33
+ readonly kind: "unbound";
34
+ readonly name: string;
35
+ } | {
36
+ readonly kind: "layer";
18
37
  readonly name: string;
19
- readonly service?: Context.Service.Any;
20
- readonly implementation?: Layer.Any;
21
- readonly dependencies: readonly AnyNode[];
22
- readonly tag?: T;
23
- readonly [$OutputType]?: () => A;
24
- readonly [$ErrorType]?: () => E;
38
+ readonly implementation: RuntimeLayer;
39
+ readonly dependencies: readonly AnyGraph[];
40
+ };
41
+ declare class GraphValue<in A, out E, out T extends Tag | undefined> {
42
+ private readonly graph;
43
+ readonly [VarianceTypeId]: {
44
+ readonly output: (_: A) => void;
45
+ readonly error: () => E;
46
+ readonly tags: () => T;
47
+ };
48
+ readonly [GraphTypeId]: Definition;
49
+ constructor(definition: Definition);
50
+ get name(): string;
51
+ }
52
+ declare class NodeValue<in out A, in out E, in out T extends Tag | undefined> extends GraphValue<A, E, T> {
53
+ readonly tag: T;
54
+ readonly [NodeTypeId]: (_: [A, E, T]) => [A, E, T];
55
+ constructor(definition: Exclude<Definition, {
56
+ kind: "group";
57
+ }>, tag: T);
58
+ /** Replace this declaration, including every dependency on it, without acquiring its old wiring. */
59
+ replace<const Target extends AnyNode | Layer.Any>(this: Node<A, E, T>, replacement: Target & CheckReplacement<A, E, T, Target>): Replacement;
60
+ }
61
+ declare class ProviderNode<in out A, in out E, in out T extends Tag | undefined> extends NodeValue<A, E, T> {
62
+ /** Decorate the implementation while preserving its dependency wiring and service contract. */
63
+ mapLayer(this: Provider<A, E, T>, f: <R>(layer: Layer.Layer<A, E, R>) => Layer.Layer<A, E, R>): Provider<A, E, T>;
25
64
  }
26
- type NodeIdentity = {
65
+ declare class ReplacementValue {
66
+ private readonly checked;
67
+ readonly [ReplacementTypeId]: {
68
+ readonly source: AnyNode;
69
+ readonly target: AnyNode;
70
+ };
71
+ constructor(source: AnyNode, target: AnyNode);
72
+ }
73
+ type CheckErrors<Expected, Actual> = [Exclude<Actual, Expected>] extends [never] ? never : {
74
+ readonly "New replacement errors": Exclude<Actual, Expected>;
75
+ };
76
+ type CheckReplacement<A, E, T, Target> = [ReplacementErrors<A, E, T, Target>] extends [never] ? unknown : ReplacementErrors<A, E, T, Target>;
77
+ type ReplacementErrors<A, E, T, Target> = Target extends AnyNode ? [Exclude<A, Output<Target>>] extends [never] ? [GraphTag<Target>] extends [T] ? CheckErrors<E, Error<Target>> : {
78
+ readonly "Invalid replacement tag": GraphTag<Target>;
79
+ } : {
80
+ readonly "Missing replacement outputs": Exclude<A, Output<Target>>;
81
+ } : Target extends Layer.Layer<A, infer E2, never> ? CheckErrors<E, E2> : {
82
+ readonly "Replacement must be a closed layer": Target;
83
+ };
84
+ type CheckDependencies<Implementation extends Layer.Any, Items extends GraphList> = [
85
+ Exclude<Layer.Services<Implementation>, ListOutput<Items>>
86
+ ] extends [never] ? unknown : {
87
+ readonly "Missing dependencies": Exclude<Layer.Services<Implementation>, ListOutput<Items>>;
88
+ };
89
+ type Identity = {
27
90
  readonly service: Context.Service.Any;
28
91
  readonly name?: never;
29
92
  } | {
30
93
  readonly name: string;
31
94
  readonly service?: never;
32
95
  };
96
+ type CheckLayer<Implementation> = [Implementation] extends [RuntimeLayer] ? unknown : {
97
+ readonly "Layer contract must be preserved": Implementation;
98
+ };
99
+ type TagInput<T> = {
100
+ readonly tag: T;
101
+ } | ([T] extends [undefined] ? {
102
+ readonly tag?: undefined;
103
+ } : never);
104
+ type MakeInput<Implementation extends Layer.Any, Items extends GraphList, T extends Tag | undefined> = Identity & TagInput<T> & {
105
+ readonly layer: Implementation & CheckLayer<NoInfer<Implementation>>;
106
+ readonly deps: Items & CheckDependencies<Implementation, NoInfer<Items>>;
107
+ };
33
108
  type DistributiveOmit<A, K extends PropertyKey> = A extends unknown ? Omit<A, K> : never;
34
109
  export type TagConfig = Readonly<Record<string, readonly string[]>>;
35
110
  type TagNames<Config extends TagConfig> = keyof Config & string;
36
- type NodeInTags<Names extends string> = Node<unknown, unknown, Tag<Names> | undefined>;
37
- type CheckTags<Items extends NodeList, Names extends string> = [Exclude<Items[number], NodeInTags<Names>>] extends [
38
- never
39
- ] ? unknown : {
40
- readonly "Invalid tag dependencies": Exclude<Items[number], NodeInTags<Names>>;
111
+ type CheckTags<Items extends GraphList, Names extends string> = [
112
+ Exclude<GraphTag<Items[number]>, Tag<Names> | undefined>
113
+ ] extends [never] ? unknown : {
114
+ readonly "Invalid tag dependencies": Exclude<GraphTag<Items[number]>, Tag<Names> | undefined>;
41
115
  };
42
116
  export interface Tags<Config extends TagConfig> {
43
117
  readonly values: {
44
118
  readonly [Name in TagNames<Config>]: Tag<Name>;
45
119
  };
46
- readonly make: <Name extends TagNames<Config>>(name: Name) => <const Implementation extends Layer.Any, const Items extends NodeList>(input: DistributiveOmit<MakeInput<Implementation, Items, Tag<Name>>, "tag"> & CheckTags<Items, Name | Extract<Config[Name][number], string>>) => Node<Layer.Success<Implementation>, Layer.Error<Implementation> | Error<Items[number]>, Tag<Name>>;
120
+ readonly make: <Name extends TagNames<Config>>(name: Name) => <const Implementation extends Layer.Any, const Items extends GraphList>(input: DistributiveOmit<MakeInput<Implementation, Items, Tag<Name>>, "tag"> & CheckTags<Items, Name | Extract<Config[Name][number], string>>) => Provider<LayerOutput<Implementation>, Layer.Error<Implementation> | Error<Items[number]>, Tag<Name>>;
47
121
  }
48
122
  export declare function tags<const Config extends {
49
123
  readonly [Name in keyof Config]: readonly (keyof Config & string)[];
50
124
  }>(config: Config): Tags<Config>;
51
- type MakeInput<Implementation extends Layer.Any, Items extends NodeList, T extends Tag | undefined = undefined> = NodeIdentity & {
52
- readonly layer: Implementation;
53
- readonly deps: Items & CheckDependencies<Implementation, NoInfer<Items>>;
54
- readonly tag?: T;
55
- };
56
- export declare function make<const Implementation extends Layer.Any, const Items extends NodeList, const T extends Tag | undefined = undefined>(input: MakeInput<Implementation, Items, T>): Node<Layer.Success<Implementation>, Layer.Error<Implementation> | Error<Items[number]>, T>;
125
+ export declare function make<const Implementation extends Layer.Any, const Items extends GraphList, const T extends Tag | undefined = undefined>(input: MakeInput<Implementation, Items, T>): Provider<LayerOutput<Implementation>, Layer.Error<Implementation> | Error<Items[number]>, T>;
57
126
  export declare function unbound<R, Shape, const T extends Tag>(service: Context.Key<R, Shape>, tag: T): Node<R, never, T>;
58
- export declare function group<const Items extends readonly AnyNode[]>(dependencies: Items): Node<Output<Items[number]>, Error<Items[number]>, NodeTag<Items[number]>>;
59
- export type Replacement = readonly [source: AnyNode, replacement: AnyNode | Layer.Any];
60
- export type Replacements = readonly Replacement[];
61
- type CheckReplacementErrors<SourceError, ReplacementError> = [Exclude<ReplacementError, SourceError>] extends [never] ? unknown : {
62
- readonly "New replacement errors": Exclude<ReplacementError, SourceError>;
63
- };
64
- type CheckReplacement<Item> = Item extends readonly [Node<infer A, infer E, infer T>, infer Replacement] ? Replacement extends Node<NoInfer<A>, infer E2, T> ? CheckReplacementErrors<E, NoInfer<E2>> : Replacement extends Layer.Layer<NoInfer<A>, infer E2, never> ? CheckReplacementErrors<E, NoInfer<E2>> : {
65
- readonly "Invalid replacement": Replacement;
66
- } : {
67
- readonly "Invalid replacement": Item;
68
- };
69
- type CheckReplacements<Items extends Replacements> = {
70
- readonly [K in keyof Items]: CheckReplacement<Items[K]>;
71
- };
72
- type ValidReplacements<Items extends Replacements> = Items & CheckReplacements<Items>;
73
- export declare function hoist<A, E, T extends Tag, const Items extends Replacements = readonly []>(root: Node<A, E, any>, tag: T, replacements?: ValidReplacements<Items>): {
74
- readonly node: Node<A, E>;
75
- readonly hoisted: Node<unknown, E>;
76
- };
77
- export declare function compile<A, E, const Items extends Replacements = readonly []>(root: Node<A, E, any>, replacements?: ValidReplacements<Items>): Layer.Layer<A, E>;
78
- export declare function hasUnbound(root: Node<unknown, unknown, any>, source: AnyNode): boolean;
79
- export * as LayerNode from "./layer-node.js";
127
+ /** Ordered, associative composition. Only these roots' outputs are exposed; their dependencies remain private. */
128
+ export declare function group<const Items extends readonly AnyGraph[]>(dependencies: Items): Graph<ListOutput<Items>, Error<Items[number]>, GraphTag<Items[number]>>;
129
+ export interface CompileOptions {
130
+ readonly replacements?: Replacements;
131
+ /** Share subgraphs rooted at this tag; give the remaining wiring a fresh map for each build. */
132
+ readonly shared?: Tag;
133
+ }
134
+ /** Resolve the final overrides before validating or acquiring anything. Effect owns acquisition and finalization. */
135
+ export declare function compile<A, E>(root: Graph<A, E>, options?: CompileOptions): Layer.Layer<A, E>;
@@ -1,181 +1,156 @@
1
- import { Brand, Context, Layer } from "effect";
1
+ import { Brand, Context, Effect, Layer } from "effect";
2
+ export * as LayerNode from "./layer-node.js";
3
+ const GraphTypeId = Symbol("LayerNode.Graph");
4
+ const VarianceTypeId = Symbol("LayerNode.Variance");
5
+ const NodeTypeId = Symbol("LayerNode.Node");
6
+ const ReplacementTypeId = Symbol("LayerNode.Replacement");
2
7
  const makeTag = Brand.nominal();
8
+ class GraphValue {
9
+ [GraphTypeId];
10
+ constructor(definition) {
11
+ this[GraphTypeId] = definition;
12
+ }
13
+ get name() {
14
+ return this[GraphTypeId].name;
15
+ }
16
+ }
17
+ class NodeValue extends GraphValue {
18
+ tag;
19
+ constructor(definition, tag) {
20
+ super(definition);
21
+ this.tag = tag;
22
+ }
23
+ /** Replace this declaration, including every dependency on it, without acquiring its old wiring. */
24
+ replace(replacement) {
25
+ if (replacement instanceof NodeValue) {
26
+ if (replacement.tag !== this.tag)
27
+ throw new Error(`Cannot replace ${this.name} across tags`);
28
+ return new ReplacementValue(this, replacement);
29
+ }
30
+ if (!Layer.isLayer(replacement))
31
+ throw new Error("A replacement must be a node or an Effect Layer");
32
+ return new ReplacementValue(this, makeProvider({ name: this.name, layer: replacement, deps: [] }, this.tag));
33
+ }
34
+ }
35
+ class ProviderNode extends NodeValue {
36
+ /** Decorate the implementation while preserving its dependency wiring and service contract. */
37
+ mapLayer(f) {
38
+ const definition = this[GraphTypeId];
39
+ if (definition.kind !== "layer")
40
+ throw new Error(`Cannot map unbound layer node: ${this.name}`);
41
+ return new ProviderNode({ ...definition, implementation: f(definition.implementation) }, this.tag);
42
+ }
43
+ }
44
+ class ReplacementValue {
45
+ [ReplacementTypeId];
46
+ constructor(source, target) {
47
+ this[ReplacementTypeId] = { source, target };
48
+ }
49
+ }
3
50
  export function tags(config) {
4
51
  const names = Object.keys(config);
5
52
  const values = Object.fromEntries(names.map((name) => [name, makeTag(name)]));
6
53
  return {
7
54
  values,
8
- make: ((name) => (input) => make({ ...input, tag: values[name] })),
55
+ make: (name) => (input) => makeProvider(input, values[name]),
9
56
  };
10
57
  }
11
58
  export function make(input) {
12
- return {
59
+ return makeProvider(input, input.tag);
60
+ }
61
+ function makeProvider(input, tag) {
62
+ if (!Layer.isLayer(input.layer))
63
+ throw new Error("A layer node requires an Effect Layer");
64
+ return new ProviderNode({
13
65
  kind: "layer",
14
66
  name: input.service !== undefined ? input.service.key : input.name,
15
- service: input.service,
16
67
  implementation: input.layer,
17
- dependencies: input.deps,
18
- tag: input.tag,
19
- };
68
+ dependencies: [...input.deps],
69
+ }, tag);
20
70
  }
21
71
  export function unbound(service, tag) {
22
- return {
23
- kind: "unbound",
24
- name: service.key,
25
- service,
26
- dependencies: [],
27
- tag,
28
- };
72
+ return new NodeValue({ kind: "unbound", name: service.key }, tag);
29
73
  }
74
+ /** Ordered, associative composition. Only these roots' outputs are exposed; their dependencies remain private. */
30
75
  export function group(dependencies) {
31
- return { kind: "group", name: "group", dependencies };
32
- }
33
- function replacementNode(source, replacement) {
34
- const replacementNode = isNode(replacement)
35
- ? replacement
36
- : make({
37
- ...nodeMakeIdentity(source),
38
- layer: replacement,
39
- deps: [],
40
- tag: source.tag,
41
- });
42
- if (source.name !== replacementNode.name) {
43
- throw new Error(`Cannot replace ${source.name} with ${replacementNode.name}`);
44
- }
45
- if (source.tag !== replacementNode.tag) {
46
- throw new Error(`Cannot replace ${source.name} across tags`);
47
- }
48
- return replacementNode;
49
- }
50
- function nodeMakeIdentity(node) {
51
- if (node.service !== undefined)
52
- return { service: node.service };
53
- return { name: node.name };
54
- }
55
- function isNode(input) {
56
- return "kind" in input && "dependencies" in input;
76
+ return new GraphValue({ kind: "group", name: "group", dependencies: [...dependencies] });
57
77
  }
58
- function walk(root, visit, options = {}) {
59
- const cache = options.cache ?? new Map();
60
- const visiting = new Set();
61
- const stack = [];
62
- const recur = (node) => {
63
- const target = options.resolve?.(node) ?? node;
64
- const cached = cache.get(target);
65
- if (cached !== undefined || cache.has(target))
66
- return cached;
67
- if (visiting.has(target)) {
68
- const start = stack.indexOf(target);
69
- throw new Error(`Cycle detected in layer tree: ${[...stack.slice(start), target].map((item) => item.name).join(" -> ")}`);
70
- }
71
- visiting.add(target);
72
- stack.push(target);
73
- try {
74
- const result = visit(target, { visit: recur });
75
- if (!cache.has(target))
76
- cache.set(target, result);
77
- return result;
78
- }
79
- finally {
80
- stack.pop();
81
- visiting.delete(target);
82
- }
78
+ /** Resolve the final overrides before validating or acquiring anything. Effect owns acquisition and finalization. */
79
+ export function compile(root, options = {}) {
80
+ const shared = options.shared;
81
+ const replacements = new Map(options.replacements?.map((item) => {
82
+ const replacement = item[ReplacementTypeId];
83
+ return [replacement.source, replacement.target];
84
+ }));
85
+ const cache = {
86
+ shared: new Map(),
87
+ local: new Map(),
83
88
  };
84
- return recur(root);
85
- }
86
- export function hoist(root, tag, replacements) {
87
- const hoisted = new Map();
88
- const replacementMap = replacementMapFrom(replacements);
89
- const node = walk(root, (node, context) => {
90
- if (node.kind === "group") {
91
- return { ...node, dependencies: node.dependencies.map(context.visit) };
92
- }
93
- if (node.tag === tag) {
94
- const existing = hoisted.get(node.name);
95
- if (existing && existing.implementation !== node.implementation) {
96
- throw new Error(`Tag ${tag} has conflicting implementations for ${node.name}`);
97
- }
98
- hoisted.set(node.name, rewriteReplacementDependencies(node, replacementMap));
99
- return group([]);
100
- }
101
- if (node.kind === "unbound") {
102
- return node;
103
- }
104
- return { ...node, dependencies: node.dependencies.map(context.visit) };
105
- }, { resolve: (node) => replacementMap.get(node.name) ?? node });
106
- return {
107
- node: node,
108
- hoisted: group(Array.from(hoisted.values())),
109
- };
110
- }
111
- export function compile(root, replacements) {
112
- const replacementMap = replacementMapFrom(replacements);
113
- const cache = new Map();
114
- const compileNode = (node) => walk(node, (node, context) => {
115
- if (node.kind === "unbound")
116
- throw new Error(`Unbound layer node: ${node.name}`);
117
- const dependencies = node.dependencies.flatMap(flatten).map(context.visit);
118
- const implementation = node.implementation;
119
- return dependencies.length === 0
120
- ? implementation
121
- : implementation.pipe(Layer.provide(dependencies));
122
- }, { cache, resolve: (node) => replacementMap.get(node.name) ?? node });
123
- const layers = flatten(root).map((node) => compileNode(node));
124
- const layer = layers.reduce((result, layer) => layer.pipe(Layer.provideMerge(result)), Layer.empty);
125
- return layer;
126
- }
127
- function replacementMapFrom(replacements) {
128
- return (replacements?.reduce((map, [source, replacement]) => {
129
- const normalized = rewriteReplacementDependencies(replacementNode(source, replacement), map);
130
- const current = new Map([[source.name, normalized]]);
131
- for (const [name, node] of map)
132
- map.set(name, rewriteReplacementDependencies(node, current));
133
- map.set(source.name, normalized);
134
- return map;
135
- }, new Map()) ?? new Map());
136
- }
137
- function rewriteReplacementDependencies(root, replacements) {
138
- if (replacements.size === 0)
139
- return root;
140
- const cache = new Map();
141
- const visiting = new Set();
142
89
  const stack = [];
143
- const recur = (node, isRoot = false) => {
144
- const target = isRoot ? node : (replacements.get(node.name) ?? node);
145
- const cached = cache.get(target);
146
- if (cached !== undefined || cache.has(target))
90
+ const definitions = { shared: new Map(), local: new Map() };
91
+ const resolve = (graph, inherited = false) => {
92
+ const definition = graph[GraphTypeId];
93
+ const isShared = inherited || (shared !== undefined && graph instanceof NodeValue && graph.tag === shared);
94
+ const resolved = isShared ? cache.shared : cache.local;
95
+ const cached = resolved.get(graph);
96
+ if (cached)
147
97
  return cached;
148
- if (visiting.has(target)) {
149
- const start = stack.indexOf(target);
150
- throw new Error(`Cycle detected in layer tree: ${[...stack.slice(start), target].map((item) => item.name).join(" -> ")}`);
151
- }
152
- visiting.add(target);
153
- stack.push(target);
154
- try {
155
- const dependencies = target.dependencies.map((dependency) => recur(dependency));
156
- const result = dependencies.every((dependency, index) => dependency === target.dependencies[index])
157
- ? target
158
- : { ...target, dependencies };
159
- cache.set(target, result);
160
- return result;
161
- }
162
- finally {
163
- stack.pop();
164
- visiting.delete(target);
98
+ const cycle = stack.indexOf(graph);
99
+ if (cycle !== -1) {
100
+ throw new Error(`Cycle detected in layer graph: ${[...stack.slice(cycle), graph].map((item) => item.name).join(" -> ")}`);
165
101
  }
102
+ stack.push(graph);
103
+ const replacement = replacements.get(graph);
104
+ const result = (() => {
105
+ if (replacement && replacement !== graph)
106
+ return resolve(replacement, isShared);
107
+ if (definition.kind === "group")
108
+ return definition.dependencies.flatMap((dependency) => resolve(dependency, isShared));
109
+ if (definition.kind === "unbound")
110
+ throw new Error(`Unbound layer node: ${definition.name}`);
111
+ const node = {
112
+ implementation: definition.implementation,
113
+ dependencies: definition.dependencies.flatMap((dependency) => resolve(dependency, isShared)),
114
+ shared: isShared,
115
+ };
116
+ const registry = node.shared ? definitions.shared : definitions.local;
117
+ const existing = registry.get(node.implementation);
118
+ if (existing) {
119
+ if (existing.dependencies.length !== node.dependencies.length ||
120
+ existing.dependencies.some((dependency, index) => dependency !== node.dependencies[index])) {
121
+ throw new Error(`Layer ${definition.name} is wired to different dependencies; use a distinct implementation Layer`);
122
+ }
123
+ return [existing];
124
+ }
125
+ registry.set(node.implementation, node);
126
+ return [node];
127
+ })();
128
+ stack.pop();
129
+ resolved.set(graph, result);
130
+ return result;
166
131
  };
167
- return recur(root, true);
168
- }
169
- export function hasUnbound(root, source) {
170
- if (source.kind !== "unbound")
171
- throw new Error(`Cannot check non-unbound layer node: ${source.name}`);
172
- return walk(root, (node, context) => {
173
- if (node === source)
174
- return true;
175
- return node.dependencies.some(context.visit);
132
+ const roots = resolve(root);
133
+ return Layer.fromBuild((memoMap, scope) => {
134
+ const local = shared === undefined ? memoMap : Layer.makeMemoMapUnsafe();
135
+ const ambient = Layer.succeed(Layer.CurrentMemoMap, memoMap);
136
+ const layers = new Map();
137
+ const build = (node) => {
138
+ const cached = layers.get(node);
139
+ if (cached)
140
+ return cached;
141
+ const dependencies = node.dependencies.map(build);
142
+ // Acquisition uses the selected cache, while lazy LayerMaps inherit the enclosing shared cache.
143
+ const implementation = Layer.suspend(() => node.implementation.pipe(Layer.provide([ambient, ...dependencies])));
144
+ const layer = Layer.fromBuild((_, scope) => buildContext(implementation, node.shared ? memoMap : local, scope));
145
+ layers.set(node, layer);
146
+ return layer;
147
+ };
148
+ return buildContext(roots.map(build).reduce((result, layer) => layer.pipe(Layer.provideMerge(result)), Layer.empty), memoMap, scope);
176
149
  });
177
150
  }
178
- function flatten(node) {
179
- return node.kind === "group" ? node.dependencies.flatMap(flatten) : [node];
151
+ class BuildResult extends Context.Service()("@opencode/LayerNode/BuildResult") {
152
+ }
153
+ function buildContext(layer, memoMap, scope) {
154
+ // Preserve the exact output context before Effect appends its own memo-map metadata.
155
+ return Layer.buildWithMemoMap(layer.pipe(Layer.flatMap((context) => Layer.succeed(BuildResult, context))), memoMap, scope).pipe(Effect.map(Context.get(BuildResult)));
180
156
  }
181
- export * as LayerNode from "./layer-node.js";
@@ -26,6 +26,6 @@ export declare namespace EffectFlock {
26
26
  const Service_base: Context.ServiceClass<Service, "EffectFlock", Interface>;
27
27
  export class Service extends Service_base {
28
28
  }
29
- export const node: import("./effect/layer-node.js").Node<Service, never, import("./effect/layer-node.js").Tag<"global">>;
29
+ export const node: import("./effect/layer-node.js").Provider<Service, never, import("./effect/layer-node.js").Tag<"global">>;
30
30
  export {};
31
31
  }
package/dist/fs-util.d.ts CHANGED
@@ -84,7 +84,7 @@ export declare namespace FSUtil {
84
84
  readonly makeTempDirectoryScoped: (options?: {
85
85
  readonly directory?: string | undefined;
86
86
  readonly prefix?: string | undefined;
87
- } | undefined) => Effect.Effect<string, PlatformError, Service | import("effect/Scope").Scope>;
87
+ } | undefined) => Effect.Effect<string, PlatformError, import("effect/Scope").Scope | Service>;
88
88
  readonly makeTempFile: (options?: {
89
89
  readonly directory?: string | undefined;
90
90
  readonly prefix?: string | undefined;
@@ -94,11 +94,11 @@ export declare namespace FSUtil {
94
94
  readonly directory?: string | undefined;
95
95
  readonly prefix?: string | undefined;
96
96
  readonly suffix?: string | undefined;
97
- } | undefined) => Effect.Effect<string, PlatformError, Service | import("effect/Scope").Scope>;
97
+ } | undefined) => Effect.Effect<string, PlatformError, import("effect/Scope").Scope | Service>;
98
98
  readonly open: (path: string, options?: {
99
99
  readonly flag?: FileSystem.OpenFlag | undefined;
100
100
  readonly mode?: number | undefined;
101
- } | undefined) => Effect.Effect<FileSystem.File, PlatformError, Service | import("effect/Scope").Scope>;
101
+ } | undefined) => Effect.Effect<FileSystem.File, PlatformError, import("effect/Scope").Scope | Service>;
102
102
  readonly readDirectory: (path: string, options?: {
103
103
  readonly recursive?: boolean | undefined;
104
104
  } | undefined) => Effect.Effect<string[], PlatformError, Service>;
@@ -125,7 +125,7 @@ export declare namespace FSUtil {
125
125
  } | undefined) => Effect.Effect<void, PlatformError, Service>;
126
126
  };
127
127
  export const layer: Layer.Layer<Service, never, FileSystem.FileSystem>;
128
- export const node: import("./effect/layer-node.js").Node<Service, never, import("./effect/layer-node.js").Tag<"global">>;
128
+ export const node: import("./effect/layer-node.js").Provider<Service, never, import("./effect/layer-node.js").Tag<"global">>;
129
129
  export function mimeType(p: string): string;
130
130
  export function normalizePath(p: string): string;
131
131
  export function normalizePathPattern(p: string): string;
package/dist/global.d.ts CHANGED
@@ -25,6 +25,6 @@ export interface Interface {
25
25
  readonly repos: string;
26
26
  }
27
27
  export declare function make(input?: Partial<Interface>): Interface;
28
- export declare const node: import("./effect/layer-node.js").Node<Service, never, import("./effect/layer-node.js").Tag<"global">>;
28
+ export declare const node: import("./effect/layer-node.js").Provider<Service, never, import("./effect/layer-node.js").Tag<"global">>;
29
29
  export declare const layerWith: (input: Partial<Interface>) => Layer.Layer<Service, never, never>;
30
30
  export * as Global from "./global.js";
package/dist/npm.d.ts CHANGED
@@ -30,7 +30,7 @@ export declare function sanitize(pkg: string): string;
30
30
  export declare function isRegistryPackage(pkg: string): Promise<boolean>;
31
31
  export declare function isInstallablePackage(pkg: string): Promise<boolean>;
32
32
  export declare function cacheKey(pkg: string): Promise<string>;
33
- export declare const node: LayerNode.Node<Service, never, LayerNode.Tag<"global">>;
33
+ export declare const node: LayerNode.Provider<Service, never, LayerNode.Tag<"global">>;
34
34
  export declare function add(...args: Parameters<Interface["add"]>): Promise<EntryPoint>;
35
35
  export declare function resolve(...args: Parameters<Interface["resolve"]>): Promise<EntryPoint>;
36
36
  export declare function which(...args: Parameters<Interface["which"]>): Promise<string | undefined>;
@@ -1,6 +1,6 @@
1
1
  import { Effect, FileSystem, Logger } from "effect";
2
2
  export declare function file(local?: boolean, channel?: string): string;
3
- export declare function fileLogger(target?: string, id?: string): Effect.Effect<Logger.Logger<unknown, void>, import("effect/PlatformError").PlatformError, FileSystem.FileSystem | import("effect/Scope").Scope>;
3
+ export declare function fileLogger(target?: string, id?: string): Effect.Effect<Logger.Logger<unknown, void>, import("effect/PlatformError").PlatformError, import("effect/Scope").Scope | FileSystem.FileSystem>;
4
4
  export declare function minimumLogLevel(): "Error" | "Warn" | "Info" | "Debug";
5
- export declare function loggers(local?: boolean, channel?: string): (Logger.Logger<unknown, void> | Effect.Effect<Logger.Logger<unknown, void>, import("effect/PlatformError").PlatformError, FileSystem.FileSystem | import("effect/Scope").Scope>)[];
5
+ export declare function loggers(local?: boolean, channel?: string): (Logger.Logger<unknown, void> | Effect.Effect<Logger.Logger<unknown, void>, import("effect/PlatformError").PlatformError, import("effect/Scope").Scope | FileSystem.FileSystem>)[];
6
6
  export * as Logging from "./logging.js";
@@ -13,6 +13,6 @@ export declare function resource(app?: App): {
13
13
  serviceVersion: string;
14
14
  attributes: Record<string, string>;
15
15
  };
16
- export declare function loggers(options: Options | undefined, app: App): Effect.Effect<import("effect/Logger").Logger<unknown, void>, never, import("effect/unstable/http/HttpClient").HttpClient | Scope.Scope | import("effect/unstable/observability/OtlpExporter").Flusher | import("effect/unstable/observability/OtlpSerialization").OtlpSerialization>[];
16
+ export declare function loggers(options: Options | undefined, app: App): Effect.Effect<import("effect/Logger").Logger<unknown, void>, never, Scope.Scope | import("effect/unstable/http/HttpClient").HttpClient | import("effect/unstable/observability/OtlpExporter").Flusher | import("effect/unstable/observability/OtlpSerialization").OtlpSerialization>[];
17
17
  export declare const tracingLayer: (options: Options | undefined, app: App) => Effect.Effect<Layer.Layer<never, never, never>, never, never>;
18
18
  export * as Otlp from "./otlp.js";
@@ -10,4 +10,4 @@ export declare const Options: Schema.Struct<{
10
10
  }>;
11
11
  export type Options = typeof Options.Type;
12
12
  export declare function layer(options?: Options): Layer.Layer<never, never, never>;
13
- export declare const node: LayerNode.Node<never, never, undefined>;
13
+ export declare const node: LayerNode.Provider<never, never, undefined>;
package/dist/process.d.ts CHANGED
@@ -50,5 +50,5 @@ export declare const collectStream: (stream: Stream.Stream<Uint8Array, PlatformE
50
50
  buffer: Buffer<ArrayBuffer>;
51
51
  truncated: boolean;
52
52
  }, PlatformError, never>;
53
- export declare const node: import("./effect/layer-node.js").Node<Service, never, import("./effect/layer-node.js").Tag<"global">>;
53
+ export declare const node: import("./effect/layer-node.js").Provider<Service, never, import("./effect/layer-node.js").Tag<"global">>;
54
54
  export * as AppProcess from "./process.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@opencode-ai/util",
4
- "version": "0.0.0-dev-18758",
4
+ "version": "0.0.0-dev-18759",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -40,7 +40,8 @@
40
40
  "scripts": {
41
41
  "build": "bun run script/build.ts",
42
42
  "test": "bun test --only-failures",
43
- "typecheck": "tsgo --noEmit"
43
+ "typecheck": "tsgo --noEmit",
44
+ "typecheck:dist": "bun run build && bun typecheck --project tsconfig.dist.json"
44
45
  },
45
46
  "dependencies": {
46
47
  "@effect/opentelemetry": "4.0.0-rc.112",