@prisma/composer-cli 0.25.0 → 0.26.0-dev.2
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/composer-config-CY9fET8H-KpGjlYgO.mjs +432 -0
- package/dist/composer-config-CY9fET8H-KpGjlYgO.mjs.map +1 -0
- package/dist/{pipeline-C7gNjMzJ-CMqZQxqM.mjs → container-transport-HcvNOGZL-CHqecFc7.mjs} +109 -322
- package/dist/container-transport-HcvNOGZL-CHqecFc7.mjs.map +1 -0
- package/dist/{execute-deploy-destroy-CvKCwVkD-B3vcxYJF.mjs → execute-deploy-destroy-c0eko3AO-9npuGXd3.mjs} +108 -85
- package/dist/execute-deploy-destroy-c0eko3AO-9npuGXd3.mjs.map +1 -0
- package/dist/{execute-dev-BLCK5wF7-CuzMSK7T.mjs → execute-dev-BICPaq1g-CSoZJuhB.mjs} +162 -132
- package/dist/execute-dev-BICPaq1g-CSoZJuhB.mjs.map +1 -0
- package/dist/{family-B1RaH4f8-ChoTnv3A.d.mts → family-CgeZQdNg-gH8LuqqL.d.mts} +136 -172
- package/dist/family-CgeZQdNg-gH8LuqqL.d.mts.map +1 -0
- package/dist/family.d.mts +4 -39
- package/dist/family.d.mts.map +1 -1
- package/dist/family.mjs +49 -551
- package/dist/family.mjs.map +1 -1
- package/dist/generate-dev-stack-BUadNY_w-DF_lHVaP.mjs +87 -0
- package/dist/generate-dev-stack-BUadNY_w-DF_lHVaP.mjs.map +1 -0
- package/dist/run-alchemy-BEvB2sYQ-BgV2deuO.mjs +154 -0
- package/dist/run-alchemy-BEvB2sYQ-BgV2deuO.mjs.map +1 -0
- package/dist/testing.d.mts +24 -24
- package/dist/testing.d.mts.map +1 -1
- package/dist/testing.mjs +17 -45
- package/dist/testing.mjs.map +1 -1
- package/package.json +7 -11
- package/src/exports/testing.ts +5 -3
- package/dist/bin.mjs +0 -1040
- package/dist/bin.mjs.map +0 -1
- package/dist/container-transport-HcvNOGZL-CIoZc7Rs.mjs +0 -34
- package/dist/container-transport-HcvNOGZL-CIoZc7Rs.mjs.map +0 -1
- package/dist/execute-deploy-destroy-CvKCwVkD-B3vcxYJF.mjs.map +0 -1
- package/dist/execute-deploy-destroy-CvKCwVkD-DCufHnkW.mjs +0 -528
- package/dist/execute-deploy-destroy-CvKCwVkD-DCufHnkW.mjs.map +0 -1
- package/dist/execute-dev-BLCK5wF7-B-fG_E31.mjs +0 -2011
- package/dist/execute-dev-BLCK5wF7-B-fG_E31.mjs.map +0 -1
- package/dist/execute-dev-BLCK5wF7-CuzMSK7T.mjs.map +0 -1
- package/dist/execute-log-B_zCJ17b-BrLUt7vo.mjs +0 -157
- package/dist/execute-log-B_zCJ17b-BrLUt7vo.mjs.map +0 -1
- package/dist/execute-log-B_zCJ17b-C4a0uxJj.mjs +0 -158
- package/dist/execute-log-B_zCJ17b-C4a0uxJj.mjs.map +0 -1
- package/dist/family-B1RaH4f8-ChoTnv3A.d.mts.map +0 -1
- package/dist/local-target-BOGjATc2.mjs +0 -68
- package/dist/local-target-BOGjATc2.mjs.map +0 -1
- package/dist/local-target-hoEGqgVA.mjs +0 -68
- package/dist/local-target-hoEGqgVA.mjs.map +0 -1
- package/dist/pipeline-C7gNjMzJ-CMqZQxqM.mjs.map +0 -1
- package/dist/pipeline-C7gNjMzJ-CixaMvnR.mjs +0 -1205
- package/dist/pipeline-C7gNjMzJ-CixaMvnR.mjs.map +0 -1
- package/dist/result-B874OKwb.mjs +0 -383
- package/dist/result-B874OKwb.mjs.map +0 -1
- package/dist/result-sR7PBi61.mjs +0 -229
- package/dist/result-sR7PBi61.mjs.map +0 -1
- package/dist/run-alchemy-pANK8XNX-BH1wC0r6.mjs +0 -99
- package/dist/run-alchemy-pANK8XNX-BH1wC0r6.mjs.map +0 -1
- package/dist/run-alchemy-pANK8XNX-XcCQncKN.mjs +0 -99
- package/dist/run-alchemy-pANK8XNX-XcCQncKN.mjs.map +0 -1
- package/dist/shared-BTnATsqm-BH4axbJg.mjs +0 -158
- package/dist/shared-BTnATsqm-BH4axbJg.mjs.map +0 -1
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import { c as CliStructuredError, n as ok, s as toStructured, t as notOk } from "./result-B874OKwb.mjs";
|
|
2
|
-
import { t as resolveAppIdentity } from "./pipeline-C7gNjMzJ-CMqZQxqM.mjs";
|
|
3
|
-
import { n as withEmulatorRetry, r as DEV_DIR, t as resolveLocalTargets } from "./local-target-hoEGqgVA.mjs";
|
|
4
|
-
import * as path from "node:path";
|
|
5
|
-
//#region ../../0-framework/3-tooling/cli/dist/execute-log-B_zCJ17b.mjs
|
|
6
|
-
/**
|
|
7
|
-
* The log executor — run-log.ts's attach-and-tail (config → localTarget →
|
|
8
|
-
* container → attach → logs) with console and signal handling removed: the
|
|
9
|
-
* merged stream comes back as an AsyncIterable, ended by the caller's
|
|
10
|
-
* AbortSignal. Reached only by lazy import from log.ts — this module's
|
|
11
|
-
* static graph transitively loads alchemy's provider tree, so the control
|
|
12
|
-
* entry must never import it statically.
|
|
13
|
-
*/
|
|
14
|
-
function failureMessage(error) {
|
|
15
|
-
return error instanceof Error ? error.message : String(error);
|
|
16
|
-
}
|
|
17
|
-
/** The merge queue's bound: past this, the oldest line is dropped and the
|
|
18
|
-
* consumer is told via a `lines-dropped` event — a log viewer tolerates loss
|
|
19
|
-
* better than the host tolerates unbounded memory growth. Exported so tests
|
|
20
|
-
* can size their floods relative to the bound. */
|
|
21
|
-
const LOG_QUEUE_LIMIT = 1e4;
|
|
22
|
-
/**
|
|
23
|
-
* Merges every attachment's log stream into one iterable: one pump per
|
|
24
|
-
* attachment pushing into a shared bounded queue. A pump's throw becomes a
|
|
25
|
-
* `stream-failed` event and ends that pump only; the merged iterable ends
|
|
26
|
-
* when `input.signal` aborts, when every pump ends, or when the consumer
|
|
27
|
-
* stops iterating (an early `break` aborts an internal controller so the
|
|
28
|
-
* pumps tear down — the generator never waits on a source that will not
|
|
29
|
-
* end). No event is delivered after the iterable has ended. Address
|
|
30
|
-
* filtering and `tail` apply exactly as the CLI always has.
|
|
31
|
-
*/
|
|
32
|
-
async function* mergeLogStreams(attachments, input) {
|
|
33
|
-
const controller = new AbortController();
|
|
34
|
-
const { signal } = controller;
|
|
35
|
-
const abortInternal = () => controller.abort();
|
|
36
|
-
if (input.signal?.aborted === true) controller.abort();
|
|
37
|
-
input.signal?.addEventListener("abort", abortInternal, { once: true });
|
|
38
|
-
const queue = [];
|
|
39
|
-
let dropped = 0;
|
|
40
|
-
let done = false;
|
|
41
|
-
let active = attachments.length;
|
|
42
|
-
let wake;
|
|
43
|
-
const notify = () => {
|
|
44
|
-
wake?.();
|
|
45
|
-
wake = void 0;
|
|
46
|
-
};
|
|
47
|
-
signal.addEventListener("abort", notify, { once: true });
|
|
48
|
-
const emit = (event) => {
|
|
49
|
-
if (done) return;
|
|
50
|
-
try {
|
|
51
|
-
input.onEvent?.(event);
|
|
52
|
-
} catch {}
|
|
53
|
-
};
|
|
54
|
-
const pump = async (attachment) => {
|
|
55
|
-
try {
|
|
56
|
-
for await (const { service, line } of attachment.logs(signal, { tail: input.tail ?? 0 })) {
|
|
57
|
-
if (signal.aborted) return;
|
|
58
|
-
if (input.address !== void 0 && service !== input.address) continue;
|
|
59
|
-
if (queue.length >= 1e4) {
|
|
60
|
-
queue.shift();
|
|
61
|
-
dropped += 1;
|
|
62
|
-
}
|
|
63
|
-
queue.push({
|
|
64
|
-
service,
|
|
65
|
-
line
|
|
66
|
-
});
|
|
67
|
-
notify();
|
|
68
|
-
}
|
|
69
|
-
} catch (error) {
|
|
70
|
-
if (!signal.aborted) emit({
|
|
71
|
-
kind: "stream-failed",
|
|
72
|
-
message: failureMessage(error)
|
|
73
|
-
});
|
|
74
|
-
} finally {
|
|
75
|
-
active -= 1;
|
|
76
|
-
notify();
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
for (const attachment of attachments) pump(attachment);
|
|
80
|
-
try {
|
|
81
|
-
while (true) {
|
|
82
|
-
let next = queue.shift();
|
|
83
|
-
while (next !== void 0) {
|
|
84
|
-
if (dropped > 0) {
|
|
85
|
-
const count = dropped;
|
|
86
|
-
dropped = 0;
|
|
87
|
-
emit({
|
|
88
|
-
kind: "lines-dropped",
|
|
89
|
-
count
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
yield next;
|
|
93
|
-
next = queue.shift();
|
|
94
|
-
}
|
|
95
|
-
if (signal.aborted || active === 0) break;
|
|
96
|
-
await new Promise((resolve) => {
|
|
97
|
-
wake = resolve;
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
} finally {
|
|
101
|
-
done = true;
|
|
102
|
-
controller.abort();
|
|
103
|
-
signal.removeEventListener("abort", notify);
|
|
104
|
-
input.signal?.removeEventListener("abort", abortInternal);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
/** Resolves the running app and attaches to its log streams; the caller consumes `lines`. */
|
|
108
|
-
async function executeLog(input, deps, cwd) {
|
|
109
|
-
if (process.platform === "win32") return notOk(new CliStructuredError("LOG.PLATFORM_UNSUPPORTED", "local dev is not supported on Windows yet."));
|
|
110
|
-
const devDir = path.join(cwd, DEV_DIR);
|
|
111
|
-
let name;
|
|
112
|
-
const attachments = [];
|
|
113
|
-
let services;
|
|
114
|
-
try {
|
|
115
|
-
const identity = deps.identity ?? await resolveAppIdentity(input.entry, input.name, cwd, {
|
|
116
|
-
config: deps.config,
|
|
117
|
-
configPath: deps.configPath
|
|
118
|
-
});
|
|
119
|
-
name = identity.name;
|
|
120
|
-
const resolved = await resolveLocalTargets(identity.config);
|
|
121
|
-
for (const target of resolved.values()) try {
|
|
122
|
-
const container = await target.container.ensure({
|
|
123
|
-
appName: name,
|
|
124
|
-
stage: void 0
|
|
125
|
-
});
|
|
126
|
-
attachments.push(await withEmulatorRetry(() => target.attach({
|
|
127
|
-
container,
|
|
128
|
-
devDir
|
|
129
|
-
})));
|
|
130
|
-
} catch (error) {
|
|
131
|
-
throw toStructured("LOG.ATTACH_FAILED", error);
|
|
132
|
-
}
|
|
133
|
-
try {
|
|
134
|
-
services = (await Promise.all(attachments.map((a) => withEmulatorRetry(() => a.endpoints())))).flat();
|
|
135
|
-
} catch (error) {
|
|
136
|
-
throw toStructured("LOG.ATTACH_FAILED", error);
|
|
137
|
-
}
|
|
138
|
-
} catch (error) {
|
|
139
|
-
if (CliStructuredError.is(error)) return notOk(error);
|
|
140
|
-
throw error;
|
|
141
|
-
}
|
|
142
|
-
if (services.length === 0) return ok({
|
|
143
|
-
appName: name,
|
|
144
|
-
services: [],
|
|
145
|
-
lines: mergeLogStreams([], input)
|
|
146
|
-
});
|
|
147
|
-
if (input.address !== void 0 && !services.some((s) => s.address === input.address)) return notOk(new CliStructuredError("LOG.ADDRESS_UNKNOWN", `no service "${input.address}" in "${name}" — running services: ${services.map((s) => s.address).join(", ")}.`));
|
|
148
|
-
return ok({
|
|
149
|
-
appName: name,
|
|
150
|
-
services,
|
|
151
|
-
lines: mergeLogStreams(attachments, input)
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
//#endregion
|
|
155
|
-
export { LOG_QUEUE_LIMIT, executeLog };
|
|
156
|
-
|
|
157
|
-
//# sourceMappingURL=execute-log-B_zCJ17b-BrLUt7vo.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"execute-log-B_zCJ17b-BrLUt7vo.mjs","names":[],"sources":["../../../0-framework/3-tooling/cli/dist/execute-log-B_zCJ17b.mjs"],"sourcesContent":["import { r as toStructured } from \"./shared-BTnATsqm.mjs\";\nimport { t as resolveAppIdentity } from \"./pipeline-C7gNjMzJ.mjs\";\nimport { t as withEmulatorRetry } from \"./emulator-retry-DGonap4g.mjs\";\nimport { CliStructuredError } from \"@internal/foundation/errors\";\nimport * as path from \"node:path\";\nimport { notOk, ok } from \"@internal/foundation/result\";\nimport { DEV_DIR, resolveLocalTargets } from \"@internal/core/local-target\";\n//#region src/operations/execute-log.ts\n/**\n* The log executor — run-log.ts's attach-and-tail (config → localTarget →\n* container → attach → logs) with console and signal handling removed: the\n* merged stream comes back as an AsyncIterable, ended by the caller's\n* AbortSignal. Reached only by lazy import from log.ts — this module's\n* static graph transitively loads alchemy's provider tree, so the control\n* entry must never import it statically.\n*/\nfunction failureMessage(error) {\n\treturn error instanceof Error ? error.message : String(error);\n}\n/** The merge queue's bound: past this, the oldest line is dropped and the\n* consumer is told via a `lines-dropped` event — a log viewer tolerates loss\n* better than the host tolerates unbounded memory growth. Exported so tests\n* can size their floods relative to the bound. */\nconst LOG_QUEUE_LIMIT = 1e4;\n/**\n* Merges every attachment's log stream into one iterable: one pump per\n* attachment pushing into a shared bounded queue. A pump's throw becomes a\n* `stream-failed` event and ends that pump only; the merged iterable ends\n* when `input.signal` aborts, when every pump ends, or when the consumer\n* stops iterating (an early `break` aborts an internal controller so the\n* pumps tear down — the generator never waits on a source that will not\n* end). No event is delivered after the iterable has ended. Address\n* filtering and `tail` apply exactly as the CLI always has.\n*/\nasync function* mergeLogStreams(attachments, input) {\n\tconst controller = new AbortController();\n\tconst { signal } = controller;\n\tconst abortInternal = () => controller.abort();\n\tif (input.signal?.aborted === true) controller.abort();\n\tinput.signal?.addEventListener(\"abort\", abortInternal, { once: true });\n\tconst queue = [];\n\tlet dropped = 0;\n\tlet done = false;\n\tlet active = attachments.length;\n\tlet wake;\n\tconst notify = () => {\n\t\twake?.();\n\t\twake = void 0;\n\t};\n\tsignal.addEventListener(\"abort\", notify, { once: true });\n\tconst emit = (event) => {\n\t\tif (done) return;\n\t\ttry {\n\t\t\tinput.onEvent?.(event);\n\t\t} catch {}\n\t};\n\tconst pump = async (attachment) => {\n\t\ttry {\n\t\t\tfor await (const { service, line } of attachment.logs(signal, { tail: input.tail ?? 0 })) {\n\t\t\t\tif (signal.aborted) return;\n\t\t\t\tif (input.address !== void 0 && service !== input.address) continue;\n\t\t\t\tif (queue.length >= 1e4) {\n\t\t\t\t\tqueue.shift();\n\t\t\t\t\tdropped += 1;\n\t\t\t\t}\n\t\t\t\tqueue.push({\n\t\t\t\t\tservice,\n\t\t\t\t\tline\n\t\t\t\t});\n\t\t\t\tnotify();\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (!signal.aborted) emit({\n\t\t\t\tkind: \"stream-failed\",\n\t\t\t\tmessage: failureMessage(error)\n\t\t\t});\n\t\t} finally {\n\t\t\tactive -= 1;\n\t\t\tnotify();\n\t\t}\n\t};\n\tfor (const attachment of attachments) pump(attachment);\n\ttry {\n\t\twhile (true) {\n\t\t\tlet next = queue.shift();\n\t\t\twhile (next !== void 0) {\n\t\t\t\tif (dropped > 0) {\n\t\t\t\t\tconst count = dropped;\n\t\t\t\t\tdropped = 0;\n\t\t\t\t\temit({\n\t\t\t\t\t\tkind: \"lines-dropped\",\n\t\t\t\t\t\tcount\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tyield next;\n\t\t\t\tnext = queue.shift();\n\t\t\t}\n\t\t\tif (signal.aborted || active === 0) break;\n\t\t\tawait new Promise((resolve) => {\n\t\t\t\twake = resolve;\n\t\t\t});\n\t\t}\n\t} finally {\n\t\tdone = true;\n\t\tcontroller.abort();\n\t\tsignal.removeEventListener(\"abort\", notify);\n\t\tinput.signal?.removeEventListener(\"abort\", abortInternal);\n\t}\n}\n/** Resolves the running app and attaches to its log streams; the caller consumes `lines`. */\nasync function executeLog(input, deps, cwd) {\n\tif (process.platform === \"win32\") return notOk(new CliStructuredError(\"LOG.PLATFORM_UNSUPPORTED\", \"local dev is not supported on Windows yet.\"));\n\tconst devDir = path.join(cwd, DEV_DIR);\n\tlet name;\n\tconst attachments = [];\n\tlet services;\n\ttry {\n\t\tconst identity = deps.identity ?? await resolveAppIdentity(input.entry, input.name, cwd, {\n\t\t\tconfig: deps.config,\n\t\t\tconfigPath: deps.configPath\n\t\t});\n\t\tname = identity.name;\n\t\tconst resolved = await resolveLocalTargets(identity.config);\n\t\tfor (const target of resolved.values()) try {\n\t\t\tconst container = await target.container.ensure({\n\t\t\t\tappName: name,\n\t\t\t\tstage: void 0\n\t\t\t});\n\t\t\tattachments.push(await withEmulatorRetry(() => target.attach({\n\t\t\t\tcontainer,\n\t\t\t\tdevDir\n\t\t\t})));\n\t\t} catch (error) {\n\t\t\tthrow toStructured(\"LOG.ATTACH_FAILED\", error);\n\t\t}\n\t\ttry {\n\t\t\tservices = (await Promise.all(attachments.map((a) => withEmulatorRetry(() => a.endpoints())))).flat();\n\t\t} catch (error) {\n\t\t\tthrow toStructured(\"LOG.ATTACH_FAILED\", error);\n\t\t}\n\t} catch (error) {\n\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\tthrow error;\n\t}\n\tif (services.length === 0) return ok({\n\t\tappName: name,\n\t\tservices: [],\n\t\tlines: mergeLogStreams([], input)\n\t});\n\tif (input.address !== void 0 && !services.some((s) => s.address === input.address)) return notOk(new CliStructuredError(\"LOG.ADDRESS_UNKNOWN\", `no service \"${input.address}\" in \"${name}\" — running services: ${services.map((s) => s.address).join(\", \")}.`));\n\treturn ok({\n\t\tappName: name,\n\t\tservices,\n\t\tlines: mergeLogStreams(attachments, input)\n\t});\n}\n//#endregion\nexport { LOG_QUEUE_LIMIT, executeLog };\n\n//# sourceMappingURL=execute-log-B_zCJ17b.mjs.map"],"mappings":"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"}
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import { i as CliStructuredError, n as ok, t as notOk } from "./result-sR7PBi61.mjs";
|
|
2
|
-
import { i as toStructured } from "./shared-BTnATsqm-BH4axbJg.mjs";
|
|
3
|
-
import { t as resolveAppIdentity } from "./pipeline-C7gNjMzJ-CixaMvnR.mjs";
|
|
4
|
-
import { n as withEmulatorRetry, r as DEV_DIR, t as resolveLocalTargets } from "./local-target-BOGjATc2.mjs";
|
|
5
|
-
import * as path from "node:path";
|
|
6
|
-
//#region ../../0-framework/3-tooling/cli/dist/execute-log-B_zCJ17b.mjs
|
|
7
|
-
/**
|
|
8
|
-
* The log executor — run-log.ts's attach-and-tail (config → localTarget →
|
|
9
|
-
* container → attach → logs) with console and signal handling removed: the
|
|
10
|
-
* merged stream comes back as an AsyncIterable, ended by the caller's
|
|
11
|
-
* AbortSignal. Reached only by lazy import from log.ts — this module's
|
|
12
|
-
* static graph transitively loads alchemy's provider tree, so the control
|
|
13
|
-
* entry must never import it statically.
|
|
14
|
-
*/
|
|
15
|
-
function failureMessage(error) {
|
|
16
|
-
return error instanceof Error ? error.message : String(error);
|
|
17
|
-
}
|
|
18
|
-
/** The merge queue's bound: past this, the oldest line is dropped and the
|
|
19
|
-
* consumer is told via a `lines-dropped` event — a log viewer tolerates loss
|
|
20
|
-
* better than the host tolerates unbounded memory growth. Exported so tests
|
|
21
|
-
* can size their floods relative to the bound. */
|
|
22
|
-
const LOG_QUEUE_LIMIT = 1e4;
|
|
23
|
-
/**
|
|
24
|
-
* Merges every attachment's log stream into one iterable: one pump per
|
|
25
|
-
* attachment pushing into a shared bounded queue. A pump's throw becomes a
|
|
26
|
-
* `stream-failed` event and ends that pump only; the merged iterable ends
|
|
27
|
-
* when `input.signal` aborts, when every pump ends, or when the consumer
|
|
28
|
-
* stops iterating (an early `break` aborts an internal controller so the
|
|
29
|
-
* pumps tear down — the generator never waits on a source that will not
|
|
30
|
-
* end). No event is delivered after the iterable has ended. Address
|
|
31
|
-
* filtering and `tail` apply exactly as the CLI always has.
|
|
32
|
-
*/
|
|
33
|
-
async function* mergeLogStreams(attachments, input) {
|
|
34
|
-
const controller = new AbortController();
|
|
35
|
-
const { signal } = controller;
|
|
36
|
-
const abortInternal = () => controller.abort();
|
|
37
|
-
if (input.signal?.aborted === true) controller.abort();
|
|
38
|
-
input.signal?.addEventListener("abort", abortInternal, { once: true });
|
|
39
|
-
const queue = [];
|
|
40
|
-
let dropped = 0;
|
|
41
|
-
let done = false;
|
|
42
|
-
let active = attachments.length;
|
|
43
|
-
let wake;
|
|
44
|
-
const notify = () => {
|
|
45
|
-
wake?.();
|
|
46
|
-
wake = void 0;
|
|
47
|
-
};
|
|
48
|
-
signal.addEventListener("abort", notify, { once: true });
|
|
49
|
-
const emit = (event) => {
|
|
50
|
-
if (done) return;
|
|
51
|
-
try {
|
|
52
|
-
input.onEvent?.(event);
|
|
53
|
-
} catch {}
|
|
54
|
-
};
|
|
55
|
-
const pump = async (attachment) => {
|
|
56
|
-
try {
|
|
57
|
-
for await (const { service, line } of attachment.logs(signal, { tail: input.tail ?? 0 })) {
|
|
58
|
-
if (signal.aborted) return;
|
|
59
|
-
if (input.address !== void 0 && service !== input.address) continue;
|
|
60
|
-
if (queue.length >= 1e4) {
|
|
61
|
-
queue.shift();
|
|
62
|
-
dropped += 1;
|
|
63
|
-
}
|
|
64
|
-
queue.push({
|
|
65
|
-
service,
|
|
66
|
-
line
|
|
67
|
-
});
|
|
68
|
-
notify();
|
|
69
|
-
}
|
|
70
|
-
} catch (error) {
|
|
71
|
-
if (!signal.aborted) emit({
|
|
72
|
-
kind: "stream-failed",
|
|
73
|
-
message: failureMessage(error)
|
|
74
|
-
});
|
|
75
|
-
} finally {
|
|
76
|
-
active -= 1;
|
|
77
|
-
notify();
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
for (const attachment of attachments) pump(attachment);
|
|
81
|
-
try {
|
|
82
|
-
while (true) {
|
|
83
|
-
let next = queue.shift();
|
|
84
|
-
while (next !== void 0) {
|
|
85
|
-
if (dropped > 0) {
|
|
86
|
-
const count = dropped;
|
|
87
|
-
dropped = 0;
|
|
88
|
-
emit({
|
|
89
|
-
kind: "lines-dropped",
|
|
90
|
-
count
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
yield next;
|
|
94
|
-
next = queue.shift();
|
|
95
|
-
}
|
|
96
|
-
if (signal.aborted || active === 0) break;
|
|
97
|
-
await new Promise((resolve) => {
|
|
98
|
-
wake = resolve;
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
} finally {
|
|
102
|
-
done = true;
|
|
103
|
-
controller.abort();
|
|
104
|
-
signal.removeEventListener("abort", notify);
|
|
105
|
-
input.signal?.removeEventListener("abort", abortInternal);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
/** Resolves the running app and attaches to its log streams; the caller consumes `lines`. */
|
|
109
|
-
async function executeLog(input, deps, cwd) {
|
|
110
|
-
if (process.platform === "win32") return notOk(new CliStructuredError("LOG.PLATFORM_UNSUPPORTED", "local dev is not supported on Windows yet."));
|
|
111
|
-
const devDir = path.join(cwd, DEV_DIR);
|
|
112
|
-
let name;
|
|
113
|
-
const attachments = [];
|
|
114
|
-
let services;
|
|
115
|
-
try {
|
|
116
|
-
const identity = deps.identity ?? await resolveAppIdentity(input.entry, input.name, cwd, {
|
|
117
|
-
config: deps.config,
|
|
118
|
-
configPath: deps.configPath
|
|
119
|
-
});
|
|
120
|
-
name = identity.name;
|
|
121
|
-
const resolved = await resolveLocalTargets(identity.config);
|
|
122
|
-
for (const target of resolved.values()) try {
|
|
123
|
-
const container = await target.container.ensure({
|
|
124
|
-
appName: name,
|
|
125
|
-
stage: void 0
|
|
126
|
-
});
|
|
127
|
-
attachments.push(await withEmulatorRetry(() => target.attach({
|
|
128
|
-
container,
|
|
129
|
-
devDir
|
|
130
|
-
})));
|
|
131
|
-
} catch (error) {
|
|
132
|
-
throw toStructured("LOG.ATTACH_FAILED", error);
|
|
133
|
-
}
|
|
134
|
-
try {
|
|
135
|
-
services = (await Promise.all(attachments.map((a) => withEmulatorRetry(() => a.endpoints())))).flat();
|
|
136
|
-
} catch (error) {
|
|
137
|
-
throw toStructured("LOG.ATTACH_FAILED", error);
|
|
138
|
-
}
|
|
139
|
-
} catch (error) {
|
|
140
|
-
if (CliStructuredError.is(error)) return notOk(error);
|
|
141
|
-
throw error;
|
|
142
|
-
}
|
|
143
|
-
if (services.length === 0) return ok({
|
|
144
|
-
appName: name,
|
|
145
|
-
services: [],
|
|
146
|
-
lines: mergeLogStreams([], input)
|
|
147
|
-
});
|
|
148
|
-
if (input.address !== void 0 && !services.some((s) => s.address === input.address)) return notOk(new CliStructuredError("LOG.ADDRESS_UNKNOWN", `no service "${input.address}" in "${name}" — running services: ${services.map((s) => s.address).join(", ")}.`));
|
|
149
|
-
return ok({
|
|
150
|
-
appName: name,
|
|
151
|
-
services,
|
|
152
|
-
lines: mergeLogStreams(attachments, input)
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
//#endregion
|
|
156
|
-
export { LOG_QUEUE_LIMIT, executeLog };
|
|
157
|
-
|
|
158
|
-
//# sourceMappingURL=execute-log-B_zCJ17b-C4a0uxJj.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"execute-log-B_zCJ17b-C4a0uxJj.mjs","names":[],"sources":["../../../0-framework/3-tooling/cli/dist/execute-log-B_zCJ17b.mjs"],"sourcesContent":["import { r as toStructured } from \"./shared-BTnATsqm.mjs\";\nimport { t as resolveAppIdentity } from \"./pipeline-C7gNjMzJ.mjs\";\nimport { t as withEmulatorRetry } from \"./emulator-retry-DGonap4g.mjs\";\nimport { CliStructuredError } from \"@internal/foundation/errors\";\nimport * as path from \"node:path\";\nimport { notOk, ok } from \"@internal/foundation/result\";\nimport { DEV_DIR, resolveLocalTargets } from \"@internal/core/local-target\";\n//#region src/operations/execute-log.ts\n/**\n* The log executor — run-log.ts's attach-and-tail (config → localTarget →\n* container → attach → logs) with console and signal handling removed: the\n* merged stream comes back as an AsyncIterable, ended by the caller's\n* AbortSignal. Reached only by lazy import from log.ts — this module's\n* static graph transitively loads alchemy's provider tree, so the control\n* entry must never import it statically.\n*/\nfunction failureMessage(error) {\n\treturn error instanceof Error ? error.message : String(error);\n}\n/** The merge queue's bound: past this, the oldest line is dropped and the\n* consumer is told via a `lines-dropped` event — a log viewer tolerates loss\n* better than the host tolerates unbounded memory growth. Exported so tests\n* can size their floods relative to the bound. */\nconst LOG_QUEUE_LIMIT = 1e4;\n/**\n* Merges every attachment's log stream into one iterable: one pump per\n* attachment pushing into a shared bounded queue. A pump's throw becomes a\n* `stream-failed` event and ends that pump only; the merged iterable ends\n* when `input.signal` aborts, when every pump ends, or when the consumer\n* stops iterating (an early `break` aborts an internal controller so the\n* pumps tear down — the generator never waits on a source that will not\n* end). No event is delivered after the iterable has ended. Address\n* filtering and `tail` apply exactly as the CLI always has.\n*/\nasync function* mergeLogStreams(attachments, input) {\n\tconst controller = new AbortController();\n\tconst { signal } = controller;\n\tconst abortInternal = () => controller.abort();\n\tif (input.signal?.aborted === true) controller.abort();\n\tinput.signal?.addEventListener(\"abort\", abortInternal, { once: true });\n\tconst queue = [];\n\tlet dropped = 0;\n\tlet done = false;\n\tlet active = attachments.length;\n\tlet wake;\n\tconst notify = () => {\n\t\twake?.();\n\t\twake = void 0;\n\t};\n\tsignal.addEventListener(\"abort\", notify, { once: true });\n\tconst emit = (event) => {\n\t\tif (done) return;\n\t\ttry {\n\t\t\tinput.onEvent?.(event);\n\t\t} catch {}\n\t};\n\tconst pump = async (attachment) => {\n\t\ttry {\n\t\t\tfor await (const { service, line } of attachment.logs(signal, { tail: input.tail ?? 0 })) {\n\t\t\t\tif (signal.aborted) return;\n\t\t\t\tif (input.address !== void 0 && service !== input.address) continue;\n\t\t\t\tif (queue.length >= 1e4) {\n\t\t\t\t\tqueue.shift();\n\t\t\t\t\tdropped += 1;\n\t\t\t\t}\n\t\t\t\tqueue.push({\n\t\t\t\t\tservice,\n\t\t\t\t\tline\n\t\t\t\t});\n\t\t\t\tnotify();\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (!signal.aborted) emit({\n\t\t\t\tkind: \"stream-failed\",\n\t\t\t\tmessage: failureMessage(error)\n\t\t\t});\n\t\t} finally {\n\t\t\tactive -= 1;\n\t\t\tnotify();\n\t\t}\n\t};\n\tfor (const attachment of attachments) pump(attachment);\n\ttry {\n\t\twhile (true) {\n\t\t\tlet next = queue.shift();\n\t\t\twhile (next !== void 0) {\n\t\t\t\tif (dropped > 0) {\n\t\t\t\t\tconst count = dropped;\n\t\t\t\t\tdropped = 0;\n\t\t\t\t\temit({\n\t\t\t\t\t\tkind: \"lines-dropped\",\n\t\t\t\t\t\tcount\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tyield next;\n\t\t\t\tnext = queue.shift();\n\t\t\t}\n\t\t\tif (signal.aborted || active === 0) break;\n\t\t\tawait new Promise((resolve) => {\n\t\t\t\twake = resolve;\n\t\t\t});\n\t\t}\n\t} finally {\n\t\tdone = true;\n\t\tcontroller.abort();\n\t\tsignal.removeEventListener(\"abort\", notify);\n\t\tinput.signal?.removeEventListener(\"abort\", abortInternal);\n\t}\n}\n/** Resolves the running app and attaches to its log streams; the caller consumes `lines`. */\nasync function executeLog(input, deps, cwd) {\n\tif (process.platform === \"win32\") return notOk(new CliStructuredError(\"LOG.PLATFORM_UNSUPPORTED\", \"local dev is not supported on Windows yet.\"));\n\tconst devDir = path.join(cwd, DEV_DIR);\n\tlet name;\n\tconst attachments = [];\n\tlet services;\n\ttry {\n\t\tconst identity = deps.identity ?? await resolveAppIdentity(input.entry, input.name, cwd, {\n\t\t\tconfig: deps.config,\n\t\t\tconfigPath: deps.configPath\n\t\t});\n\t\tname = identity.name;\n\t\tconst resolved = await resolveLocalTargets(identity.config);\n\t\tfor (const target of resolved.values()) try {\n\t\t\tconst container = await target.container.ensure({\n\t\t\t\tappName: name,\n\t\t\t\tstage: void 0\n\t\t\t});\n\t\t\tattachments.push(await withEmulatorRetry(() => target.attach({\n\t\t\t\tcontainer,\n\t\t\t\tdevDir\n\t\t\t})));\n\t\t} catch (error) {\n\t\t\tthrow toStructured(\"LOG.ATTACH_FAILED\", error);\n\t\t}\n\t\ttry {\n\t\t\tservices = (await Promise.all(attachments.map((a) => withEmulatorRetry(() => a.endpoints())))).flat();\n\t\t} catch (error) {\n\t\t\tthrow toStructured(\"LOG.ATTACH_FAILED\", error);\n\t\t}\n\t} catch (error) {\n\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\tthrow error;\n\t}\n\tif (services.length === 0) return ok({\n\t\tappName: name,\n\t\tservices: [],\n\t\tlines: mergeLogStreams([], input)\n\t});\n\tif (input.address !== void 0 && !services.some((s) => s.address === input.address)) return notOk(new CliStructuredError(\"LOG.ADDRESS_UNKNOWN\", `no service \"${input.address}\" in \"${name}\" — running services: ${services.map((s) => s.address).join(\", \")}.`));\n\treturn ok({\n\t\tappName: name,\n\t\tservices,\n\t\tlines: mergeLogStreams(attachments, input)\n\t});\n}\n//#endregion\nexport { LOG_QUEUE_LIMIT, executeLog };\n\n//# sourceMappingURL=execute-log-B_zCJ17b.mjs.map"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"family-B1RaH4f8-ChoTnv3A.d.mts","names":[],"sources":["../../../0-framework/0-foundation/foundation/dist/errors.d.mts","../../../../node_modules/@standard-schema/spec/dist/index.d.ts","../../../0-framework/1-core/core/dist/graph-types-BTTaRnih.d.mts","../../../0-framework/3-tooling/cli/dist/load-entry-curbqn_8.d.mts","../../../0-framework/0-foundation/foundation/dist/result.d.mts","../../../0-framework/1-core/core/dist/app-config-jGcCcxK4.d.mts","../../../0-framework/3-tooling/assemble/dist/index.d.mts","../../../0-framework/3-tooling/cli/dist/log-C9rzlqfJ.d.mts","../../../0-framework/3-tooling/cli/dist/family-B1RaH4f8.d.mts"],"x_google_ignoreList":[1],"mappings":"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"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { i as CliStructuredError } from "./result-sR7PBi61.mjs";
|
|
2
|
-
import "effect/Layer";
|
|
3
|
-
//#region ../../0-framework/1-core/core/dist/app-config-joXc-BKm.mjs
|
|
4
|
-
/** `<cwd>/.prisma-composer/dev` — the dev instance's app-scoped state directory (ADR-0041, ADR-0004's tool-state rule). "dev" names the user-facing feature/dir (naming, operator 2026-07-23) — this constant's name and value are unchanged by the localTarget rename. */
|
|
5
|
-
const DEV_DIR = ".prisma-composer/dev";
|
|
6
|
-
/**
|
|
7
|
-
* True when an extension only participates in assembly (every `nodes` entry
|
|
8
|
-
* is `kind: 'build'`, and it declares none of `providers`/`application`/
|
|
9
|
-
* `provisions`/`container`) — it owns no resources or services, so it has
|
|
10
|
-
* nothing to emulate and is exempt from local-target-capability requirements
|
|
11
|
-
* (ADR-0041). Shared by `localTargetProviders` and every local-target hook
|
|
12
|
-
* iteration.
|
|
13
|
-
*/
|
|
14
|
-
function isBuildOnlyExtension(extension) {
|
|
15
|
-
return Object.values(extension.nodes).every((node) => node.kind === "build") && extension.providers === void 0 && extension.application === void 0 && extension.provisions === void 0 && extension.container === void 0;
|
|
16
|
-
}
|
|
17
|
-
//#endregion
|
|
18
|
-
//#region ../../0-framework/3-tooling/cli/dist/emulator-retry-DGonap4g.mjs
|
|
19
|
-
/**
|
|
20
|
-
* An emulator admin call right after a converge that just PUT dozens of
|
|
21
|
-
* resources through the same daemon can hit a transient refused/reset
|
|
22
|
-
* connection — a brief loopback hiccup under load, not a real failure.
|
|
23
|
-
* Retried before giving up. Shared by the dev and log executors, which talk
|
|
24
|
-
* to the same daemons (`startServices`, `endpoints`, `attach`).
|
|
25
|
-
*/
|
|
26
|
-
const EMULATOR_RETRY_ATTEMPTS = 5;
|
|
27
|
-
const EMULATOR_RETRY_DELAY_MS = 500;
|
|
28
|
-
async function withEmulatorRetry(call) {
|
|
29
|
-
let lastError;
|
|
30
|
-
for (let attempt = 1; attempt <= EMULATOR_RETRY_ATTEMPTS; attempt += 1) try {
|
|
31
|
-
return await call();
|
|
32
|
-
} catch (error) {
|
|
33
|
-
lastError = error;
|
|
34
|
-
if (attempt < EMULATOR_RETRY_ATTEMPTS) await new Promise((resolve) => setTimeout(resolve, EMULATOR_RETRY_DELAY_MS));
|
|
35
|
-
}
|
|
36
|
-
throw lastError instanceof Error ? lastError : new Error(String(lastError));
|
|
37
|
-
}
|
|
38
|
-
//#endregion
|
|
39
|
-
//#region ../../0-framework/1-core/core/dist/local-target.mjs
|
|
40
|
-
/** The local-target stack's own provider aggregation (ADR-0041; naming, operator 2026-07-23 — the seam is `localTarget`, "dev" names the user-facing feature only) — the local-target counterpart of `deploy.ts`'s `mergedProviders`, kept in its own module so `lower()` learns nothing about it (deploy.ts's REVISED — operator review of #162). */
|
|
41
|
-
function noLocalTargetSupportError(id) {
|
|
42
|
-
return new CliStructuredError("DEV.TARGET_UNSUPPORTED", `extension "${id}" has no dev support — it declares no \`localTarget\` descriptor (ADR-0041).`);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Resolves every non-build-only configured extension's lazy `localTarget`
|
|
46
|
-
* thunk, once (ADR-0041's lazy local-target reference — operator directive:
|
|
47
|
-
* the production control entry carries only the thunk, never the
|
|
48
|
-
* descriptor, so resolving it is this module's job, not something a deploy
|
|
49
|
-
* path ever does). A build-only extension (`isBuildOnlyExtension`) owns no
|
|
50
|
-
* resources or services and is skipped entirely — never even checked for a
|
|
51
|
-
* `localTarget` thunk. Every other configured extension must be
|
|
52
|
-
* local-target-capable, or the dev command cannot bring the app up at all,
|
|
53
|
-
* so a missing thunk throws naming the extension. The generated dev stack
|
|
54
|
-
* module calls this once and threads the resolved map through every
|
|
55
|
-
* subsequent hook, including `localTargetProviders`.
|
|
56
|
-
*/
|
|
57
|
-
async function resolveLocalTargets(config) {
|
|
58
|
-
const entries = await Promise.all(config.extensions.flatMap((extension) => {
|
|
59
|
-
if (isBuildOnlyExtension(extension)) return [];
|
|
60
|
-
if (extension.localTarget === void 0) throw noLocalTargetSupportError(extension.id);
|
|
61
|
-
return [extension.localTarget().then((descriptor) => [extension.id, descriptor])];
|
|
62
|
-
}));
|
|
63
|
-
return new Map(entries);
|
|
64
|
-
}
|
|
65
|
-
//#endregion
|
|
66
|
-
export { withEmulatorRetry as n, DEV_DIR as r, resolveLocalTargets as t };
|
|
67
|
-
|
|
68
|
-
//# sourceMappingURL=local-target-BOGjATc2.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local-target-BOGjATc2.mjs","names":[],"sources":["../../../0-framework/1-core/core/dist/app-config-joXc-BKm.mjs","../../../0-framework/3-tooling/cli/dist/emulator-retry-DGonap4g.mjs","../../../0-framework/1-core/core/dist/local-target.mjs"],"sourcesContent":["//#region src/control/app-config.ts\n/** `<cwd>/.prisma-composer/dev` — the dev instance's app-scoped state directory (ADR-0041, ADR-0004's tool-state rule). \"dev\" names the user-facing feature/dir (naming, operator 2026-07-23) — this constant's name and value are unchanged by the localTarget rename. */\nconst DEV_DIR = \".prisma-composer/dev\";\n/**\n* True when an extension only participates in assembly (every `nodes` entry\n* is `kind: 'build'`, and it declares none of `providers`/`application`/\n* `provisions`/`container`) — it owns no resources or services, so it has\n* nothing to emulate and is exempt from local-target-capability requirements\n* (ADR-0041). Shared by `localTargetProviders` and every local-target hook\n* iteration.\n*/\nfunction isBuildOnlyExtension(extension) {\n\treturn Object.values(extension.nodes).every((node) => node.kind === \"build\") && extension.providers === void 0 && extension.application === void 0 && extension.provisions === void 0 && extension.container === void 0;\n}\n/** Typed identity — exists so `prisma-composer.config.ts` gets checked against PrismaAppConfig where it is written. */\nfunction defineConfig(config) {\n\treturn config;\n}\n//#endregion\nexport { defineConfig as n, isBuildOnlyExtension as r, DEV_DIR as t };\n\n//# sourceMappingURL=app-config-joXc-BKm.mjs.map","//#region src/operations/emulator-retry.ts\n/**\n* An emulator admin call right after a converge that just PUT dozens of\n* resources through the same daemon can hit a transient refused/reset\n* connection — a brief loopback hiccup under load, not a real failure.\n* Retried before giving up. Shared by the dev and log executors, which talk\n* to the same daemons (`startServices`, `endpoints`, `attach`).\n*/\nconst EMULATOR_RETRY_ATTEMPTS = 5;\nconst EMULATOR_RETRY_DELAY_MS = 500;\nasync function withEmulatorRetry(call) {\n\tlet lastError;\n\tfor (let attempt = 1; attempt <= EMULATOR_RETRY_ATTEMPTS; attempt += 1) try {\n\t\treturn await call();\n\t} catch (error) {\n\t\tlastError = error;\n\t\tif (attempt < EMULATOR_RETRY_ATTEMPTS) await new Promise((resolve) => setTimeout(resolve, EMULATOR_RETRY_DELAY_MS));\n\t}\n\tthrow lastError instanceof Error ? lastError : new Error(String(lastError));\n}\n//#endregion\nexport { withEmulatorRetry as t };\n\n//# sourceMappingURL=emulator-retry-DGonap4g.mjs.map","import { r as isBuildOnlyExtension, t as DEV_DIR } from \"./app-config-joXc-BKm.mjs\";\nimport { CliStructuredError } from \"@internal/foundation/errors\";\nimport * as Layer from \"effect/Layer\";\n//#region src/control/local-target.ts\n/** The local-target stack's own provider aggregation (ADR-0041; naming, operator 2026-07-23 — the seam is `localTarget`, \"dev\" names the user-facing feature only) — the local-target counterpart of `deploy.ts`'s `mergedProviders`, kept in its own module so `lower()` learns nothing about it (deploy.ts's REVISED — operator review of #162). */\nfunction noLocalTargetSupportError(id) {\n\treturn new CliStructuredError(\"DEV.TARGET_UNSUPPORTED\", `extension \"${id}\" has no dev support — it declares no \\`localTarget\\` descriptor (ADR-0041).`);\n}\n/**\n* Resolves every non-build-only configured extension's lazy `localTarget`\n* thunk, once (ADR-0041's lazy local-target reference — operator directive:\n* the production control entry carries only the thunk, never the\n* descriptor, so resolving it is this module's job, not something a deploy\n* path ever does). A build-only extension (`isBuildOnlyExtension`) owns no\n* resources or services and is skipped entirely — never even checked for a\n* `localTarget` thunk. Every other configured extension must be\n* local-target-capable, or the dev command cannot bring the app up at all,\n* so a missing thunk throws naming the extension. The generated dev stack\n* module calls this once and threads the resolved map through every\n* subsequent hook, including `localTargetProviders`.\n*/\nasync function resolveLocalTargets(config) {\n\tconst entries = await Promise.all(config.extensions.flatMap((extension) => {\n\t\tif (isBuildOnlyExtension(extension)) return [];\n\t\tif (extension.localTarget === void 0) throw noLocalTargetSupportError(extension.id);\n\t\treturn [extension.localTarget().then((descriptor) => [extension.id, descriptor])];\n\t}));\n\treturn new Map(entries);\n}\n/**\n* All configured extensions' local-target providers merged, config array\n* order (ADR-0041), from the ALREADY-RESOLVED descriptor map\n* (`resolveLocalTargets`'s product — this function itself never touches a\n* `localTarget` thunk). The generated dev stack module is this\n* aggregator's one caller, passing the result as `LowerOptions.providers`.\n*/\nfunction localTargetProviders(resolved, containers, devDir) {\n\tconst [first, ...rest] = [...resolved.entries()].map(([id, descriptor]) => descriptor.providers({\n\t\tcontainer: containers.get(id),\n\t\tdevDir\n\t}));\n\treturn first === void 0 ? Layer.empty : Layer.mergeAll(first, ...rest);\n}\n//#endregion\nexport { DEV_DIR, localTargetProviders, resolveLocalTargets };\n\n//# sourceMappingURL=local-target.mjs.map"],"mappings":";;;;AAEA,MAAM,UAAU;;;;;;;;;AAShB,SAAS,qBAAqB,WAAW;CACxC,OAAO,OAAO,OAAO,UAAU,KAAK,CAAC,CAAC,OAAO,SAAS,KAAK,SAAS,OAAO,KAAK,UAAU,cAAc,KAAK,KAAK,UAAU,gBAAgB,KAAK,KAAK,UAAU,eAAe,KAAK,KAAK,UAAU,cAAc,KAAK;AACvN;;;;;;;;;;ACLA,MAAM,0BAA0B;AAChC,MAAM,0BAA0B;AAChC,eAAe,kBAAkB,MAAM;CACtC,IAAI;CACJ,KAAK,IAAI,UAAU,GAAG,WAAW,yBAAyB,WAAW,GAAG,IAAI;EAC3E,OAAO,MAAM,KAAK;CACnB,SAAS,OAAO;EACf,YAAY;EACZ,IAAI,UAAU,yBAAyB,MAAM,IAAI,SAAS,YAAY,WAAW,SAAS,uBAAuB,CAAC;CACnH;CACA,MAAM,qBAAqB,QAAQ,YAAY,IAAI,MAAM,OAAO,SAAS,CAAC;AAC3E;;;;ACdA,SAAS,0BAA0B,IAAI;CACtC,OAAO,IAAI,mBAAmB,0BAA0B,cAAc,GAAG,6EAA6E;AACvJ;;;;;;;;;;;;;;AAcA,eAAe,oBAAoB,QAAQ;CAC1C,MAAM,UAAU,MAAM,QAAQ,IAAI,OAAO,WAAW,SAAS,cAAc;EAC1E,IAAI,qBAAqB,SAAS,GAAG,OAAO,CAAC;EAC7C,IAAI,UAAU,gBAAgB,KAAK,GAAG,MAAM,0BAA0B,UAAU,EAAE;EAClF,OAAO,CAAC,UAAU,YAAY,CAAC,CAAC,MAAM,eAAe,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC;CACjF,CAAC,CAAC;CACF,OAAO,IAAI,IAAI,OAAO;AACvB"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { c as CliStructuredError } from "./result-B874OKwb.mjs";
|
|
2
|
-
import "effect/Layer";
|
|
3
|
-
//#region ../../0-framework/1-core/core/dist/app-config-joXc-BKm.mjs
|
|
4
|
-
/** `<cwd>/.prisma-composer/dev` — the dev instance's app-scoped state directory (ADR-0041, ADR-0004's tool-state rule). "dev" names the user-facing feature/dir (naming, operator 2026-07-23) — this constant's name and value are unchanged by the localTarget rename. */
|
|
5
|
-
const DEV_DIR = ".prisma-composer/dev";
|
|
6
|
-
/**
|
|
7
|
-
* True when an extension only participates in assembly (every `nodes` entry
|
|
8
|
-
* is `kind: 'build'`, and it declares none of `providers`/`application`/
|
|
9
|
-
* `provisions`/`container`) — it owns no resources or services, so it has
|
|
10
|
-
* nothing to emulate and is exempt from local-target-capability requirements
|
|
11
|
-
* (ADR-0041). Shared by `localTargetProviders` and every local-target hook
|
|
12
|
-
* iteration.
|
|
13
|
-
*/
|
|
14
|
-
function isBuildOnlyExtension(extension) {
|
|
15
|
-
return Object.values(extension.nodes).every((node) => node.kind === "build") && extension.providers === void 0 && extension.application === void 0 && extension.provisions === void 0 && extension.container === void 0;
|
|
16
|
-
}
|
|
17
|
-
//#endregion
|
|
18
|
-
//#region ../../0-framework/3-tooling/cli/dist/emulator-retry-DGonap4g.mjs
|
|
19
|
-
/**
|
|
20
|
-
* An emulator admin call right after a converge that just PUT dozens of
|
|
21
|
-
* resources through the same daemon can hit a transient refused/reset
|
|
22
|
-
* connection — a brief loopback hiccup under load, not a real failure.
|
|
23
|
-
* Retried before giving up. Shared by the dev and log executors, which talk
|
|
24
|
-
* to the same daemons (`startServices`, `endpoints`, `attach`).
|
|
25
|
-
*/
|
|
26
|
-
const EMULATOR_RETRY_ATTEMPTS = 5;
|
|
27
|
-
const EMULATOR_RETRY_DELAY_MS = 500;
|
|
28
|
-
async function withEmulatorRetry(call) {
|
|
29
|
-
let lastError;
|
|
30
|
-
for (let attempt = 1; attempt <= EMULATOR_RETRY_ATTEMPTS; attempt += 1) try {
|
|
31
|
-
return await call();
|
|
32
|
-
} catch (error) {
|
|
33
|
-
lastError = error;
|
|
34
|
-
if (attempt < EMULATOR_RETRY_ATTEMPTS) await new Promise((resolve) => setTimeout(resolve, EMULATOR_RETRY_DELAY_MS));
|
|
35
|
-
}
|
|
36
|
-
throw lastError instanceof Error ? lastError : new Error(String(lastError));
|
|
37
|
-
}
|
|
38
|
-
//#endregion
|
|
39
|
-
//#region ../../0-framework/1-core/core/dist/local-target.mjs
|
|
40
|
-
/** The local-target stack's own provider aggregation (ADR-0041; naming, operator 2026-07-23 — the seam is `localTarget`, "dev" names the user-facing feature only) — the local-target counterpart of `deploy.ts`'s `mergedProviders`, kept in its own module so `lower()` learns nothing about it (deploy.ts's REVISED — operator review of #162). */
|
|
41
|
-
function noLocalTargetSupportError(id) {
|
|
42
|
-
return new CliStructuredError("DEV.TARGET_UNSUPPORTED", `extension "${id}" has no dev support — it declares no \`localTarget\` descriptor (ADR-0041).`);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Resolves every non-build-only configured extension's lazy `localTarget`
|
|
46
|
-
* thunk, once (ADR-0041's lazy local-target reference — operator directive:
|
|
47
|
-
* the production control entry carries only the thunk, never the
|
|
48
|
-
* descriptor, so resolving it is this module's job, not something a deploy
|
|
49
|
-
* path ever does). A build-only extension (`isBuildOnlyExtension`) owns no
|
|
50
|
-
* resources or services and is skipped entirely — never even checked for a
|
|
51
|
-
* `localTarget` thunk. Every other configured extension must be
|
|
52
|
-
* local-target-capable, or the dev command cannot bring the app up at all,
|
|
53
|
-
* so a missing thunk throws naming the extension. The generated dev stack
|
|
54
|
-
* module calls this once and threads the resolved map through every
|
|
55
|
-
* subsequent hook, including `localTargetProviders`.
|
|
56
|
-
*/
|
|
57
|
-
async function resolveLocalTargets(config) {
|
|
58
|
-
const entries = await Promise.all(config.extensions.flatMap((extension) => {
|
|
59
|
-
if (isBuildOnlyExtension(extension)) return [];
|
|
60
|
-
if (extension.localTarget === void 0) throw noLocalTargetSupportError(extension.id);
|
|
61
|
-
return [extension.localTarget().then((descriptor) => [extension.id, descriptor])];
|
|
62
|
-
}));
|
|
63
|
-
return new Map(entries);
|
|
64
|
-
}
|
|
65
|
-
//#endregion
|
|
66
|
-
export { withEmulatorRetry as n, DEV_DIR as r, resolveLocalTargets as t };
|
|
67
|
-
|
|
68
|
-
//# sourceMappingURL=local-target-hoEGqgVA.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local-target-hoEGqgVA.mjs","names":[],"sources":["../../../0-framework/1-core/core/dist/app-config-joXc-BKm.mjs","../../../0-framework/3-tooling/cli/dist/emulator-retry-DGonap4g.mjs","../../../0-framework/1-core/core/dist/local-target.mjs"],"sourcesContent":["//#region src/control/app-config.ts\n/** `<cwd>/.prisma-composer/dev` — the dev instance's app-scoped state directory (ADR-0041, ADR-0004's tool-state rule). \"dev\" names the user-facing feature/dir (naming, operator 2026-07-23) — this constant's name and value are unchanged by the localTarget rename. */\nconst DEV_DIR = \".prisma-composer/dev\";\n/**\n* True when an extension only participates in assembly (every `nodes` entry\n* is `kind: 'build'`, and it declares none of `providers`/`application`/\n* `provisions`/`container`) — it owns no resources or services, so it has\n* nothing to emulate and is exempt from local-target-capability requirements\n* (ADR-0041). Shared by `localTargetProviders` and every local-target hook\n* iteration.\n*/\nfunction isBuildOnlyExtension(extension) {\n\treturn Object.values(extension.nodes).every((node) => node.kind === \"build\") && extension.providers === void 0 && extension.application === void 0 && extension.provisions === void 0 && extension.container === void 0;\n}\n/** Typed identity — exists so `prisma-composer.config.ts` gets checked against PrismaAppConfig where it is written. */\nfunction defineConfig(config) {\n\treturn config;\n}\n//#endregion\nexport { defineConfig as n, isBuildOnlyExtension as r, DEV_DIR as t };\n\n//# sourceMappingURL=app-config-joXc-BKm.mjs.map","//#region src/operations/emulator-retry.ts\n/**\n* An emulator admin call right after a converge that just PUT dozens of\n* resources through the same daemon can hit a transient refused/reset\n* connection — a brief loopback hiccup under load, not a real failure.\n* Retried before giving up. Shared by the dev and log executors, which talk\n* to the same daemons (`startServices`, `endpoints`, `attach`).\n*/\nconst EMULATOR_RETRY_ATTEMPTS = 5;\nconst EMULATOR_RETRY_DELAY_MS = 500;\nasync function withEmulatorRetry(call) {\n\tlet lastError;\n\tfor (let attempt = 1; attempt <= EMULATOR_RETRY_ATTEMPTS; attempt += 1) try {\n\t\treturn await call();\n\t} catch (error) {\n\t\tlastError = error;\n\t\tif (attempt < EMULATOR_RETRY_ATTEMPTS) await new Promise((resolve) => setTimeout(resolve, EMULATOR_RETRY_DELAY_MS));\n\t}\n\tthrow lastError instanceof Error ? lastError : new Error(String(lastError));\n}\n//#endregion\nexport { withEmulatorRetry as t };\n\n//# sourceMappingURL=emulator-retry-DGonap4g.mjs.map","import { r as isBuildOnlyExtension, t as DEV_DIR } from \"./app-config-joXc-BKm.mjs\";\nimport { CliStructuredError } from \"@internal/foundation/errors\";\nimport * as Layer from \"effect/Layer\";\n//#region src/control/local-target.ts\n/** The local-target stack's own provider aggregation (ADR-0041; naming, operator 2026-07-23 — the seam is `localTarget`, \"dev\" names the user-facing feature only) — the local-target counterpart of `deploy.ts`'s `mergedProviders`, kept in its own module so `lower()` learns nothing about it (deploy.ts's REVISED — operator review of #162). */\nfunction noLocalTargetSupportError(id) {\n\treturn new CliStructuredError(\"DEV.TARGET_UNSUPPORTED\", `extension \"${id}\" has no dev support — it declares no \\`localTarget\\` descriptor (ADR-0041).`);\n}\n/**\n* Resolves every non-build-only configured extension's lazy `localTarget`\n* thunk, once (ADR-0041's lazy local-target reference — operator directive:\n* the production control entry carries only the thunk, never the\n* descriptor, so resolving it is this module's job, not something a deploy\n* path ever does). A build-only extension (`isBuildOnlyExtension`) owns no\n* resources or services and is skipped entirely — never even checked for a\n* `localTarget` thunk. Every other configured extension must be\n* local-target-capable, or the dev command cannot bring the app up at all,\n* so a missing thunk throws naming the extension. The generated dev stack\n* module calls this once and threads the resolved map through every\n* subsequent hook, including `localTargetProviders`.\n*/\nasync function resolveLocalTargets(config) {\n\tconst entries = await Promise.all(config.extensions.flatMap((extension) => {\n\t\tif (isBuildOnlyExtension(extension)) return [];\n\t\tif (extension.localTarget === void 0) throw noLocalTargetSupportError(extension.id);\n\t\treturn [extension.localTarget().then((descriptor) => [extension.id, descriptor])];\n\t}));\n\treturn new Map(entries);\n}\n/**\n* All configured extensions' local-target providers merged, config array\n* order (ADR-0041), from the ALREADY-RESOLVED descriptor map\n* (`resolveLocalTargets`'s product — this function itself never touches a\n* `localTarget` thunk). The generated dev stack module is this\n* aggregator's one caller, passing the result as `LowerOptions.providers`.\n*/\nfunction localTargetProviders(resolved, containers, devDir) {\n\tconst [first, ...rest] = [...resolved.entries()].map(([id, descriptor]) => descriptor.providers({\n\t\tcontainer: containers.get(id),\n\t\tdevDir\n\t}));\n\treturn first === void 0 ? Layer.empty : Layer.mergeAll(first, ...rest);\n}\n//#endregion\nexport { DEV_DIR, localTargetProviders, resolveLocalTargets };\n\n//# sourceMappingURL=local-target.mjs.map"],"mappings":";;;;AAEA,MAAM,UAAU;;;;;;;;;AAShB,SAAS,qBAAqB,WAAW;CACxC,OAAO,OAAO,OAAO,UAAU,KAAK,CAAC,CAAC,OAAO,SAAS,KAAK,SAAS,OAAO,KAAK,UAAU,cAAc,KAAK,KAAK,UAAU,gBAAgB,KAAK,KAAK,UAAU,eAAe,KAAK,KAAK,UAAU,cAAc,KAAK;AACvN;;;;;;;;;;ACLA,MAAM,0BAA0B;AAChC,MAAM,0BAA0B;AAChC,eAAe,kBAAkB,MAAM;CACtC,IAAI;CACJ,KAAK,IAAI,UAAU,GAAG,WAAW,yBAAyB,WAAW,GAAG,IAAI;EAC3E,OAAO,MAAM,KAAK;CACnB,SAAS,OAAO;EACf,YAAY;EACZ,IAAI,UAAU,yBAAyB,MAAM,IAAI,SAAS,YAAY,WAAW,SAAS,uBAAuB,CAAC;CACnH;CACA,MAAM,qBAAqB,QAAQ,YAAY,IAAI,MAAM,OAAO,SAAS,CAAC;AAC3E;;;;ACdA,SAAS,0BAA0B,IAAI;CACtC,OAAO,IAAI,mBAAmB,0BAA0B,cAAc,GAAG,6EAA6E;AACvJ;;;;;;;;;;;;;;AAcA,eAAe,oBAAoB,QAAQ;CAC1C,MAAM,UAAU,MAAM,QAAQ,IAAI,OAAO,WAAW,SAAS,cAAc;EAC1E,IAAI,qBAAqB,SAAS,GAAG,OAAO,CAAC;EAC7C,IAAI,UAAU,gBAAgB,KAAK,GAAG,MAAM,0BAA0B,UAAU,EAAE;EAClF,OAAO,CAAC,UAAU,YAAY,CAAC,CAAC,MAAM,eAAe,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC;CACjF,CAAC,CAAC;CACF,OAAO,IAAI,IAAI,OAAO;AACvB"}
|