@rashidee/co2 1.3.13 → 1.3.14

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.
Files changed (67) hide show
  1. package/dist/.co2-dat/app.db +0 -0
  2. package/dist/.co2-dat/app.db-shm +0 -0
  3. package/dist/.co2-dat/app.db-wal +0 -0
  4. package/dist/index.js +145 -9
  5. package/package.json +1 -1
  6. package/static/assets/{abnfDiagram-VRR7QNED-Qm0Wk_H_.js → abnfDiagram-VRR7QNED-D8RafkEP.js} +1 -1
  7. package/static/assets/{arc-Cfk6Kt0D.js → arc-Coo8djJL.js} +1 -1
  8. package/static/assets/{architectureDiagram-ZJ3FMSHR-DQTlZaUK.js → architectureDiagram-ZJ3FMSHR-D7fGTL3b.js} +1 -1
  9. package/static/assets/{blockDiagram-677ZJIJ3-D-4ibdoX.js → blockDiagram-677ZJIJ3-CjI7s86S.js} +1 -1
  10. package/static/assets/{c4Diagram-LMCZKHZV-CHuqcdJm.js → c4Diagram-LMCZKHZV-Ao3qCcFi.js} +1 -1
  11. package/static/assets/channel-Ci11n54j.js +1 -0
  12. package/static/assets/{chunk-2Q5K7J3B-MB9pWQe1.js → chunk-2Q5K7J3B-lUK_s3cG.js} +1 -1
  13. package/static/assets/{chunk-32BRIVSS-BttYlwU1.js → chunk-32BRIVSS-PA889NNs.js} +1 -1
  14. package/static/assets/{chunk-5VM5RSS4-oyt0Tagd.js → chunk-5VM5RSS4-CxACsgKF.js} +1 -1
  15. package/static/assets/{chunk-EX3LRPZG-DaTxdTWl.js → chunk-EX3LRPZG-BuSTKl3j.js} +1 -1
  16. package/static/assets/{chunk-JWPE2WC7-CNgDxPAD.js → chunk-JWPE2WC7-CuKFDdbM.js} +1 -1
  17. package/static/assets/{chunk-MOJQB5TN-CoAudO3B.js → chunk-MOJQB5TN-CVXUJZuG.js} +1 -1
  18. package/static/assets/{chunk-RYQCIY6F-BrkDEEha.js → chunk-RYQCIY6F-DrMs0YPQ.js} +1 -1
  19. package/static/assets/{chunk-V7JOEXUC-D14rGvBO.js → chunk-V7JOEXUC-DJopV6W1.js} +1 -1
  20. package/static/assets/{chunk-VR4S4FIN-CAtas2vF.js → chunk-VR4S4FIN-CcNBYiui.js} +1 -1
  21. package/static/assets/{chunk-XXDRQBXY-DcVAnNUQ.js → chunk-XXDRQBXY-CCFhxbN4.js} +1 -1
  22. package/static/assets/classDiagram-OUVF2IWQ-D8JGj9_e.js +1 -0
  23. package/static/assets/classDiagram-v2-EOCWNBFH-D8JGj9_e.js +1 -0
  24. package/static/assets/{cose-bilkent-JH36ORCC-B7y4MI6Z.js → cose-bilkent-JH36ORCC-DXoH0ywa.js} +1 -1
  25. package/static/assets/{cynefin-VYW2F7L2-D2mnk-iJ.js → cynefin-VYW2F7L2-DH8W0rE6.js} +1 -1
  26. package/static/assets/{cynefinDiagram-TSTJHNR4-DNzQJhG7.js → cynefinDiagram-TSTJHNR4-BW_IHnv8.js} +1 -1
  27. package/static/assets/{dagre-VKFMJZFB-NMSyTo8N.js → dagre-VKFMJZFB-Biw6PsWK.js} +1 -1
  28. package/static/assets/{diagram-FQU43EPY-CdqS5Ike.js → diagram-FQU43EPY-TtNOYp5j.js} +1 -1
  29. package/static/assets/{diagram-G47NLZAW-Bsb4T5JI.js → diagram-G47NLZAW-CQk6Jt_6.js} +1 -1
  30. package/static/assets/{diagram-NH7WQ7WH-Z-PyzBSC.js → diagram-NH7WQ7WH-DTY1BO9B.js} +1 -1
  31. package/static/assets/{diagram-OA4YK3LP-BZBTYbxg.js → diagram-OA4YK3LP-DEnO6Eyl.js} +1 -1
  32. package/static/assets/{diagram-WEI45ONY-BL2LA5H_.js → diagram-WEI45ONY-WKF4avWj.js} +1 -1
  33. package/static/assets/{ebnfDiagram-CCIWWBDH-BGtukMeo.js → ebnfDiagram-CCIWWBDH-K4uJ1i6v.js} +1 -1
  34. package/static/assets/{erDiagram-Q63AITRT-B6OJ4YCl.js → erDiagram-Q63AITRT-B4wRa3fY.js} +1 -1
  35. package/static/assets/{flowDiagram-23GEKE2U-BBkMgJ1i.js → flowDiagram-23GEKE2U-SnSUCnHl.js} +1 -1
  36. package/static/assets/{ganttDiagram-NO4QXBWP-Cv8KHFBD.js → ganttDiagram-NO4QXBWP-CsdfAP2-.js} +1 -1
  37. package/static/assets/{gitGraphDiagram-IHSO6WYX-hYxDNjWx.js → gitGraphDiagram-IHSO6WYX-C8xab2KC.js} +1 -1
  38. package/static/assets/{index-DKI3BgkF.css → index-D58A6Kf1.css} +1 -1
  39. package/static/assets/{index-DnYGyYET.js → index-D74-2ULy.js} +93 -93
  40. package/static/assets/{infoDiagram-FWYZ7A6U-WuQIiedv.js → infoDiagram-FWYZ7A6U-CjUSYyJV.js} +1 -1
  41. package/static/assets/{ishikawaDiagram-FXEZZL3T-BJGOD-IY.js → ishikawaDiagram-FXEZZL3T-DGEbhYY4.js} +1 -1
  42. package/static/assets/{journeyDiagram-5HDEW3XC-Ba_NXseS.js → journeyDiagram-5HDEW3XC-Bn8WZeF-.js} +1 -1
  43. package/static/assets/{kanban-definition-HUTT4EX6-C5RMm9uF.js → kanban-definition-HUTT4EX6-DD9QNPz9.js} +1 -1
  44. package/static/assets/{linear-CLKppNoj.js → linear-CREoNC-Z.js} +1 -1
  45. package/static/assets/{mindmap-definition-LN4V7U3C-ClSG_qmQ.js → mindmap-definition-LN4V7U3C-BLCKbp6n.js} +1 -1
  46. package/static/assets/{pegDiagram-2B236MQR-C_JEZqk3.js → pegDiagram-2B236MQR-DLyLfiFi.js} +1 -1
  47. package/static/assets/{pieDiagram-ENE6RG2P-D0lx7wDi.js → pieDiagram-ENE6RG2P-B7v1-Mow.js} +1 -1
  48. package/static/assets/{quadrantDiagram-ABIIQ3AL-BBKy0PVs.js → quadrantDiagram-ABIIQ3AL-Dnt728yI.js} +1 -1
  49. package/static/assets/{railroadDiagram-RFXS5EU6-C1Badu5q.js → railroadDiagram-RFXS5EU6-BZ0m-G9m.js} +1 -1
  50. package/static/assets/{requirementDiagram-TGXJPOKE-1j59jBQH.js → requirementDiagram-TGXJPOKE-3SCMjIUR.js} +1 -1
  51. package/static/assets/{sankeyDiagram-HTMAVEWB-BLR5S8aZ.js → sankeyDiagram-HTMAVEWB-BoK8Wh3S.js} +1 -1
  52. package/static/assets/{sequenceDiagram-DBY2YBRQ-BlqdK4qm.js → sequenceDiagram-DBY2YBRQ-B89bqSYK.js} +1 -1
  53. package/static/assets/{sizeCapture-X5ZJPWSS-C27ndGIT.js → sizeCapture-X5ZJPWSS-BVTk4iE2.js} +1 -1
  54. package/static/assets/{stateDiagram-2N3HPSRC-DOu4536_.js → stateDiagram-2N3HPSRC-Q5DLz7JU.js} +1 -1
  55. package/static/assets/stateDiagram-v2-6OUMAXLB-CU_q9WoS.js +1 -0
  56. package/static/assets/{swimlanes-5IMT3BWC-BpGitR9A.js → swimlanes-5IMT3BWC-1LqBZGZu.js} +2 -2
  57. package/static/assets/swimlanesDiagram-G3AALYLV-CilhyDV0.js +8 -0
  58. package/static/assets/{timeline-definition-FHXFAJF6-JIvdjH7z.js → timeline-definition-FHXFAJF6-Bk8mm9PQ.js} +1 -1
  59. package/static/assets/{vennDiagram-L72KCM5P-DulnqLWm.js → vennDiagram-L72KCM5P-qS4AIIXn.js} +1 -1
  60. package/static/assets/{wardleyDiagram-EHGQE667--MhZNL8M.js → wardleyDiagram-EHGQE667-BjnQ0zER.js} +1 -1
  61. package/static/assets/{xychartDiagram-FW5EYKEG-CjnNgnMQ.js → xychartDiagram-FW5EYKEG-Xtl5bYjl.js} +1 -1
  62. package/static/index.html +2 -2
  63. package/static/assets/channel-H9DRrduO.js +0 -1
  64. package/static/assets/classDiagram-OUVF2IWQ-DRNPM383.js +0 -1
  65. package/static/assets/classDiagram-v2-EOCWNBFH-DRNPM383.js +0 -1
  66. package/static/assets/stateDiagram-v2-6OUMAXLB-DvP1ZCp8.js +0 -1
  67. package/static/assets/swimlanesDiagram-G3AALYLV-B5cf18Ey.js +0 -8
Binary file
Binary file
Binary file
package/dist/index.js CHANGED
@@ -6809,7 +6809,7 @@ var {
6809
6809
  // package.json
6810
6810
  var package_default = {
6811
6811
  name: "@rashidee/co2",
6812
- version: "1.3.13",
6812
+ version: "1.3.14",
6813
6813
  description: "Compound Context Studio \u2014 self-hosted team context authoring for CO2 projects",
6814
6814
  type: "module",
6815
6815
  license: "MIT",
@@ -25398,7 +25398,7 @@ function scanProject(db, workspacePath, folderName) {
25398
25398
  import { join as join22, relative as relative2 } from "path";
25399
25399
 
25400
25400
  // ../server/src/features/workflow/service.ts
25401
- import { existsSync as existsSync20, mkdirSync as mkdirSync9, readFileSync as readFileSync15, writeFileSync as writeFileSync13 } from "fs";
25401
+ import { existsSync as existsSync20, mkdirSync as mkdirSync9, readFileSync as readFileSync15, statSync as statSync6, writeFileSync as writeFileSync13 } from "fs";
25402
25402
  import { join as join21, relative, resolve as resolve2, sep } from "path";
25403
25403
  var ACTIVE_RUN_STATUSES = ["pending", "in_progress"];
25404
25404
  function svcError14(code, status) {
@@ -25855,6 +25855,125 @@ function rescanWorkflowRun(db, workspacePath, workflowMarkdownId, watcherInterva
25855
25855
  }
25856
25856
  return getWorkflowRun(db, workflowMarkdownId, workspacePath);
25857
25857
  }
25858
+ var DISCOVERABLE_CONDUCTOR_TYPES = ["prepare", "develop", "quality"];
25859
+ function rescanProjectWorkflows(db, workspacePath, projectId, user, watcherIntervalMs) {
25860
+ const project = db.select().from(projects).where(eq(projects.id, projectId)).get();
25861
+ if (!project) throw svcError14("PROJECT_NOT_FOUND", 404);
25862
+ const projectDir2 = join21(workspacePath, project.workspaceFolderName);
25863
+ const nonTerminal = db.select({ id: conductorRuns.id, wfmId: conductorRuns.workflowMarkdownId }).from(conductorRuns).where(
25864
+ and(
25865
+ eq(conductorRuns.projectId, projectId),
25866
+ inArray(conductorRuns.status, [...ACTIVE_RUN_STATUSES])
25867
+ )
25868
+ ).all();
25869
+ const rescannedRuns = nonTerminal.length;
25870
+ const wfmIds = new Set(nonTerminal.map((r) => r.wfmId).filter((x) => x !== null));
25871
+ for (const wfmId of wfmIds) rescanWorkflowRun(db, workspacePath, wfmId, watcherIntervalMs);
25872
+ const apps = db.select({ id: applications.id, name: applications.name }).from(applications).where(and(eq(applications.projectId, projectId), eq(applications.isDeleted, 0))).all();
25873
+ const currentVersionId = ensureBaselineVersion(db, projectId, user.id);
25874
+ const semver = db.select({ semver: prdVersions.semver }).from(prdVersions).where(eq(prdVersions.id, currentVersionId)).get()?.semver ?? null;
25875
+ let discoveredRuns = 0;
25876
+ const now = (/* @__PURE__ */ new Date()).toISOString();
25877
+ for (const app of apps) {
25878
+ for (const conductorType of DISCOVERABLE_CONDUCTOR_TYPES) {
25879
+ const trackingFilePath = resolveRunTrackingFilePath(projectDir2, app.name, conductorType);
25880
+ const fileStatus = parseTrackingStatus(trackingFilePath);
25881
+ if (fileStatus === "unknown") continue;
25882
+ const aliases = conductorType === "quality" ? ["quality", "defect"] : [conductorType];
25883
+ const known = db.select({
25884
+ status: conductorRuns.status,
25885
+ prdVersionId: conductorRuns.prdVersionId,
25886
+ createdAt: conductorRuns.createdAt,
25887
+ completedAt: conductorRuns.completedAt
25888
+ }).from(conductorRuns).where(
25889
+ and(
25890
+ eq(conductorRuns.applicationId, app.id),
25891
+ inArray(conductorRuns.conductorType, aliases)
25892
+ )
25893
+ ).all();
25894
+ const knownForVersion = known.filter(
25895
+ (r) => r.prdVersionId === null || r.prdVersionId === currentVersionId
25896
+ );
25897
+ if (fileStatus === "COMPLETED" && knownForVersion.some((r) => r.status === "completed"))
25898
+ continue;
25899
+ if (fileStatus === "IN PROGRESS" && known.some((r) => r.status === "pending" || r.status === "in_progress"))
25900
+ continue;
25901
+ if (fileStatus === "FAILED" && knownForVersion.some((r) => r.status === "failed")) continue;
25902
+ let mtimeMs;
25903
+ try {
25904
+ mtimeMs = statSync6(trackingFilePath).mtimeMs;
25905
+ } catch {
25906
+ continue;
25907
+ }
25908
+ const latestKnownMs = known.reduce(
25909
+ (acc, r) => Math.max(
25910
+ acc,
25911
+ Date.parse(r.createdAt) || 0,
25912
+ r.completedAt ? Date.parse(r.completedAt) || 0 : 0
25913
+ ),
25914
+ 0
25915
+ );
25916
+ if (latestKnownMs > 0 && mtimeMs <= latestKnownMs) continue;
25917
+ const mtimeIso = new Date(mtimeMs).toISOString();
25918
+ const wfm = db.insert(workflowMarkdowns).values({
25919
+ projectId,
25920
+ conductorType,
25921
+ // The master the discovery was read from — Run History's path link previews it.
25922
+ filePath: relative(projectDir2, trackingFilePath).replace(/\\/g, "/"),
25923
+ versionLabel: semver,
25924
+ createdBy: user.id,
25925
+ createdByName: user.username,
25926
+ createdAt: now,
25927
+ updatedAt: now
25928
+ }).returning({ id: workflowMarkdowns.id }).get();
25929
+ const run = db.insert(conductorRuns).values({
25930
+ projectId,
25931
+ applicationId: app.id,
25932
+ conductorType,
25933
+ prdVersionId: currentVersionId,
25934
+ trackingFilePath,
25935
+ status: fileStatus === "COMPLETED" ? "completed" : fileStatus === "FAILED" ? "failed" : "in_progress",
25936
+ startedBy: user.id,
25937
+ startedAt: mtimeIso,
25938
+ completedAt: fileStatus === "IN PROGRESS" ? null : mtimeIso,
25939
+ workflowMarkdownId: wfm.id,
25940
+ priorPhaseSatisfied: 1,
25941
+ gitOperationStatus: "skipped",
25942
+ // terminal execution — the user owns its git flow
25943
+ createdAt: now
25944
+ }).returning({ id: conductorRuns.id }).get();
25945
+ discoveredRuns++;
25946
+ if (fileStatus === "COMPLETED") {
25947
+ try {
25948
+ registerConductorArtifacts(db, workspacePath, run.id);
25949
+ } catch {
25950
+ }
25951
+ syncDefectRunStatuses(db, run.id);
25952
+ } else if (fileStatus === "IN PROGRESS") {
25953
+ const appName = app.name;
25954
+ startWatcher(
25955
+ db,
25956
+ run.id,
25957
+ () => resolveRunTrackingFilePath(projectDir2, appName, conductorType),
25958
+ user.id,
25959
+ watcherIntervalMs,
25960
+ (id, terminalStatus) => {
25961
+ lastArtifactSweepAt.delete(id);
25962
+ if (terminalStatus === "COMPLETED") {
25963
+ try {
25964
+ registerConductorArtifacts(db, workspacePath, id);
25965
+ } catch {
25966
+ }
25967
+ syncDefectRunStatuses(db, id);
25968
+ }
25969
+ },
25970
+ (id) => sweepRunArtifactsThrottled(db, workspacePath, id)
25971
+ );
25972
+ }
25973
+ }
25974
+ }
25975
+ return { rescannedRuns, discoveredRuns };
25976
+ }
25858
25977
  function getWorkflowRun(db, workflowMarkdownId, workspacePath) {
25859
25978
  const wfm = db.select().from(workflowMarkdowns).where(eq(workflowMarkdowns.id, workflowMarkdownId)).get();
25860
25979
  if (!wfm) throw svcError14("RUN_NOT_FOUND", 404);
@@ -25952,7 +26071,9 @@ function toDetail(db, projectFolder, wfm, workspacePath) {
25952
26071
  status: rollupStatus(runs.map((r) => r.status)),
25953
26072
  applications: appBreakdown,
25954
26073
  filePath: wfm.filePath,
25955
- executeCommand: buildExecuteCommand(projectFolder, wfm.filePath),
26074
+ // Only generated markdowns (workflow/<user>/<ts>.md) carry an Execute prompt — a row
26075
+ // discovered from a tracking master (rescanProjectWorkflows) has nothing to re-run.
26076
+ executeCommand: wfm.filePath.startsWith("workflow/") ? buildExecuteCommand(projectFolder, wfm.filePath) : "",
25956
26077
  versionLabel: wfm.versionLabel,
25957
26078
  gitOperationStatus: git4?.gitOperationStatus ?? "not_started",
25958
26079
  gitBranchCreated: git4?.gitBranchCreated ?? null,
@@ -26469,7 +26590,7 @@ function projectRoutes(db, workspacePath) {
26469
26590
  }
26470
26591
 
26471
26592
  // ../server/src/features/shared-context/service.ts
26472
- import { existsSync as existsSync21, mkdirSync as mkdirSync10, readFileSync as readFileSync16, readdirSync as readdirSync4, statSync as statSync6, writeFileSync as writeFileSync14 } from "fs";
26593
+ import { existsSync as existsSync21, mkdirSync as mkdirSync10, readFileSync as readFileSync16, readdirSync as readdirSync4, statSync as statSync7, writeFileSync as writeFileSync14 } from "fs";
26473
26594
  import { join as join23, resolve as resolve3, sep as sep2 } from "path";
26474
26595
  function svcError16(code, status) {
26475
26596
  return Object.assign(new Error(code), { code, status });
@@ -26527,7 +26648,7 @@ function walk(dir, relBase) {
26527
26648
  children: walk(join23(dir, entry.name), rel)
26528
26649
  });
26529
26650
  } else if (entry.isFile()) {
26530
- const stat = statSync6(join23(dir, entry.name));
26651
+ const stat = statSync7(join23(dir, entry.name));
26531
26652
  nodes.push({
26532
26653
  name: entry.name,
26533
26654
  path: rel,
@@ -26566,7 +26687,7 @@ function uploadFile(db, workspacePath, projectId, folder, file) {
26566
26687
  function getFileContent(db, workspacePath, projectId, relPath) {
26567
26688
  const root = resolveSharedRoot(db, workspacePath, projectId);
26568
26689
  const full = safeResolve(root, relPath);
26569
- if (!existsSync21(full) || !statSync6(full).isFile()) throw svcError16("NOT_FOUND", 404);
26690
+ if (!existsSync21(full) || !statSync7(full).isFile()) throw svcError16("NOT_FOUND", 404);
26570
26691
  const name = relPath.split("/").pop() ?? relPath;
26571
26692
  return { mimeType: mimeForName(name), bytes: readFileSync16(full), name };
26572
26693
  }
@@ -26574,7 +26695,7 @@ function saveMarkdown(db, workspacePath, projectId, relPath, content) {
26574
26695
  if (mimeForName(relPath) !== "text/markdown") throw svcError16("NOT_MARKDOWN", 400);
26575
26696
  const root = resolveSharedRoot(db, workspacePath, projectId);
26576
26697
  const full = safeResolve(root, relPath);
26577
- if (!existsSync21(full) || !statSync6(full).isFile()) throw svcError16("NOT_FOUND", 404);
26698
+ if (!existsSync21(full) || !statSync7(full).isFile()) throw svcError16("NOT_FOUND", 404);
26578
26699
  writeFileSync14(full, content, "utf8");
26579
26700
  }
26580
26701
 
@@ -27149,6 +27270,21 @@ function workflowRoutes(db, workspacePath) {
27149
27270
  return errorResponse16(c, e);
27150
27271
  }
27151
27272
  });
27273
+ app.post("/rescan-all", (c) => {
27274
+ const projectId = Number(c.req.query("projectId"));
27275
+ if (Number.isNaN(projectId)) return c.json({ code: "INVALID_ID" }, 400);
27276
+ const user = c.get("user");
27277
+ try {
27278
+ return c.json(
27279
+ rescanProjectWorkflows(db, workspacePath, projectId, {
27280
+ id: user.id,
27281
+ username: user.username
27282
+ })
27283
+ );
27284
+ } catch (e) {
27285
+ return errorResponse16(c, e);
27286
+ }
27287
+ });
27152
27288
  app.post("/runs/:id/rescan", (c) => {
27153
27289
  const id = Number(c.req.param("id"));
27154
27290
  if (Number.isNaN(id)) return c.json({ code: "INVALID_ID" }, 400);
@@ -27663,7 +27799,7 @@ function loggerMiddleware() {
27663
27799
  }
27664
27800
 
27665
27801
  // ../server/src/lib/static.ts
27666
- import { existsSync as existsSync24, readFileSync as readFileSync19, statSync as statSync7 } from "fs";
27802
+ import { existsSync as existsSync24, readFileSync as readFileSync19, statSync as statSync8 } from "fs";
27667
27803
  import { extname, join as join26, normalize, resolve as resolve4, sep as sep3 } from "path";
27668
27804
  var MIME = {
27669
27805
  ".html": "text/html; charset=utf-8",
@@ -27701,7 +27837,7 @@ function serveSpa(staticDir) {
27701
27837
  }
27702
27838
  const rel = path === "/" ? "/index.html" : decodeURIComponent(path);
27703
27839
  const filePath = safeResolve2(staticDir, rel);
27704
- if (filePath && existsSync24(filePath) && statSync7(filePath).isFile()) {
27840
+ if (filePath && existsSync24(filePath) && statSync8(filePath).isFile()) {
27705
27841
  const body = readFileSync19(filePath);
27706
27842
  return c.body(body, 200, {
27707
27843
  "Content-Type": MIME[extname(filePath)] ?? "application/octet-stream"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rashidee/co2",
3
- "version": "1.3.13",
3
+ "version": "1.3.14",
4
4
  "description": "Compound Context Studio — self-hosted team context authoring for CO2 projects",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -1 +1 @@
1
- import{g as p,r as u,d as a}from"./chunk-MOJQB5TN-CoAudO3B.js";import{p as f}from"./chunk-JWPE2WC7-CNgDxPAD.js";import{_ as n,l as o}from"./index-DnYGyYET.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-D2mnk-iJ.js";var v=d().RailroadAbnf.parser.LangiumParser,l=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),i=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:i,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=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 new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:l(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},w={parser:R,db:a,renderer:u,styles:p};export{w as diagram};
1
+ import{g as p,r as u,d as a}from"./chunk-MOJQB5TN-CVXUJZuG.js";import{p as f}from"./chunk-JWPE2WC7-CuKFDdbM.js";import{_ as n,l as o}from"./index-D74-2ULy.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-DH8W0rE6.js";var v=d().RailroadAbnf.parser.LangiumParser,l=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),i=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:i,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=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 new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:l(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},w={parser:R,db:a,renderer:u,styles:p};export{w as diagram};
@@ -1 +1 @@
1
- import{Y as ln,$ as an,a0 as y,a1 as tn,a2 as F,a3 as q,a4 as _,a5 as un,a6 as rn,a7 as J,a8 as o,a9 as j,aa as sn,ab as on,ac as fn}from"./index-DnYGyYET.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,z,a){var O=I-l,i=D-h,n=z-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function U(l,h,I,D,v,A,z){var a=l-I,O=h-D,i=(z?A:-A)/J(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,B=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*J(fn(0,T*T*R-P*P)),Y=(P*g-m*S)/R,$=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=Y-B,e=$-t,r=w-B,C=p-t;return x*x+e*e>r*r+C*C&&(Y=w,$=p),{cx:Y,cy:$,x01:-n,y01:-d,x11:Y*(v/T-1),y11:$*(v/T-1)}}function hn(){var l=cn,h=yn,I=j(0),D=null,v=gn,A=dn,z=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,B=un(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(B>tn-y)a.moveTo(s*F(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*F(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=B,S=B,Y=z.apply(this,arguments)/2,$=Y>y&&(D?+D.apply(this,arguments):J(u*u+s*s)),w=_(un(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if($>y){var C=sn($/u*q(Y)),K=sn($/s*q(Y));(P-=C*2)>y?(C*=t?1:-1,R+=C,T-=C):(P=0,R=T=(f+c)/2),(S-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(S=0,m=g=(f+c)/2)}var G=s*F(m),H=s*q(m),L=u*F(T),M=u*q(T);if(w>y){var N=s*F(g),Q=s*q(g),V=u*F(R),W=u*q(R),E;if(B<rn)if(E=pn(G,H,V,W,N,Q,L,M)){var X=G-E[0],Z=H-E[1],b=N-E[0],k=Q-E[1],nn=1/q(on((X*b+Z*k)/(J(X*X+Z*Z)*J(b*b+k*k)))/2),en=J(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=U(V,W,G,H,s,x,t),r=U(N,Q,L,M,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(G,H),a.arc(0,0,s,m,g,!t)):a.moveTo(G,H),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(G,H,V,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[F(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:j(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:j(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:j(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:j(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:j(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:j(+n),i):A},i.padAngle=function(n){return arguments.length?(z=typeof n=="function"?n:j(+n),i):z},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
1
+ import{Y as ln,$ as an,a0 as y,a1 as tn,a2 as F,a3 as q,a4 as _,a5 as un,a6 as rn,a7 as J,a8 as o,a9 as j,aa as sn,ab as on,ac as fn}from"./index-D74-2ULy.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,z,a){var O=I-l,i=D-h,n=z-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function U(l,h,I,D,v,A,z){var a=l-I,O=h-D,i=(z?A:-A)/J(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,B=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*J(fn(0,T*T*R-P*P)),Y=(P*g-m*S)/R,$=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=Y-B,e=$-t,r=w-B,C=p-t;return x*x+e*e>r*r+C*C&&(Y=w,$=p),{cx:Y,cy:$,x01:-n,y01:-d,x11:Y*(v/T-1),y11:$*(v/T-1)}}function hn(){var l=cn,h=yn,I=j(0),D=null,v=gn,A=dn,z=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,B=un(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(B>tn-y)a.moveTo(s*F(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*F(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=B,S=B,Y=z.apply(this,arguments)/2,$=Y>y&&(D?+D.apply(this,arguments):J(u*u+s*s)),w=_(un(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if($>y){var C=sn($/u*q(Y)),K=sn($/s*q(Y));(P-=C*2)>y?(C*=t?1:-1,R+=C,T-=C):(P=0,R=T=(f+c)/2),(S-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(S=0,m=g=(f+c)/2)}var G=s*F(m),H=s*q(m),L=u*F(T),M=u*q(T);if(w>y){var N=s*F(g),Q=s*q(g),V=u*F(R),W=u*q(R),E;if(B<rn)if(E=pn(G,H,V,W,N,Q,L,M)){var X=G-E[0],Z=H-E[1],b=N-E[0],k=Q-E[1],nn=1/q(on((X*b+Z*k)/(J(X*X+Z*Z)*J(b*b+k*k)))/2),en=J(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=U(V,W,G,H,s,x,t),r=U(N,Q,L,M,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(G,H),a.arc(0,0,s,m,g,!t)):a.moveTo(G,H),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(G,H,V,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[F(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:j(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:j(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:j(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:j(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:j(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:j(+n),i):A},i.padAngle=function(n){return arguments.length?(z=typeof n=="function"?n:j(+n),i):z},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};