@opencode/util 0.0.0-beta-19275
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/dist/activity-calendar.d.ts +21 -0
- package/dist/activity-calendar.js +42 -0
- package/dist/activity-calendar.test.d.ts +1 -0
- package/dist/activity-calendar.test.js +119 -0
- package/dist/binary.d.ts +7 -0
- package/dist/binary.js +34 -0
- package/dist/binary.test.d.ts +1 -0
- package/dist/binary.test.js +16 -0
- package/dist/bom.d.ts +22 -0
- package/dist/bom.js +36 -0
- package/dist/bom.test.d.ts +1 -0
- package/dist/bom.test.js +19 -0
- package/dist/cross-spawn-spawner.d.ts +3 -0
- package/dist/cross-spawn-spawner.js +438 -0
- package/dist/effect/app-node-platform.d.ts +6 -0
- package/dist/effect/app-node-platform.js +11 -0
- package/dist/effect/app-node.d.ts +62 -0
- package/dist/effect/app-node.js +8 -0
- package/dist/effect/layer-node.d.ts +135 -0
- package/dist/effect/layer-node.js +156 -0
- package/dist/effect/memo-map.d.ts +2 -0
- package/dist/effect/memo-map.js +2 -0
- package/dist/effect/runtime.d.ts +8 -0
- package/dist/effect/runtime.js +16 -0
- package/dist/effect/service-use.d.ts +7 -0
- package/dist/effect/service-use.js +27 -0
- package/dist/effect-flock.d.ts +31 -0
- package/dist/effect-flock.js +186 -0
- package/dist/encode.d.ts +4 -0
- package/dist/encode.js +38 -0
- package/dist/encode.test.d.ts +1 -0
- package/dist/encode.test.js +23 -0
- package/dist/flock.d.ts +30 -0
- package/dist/flock.js +273 -0
- package/dist/fs-util.d.ts +137 -0
- package/dist/fs-util.js +211 -0
- package/dist/glob.d.ts +12 -0
- package/dist/glob.js +26 -0
- package/dist/global-roots.d.ts +8 -0
- package/dist/global-roots.js +17 -0
- package/dist/global-roots.workerd.d.ts +7 -0
- package/dist/global-roots.workerd.js +15 -0
- package/dist/global.d.ts +30 -0
- package/dist/global.js +54 -0
- package/dist/hash.d.ts +4 -0
- package/dist/hash.js +12 -0
- package/dist/npm-config.d.ts +4 -0
- package/dist/npm-config.js +34 -0
- package/dist/npm.d.ts +37 -0
- package/dist/npm.js +386 -0
- package/dist/observability/logging.d.ts +14 -0
- package/dist/observability/logging.js +151 -0
- package/dist/observability/otlp.d.ts +18 -0
- package/dist/observability/otlp.js +76 -0
- package/dist/observability/shared.d.ts +1 -0
- package/dist/observability/shared.js +7 -0
- package/dist/observability.d.ts +13 -0
- package/dist/observability.js +37 -0
- package/dist/patch.d.ts +43 -0
- package/dist/patch.js +331 -0
- package/dist/path.d.ts +4 -0
- package/dist/path.js +33 -0
- package/dist/path.test.d.ts +1 -0
- package/dist/path.test.js +36 -0
- package/dist/process.d.ts +54 -0
- package/dist/process.js +167 -0
- package/dist/retry.d.ts +8 -0
- package/dist/retry.js +37 -0
- package/dist/retry.test.d.ts +1 -0
- package/dist/retry.test.js +31 -0
- package/dist/runtime/import.bun.d.ts +2 -0
- package/dist/runtime/import.bun.js +8 -0
- package/dist/runtime/import.node.d.ts +2 -0
- package/dist/runtime/import.node.js +62 -0
- package/dist/runtime/import.workerd.d.ts +2 -0
- package/dist/runtime/import.workerd.js +7 -0
- package/dist/runtime-import.d.ts +1 -0
- package/dist/runtime-import.js +1 -0
- package/dist/session-title-fallback.d.ts +16 -0
- package/dist/session-title-fallback.js +23 -0
- package/package.json +75 -0
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
import { isArrayNonEmpty } from "effect/Array";
|
|
2
|
+
import * as NodeSink from "@effect/platform-node/NodeSink";
|
|
3
|
+
import * as NodeStream from "@effect/platform-node/NodeStream";
|
|
4
|
+
import { Deferred, Effect, Exit, FileSystem, Layer, Path, PlatformError, Predicate, Sink, Stream } from "effect";
|
|
5
|
+
import { ChildProcess } from "effect/unstable/process";
|
|
6
|
+
import { ChildProcessSpawner, ExitCode, make, makeHandle, ProcessId, } from "effect/unstable/process/ChildProcessSpawner";
|
|
7
|
+
// ast-grep-ignore: no-star-import
|
|
8
|
+
import * as NodeChildProcess from "node:child_process";
|
|
9
|
+
import { PassThrough } from "node:stream";
|
|
10
|
+
import launch from "cross-spawn";
|
|
11
|
+
import { makeGlobalNode } from "./effect/app-node.js";
|
|
12
|
+
import { filesystem, path } from "./effect/app-node-platform.js";
|
|
13
|
+
const toError = (err) => (err instanceof globalThis.Error ? err : new globalThis.Error(String(err)));
|
|
14
|
+
const toTag = (err) => {
|
|
15
|
+
switch (err.code) {
|
|
16
|
+
case "ENOENT":
|
|
17
|
+
return "NotFound";
|
|
18
|
+
case "EACCES":
|
|
19
|
+
return "PermissionDenied";
|
|
20
|
+
case "EEXIST":
|
|
21
|
+
return "AlreadyExists";
|
|
22
|
+
case "EISDIR":
|
|
23
|
+
return "BadResource";
|
|
24
|
+
case "ENOTDIR":
|
|
25
|
+
return "BadResource";
|
|
26
|
+
case "EBUSY":
|
|
27
|
+
return "Busy";
|
|
28
|
+
case "ELOOP":
|
|
29
|
+
return "BadResource";
|
|
30
|
+
default:
|
|
31
|
+
return "Unknown";
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const flatten = (command) => {
|
|
35
|
+
const commands = [];
|
|
36
|
+
const opts = [];
|
|
37
|
+
const walk = (cmd) => {
|
|
38
|
+
switch (cmd._tag) {
|
|
39
|
+
case "StandardCommand":
|
|
40
|
+
commands.push(cmd);
|
|
41
|
+
return;
|
|
42
|
+
case "PipedCommand":
|
|
43
|
+
walk(cmd.left);
|
|
44
|
+
opts.push(cmd.options);
|
|
45
|
+
walk(cmd.right);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
walk(command);
|
|
50
|
+
if (!isArrayNonEmpty(commands))
|
|
51
|
+
throw new Error("flatten produced empty commands array");
|
|
52
|
+
return {
|
|
53
|
+
commands,
|
|
54
|
+
opts,
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
const toPlatformError = (method, err, command) => {
|
|
58
|
+
const cmd = flatten(command)
|
|
59
|
+
.commands.map((x) => `${x.command} ${x.args.join(" ")}`)
|
|
60
|
+
.join(" | ");
|
|
61
|
+
return PlatformError.systemError({
|
|
62
|
+
_tag: toTag(err),
|
|
63
|
+
module: "ChildProcess",
|
|
64
|
+
method,
|
|
65
|
+
pathOrDescriptor: cmd,
|
|
66
|
+
syscall: err.syscall,
|
|
67
|
+
cause: err,
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
const makeCrossSpawnSpawner = Effect.gen(function* () {
|
|
71
|
+
const fs = yield* FileSystem.FileSystem;
|
|
72
|
+
const path = yield* Path.Path;
|
|
73
|
+
const cwd = Effect.fnUntraced(function* (opts) {
|
|
74
|
+
if (Predicate.isUndefined(opts.cwd))
|
|
75
|
+
return undefined;
|
|
76
|
+
yield* fs.access(opts.cwd);
|
|
77
|
+
return path.resolve(opts.cwd);
|
|
78
|
+
});
|
|
79
|
+
const env = (opts) => opts.extendEnv ? { ...globalThis.process.env, ...opts.env } : opts.env;
|
|
80
|
+
const input = (x) => Stream.isStream(x) ? "pipe" : x;
|
|
81
|
+
const output = (x) => Sink.isSink(x) ? "pipe" : x;
|
|
82
|
+
const stdin = (opts) => {
|
|
83
|
+
const cfg = { stream: "pipe", encoding: "utf-8", endOnDone: true };
|
|
84
|
+
if (Predicate.isUndefined(opts.stdin))
|
|
85
|
+
return cfg;
|
|
86
|
+
if (typeof opts.stdin === "string")
|
|
87
|
+
return { ...cfg, stream: opts.stdin };
|
|
88
|
+
if (Stream.isStream(opts.stdin))
|
|
89
|
+
return { ...cfg, stream: opts.stdin };
|
|
90
|
+
return {
|
|
91
|
+
stream: opts.stdin.stream,
|
|
92
|
+
encoding: opts.stdin.encoding ?? cfg.encoding,
|
|
93
|
+
endOnDone: opts.stdin.endOnDone ?? cfg.endOnDone,
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
const stdio = (opts, key) => {
|
|
97
|
+
const cfg = opts[key];
|
|
98
|
+
if (Predicate.isUndefined(cfg))
|
|
99
|
+
return { stream: "pipe" };
|
|
100
|
+
if (typeof cfg === "string")
|
|
101
|
+
return { stream: cfg };
|
|
102
|
+
if (Sink.isSink(cfg))
|
|
103
|
+
return { stream: cfg };
|
|
104
|
+
return { stream: cfg.stream };
|
|
105
|
+
};
|
|
106
|
+
const fds = (opts) => {
|
|
107
|
+
if (Predicate.isUndefined(opts.additionalFds))
|
|
108
|
+
return [];
|
|
109
|
+
return Object.entries(opts.additionalFds)
|
|
110
|
+
.flatMap(([name, config]) => {
|
|
111
|
+
const fd = ChildProcess.parseFdName(name);
|
|
112
|
+
return Predicate.isUndefined(fd) ? [] : [{ fd, config }];
|
|
113
|
+
})
|
|
114
|
+
.toSorted((a, b) => a.fd - b.fd);
|
|
115
|
+
};
|
|
116
|
+
const stdios = (sin, sout, serr, extra) => {
|
|
117
|
+
const pipe = (x) => process.platform === "win32" && x === "pipe" ? "overlapped" : x;
|
|
118
|
+
const arr = [
|
|
119
|
+
pipe(input(sin.stream)),
|
|
120
|
+
pipe(output(sout.stream)),
|
|
121
|
+
pipe(output(serr.stream)),
|
|
122
|
+
];
|
|
123
|
+
if (extra.length === 0)
|
|
124
|
+
return arr;
|
|
125
|
+
const max = extra.reduce((acc, x) => Math.max(acc, x.fd), 2);
|
|
126
|
+
for (let i = 3; i <= max; i++)
|
|
127
|
+
arr[i] = "ignore";
|
|
128
|
+
for (const x of extra)
|
|
129
|
+
arr[x.fd] = pipe("pipe");
|
|
130
|
+
return arr;
|
|
131
|
+
};
|
|
132
|
+
const setupFds = Effect.fnUntraced(function* (command, proc, extra) {
|
|
133
|
+
if (extra.length === 0) {
|
|
134
|
+
return {
|
|
135
|
+
getInputFd: () => Sink.drain,
|
|
136
|
+
getOutputFd: () => Stream.empty,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
const ins = new Map();
|
|
140
|
+
const outs = new Map();
|
|
141
|
+
for (const x of extra) {
|
|
142
|
+
const node = proc.stdio[x.fd];
|
|
143
|
+
switch (x.config.type) {
|
|
144
|
+
case "input": {
|
|
145
|
+
let sink = Sink.drain;
|
|
146
|
+
if (node && "write" in node) {
|
|
147
|
+
sink = NodeSink.fromWritable({
|
|
148
|
+
evaluate: () => node,
|
|
149
|
+
onError: (err) => toPlatformError(`fromWritable(fd${x.fd})`, toError(err), command),
|
|
150
|
+
endOnDone: true,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
if (x.config.stream)
|
|
154
|
+
yield* Effect.forkScoped(Stream.run(x.config.stream, sink));
|
|
155
|
+
ins.set(x.fd, sink);
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
case "output": {
|
|
159
|
+
let stream = Stream.empty;
|
|
160
|
+
if (node && "read" in node) {
|
|
161
|
+
const tap = new PassThrough();
|
|
162
|
+
node.on("error", (err) => tap.destroy(toError(err)));
|
|
163
|
+
node.pipe(tap);
|
|
164
|
+
stream = NodeStream.fromReadable({
|
|
165
|
+
evaluate: () => tap,
|
|
166
|
+
onError: (err) => toPlatformError(`fromReadable(fd${x.fd})`, toError(err), command),
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
if (x.config.sink)
|
|
170
|
+
stream = Stream.transduce(stream, x.config.sink);
|
|
171
|
+
outs.set(x.fd, stream);
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return {
|
|
177
|
+
getInputFd: (fd) => ins.get(fd) ?? Sink.drain,
|
|
178
|
+
getOutputFd: (fd) => outs.get(fd) ?? Stream.empty,
|
|
179
|
+
};
|
|
180
|
+
});
|
|
181
|
+
const setupStdin = (command, proc, cfg) => Effect.suspend(() => {
|
|
182
|
+
let sink = Sink.drain;
|
|
183
|
+
if (Predicate.isNotNull(proc.stdin)) {
|
|
184
|
+
sink = NodeSink.fromWritable({
|
|
185
|
+
evaluate: () => proc.stdin,
|
|
186
|
+
onError: (err) => toPlatformError("fromWritable(stdin)", toError(err), command),
|
|
187
|
+
endOnDone: cfg.endOnDone,
|
|
188
|
+
encoding: cfg.encoding,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
if (Stream.isStream(cfg.stream))
|
|
192
|
+
return Effect.as(Effect.forkScoped(Stream.run(cfg.stream, sink)), sink);
|
|
193
|
+
return Effect.succeed(sink);
|
|
194
|
+
});
|
|
195
|
+
const setupOutput = (command, proc, out, err, stopOutput) => {
|
|
196
|
+
const capture = (readable, name) => {
|
|
197
|
+
if (!readable)
|
|
198
|
+
return Stream.empty;
|
|
199
|
+
// Bun resumes stdio on exit; retain bytes before the lazy Effect reader attaches.
|
|
200
|
+
const buffer = new PassThrough();
|
|
201
|
+
readable.on("error", (cause) => buffer.destroy(toError(cause)));
|
|
202
|
+
readable.pipe(buffer);
|
|
203
|
+
return NodeStream.fromReadable({
|
|
204
|
+
evaluate: () => buffer,
|
|
205
|
+
onError: (cause) => toPlatformError(`fromReadable(${name})`, toError(cause), command),
|
|
206
|
+
}).pipe(Stream.interruptWhen(Deferred.await(stopOutput)), Stream.ensuring(Effect.gen(function* () {
|
|
207
|
+
// Only the capture deadline transfers the reader back to the process scope.
|
|
208
|
+
if (yield* Deferred.isDone(stopOutput))
|
|
209
|
+
return;
|
|
210
|
+
readable.destroy();
|
|
211
|
+
})));
|
|
212
|
+
};
|
|
213
|
+
let stdout = capture(proc.stdout, "stdout");
|
|
214
|
+
let stderr = capture(proc.stderr, "stderr");
|
|
215
|
+
if (Sink.isSink(out.stream))
|
|
216
|
+
stdout = Stream.transduce(stdout, out.stream);
|
|
217
|
+
if (Sink.isSink(err.stream))
|
|
218
|
+
stderr = Stream.transduce(stderr, err.stream);
|
|
219
|
+
return { stdout, stderr, all: Stream.merge(stdout, stderr) };
|
|
220
|
+
};
|
|
221
|
+
const launchProcess = (command, opts) => Effect.callback((resume) => {
|
|
222
|
+
const closed = Deferred.makeUnsafe();
|
|
223
|
+
const exited = Deferred.makeUnsafe();
|
|
224
|
+
const proc = launch(command.command, command.args, opts);
|
|
225
|
+
let end = false;
|
|
226
|
+
let exit;
|
|
227
|
+
proc.on("error", (err) => {
|
|
228
|
+
resume(Effect.fail(toPlatformError("spawn", err, command)));
|
|
229
|
+
});
|
|
230
|
+
proc.on("exit", (...args) => {
|
|
231
|
+
exit = args;
|
|
232
|
+
Deferred.doneUnsafe(exited, Exit.succeed(args));
|
|
233
|
+
});
|
|
234
|
+
proc.on("close", (...args) => {
|
|
235
|
+
if (end)
|
|
236
|
+
return;
|
|
237
|
+
end = true;
|
|
238
|
+
Deferred.doneUnsafe(exited, Exit.succeed(exit ?? args));
|
|
239
|
+
Deferred.doneUnsafe(closed, Exit.succeed(exit ?? args));
|
|
240
|
+
});
|
|
241
|
+
proc.on("spawn", () => {
|
|
242
|
+
resume(Effect.succeed([proc, closed, exited]));
|
|
243
|
+
});
|
|
244
|
+
return Effect.sync(() => {
|
|
245
|
+
proc.kill("SIGTERM");
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
const spawn = Effect.fnUntraced(function* (command, opts) {
|
|
249
|
+
yield* Effect.logInfo("spawning process", { command: command.command, args: command.args, cwd: opts.cwd });
|
|
250
|
+
const [proc, closed, exited] = yield* launchProcess(command, opts);
|
|
251
|
+
const stopOutput = yield* Deferred.make();
|
|
252
|
+
// Register before process release so the deadline remains active during termination.
|
|
253
|
+
yield* Effect.forkScoped(Effect.gen(function* () {
|
|
254
|
+
yield* Deferred.await(exited);
|
|
255
|
+
// Particularly on Windows, some shell calls will cause detached descendants. Inherited stdio can hang the call.
|
|
256
|
+
// Almost every ecosystem has tried to fix this; there's no single "good" answer here.
|
|
257
|
+
// Calls that trigger this are e.g. dotnet build with warmed MSBuild processes, agent-browser, etc.
|
|
258
|
+
// One shared deadline covers stdout and stderr, then the output pump finishes its file.
|
|
259
|
+
if ((yield* Effect.timeoutOption(Deferred.await(closed), "1 second"))._tag === "Some")
|
|
260
|
+
return;
|
|
261
|
+
yield* Deferred.succeed(stopOutput, undefined);
|
|
262
|
+
discard(proc.stdout);
|
|
263
|
+
discard(proc.stderr);
|
|
264
|
+
}));
|
|
265
|
+
return [proc, closed, exited, stopOutput];
|
|
266
|
+
});
|
|
267
|
+
const discard = (readable) => {
|
|
268
|
+
if (!readable || readable.destroyed)
|
|
269
|
+
return;
|
|
270
|
+
readable.unpipe();
|
|
271
|
+
// Discard descendant output without refilling a capture buffer that is no longer consumed.
|
|
272
|
+
const drain = () => {
|
|
273
|
+
while (readable.read() !== null) { }
|
|
274
|
+
};
|
|
275
|
+
readable.on("readable", drain);
|
|
276
|
+
readable.once("error", () => { });
|
|
277
|
+
readable.once("close", () => readable.off("readable", drain));
|
|
278
|
+
drain();
|
|
279
|
+
};
|
|
280
|
+
const killGroup = (command, proc, signal) => {
|
|
281
|
+
if (globalThis.process.platform === "win32") {
|
|
282
|
+
return Effect.callback((resume) => {
|
|
283
|
+
NodeChildProcess.exec(`taskkill /pid ${proc.pid} /T /F`, { windowsHide: true }, (err) => {
|
|
284
|
+
if (err)
|
|
285
|
+
return resume(Effect.fail(toPlatformError("kill", toError(err), command)));
|
|
286
|
+
resume(Effect.void);
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
return Effect.try({
|
|
291
|
+
try: () => {
|
|
292
|
+
globalThis.process.kill(-proc.pid, signal);
|
|
293
|
+
},
|
|
294
|
+
catch: (err) => toPlatformError("kill", toError(err), command),
|
|
295
|
+
});
|
|
296
|
+
};
|
|
297
|
+
const killOne = (command, proc, signal) => Effect.suspend(() => {
|
|
298
|
+
if (proc.kill(signal))
|
|
299
|
+
return Effect.void;
|
|
300
|
+
return Effect.fail(toPlatformError("kill", new Error("Failed to kill child process"), command));
|
|
301
|
+
});
|
|
302
|
+
const stop = (command, proc, closed, stopOutput, opts) => {
|
|
303
|
+
const terminate = (signal) => Effect.catch(killGroup(command, proc, signal), () => killOne(command, proc, signal)).pipe(Effect.andThen(signal === "SIGKILL"
|
|
304
|
+
? Effect.raceFirst(Deferred.await(closed), Deferred.await(stopOutput))
|
|
305
|
+
: Deferred.await(closed)), Effect.asVoid);
|
|
306
|
+
const attempt = terminate(opts?.killSignal ?? "SIGTERM");
|
|
307
|
+
if (opts?.forceKillAfter === undefined)
|
|
308
|
+
return attempt;
|
|
309
|
+
return Effect.timeoutOrElse(attempt, {
|
|
310
|
+
duration: opts.forceKillAfter,
|
|
311
|
+
orElse: () => terminate("SIGKILL"),
|
|
312
|
+
});
|
|
313
|
+
};
|
|
314
|
+
const source = (handle, from) => {
|
|
315
|
+
const opt = from ?? "stdout";
|
|
316
|
+
switch (opt) {
|
|
317
|
+
case "stdout":
|
|
318
|
+
return handle.stdout;
|
|
319
|
+
case "stderr":
|
|
320
|
+
return handle.stderr;
|
|
321
|
+
case "all":
|
|
322
|
+
return handle.all;
|
|
323
|
+
default: {
|
|
324
|
+
const fd = ChildProcess.parseFdName(opt);
|
|
325
|
+
return Predicate.isNotUndefined(fd) ? handle.getOutputFd(fd) : handle.stdout;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
};
|
|
329
|
+
const spawnCommand = Effect.fnUntraced(function* (command) {
|
|
330
|
+
switch (command._tag) {
|
|
331
|
+
case "StandardCommand": {
|
|
332
|
+
const sin = stdin(command.options);
|
|
333
|
+
const sout = stdio(command.options, "stdout");
|
|
334
|
+
const serr = stdio(command.options, "stderr");
|
|
335
|
+
const extra = fds(command.options);
|
|
336
|
+
const dir = yield* cwd(command.options);
|
|
337
|
+
const [proc, closed, exited, stopOutput] = yield* Effect.acquireRelease(spawn(command, {
|
|
338
|
+
cwd: dir,
|
|
339
|
+
env: env(command.options),
|
|
340
|
+
stdio: stdios(sin, sout, serr, extra),
|
|
341
|
+
detached: command.options.detached ?? process.platform !== "win32",
|
|
342
|
+
shell: command.options.shell,
|
|
343
|
+
windowsHide: process.platform === "win32",
|
|
344
|
+
}), Effect.fnUntraced(function* ([proc, closed, exited, stopOutput]) {
|
|
345
|
+
const done = (yield* Deferred.isDone(closed)) || (yield* Deferred.isDone(stopOutput));
|
|
346
|
+
if (done) {
|
|
347
|
+
const [code] = yield* Deferred.await(exited);
|
|
348
|
+
if (process.platform === "win32")
|
|
349
|
+
return;
|
|
350
|
+
if (code === 0 || Predicate.isNull(code))
|
|
351
|
+
return;
|
|
352
|
+
if (command.options.forceKillAfter === undefined) {
|
|
353
|
+
return yield* Effect.ignore(killGroup(command, proc, command.options.killSignal ?? "SIGTERM"));
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
yield* Effect.ignore(stop(command, proc, closed, stopOutput, command.options));
|
|
357
|
+
}, (effect, [proc, , , stopOutput]) => effect.pipe(Effect.ensuring(Effect.gen(function* () {
|
|
358
|
+
yield* Deferred.succeed(stopOutput, undefined);
|
|
359
|
+
proc.stdout?.destroy();
|
|
360
|
+
proc.stderr?.destroy();
|
|
361
|
+
})))));
|
|
362
|
+
const completion = Effect.raceFirst(Deferred.await(closed), Deferred.await(stopOutput).pipe(Effect.andThen(Deferred.await(exited))));
|
|
363
|
+
const fd = yield* setupFds(command, proc, extra);
|
|
364
|
+
const out = setupOutput(command, proc, sout, serr, stopOutput);
|
|
365
|
+
let ref = true;
|
|
366
|
+
return makeHandle({
|
|
367
|
+
pid: ProcessId(proc.pid),
|
|
368
|
+
stdin: yield* setupStdin(command, proc, sin),
|
|
369
|
+
stdout: out.stdout,
|
|
370
|
+
stderr: out.stderr,
|
|
371
|
+
all: out.all,
|
|
372
|
+
getInputFd: fd.getInputFd,
|
|
373
|
+
getOutputFd: fd.getOutputFd,
|
|
374
|
+
isRunning: Effect.gen(function* () {
|
|
375
|
+
return !(yield* Deferred.isDone(closed)) && !(yield* Deferred.isDone(stopOutput));
|
|
376
|
+
}),
|
|
377
|
+
exitCode: Effect.flatMap(completion, ([code, signal]) => {
|
|
378
|
+
if (Predicate.isNotNull(code))
|
|
379
|
+
return Effect.succeed(ExitCode(code));
|
|
380
|
+
return Effect.fail(toPlatformError("exitCode", new Error(`Process interrupted due to receipt of signal: '${signal}'`), command));
|
|
381
|
+
}),
|
|
382
|
+
kill: (opts) => stop(command, proc, closed, stopOutput, opts),
|
|
383
|
+
unref: Effect.sync(() => {
|
|
384
|
+
if (ref) {
|
|
385
|
+
proc.unref();
|
|
386
|
+
ref = false;
|
|
387
|
+
}
|
|
388
|
+
return Effect.sync(() => {
|
|
389
|
+
if (!ref) {
|
|
390
|
+
proc.ref();
|
|
391
|
+
ref = true;
|
|
392
|
+
}
|
|
393
|
+
});
|
|
394
|
+
}),
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
case "PipedCommand": {
|
|
398
|
+
const flat = flatten(command);
|
|
399
|
+
const [head, ...tail] = flat.commands;
|
|
400
|
+
let handle = spawnCommand(head);
|
|
401
|
+
for (let i = 0; i < tail.length; i++) {
|
|
402
|
+
const next = tail[i];
|
|
403
|
+
const opts = flat.opts[i] ?? {};
|
|
404
|
+
const sin = stdin(next.options);
|
|
405
|
+
const stream = Stream.unwrap(Effect.map(handle, (x) => source(x, opts.from)));
|
|
406
|
+
const to = opts.to ?? "stdin";
|
|
407
|
+
if (to === "stdin") {
|
|
408
|
+
handle = spawnCommand(ChildProcess.make(next.command, next.args, {
|
|
409
|
+
...next.options,
|
|
410
|
+
stdin: { ...sin, stream },
|
|
411
|
+
}));
|
|
412
|
+
continue;
|
|
413
|
+
}
|
|
414
|
+
const fd = ChildProcess.parseFdName(to);
|
|
415
|
+
if (Predicate.isUndefined(fd)) {
|
|
416
|
+
handle = spawnCommand(ChildProcess.make(next.command, next.args, {
|
|
417
|
+
...next.options,
|
|
418
|
+
stdin: { ...sin, stream },
|
|
419
|
+
}));
|
|
420
|
+
continue;
|
|
421
|
+
}
|
|
422
|
+
handle = spawnCommand(ChildProcess.make(next.command, next.args, {
|
|
423
|
+
...next.options,
|
|
424
|
+
additionalFds: {
|
|
425
|
+
...next.options.additionalFds,
|
|
426
|
+
[ChildProcess.fdName(fd)]: { type: "input", stream },
|
|
427
|
+
},
|
|
428
|
+
}));
|
|
429
|
+
}
|
|
430
|
+
return yield* handle;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
});
|
|
434
|
+
return make(spawnCommand);
|
|
435
|
+
});
|
|
436
|
+
const layer = Layer.effect(ChildProcessSpawner, makeCrossSpawnSpawner);
|
|
437
|
+
export const node = makeGlobalNode({ service: ChildProcessSpawner, layer, deps: [filesystem, path] });
|
|
438
|
+
export * as CrossSpawnSpawner from "./cross-spawn-spawner.js";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { FileSystem, Path } from "effect";
|
|
2
|
+
import { HttpClient } from "effect/unstable/http";
|
|
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
|
+
export * as LayerNodePlatform from "./app-node-platform.js";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Deep imports: the @effect/platform-node barrel eagerly pulls in undici,
|
|
2
|
+
// ioredis, and node:sqlite, which runtimes such as workerd cannot load.
|
|
3
|
+
import * as NodeFileSystem from "@effect/platform-node/NodeFileSystem";
|
|
4
|
+
import * as NodePath from "@effect/platform-node/NodePath";
|
|
5
|
+
import { FileSystem, Path } from "effect";
|
|
6
|
+
import { FetchHttpClient, HttpClient } from "effect/unstable/http";
|
|
7
|
+
import { makeGlobalNode } from "./app-node.js";
|
|
8
|
+
export const filesystem = makeGlobalNode({ service: FileSystem.FileSystem, layer: NodeFileSystem.layer, deps: [] });
|
|
9
|
+
export const path = makeGlobalNode({ service: Path.Path, layer: NodePath.layer, deps: [] });
|
|
10
|
+
export const httpClient = makeGlobalNode({ service: HttpClient.HttpClient, layer: FetchHttpClient.layer, deps: [] });
|
|
11
|
+
export * as LayerNodePlatform from "./app-node-platform.js";
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { LayerNode } from "./layer-node.js";
|
|
2
|
+
export declare const tags: LayerNode.Tags<{
|
|
3
|
+
readonly location: readonly ["global"];
|
|
4
|
+
readonly global: readonly [];
|
|
5
|
+
}>;
|
|
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
|
+
readonly service: import("effect/Context").Service.Any;
|
|
10
|
+
readonly name?: never;
|
|
11
|
+
} & {
|
|
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>;
|
|
19
|
+
});
|
|
20
|
+
}, "tag"> | Omit<{
|
|
21
|
+
readonly name: string;
|
|
22
|
+
readonly service?: never;
|
|
23
|
+
} & {
|
|
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>;
|
|
31
|
+
});
|
|
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<{
|
|
36
|
+
readonly service: import("effect/Context").Service.Any;
|
|
37
|
+
readonly name?: never;
|
|
38
|
+
} & {
|
|
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>;
|
|
46
|
+
});
|
|
47
|
+
}, "tag"> | Omit<{
|
|
48
|
+
readonly name: string;
|
|
49
|
+
readonly service?: never;
|
|
50
|
+
} & {
|
|
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>;
|
|
58
|
+
});
|
|
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">>;
|
|
62
|
+
export * as Node from "./app-node.js";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LayerNode } from "./layer-node.js";
|
|
2
|
+
export const tags = LayerNode.tags({
|
|
3
|
+
location: ["global"],
|
|
4
|
+
global: [],
|
|
5
|
+
});
|
|
6
|
+
export const makeGlobalNode = tags.make("global");
|
|
7
|
+
export const makeLocationNode = tags.make("location");
|
|
8
|
+
export * as Node from "./app-node.js";
|