@wo658/redpact 0.3.0 → 0.4.1
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/adapters/environment/testcontainers.js +20 -6
- package/dist/adapters/environment/unit-container.js +6 -3
- package/dist/adapters/environment/unit-worker.js +14 -1
- package/dist/adapters/playwright/Dockerfile +3 -0
- package/dist/adapters/playwright/worker.js +23 -1
- package/dist/ui/assets/{abnfDiagram-O67JEVCF-D5_0c71T.js → abnfDiagram-O67JEVCF-EXZIR7uE.js} +1 -1
- package/dist/ui/assets/{arc-CvMU1nxC.js → arc-DZ7IkhQL.js} +1 -1
- package/dist/ui/assets/architecture-7GRP2DOG-DPAY49ac.js +1 -0
- package/dist/ui/assets/{architectureDiagram-NJMV4G6O-C5pnJhyL.js → architectureDiagram-NJMV4G6O-oFZ4jPG2.js} +1 -1
- package/dist/ui/assets/{blockDiagram-BEXU5L5S-CSY4YaYG.js → blockDiagram-BEXU5L5S-BBUTa13d.js} +1 -1
- package/dist/ui/assets/{c4Diagram-YGBWAQC7-BAqi3qgX.js → c4Diagram-YGBWAQC7-CrOB8ApR.js} +1 -1
- package/dist/ui/assets/channel-B4U25mhB.js +1 -0
- package/dist/ui/assets/{chunk-3FUC2YCW-Brp5pppL.js → chunk-3FUC2YCW-W4k2bur_.js} +1 -1
- package/dist/ui/assets/{chunk-5DYCD2WN-DPF_imHM.js → chunk-5DYCD2WN-DsvkZxf0.js} +1 -1
- package/dist/ui/assets/{chunk-742MDFTN-B7dqi4lM.js → chunk-742MDFTN-Q9c012fL.js} +1 -1
- package/dist/ui/assets/{chunk-7INBJB4K-owIg7950.js → chunk-7INBJB4K-D6-5S_eb.js} +1 -1
- package/dist/ui/assets/{chunk-7M6MHVWA-DxdsTD3q.js → chunk-7M6MHVWA-BX-zqrmJ.js} +1 -1
- package/dist/ui/assets/{chunk-7PRAP22T-CnZEk7pT.js → chunk-7PRAP22T-D5sSirGe.js} +1 -1
- package/dist/ui/assets/{chunk-GTNCS2PH-tIfcSoKX.js → chunk-GTNCS2PH-BrjKdoU7.js} +1 -1
- package/dist/ui/assets/{chunk-GWA4HPMP-DvKgnHj7.js → chunk-GWA4HPMP-BzyuOibA.js} +1 -1
- package/dist/ui/assets/{chunk-MBY4JIJT-DecLyoJ2.js → chunk-MBY4JIJT-Jg4QirYy.js} +1 -1
- package/dist/ui/assets/{chunk-NETBCI7D-IIqAxd8x.js → chunk-NETBCI7D-Bo5sr5ak.js} +1 -1
- package/dist/ui/assets/{chunk-O7XYJQB3-BYf0cBjb.js → chunk-O7XYJQB3-ADuOEPCt.js} +1 -1
- package/dist/ui/assets/{chunk-UA2S7LBM-Axt5K_7j.js → chunk-UA2S7LBM-BWLbUYDY.js} +1 -1
- package/dist/ui/assets/{chunk-WEXAMYUT-DZkcP9P-.js → chunk-WEXAMYUT-BfdLD4oE.js} +1 -1
- package/dist/ui/assets/{chunk-XXDRQBXY-DEJDL8DG.js → chunk-XXDRQBXY-CEdjCwp8.js} +1 -1
- package/dist/ui/assets/{chunk-Z7XXMR3K-B2eslene.js → chunk-Z7XXMR3K-ooKdHdRU.js} +1 -1
- package/dist/ui/assets/{chunk-ZIGJFQKS-Bo83y6q0.js → chunk-ZIGJFQKS-u0lffPbH.js} +1 -1
- package/dist/ui/assets/{classDiagram-v2-NBCMYWYE-DKtuWfBH.js → classDiagram-v2-NBCMYWYE-kQl6D-HR.js} +1 -1
- package/dist/ui/assets/{cose-bilkent-JH36ORCC-jj68zcpo.js → cose-bilkent-JH36ORCC-DFDknAe8.js} +1 -1
- package/dist/ui/assets/{cynefin-OW5HDTMX-DHM-y63G.js → cynefin-OW5HDTMX-D4vNepxD.js} +1 -1
- package/dist/ui/assets/{cynefinDiagram-VND7K2PF-CcbJEZHa.js → cynefinDiagram-VND7K2PF-BFJ8dEz7.js} +1 -1
- package/dist/ui/assets/{dagre-6A5THRUB-ih8pcWrJ.js → dagre-6A5THRUB-CedM101q.js} +1 -1
- package/dist/ui/assets/{diagram-22UHCM2B-gOFjM4vX.js → diagram-22UHCM2B-Drvoaqhq.js} +1 -1
- package/dist/ui/assets/{diagram-3UASUU5V-A2EuBZrm.js → diagram-3UASUU5V-BqSEx6TG.js} +1 -1
- package/dist/ui/assets/{diagram-ATOU4E4O-NEnWb4jR.js → diagram-ATOU4E4O-SZKgc7Zh.js} +1 -1
- package/dist/ui/assets/{diagram-CDSNMT55-BDkkiBbT.js → diagram-CDSNMT55-Dt8thVhY.js} +1 -1
- package/dist/ui/assets/{diagram-MLGK6HIB-BuxDP96l.js → diagram-MLGK6HIB-CWFs_OOW.js} +1 -1
- package/dist/ui/assets/{diagram-MPIPVDR6-DOvr2wp9.js → diagram-MPIPVDR6-Cwm3bA8U.js} +1 -1
- package/dist/ui/assets/{dist-BMqRQFXW.js → dist-B7TllD9l.js} +1 -1
- package/dist/ui/assets/{ebnfDiagram-ZINNZB2B-C5aqA0VA.js → ebnfDiagram-ZINNZB2B-D6kGEe9D.js} +1 -1
- package/dist/ui/assets/{elk-276RUBZZ-C6X_c2Qp.js → elk-276RUBZZ-wW1KTjEC.js} +1 -1
- package/dist/ui/assets/{erDiagram-OPXOYQCR-DzZLfUpD.js → erDiagram-OPXOYQCR-vfhl3sOr.js} +1 -1
- package/dist/ui/assets/eventmodeling-NTZA5JFV-CJyNnV02.js +1 -0
- package/dist/ui/assets/flowDiagram-KWPJA3E3-C0h7u26C.js +1 -0
- package/dist/ui/assets/{ganttDiagram-FUAMR5RP-uqyVG-ha.js → ganttDiagram-FUAMR5RP-BZbSmUfV.js} +1 -1
- package/dist/ui/assets/{gitGraph-4MIJSDKK-54WYqHOb.js → gitGraph-4MIJSDKK-D59WREq2.js} +1 -1
- package/dist/ui/assets/{gitGraphDiagram-X574FWY7-CoyxlEFA.js → gitGraphDiagram-X574FWY7-CEWcL54p.js} +1 -1
- package/dist/ui/assets/{index-BPzC2fNH.js → index-Bv8TXM17.js} +85 -36
- package/dist/ui/assets/{info-A6RAGUB7-6Lv6e68U.js → info-A6RAGUB7-CCjOD-hV.js} +1 -1
- package/dist/ui/assets/{infoDiagram-VRGFBTTK-BghGYAtB.js → infoDiagram-VRGFBTTK-LS-F_-al.js} +1 -1
- package/dist/ui/assets/{ishikawaDiagram-OU5B5YK6-BbkNzdDX.js → ishikawaDiagram-OU5B5YK6-D0NTg-LK.js} +1 -1
- package/dist/ui/assets/{journeyDiagram-ZHPQQLJL-CK0HYMSC.js → journeyDiagram-ZHPQQLJL-Dw4e6Wl7.js} +1 -1
- package/dist/ui/assets/{kanban-definition-PNTS6WVX-CGSylxjl.js → kanban-definition-PNTS6WVX-k5spTfT7.js} +1 -1
- package/dist/ui/assets/{line-CVcWw_Fo.js → line-BFO0LY2j.js} +1 -1
- package/dist/ui/assets/{linear-RJCo1zL5.js → linear-Cs_Nmu23.js} +1 -1
- package/dist/ui/assets/{mermaid-parser.core-Cin6zZf8.js → mermaid-parser.core-CMSpXjeX.js} +3 -3
- package/dist/ui/assets/{mermaid.core-Dmtm0D6c.js → mermaid.core-BBeLf7h3.js} +4 -4
- package/dist/ui/assets/{mindmap-definition-NLK3R4M7-8pvUDbSj.js → mindmap-definition-NLK3R4M7-BmsEfsvR.js} +1 -1
- package/dist/ui/assets/{packet-AYTQ26CC-CEo_fz3H.js → packet-AYTQ26CC-Cv3YK0Ee.js} +1 -1
- package/dist/ui/assets/{pegDiagram-GJSIUBJH-DOOIWOJx.js → pegDiagram-GJSIUBJH-31oI4OLR.js} +1 -1
- package/dist/ui/assets/{pie-WAS4IAKB-BrexEBCD.js → pie-WAS4IAKB-bdwe8hf8.js} +1 -1
- package/dist/ui/assets/{pieDiagram-5QR66LMP-CBc41tNG.js → pieDiagram-5QR66LMP-TTKdYDzT.js} +1 -1
- package/dist/ui/assets/{quadrantDiagram-O4NWA36T-yer4erh3.js → quadrantDiagram-O4NWA36T-DxVQLgKu.js} +1 -1
- package/dist/ui/assets/{radar-RG4KPBEZ-JE5pdoOY.js → radar-RG4KPBEZ-giEqBoGT.js} +1 -1
- package/dist/ui/assets/{railroad-74A4TZTK-B9nKImjh.js → railroad-74A4TZTK-D-K0dGi8.js} +1 -1
- package/dist/ui/assets/railroad-abnf-HS5TGJTU-DcEI15f8.js +1 -0
- package/dist/ui/assets/railroad-ebnf-LZEXJU2U-COHEIK3C.js +1 -0
- package/dist/ui/assets/railroad-peg-WCYAUIDC-DXgo491l.js +1 -0
- package/dist/ui/assets/{railroadDiagram-XR7U4H2S-C2FoKWNS.js → railroadDiagram-XR7U4H2S-DrB5UCmO.js} +1 -1
- package/dist/ui/assets/{requirementDiagram-PLB6GJNP-BTN63NDy.js → requirementDiagram-PLB6GJNP-BQyLWXsL.js} +1 -1
- package/dist/ui/assets/{sankeyDiagram-IPEJSGJF-BjQ9u5cf.js → sankeyDiagram-IPEJSGJF-De5TIeaU.js} +1 -1
- package/dist/ui/assets/{sequenceDiagram-PO4LG4MO-B7FKQ9Xt.js → sequenceDiagram-PO4LG4MO-DUtE2LLg.js} +1 -1
- package/dist/ui/assets/{src-Bej7g-L4.js → src-DwTKHdVd.js} +1 -1
- package/dist/ui/assets/{stateDiagram-v2-GCMORJYK-DzUKzX-s.js → stateDiagram-v2-GCMORJYK-CVT5Ge16.js} +1 -1
- package/dist/ui/assets/{swimlanes-2SLR337P-Bjc68vr3.js → swimlanes-2SLR337P-Cu-5s066.js} +1 -1
- package/dist/ui/assets/swimlanesDiagram-TC7HE7FX-636k0i2s.js +8 -0
- package/dist/ui/assets/{timeline-definition-EJHVYXUP-VZqo3r3d.js → timeline-definition-EJHVYXUP-CJ8w-7KC.js} +1 -1
- package/dist/ui/assets/{treeView-Q6P3EWNA--uDmQgIe.js → treeView-Q6P3EWNA-D1S3DvGP.js} +1 -1
- package/dist/ui/assets/{treemap-WGGIJYW6-CW9TiLvB.js → treemap-WGGIJYW6-DblW82Ly.js} +1 -1
- package/dist/ui/assets/{usecaseDiagram-POWQR4AR-CmyArIke.js → usecaseDiagram-POWQR4AR-D8BYMSlq.js} +1 -1
- package/dist/ui/assets/{vennDiagram-UO4OBE2U-DUhnK8jn.js → vennDiagram-UO4OBE2U-CosmdYh9.js} +1 -1
- package/dist/ui/assets/{wardley-WFR3VGLG-DZocd00g.js → wardley-WFR3VGLG-D9U9ulTn.js} +1 -1
- package/dist/ui/assets/{wardleyDiagram-VNRHLVJA-DnHCIASf.js → wardleyDiagram-VNRHLVJA-CgtqeFIO.js} +1 -1
- package/dist/ui/assets/{xychartDiagram-PMCCYNJV-BzqtLoNZ.js → xychartDiagram-PMCCYNJV-DR25rR7D.js} +1 -1
- package/dist/ui/index.html +1 -1
- package/package.json +1 -1
- package/dist/ui/assets/architecture-7GRP2DOG-C_8wRkfR.js +0 -1
- package/dist/ui/assets/channel-IXYN7T6d.js +0 -1
- package/dist/ui/assets/eventmodeling-NTZA5JFV-DJMyacNa.js +0 -1
- package/dist/ui/assets/flowDiagram-KWPJA3E3-iAaJj6dh.js +0 -1
- package/dist/ui/assets/railroad-abnf-HS5TGJTU-CAGz711E.js +0 -1
- package/dist/ui/assets/railroad-ebnf-LZEXJU2U-y05iApC_.js +0 -1
- package/dist/ui/assets/railroad-peg-WCYAUIDC-C18zuwAF.js +0 -1
- package/dist/ui/assets/swimlanesDiagram-TC7HE7FX-1XAlwl_J.js +0 -8
|
@@ -240,6 +240,13 @@ export function createComposeAdapter(dataDir, secretSource = process.env) {
|
|
|
240
240
|
labels,
|
|
241
241
|
networks: { "redpact-runner": { aliases: [runnerServiceHost(name)] } },
|
|
242
242
|
...(ports.length ? { ports } : {}),
|
|
243
|
+
...(record.lifecycle === "run" && service.build
|
|
244
|
+
? {
|
|
245
|
+
image: `${record.projectName}-${name}`,
|
|
246
|
+
pull_policy: "build",
|
|
247
|
+
build: { labels, tags: [] },
|
|
248
|
+
}
|
|
249
|
+
: {}),
|
|
243
250
|
};
|
|
244
251
|
}
|
|
245
252
|
for (const name of Object.keys(model.networks ?? { default: {} })) {
|
|
@@ -250,7 +257,9 @@ export function createComposeAdapter(dataDir, secretSource = process.env) {
|
|
|
250
257
|
override.volumes[name] = { labels };
|
|
251
258
|
}
|
|
252
259
|
// Override the complete port sequence; merging entries could otherwise expose an unbound address.
|
|
253
|
-
const yaml = stringify(override)
|
|
260
|
+
const yaml = stringify(override)
|
|
261
|
+
.replace(/^( {4}ports:)/gm, "$1 !override")
|
|
262
|
+
.replace(/^( {6}tags:) \[\]/gm, "$1 !override []");
|
|
254
263
|
const overrideFile = ".redpact-runtime.yaml";
|
|
255
264
|
await writeFile(join(stage, overrideFile), yaml, { mode: 0o600, flag: "wx" });
|
|
256
265
|
update({
|
|
@@ -263,11 +272,11 @@ export function createComposeAdapter(dataDir, secretSource = process.env) {
|
|
|
263
272
|
}
|
|
264
273
|
}
|
|
265
274
|
if (record.lifecycle === "run") {
|
|
266
|
-
const localBuilds = Object.entries(model.services).filter(([, service]) => service.build
|
|
275
|
+
const localBuilds = Object.entries(model.services).filter(([, service]) => service.build);
|
|
267
276
|
if (localBuilds.length) {
|
|
268
|
-
//
|
|
277
|
+
// Capture only environment-owned tags; cleanup must not evaluate application variables.
|
|
269
278
|
await writeFile(join(stage, ".redpact-image-cleanup.yaml"), stringify({
|
|
270
|
-
services: Object.fromEntries(localBuilds.map(([name]) => [name, {
|
|
279
|
+
services: Object.fromEntries(localBuilds.map(([name]) => [name, { image: `${record.projectName}-${name}` }])),
|
|
271
280
|
}), { mode: 0o600, flag: "wx" });
|
|
272
281
|
}
|
|
273
282
|
}
|
|
@@ -345,7 +354,12 @@ export function createComposeAdapter(dataDir, secretSource = process.env) {
|
|
|
345
354
|
.map((resource) => resource.image));
|
|
346
355
|
for (const image of previousBuildImages) {
|
|
347
356
|
if (!currentImages.has(image)) {
|
|
348
|
-
await docker(["image", "
|
|
357
|
+
const tags = JSON.parse(await docker(["image", "inspect", "--format", "{{json .RepoTags}}", image]));
|
|
358
|
+
const users = await docker(["ps", "-aq", "--filter", `ancestor=${image}`]);
|
|
359
|
+
// A replaced project tag does not confer ownership of other tags or containers.
|
|
360
|
+
if (!tags?.length && !users.trim()) {
|
|
361
|
+
await docker(["image", "rm", image]);
|
|
362
|
+
}
|
|
349
363
|
}
|
|
350
364
|
}
|
|
351
365
|
}
|
|
@@ -446,7 +460,7 @@ export function createComposeAdapter(dataDir, secretSource = process.env) {
|
|
|
446
460
|
imageCleanup,
|
|
447
461
|
"down",
|
|
448
462
|
"--rmi",
|
|
449
|
-
"
|
|
463
|
+
"all",
|
|
450
464
|
], Math.max(1, deadline - Date.now()));
|
|
451
465
|
}
|
|
452
466
|
await rm(join(directory(record), "source"), { recursive: true, force: true });
|
|
@@ -145,8 +145,8 @@ export function createUnitContainer(dataDir, ownerId, readLimits = async () => t
|
|
|
145
145
|
await owned(id, run);
|
|
146
146
|
await docker(["rm", "-fv", id]);
|
|
147
147
|
}
|
|
148
|
-
|
|
149
|
-
const result = await execa("docker", ["image", "inspect",
|
|
148
|
+
{
|
|
149
|
+
const result = await execa("docker", ["image", "inspect", image(run)], {
|
|
150
150
|
env: minimalEnvironment(),
|
|
151
151
|
extendEnv: false,
|
|
152
152
|
timeout: 30000,
|
|
@@ -154,7 +154,10 @@ export function createUnitContainer(dataDir, ownerId, readLimits = async () => t
|
|
|
154
154
|
reject: false,
|
|
155
155
|
});
|
|
156
156
|
if (result.exitCode === 0) {
|
|
157
|
-
|
|
157
|
+
const [built] = JSON.parse(result.stdout);
|
|
158
|
+
if (built.Config.Labels?.["io.redpact.owner"] !== ownerId ||
|
|
159
|
+
built.Config.Labels?.["io.redpact.unit-run"] !== run.id ||
|
|
160
|
+
(run.imageId && built.Id !== run.imageId)) {
|
|
158
161
|
throw new Error("Unit image ownership mismatch");
|
|
159
162
|
}
|
|
160
163
|
await docker(["image", "rm", image(run)]);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { execa } from "execa";
|
|
1
2
|
import { GenericContainer, Wait } from "testcontainers";
|
|
2
3
|
process.once("disconnect", () => {
|
|
3
4
|
try {
|
|
@@ -14,7 +15,19 @@ for await (const chunk of process.stdin) {
|
|
|
14
15
|
}
|
|
15
16
|
const spec = JSON.parse(input);
|
|
16
17
|
try {
|
|
17
|
-
|
|
18
|
+
await execa("docker", [
|
|
19
|
+
"build",
|
|
20
|
+
"--tag",
|
|
21
|
+
spec.image,
|
|
22
|
+
"--label",
|
|
23
|
+
`io.redpact.owner=${spec.ownerId}`,
|
|
24
|
+
"--label",
|
|
25
|
+
`io.redpact.unit-run=${spec.id}`,
|
|
26
|
+
"--file",
|
|
27
|
+
spec.dockerfile,
|
|
28
|
+
".",
|
|
29
|
+
], { cwd: spec.source, maxBuffer: 1024 * 1024 });
|
|
30
|
+
const image = new GenericContainer(spec.image);
|
|
18
31
|
const container = await image
|
|
19
32
|
.withLabels({ "io.redpact.owner": spec.ownerId, "io.redpact.unit-run": spec.id })
|
|
20
33
|
.withResourcesQuota({ memory: spec.limits.memoryMiB / 1024 })
|
|
@@ -7,3 +7,6 @@ RUN printf '{"private":true}' > package.json && pnpm add --ignore-scripts --save
|
|
|
7
7
|
COPY reporter.mjs viewport.cjs capture-viewport.cjs /review/
|
|
8
8
|
RUN mkdir -p /review/tests /review/results /review/output && chown -R pwuser:pwuser /review
|
|
9
9
|
USER pwuser
|
|
10
|
+
|
|
11
|
+
ARG REDPACT_PLAYWRIGHT_INPUTS
|
|
12
|
+
LABEL io.redpact.playwright-inputs=$REDPACT_PLAYWRIGHT_INPUTS
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { readFile } from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { execa } from "execa";
|
|
1
5
|
import { GenericContainer, Wait } from "testcontainers";
|
|
2
6
|
process.once("disconnect", () => {
|
|
3
7
|
try {
|
|
@@ -14,7 +18,25 @@ for await (const chunk of process.stdin) {
|
|
|
14
18
|
}
|
|
15
19
|
const spec = JSON.parse(input);
|
|
16
20
|
try {
|
|
17
|
-
const
|
|
21
|
+
const hash = createHash("sha256");
|
|
22
|
+
for (const file of ["Dockerfile", "reporter.mjs", "viewport.cjs", "capture-viewport.cjs"]) {
|
|
23
|
+
hash.update(file).update(await readFile(join(spec.assets, file)));
|
|
24
|
+
}
|
|
25
|
+
const digest = hash.digest("hex");
|
|
26
|
+
const existing = await execa("docker", [
|
|
27
|
+
"image",
|
|
28
|
+
"ls",
|
|
29
|
+
"--no-trunc",
|
|
30
|
+
"--quiet",
|
|
31
|
+
"--filter",
|
|
32
|
+
`label=io.redpact.playwright-inputs=${digest}`,
|
|
33
|
+
]);
|
|
34
|
+
const cached = existing.stdout.trim().split(/\s+/)[0];
|
|
35
|
+
const image = cached
|
|
36
|
+
? new GenericContainer(cached)
|
|
37
|
+
: await GenericContainer.fromDockerfile(spec.assets, "Dockerfile")
|
|
38
|
+
.withBuildArgs({ REDPACT_PLAYWRIGHT_INPUTS: digest })
|
|
39
|
+
.build("redpact-playwright:1.63.0-v1", { deleteOnExit: false });
|
|
18
40
|
const container = await image
|
|
19
41
|
.withLabels({
|
|
20
42
|
"io.redpact.owner": spec.ownerId,
|
package/dist/ui/assets/{abnfDiagram-O67JEVCF-D5_0c71T.js → abnfDiagram-O67JEVCF-EXZIR7uE.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{m as e,t}from"./mermaid-parser.core-
|
|
1
|
+
import{m as e,t}from"./mermaid-parser.core-CMSpXjeX.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-DwTKHdVd.js";import"./chunk-O7XYJQB3-ADuOEPCt.js";import{n as i,r as a,t as o}from"./chunk-GTNCS2PH-BrjKdoU7.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-BBeLf7h3.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,t}from"./path-fybaL0A-.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-
|
|
1
|
+
import{n as e,t}from"./path-fybaL0A-.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-B7TllD9l.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i){if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./chunk-FOHPRMQF-DHwB1DNv.js";import{M as e}from"./mermaid-parser.core-CMSpXjeX.js";export{e as createArchitectureServices};
|