@rafiqui987/markode 0.4.2 → 0.4.3

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 (99) hide show
  1. package/dist/cli.js +290 -37
  2. package/dist/web/assets/{abnfDiagram-WEYOIA3C-B-3Lcktj.js → abnfDiagram-WEYOIA3C-C2SJjHni.js} +1 -1
  3. package/dist/web/assets/{arc-B1vQQwbr.js → arc-Cx8Du0ud.js} +1 -1
  4. package/dist/web/assets/{architecture-WOLXFQ4H-D8_qhlNG.js → architecture-WOLXFQ4H-Cb7DZ4zr.js} +1 -1
  5. package/dist/web/assets/{architectureDiagram-ZHVYKT53-B4uGFnQg.js → architectureDiagram-ZHVYKT53-CGIbomEe.js} +1 -1
  6. package/dist/web/assets/{blockDiagram-RJAE7QA3-B1PRI2Fk.js → blockDiagram-RJAE7QA3-CxJLYpHi.js} +1 -1
  7. package/dist/web/assets/{c4Diagram-XDPPPE54-BOSiNgn_.js → c4Diagram-XDPPPE54-C3TE3am8.js} +1 -1
  8. package/dist/web/assets/channel-Dcw9X94G.js +1 -0
  9. package/dist/web/assets/{chunk-2E7WHVMD-B2TT-9T2.js → chunk-2E7WHVMD-Bg92ygkh.js} +1 -1
  10. package/dist/web/assets/{chunk-4EMNKR2T-BJStHb31.js → chunk-4EMNKR2T-CkWHQjq0.js} +1 -1
  11. package/dist/web/assets/{chunk-55XCU76K-CGSdzfU6.js → chunk-55XCU76K-FdEXCejS.js} +1 -1
  12. package/dist/web/assets/{chunk-7S6XSTFO-D7U3aXUK.js → chunk-7S6XSTFO-daOCefKF.js} +1 -1
  13. package/dist/web/assets/{chunk-AQDTSKZB-C6fkREWV.js → chunk-AQDTSKZB-C_O7jTkL.js} +1 -1
  14. package/dist/web/assets/{chunk-DSNLSHJZ-C0Wri32R.js → chunk-DSNLSHJZ-CK3bwwQ-.js} +1 -1
  15. package/dist/web/assets/{chunk-HAGFOTED-dS3yjqSY.js → chunk-HAGFOTED-opIvHyBo.js} +1 -1
  16. package/dist/web/assets/{chunk-HNE4Q36P-B0HJeFYe.js → chunk-HNE4Q36P-BL3zDF5M.js} +1 -1
  17. package/dist/web/assets/{chunk-NQOKRVIF-DCR-ZD6p.js → chunk-NQOKRVIF-CinujSFs.js} +1 -1
  18. package/dist/web/assets/{chunk-UHW7PFBP-DvXVrsgg.js → chunk-UHW7PFBP-d0gZdn-g.js} +1 -1
  19. package/dist/web/assets/{chunk-VQ5W62QI-mU_IBCXT.js → chunk-VQ5W62QI-B_xkLXrb.js} +1 -1
  20. package/dist/web/assets/{chunk-WQQL4CDK-DnyUQt3W.js → chunk-WQQL4CDK-DOuJFSVX.js} +1 -1
  21. package/dist/web/assets/{chunk-XXDRQBXY-DNhISORq.js → chunk-XXDRQBXY-CDlxlAW4.js} +1 -1
  22. package/dist/web/assets/{chunk-YZO67HFG-C_oEIdWe.js → chunk-YZO67HFG-BdDkz7-r.js} +1 -1
  23. package/dist/web/assets/{chunk-ZAUX2LTX-D5aMvPiJ.js → chunk-ZAUX2LTX-BaIU0CWB.js} +1 -1
  24. package/dist/web/assets/{chunk-ZCHMQSOR-B5J6sRpu.js → chunk-ZCHMQSOR-D9qWy94b.js} +1 -1
  25. package/dist/web/assets/{classDiagram-v2-4MYWR3UA-D4-o3iga.js → classDiagram-v2-4MYWR3UA-D1SE7F9-.js} +1 -1
  26. package/dist/web/assets/{cose-bilkent-JH36ORCC-CqNUB7G6.js → cose-bilkent-JH36ORCC-C2ELhXyb.js} +1 -1
  27. package/dist/web/assets/{cynefin-EF2NZ3EQ-BLBtXLl2.js → cynefin-EF2NZ3EQ-BsGiTfQX.js} +1 -1
  28. package/dist/web/assets/{cynefinDiagram-WF24UDRP-BlytpdKL.js → cynefinDiagram-WF24UDRP-Bs1ZtI6B.js} +1 -1
  29. package/dist/web/assets/{dagre-NK4GIZVX-DIUkOqo_.js → dagre-NK4GIZVX-DpWeBJ_u.js} +1 -1
  30. package/dist/web/assets/{diagram-CBK3MWTC-4WJqLswq.js → diagram-CBK3MWTC-4v-6xiYz.js} +1 -1
  31. package/dist/web/assets/{diagram-I5XIIV2D-s1EUO6xt.js → diagram-I5XIIV2D-Dzu2bn9N.js} +1 -1
  32. package/dist/web/assets/{diagram-ODIL2UCW-GvgDR4t8.js → diagram-ODIL2UCW-B-ZVeg44.js} +1 -1
  33. package/dist/web/assets/{diagram-PFBEJUXE-B6J9SedW.js → diagram-PFBEJUXE-Ctbwu_Qd.js} +1 -1
  34. package/dist/web/assets/{diagram-RJA3I4VV-CqA7qcNf.js → diagram-RJA3I4VV-C6jtr4QM.js} +1 -1
  35. package/dist/web/assets/{diagram-TYUNFSNR-Cln9POlx.js → diagram-TYUNFSNR-BLJ5rEgp.js} +1 -1
  36. package/dist/web/assets/{dist--fImHE6g.js → dist-BgauZQpT.js} +1 -1
  37. package/dist/web/assets/{dist-YudOLIZ5.js → dist-CYz0my_F.js} +1 -1
  38. package/dist/web/assets/{dist-Cd1DR3ly.js → dist-CZwyjOXO.js} +1 -1
  39. package/dist/web/assets/{dist-CVF0b6Yz.js → dist-Cihah0nd.js} +1 -1
  40. package/dist/web/assets/{dist-Bg-QtHy9.js → dist-CuHat3Fb.js} +1 -1
  41. package/dist/web/assets/{dist-BghTt_37.js → dist-DZRwaECR.js} +1 -1
  42. package/dist/web/assets/{dist-xGXJDvke.js → dist-DfBSxfI7.js} +1 -1
  43. package/dist/web/assets/{dist-DpqggjJG.js → dist-Dih0lXFk.js} +1 -1
  44. package/dist/web/assets/{dist-CU6eXj3N.js → dist-DogGhkjl.js} +1 -1
  45. package/dist/web/assets/{dist-CoioyMmF.js → dist-FYTUKDRT.js} +1 -1
  46. package/dist/web/assets/{dist-CykDxBaO.js → dist-T0asI_P_.js} +1 -1
  47. package/dist/web/assets/{ebnfDiagram-V4P3TTPT-BusXM5tX.js → ebnfDiagram-V4P3TTPT-Db6BDS1i.js} +1 -1
  48. package/dist/web/assets/{elk-QONTBCTQ-B9oq7Tkq.js → elk-QONTBCTQ-KjqoTzPz.js} +1 -1
  49. package/dist/web/assets/{erDiagram-KYQIGQAA-CmL9SAnh.js → erDiagram-KYQIGQAA-7yWMWLmA.js} +1 -1
  50. package/dist/web/assets/{eventmodeling-K75KTNOO-R6NmozzN.js → eventmodeling-K75KTNOO-Cc9vp_RM.js} +1 -1
  51. package/dist/web/assets/flowDiagram-IUGLLWBU-J6BJoxgh.js +1 -0
  52. package/dist/web/assets/{ganttDiagram-R7GPNTJY-DRa2V_Qe.js → ganttDiagram-R7GPNTJY-BDR6Qg8X.js} +1 -1
  53. package/dist/web/assets/{gitGraph-VSP46ZUC-CdFMO2LD.js → gitGraph-VSP46ZUC-0OuqK-zj.js} +1 -1
  54. package/dist/web/assets/{gitGraphDiagram-PDYL7XHY-C-xmUbl1.js → gitGraphDiagram-PDYL7XHY-B7Sr5Eni.js} +1 -1
  55. package/dist/web/assets/index-B48NiDFl.css +1 -0
  56. package/dist/web/assets/index-BBc3hXOj.js +133 -0
  57. package/dist/web/assets/{info-OHQRW6UA-CnPUMAqS.js → info-OHQRW6UA-BUNYCTVi.js} +1 -1
  58. package/dist/web/assets/{infoDiagram-MVDRKAX5-DxouwrN7.js → infoDiagram-MVDRKAX5-7bXDS2e8.js} +1 -1
  59. package/dist/web/assets/{ishikawaDiagram-HPEHV2GE-qrLpOq3_.js → ishikawaDiagram-HPEHV2GE-Dwg6CK2F.js} +1 -1
  60. package/dist/web/assets/{journeyDiagram-BOSHW7O7-BDTfHWHd.js → journeyDiagram-BOSHW7O7-DNoy6E_l.js} +1 -1
  61. package/dist/web/assets/{kanban-definition-FNSA4HC5-CTBgSpp6.js → kanban-definition-FNSA4HC5-BOAGEtpc.js} +1 -1
  62. package/dist/web/assets/{line-D8R5RRtF.js → line-D5__Z7-a.js} +1 -1
  63. package/dist/web/assets/{linear-BCL193tG.js → linear-BwpBL2bi.js} +1 -1
  64. package/dist/web/assets/{mermaid-parser.core-C1XIxySl.js → mermaid-parser.core-Dh1kQWot.js} +3 -3
  65. package/dist/web/assets/{mermaid.core-C-385ykR.js → mermaid.core-I_-4X5xX.js} +4 -4
  66. package/dist/web/assets/{mindmap-definition-6OY57UG3-BnCvQFLY.js → mindmap-definition-6OY57UG3-Czo4xfbC.js} +1 -1
  67. package/dist/web/assets/{packet-JDAUHWVQ-DVCRx-wc.js → packet-JDAUHWVQ-B1Tk-YPz.js} +1 -1
  68. package/dist/web/assets/{pegDiagram-ECIUJNBX-CIDVz_ln.js → pegDiagram-ECIUJNBX-opN3Yw-3.js} +1 -1
  69. package/dist/web/assets/{pie-XZMESJXO-BHXvmR-y.js → pie-XZMESJXO-PTPhpjur.js} +1 -1
  70. package/dist/web/assets/{pieDiagram-GNMPY74T-Bb_l0cKd.js → pieDiagram-GNMPY74T-zO1NGdF7.js} +1 -1
  71. package/dist/web/assets/{quadrantDiagram-D57K4MC3-Dqq4AGQt.js → quadrantDiagram-D57K4MC3-eoWl0lte.js} +1 -1
  72. package/dist/web/assets/{radar-ABXABTNO-Ba5vnnQ7.js → radar-ABXABTNO-CL9_kyLl.js} +1 -1
  73. package/dist/web/assets/{railroad-I3PHUGI6-CxoMtJ5h.js → railroad-I3PHUGI6-DAToCd8H.js} +1 -1
  74. package/dist/web/assets/{railroad-abnf-LNEFI6M7-BXxErwiU.js → railroad-abnf-LNEFI6M7-j9pG6Gat.js} +1 -1
  75. package/dist/web/assets/{railroad-ebnf-DWYD2UWJ-C_9H5arK.js → railroad-ebnf-DWYD2UWJ-CiM5sQUg.js} +1 -1
  76. package/dist/web/assets/{railroad-peg-JR7BVNR7-50KHJESB.js → railroad-peg-JR7BVNR7-C7APIBTP.js} +1 -1
  77. package/dist/web/assets/{railroadDiagram-Y72NRBL7-9w1amWMc.js → railroadDiagram-Y72NRBL7-DXA0-8Dt.js} +1 -1
  78. package/dist/web/assets/{requirementDiagram-EQYSW5RA-D3XygoSz.js → requirementDiagram-EQYSW5RA-D1PbJ9Cu.js} +1 -1
  79. package/dist/web/assets/{sankeyDiagram-SY24JHO5-C68crPY9.js → sankeyDiagram-SY24JHO5-CSfvmNAq.js} +1 -1
  80. package/dist/web/assets/{sequenceDiagram-BLEHNHQU-BNcJ1wfc.js → sequenceDiagram-BLEHNHQU-B1lprETQ.js} +1 -1
  81. package/dist/web/assets/{src-okGi814h.js → src-D76sYeGJ.js} +1 -1
  82. package/dist/web/assets/{stateDiagram-v2-A6IESKWZ-DX7rAO1j.js → stateDiagram-v2-A6IESKWZ-BEGC0Sgn.js} +1 -1
  83. package/dist/web/assets/{swimlanes-B3ENRKFQ-DGSmz_ab.js → swimlanes-B3ENRKFQ-D_JFS6ED.js} +1 -1
  84. package/dist/web/assets/swimlanesDiagram-AYQRV4AK-C-TLQ1Gu.js +8 -0
  85. package/dist/web/assets/{timeline-definition-JXYKGLGB-5COU2ouX.js → timeline-definition-JXYKGLGB-Bfk78u4E.js} +1 -1
  86. package/dist/web/assets/{treeView-D4JQ5SDB-BgrtWP9w.js → treeView-D4JQ5SDB-B_3xFlyk.js} +1 -1
  87. package/dist/web/assets/{treemap-SAJKECNS-CLZcktWl.js → treemap-SAJKECNS-BZYrffaG.js} +1 -1
  88. package/dist/web/assets/{usecaseDiagram-WPOLBNNX-BbJ7QjYR.js → usecaseDiagram-WPOLBNNX-CXEH2da9.js} +1 -1
  89. package/dist/web/assets/{vennDiagram-Q3Y3IDCW-IhZTghFG.js → vennDiagram-Q3Y3IDCW-J67gmeH3.js} +1 -1
  90. package/dist/web/assets/{wardley-7MLQ67FV-XjDz9vxn.js → wardley-7MLQ67FV-DagzfYQE.js} +1 -1
  91. package/dist/web/assets/{wardleyDiagram-IVAIDKWA-DTcLR0T-.js → wardleyDiagram-IVAIDKWA-CtlWSFS0.js} +1 -1
  92. package/dist/web/assets/{xychartDiagram-4URNHDU4-Dja-ugvw.js → xychartDiagram-4URNHDU4-C-iRO0Sb.js} +1 -1
  93. package/dist/web/index.html +2 -2
  94. package/package.json +1 -1
  95. package/dist/web/assets/channel-ggr2Mduz.js +0 -1
  96. package/dist/web/assets/flowDiagram-IUGLLWBU-CkUCRx3C.js +0 -1
  97. package/dist/web/assets/index-BFpTDsCp.js +0 -132
  98. package/dist/web/assets/index-CQGURl2V.css +0 -1
  99. package/dist/web/assets/swimlanesDiagram-AYQRV4AK-D8bRrq1P.js +0 -8
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // src/cli/index.ts
4
- import fs22 from "fs";
4
+ import fs23 from "fs";
5
5
  import path22 from "path";
6
6
 
7
7
  // src/core/changes.ts
@@ -1850,9 +1850,12 @@ function installer() {
1850
1850
  return dir.includes("/pnpm/") || dir.includes("/.pnpm/") ? "pnpm" : "npm";
1851
1851
  }
1852
1852
  async function latestVersion() {
1853
- const res = await fetch(`https://registry.npmjs.org/${PKG.name}/latest`, { headers: { accept: "application/json" }, signal: AbortSignal.timeout(15e3) });
1853
+ const res = await fetch(`https://registry.npmjs.org/${PKG.name}`, {
1854
+ headers: { accept: "application/vnd.npm.install-v1+json", "cache-control": "no-cache" },
1855
+ signal: AbortSignal.timeout(15e3)
1856
+ });
1854
1857
  if (!res.ok) throw new Error(`The npm registry answered ${res.status}`);
1855
- return (await res.json()).version;
1858
+ return (await res.json())["dist-tags"].latest;
1856
1859
  }
1857
1860
  function isNewer(a, b) {
1858
1861
  const pa = a.split(".").map((n) => parseInt(n, 10));
@@ -2059,13 +2062,206 @@ function answerSummary(root2, rel) {
2059
2062
 
2060
2063
  // src/server/index.ts
2061
2064
  import crypto3 from "crypto";
2062
- import fs20 from "fs";
2065
+ import fs21 from "fs";
2063
2066
  import http from "http";
2064
2067
  import path20 from "path";
2065
2068
  import { watch } from "chokidar";
2066
2069
  import open from "open";
2067
2070
  import pc from "picocolors";
2068
2071
  import { WebSocketServer } from "ws";
2072
+
2073
+ // src/core/search.ts
2074
+ import fs20 from "fs";
2075
+ import ignore2 from "ignore";
2076
+ var MAX_MATCHES = 2e3;
2077
+ var PREVIEW_BEFORE = 40;
2078
+ var PREVIEW_MAX = 200;
2079
+ var QueryError = class extends Error {
2080
+ };
2081
+ function buildRegex(o) {
2082
+ if (!o.query) return null;
2083
+ const source = o.regex ? o.query : o.query.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
2084
+ const flags = "g" + (o.caseSensitive ? "" : "i");
2085
+ try {
2086
+ if (o.wholeWord) {
2087
+ try {
2088
+ return new RegExp(`(?<![\\p{L}\\p{N}_])(?:${source})(?![\\p{L}\\p{N}_])`, flags + "u");
2089
+ } catch {
2090
+ return new RegExp(`\\b(?:${source})\\b`, flags);
2091
+ }
2092
+ }
2093
+ return new RegExp(source, flags);
2094
+ } catch (err) {
2095
+ throw new QueryError(err.message);
2096
+ }
2097
+ }
2098
+ function pathFilter(include, exclude) {
2099
+ const globs = (s) => s.split(",").map((g) => g.trim().replace(/^\.?\/+/, "")).filter(Boolean);
2100
+ const inc = globs(include);
2101
+ const exc = globs(exclude);
2102
+ const incIg = ignore2().add(inc);
2103
+ const excIg = ignore2().add(exc);
2104
+ return (rel) => (!inc.length || incIg.ignores(rel)) && (!exc.length || !excIg.ignores(rel));
2105
+ }
2106
+ function renderLine(line, index, state) {
2107
+ const drop = new Uint8Array(line.length);
2108
+ const dropRange = (from, to) => drop.fill(1, from, to);
2109
+ const result = () => {
2110
+ const cols = [];
2111
+ let plain = "";
2112
+ for (let i2 = 0; i2 < line.length; i2++)
2113
+ if (!drop[i2]) {
2114
+ plain += line[i2];
2115
+ cols.push(i2);
2116
+ }
2117
+ return { plain, cols };
2118
+ };
2119
+ if (index === 0 && line === "---") {
2120
+ state.frontmatter = true;
2121
+ dropRange(0, line.length);
2122
+ return result();
2123
+ }
2124
+ if (state.frontmatter) {
2125
+ if (line === "---" || line === "...") {
2126
+ state.frontmatter = false;
2127
+ dropRange(0, line.length);
2128
+ }
2129
+ return result();
2130
+ }
2131
+ if (/^\s*(```|~~~)/.test(line)) {
2132
+ state.fence = !state.fence;
2133
+ dropRange(0, line.length);
2134
+ return result();
2135
+ }
2136
+ if (state.fence) return result();
2137
+ let i = 0;
2138
+ while (i < line.length) {
2139
+ if (state.comment) {
2140
+ const end = line.indexOf("-->", i);
2141
+ dropRange(i, end < 0 ? line.length : end + 3);
2142
+ if (end < 0) return result();
2143
+ state.comment = false;
2144
+ i = end + 3;
2145
+ } else {
2146
+ const start = line.indexOf("<!--", i);
2147
+ if (start < 0) break;
2148
+ state.comment = true;
2149
+ dropRange(start, start + 4);
2150
+ i = start + 4;
2151
+ }
2152
+ }
2153
+ const all = (re, each) => {
2154
+ for (const m of line.matchAll(re)) each(m);
2155
+ };
2156
+ if (/^\s*\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)*\|?\s*$/.test(line) && line.includes("|")) {
2157
+ dropRange(0, line.length);
2158
+ return result();
2159
+ }
2160
+ const block = /^\s*(?:>\s?)*(?:#{1,6}\s+|(?:[-*+]|\d+[.)])\s+(?:\[[ xX]\]\s+)?)?/.exec(line);
2161
+ if (block) dropRange(0, block[0].length);
2162
+ all(/!?\[([^\]\n]*)\]\(([^)\n]*)\)/g, (m) => {
2163
+ const textStart = m.index + m[0].indexOf("[") + 1;
2164
+ dropRange(m.index, textStart);
2165
+ dropRange(textStart + m[1].length, m.index + m[0].length);
2166
+ });
2167
+ all(/<\/?[a-zA-Z][^<>\n]*>/g, (m) => {
2168
+ if (/^<[a-z][\w+.-]*:/i.test(m[0])) dropRange(m.index, m.index + 1), dropRange(m.index + m[0].length - 1, m.index + m[0].length);
2169
+ else dropRange(m.index, m.index + m[0].length);
2170
+ });
2171
+ all(/\\([\\`*_{}[\]()#+\-.!|~<>])|\*+|~~|`+|__+|(?<!\\)\|/g, (m) => {
2172
+ if (m[1]) dropRange(m.index, m.index + 1);
2173
+ else dropRange(m.index, m.index + m[0].length);
2174
+ });
2175
+ return result();
2176
+ }
2177
+ function eachMatch(text3, o, re, each) {
2178
+ const lines = text3.split("\n");
2179
+ const state = { fence: false, comment: false, frontmatter: false };
2180
+ for (let n = 0; n < lines.length; n++) {
2181
+ const line = lines[n].endsWith("\r") ? lines[n].slice(0, -1) : lines[n];
2182
+ const { plain, cols } = o.rendered ? renderLine(line, n, state) : { plain: line, cols: null };
2183
+ re.lastIndex = 0;
2184
+ for (let m = re.exec(plain); m; m = re.exec(plain)) {
2185
+ if (!m[0].length) {
2186
+ re.lastIndex++;
2187
+ continue;
2188
+ }
2189
+ const start = m.index;
2190
+ const end = start + m[0].length;
2191
+ const from = cols ? cols[start] : start;
2192
+ const to = cols ? cols[end - 1] + 1 : end;
2193
+ if (each(m, n, plain, start, end, from, to) === false) return;
2194
+ }
2195
+ }
2196
+ }
2197
+ function preview(view, start, end) {
2198
+ const lead = view.length - view.trimStart().length;
2199
+ let from = Math.max(lead, start - PREVIEW_BEFORE);
2200
+ const space = from > lead ? view.indexOf(" ", from) : -1;
2201
+ if (space >= 0 && space < start) from = space + 1;
2202
+ const prefix = from > lead ? "\u2026" : "";
2203
+ const text3 = prefix + view.slice(from, from + PREVIEW_MAX);
2204
+ return { preview: text3.trimEnd(), start: start - from + prefix.length, end: Math.min(end - from, PREVIEW_MAX) + prefix.length };
2205
+ }
2206
+ function searchText(text3, o, re, limit = MAX_MATCHES) {
2207
+ const out = [];
2208
+ eachMatch(text3, o, re, (m, line, view, start, end, from, to) => {
2209
+ out.push({ line: line + 1, col: from, len: to - from, ...preview(view, start, end), replaceable: to - from === end - start });
2210
+ return out.length < limit;
2211
+ });
2212
+ return out;
2213
+ }
2214
+ function searchFiles(files, o) {
2215
+ const re = buildRegex(o);
2216
+ if (!re) return { files: [], total: 0, truncated: false };
2217
+ const passes = pathFilter(o.include, o.exclude);
2218
+ const out = [];
2219
+ let total = 0;
2220
+ for (const f of files) {
2221
+ if (!passes(f.path)) continue;
2222
+ let text3;
2223
+ try {
2224
+ text3 = fs20.readFileSync(f.file, "utf8");
2225
+ } catch {
2226
+ continue;
2227
+ }
2228
+ const matches = searchText(text3, o, re, MAX_MATCHES - total + 1);
2229
+ if (!matches.length) continue;
2230
+ total += matches.length;
2231
+ if (total > MAX_MATCHES) {
2232
+ out.push({ path: f.path, matches: matches.slice(0, matches.length - (total - MAX_MATCHES)) });
2233
+ return { files: out, total: MAX_MATCHES, truncated: true };
2234
+ }
2235
+ out.push({ path: f.path, matches });
2236
+ }
2237
+ return { files: out, total, truncated: false };
2238
+ }
2239
+ function expand(m, replacement) {
2240
+ return replacement.replace(/\$(\$|&|\d{1,2}|<([^>]+)>)/g, (token, ref, name) => {
2241
+ if (ref === "$") return "$";
2242
+ if (ref === "&") return m[0];
2243
+ if (name !== void 0) return m.groups?.[name] ?? "";
2244
+ const n = Number(ref);
2245
+ return n > 0 && n < m.length ? m[n] ?? "" : token;
2246
+ });
2247
+ }
2248
+ function replaceText(text3, o, replacement, only) {
2249
+ const re = buildRegex(o);
2250
+ if (!re) return { text: text3, count: 0 };
2251
+ const lineStarts = [0];
2252
+ for (let i = 0; i < text3.length; i++) if (text3[i] === "\n") lineStarts.push(i + 1);
2253
+ const edits = [];
2254
+ eachMatch(text3, o, re, (m, line, _view, start, end, from, to) => {
2255
+ if (to - from !== end - start) return;
2256
+ if (only && !only.has(`${line + 1}:${from}`)) return;
2257
+ edits.push({ from: lineStarts[line] + from, to: lineStarts[line] + to, insert: o.regex ? expand(m, replacement) : replacement });
2258
+ });
2259
+ let out = text3;
2260
+ for (const e of edits.reverse()) out = out.slice(0, e.from) + e.insert + out.slice(e.to);
2261
+ return { text: out, count: edits.length };
2262
+ }
2263
+
2264
+ // src/server/index.ts
2069
2265
  var IMAGE_MIME = {
2070
2266
  ".png": "image/png",
2071
2267
  ".jpg": "image/jpeg",
@@ -2129,7 +2325,7 @@ async function startServer({ root: root2, port, open: openBrowser }) {
2129
2325
  if (typeof rel !== "string" || !rel.trim()) throw new HttpError(400, "Expected a path");
2130
2326
  const abs = safeResolve(root2, rel);
2131
2327
  if (abs === root2) throw new HttpError(400, "Refusing to delete the project root");
2132
- if (!fs20.existsSync(abs)) throw new HttpError(404, "Not found");
2328
+ if (!fs21.existsSync(abs)) throw new HttpError(404, "Not found");
2133
2329
  return abs;
2134
2330
  };
2135
2331
  const translationFile = (lang, rel) => {
@@ -2137,6 +2333,33 @@ async function startServer({ root: root2, port, open: openBrowser }) {
2137
2333
  assertInside(file, root2);
2138
2334
  return file;
2139
2335
  };
2336
+ const searchOptions = (o) => {
2337
+ const flag2 = (v) => v === true || v === "1" || v === "true";
2338
+ return {
2339
+ query: typeof o.q === "string" ? o.q : "",
2340
+ caseSensitive: flag2(o.case),
2341
+ wholeWord: flag2(o.word),
2342
+ regex: flag2(o.regex),
2343
+ rendered: flag2(o.rendered),
2344
+ include: typeof o.include === "string" ? o.include : "",
2345
+ exclude: typeof o.exclude === "string" ? o.exclude : ""
2346
+ };
2347
+ };
2348
+ const searchable = (o) => {
2349
+ const l = viewLang(o.lang);
2350
+ return flattenFiles(scanTree(root2), o.ignored === true || o.ignored === "1").map((n) => {
2351
+ const tPath = l ? translationFile(l, n.path) : null;
2352
+ return { path: n.path, file: tPath && fs21.existsSync(tPath) ? tPath : safeResolve(root2, n.path), translation: !!tPath && fs21.existsSync(tPath) };
2353
+ });
2354
+ };
2355
+ const search = (o) => {
2356
+ try {
2357
+ return searchFiles(searchable(o), searchOptions(o));
2358
+ } catch (err) {
2359
+ if (err instanceof QueryError) throw new HttpError(400, err.message);
2360
+ throw err;
2361
+ }
2362
+ };
2140
2363
  const routes = {
2141
2364
  "GET /api/info": () => {
2142
2365
  const c = config();
@@ -2195,14 +2418,44 @@ async function startServer({ root: root2, port, open: openBrowser }) {
2195
2418
  const foreign = featureState(root2).translations ? Object.fromEntries(foreignFiles(root2, sourceLang()).map((f) => [f.path, f.detected])) : {};
2196
2419
  return { tree: scanTree(root2), git: gitStatuses(root2), sync: sync2, foreign };
2197
2420
  },
2421
+ "GET /api/search": (url3) => search(Object.fromEntries(url3.searchParams)),
2422
+ /**
2423
+ * Replace the matches of a search: in every file, in one (`path`), or only some of its matches
2424
+ * (`only`: `line:col` keys). Only the matched text changes in each file.
2425
+ */
2426
+ "POST /api/replace": (_, body) => {
2427
+ const o = searchOptions(body);
2428
+ if (!o.query) throw new HttpError(400, "Expected a query");
2429
+ const replacement = String(body.replacement ?? "");
2430
+ const only = Array.isArray(body.only) ? new Set(body.only.map(String)) : void 0;
2431
+ try {
2432
+ buildRegex(o);
2433
+ } catch (err) {
2434
+ throw new HttpError(400, err.message);
2435
+ }
2436
+ const passes = pathFilter(o.include, o.exclude);
2437
+ const files = searchable(body).filter((f) => passes(f.path) && (typeof body.path !== "string" || f.path === body.path));
2438
+ let replaced = 0;
2439
+ const changed = [];
2440
+ for (const f of files) {
2441
+ const before = fs21.readFileSync(f.file, "utf8");
2442
+ const { text: text3, count } = replaceText(before, o, replacement, only);
2443
+ if (!count || text3 === before) continue;
2444
+ if (!f.translation && featureState(root2).agent) logSave(root2, f.path, before, text3);
2445
+ fs21.writeFileSync(f.file, text3);
2446
+ replaced += count;
2447
+ changed.push(f.path);
2448
+ }
2449
+ return { replaced, files: changed };
2450
+ },
2198
2451
  "POST /api/keep-language": (_, body) => ({ lang: keepLanguage(root2, mdPath(body.path)) }),
2199
2452
  "GET /api/file": (url3) => {
2200
2453
  const rel = mdPath(url3.searchParams.get("path"));
2201
2454
  const l = viewLang(url3.searchParams.get("lang"));
2202
- const source = fs20.readFileSync(safeResolve(root2, rel), "utf8");
2455
+ const source = fs21.readFileSync(safeResolve(root2, rel), "utf8");
2203
2456
  if (l) {
2204
2457
  const tPath = translationFile(l, rel);
2205
- if (fs20.existsSync(tPath)) return { path: rel, content: fs20.readFileSync(tPath, "utf8"), target: "translation", status: fileStatus(root2, l, rel) };
2458
+ if (fs21.existsSync(tPath)) return { path: rel, content: fs21.readFileSync(tPath, "utf8"), target: "translation", status: fileStatus(root2, l, rel) };
2206
2459
  return { path: rel, content: source, target: "source", status: "missing" };
2207
2460
  }
2208
2461
  return { path: rel, content: source, target: "source", status: null };
@@ -2211,19 +2464,19 @@ async function startServer({ root: root2, port, open: openBrowser }) {
2211
2464
  const rel = mdPath(body.path);
2212
2465
  const l = viewLang(body.lang);
2213
2466
  const file = body.target === "translation" && l ? translationFile(l, rel) : safeResolve(root2, rel);
2214
- fs20.mkdirSync(path20.dirname(file), { recursive: true });
2467
+ fs21.mkdirSync(path20.dirname(file), { recursive: true });
2215
2468
  const content = String(body.content ?? "");
2216
- if (!l && featureState(root2).agent) logSave(root2, rel, fs20.existsSync(file) ? fs20.readFileSync(file, "utf8") : "", content);
2217
- fs20.writeFileSync(file, content);
2469
+ if (!l && featureState(root2).agent) logSave(root2, rel, fs21.existsSync(file) ? fs21.readFileSync(file, "utf8") : "", content);
2470
+ fs21.writeFileSync(file, content);
2218
2471
  return { ok: true, status: l ? fileStatus(root2, l, rel) : null };
2219
2472
  },
2220
2473
  "POST /api/file": (_, body) => {
2221
2474
  const rel = mdPath(body.path);
2222
2475
  const file = safeResolve(root2, rel);
2223
- if (fs20.existsSync(file)) throw new HttpError(409, "File already exists");
2224
- fs20.mkdirSync(path20.dirname(file), { recursive: true });
2476
+ if (fs21.existsSync(file)) throw new HttpError(409, "File already exists");
2477
+ fs21.mkdirSync(path20.dirname(file), { recursive: true });
2225
2478
  const title = path20.basename(rel, ".md").replace(/^\d+[-_]/, "").replace(/[-_]/g, " ");
2226
- fs20.writeFileSync(file, `# ${title.charAt(0).toUpperCase() + title.slice(1)}
2479
+ fs21.writeFileSync(file, `# ${title.charAt(0).toUpperCase() + title.slice(1)}
2227
2480
 
2228
2481
  `);
2229
2482
  return { ok: true, path: rel };
@@ -2233,20 +2486,20 @@ async function startServer({ root: root2, port, open: openBrowser }) {
2233
2486
  if (typeof body.path !== "string" || !body.path.trim()) throw new HttpError(400, "Expected a path");
2234
2487
  const dir = safeResolve(root2, body.path);
2235
2488
  if (dir === root2) throw new HttpError(400, "Expected a path");
2236
- if (fs20.existsSync(dir)) throw new HttpError(409, "A file or folder with that name already exists");
2237
- fs20.mkdirSync(dir, { recursive: true });
2489
+ if (fs21.existsSync(dir)) throw new HttpError(409, "A file or folder with that name already exists");
2490
+ fs21.mkdirSync(dir, { recursive: true });
2238
2491
  return { ok: true, path: toPosix(path20.relative(root2, dir)) };
2239
2492
  },
2240
2493
  "GET /api/delete-preview": (url3) => {
2241
2494
  const abs = deletable(url3.searchParams.get("path"));
2242
- if (!fs20.statSync(abs).isDirectory()) return { kind: "file", files: 1, md: 1 };
2243
- const files = fs20.readdirSync(abs, { recursive: true, withFileTypes: true }).filter((e) => e.isFile());
2495
+ if (!fs21.statSync(abs).isDirectory()) return { kind: "file", files: 1, md: 1 };
2496
+ const files = fs21.readdirSync(abs, { recursive: true, withFileTypes: true }).filter((e) => e.isFile());
2244
2497
  return { kind: "dir", files: files.length, md: files.filter((e) => e.name.toLowerCase().endsWith(".md")).length };
2245
2498
  },
2246
2499
  "DELETE /api/path": (url3) => {
2247
2500
  const rel = toPosix(path20.relative(root2, deletable(url3.searchParams.get("path"))));
2248
- fs20.rmSync(safeResolve(root2, rel), { recursive: true });
2249
- for (const l of config().langs) fs20.rmSync(translationFile(l, rel), { recursive: true, force: true });
2501
+ fs21.rmSync(safeResolve(root2, rel), { recursive: true });
2502
+ for (const l of config().langs) fs21.rmSync(translationFile(l, rel), { recursive: true, force: true });
2250
2503
  return { ok: true };
2251
2504
  },
2252
2505
  "POST /api/ignore": (_, body) => {
@@ -2263,7 +2516,7 @@ async function startServer({ root: root2, port, open: openBrowser }) {
2263
2516
  },
2264
2517
  "GET /api/rules": () => {
2265
2518
  const mainDoc = readConfig(root2)?.mainDoc;
2266
- const text3 = mainDoc && fs20.existsSync(path20.join(root2, mainDoc)) ? fs20.readFileSync(path20.join(root2, mainDoc), "utf8") : "";
2519
+ const text3 = mainDoc && fs21.existsSync(path20.join(root2, mainDoc)) ? fs21.readFileSync(path20.join(root2, mainDoc), "utf8") : "";
2267
2520
  return { rules: listRules(), applied: appliedRuleIds(text3), mainDoc: mainDoc ?? null };
2268
2521
  },
2269
2522
  "PUT /api/rules": (_, body) => saveRule(body),
@@ -2279,12 +2532,12 @@ async function startServer({ root: root2, port, open: openBrowser }) {
2279
2532
  },
2280
2533
  "GET /api/skills/file": (url3) => {
2281
2534
  const skill = getSkill(root2, url3.searchParams.get("key"));
2282
- return { path: skill.key, content: fs20.readFileSync(path20.join(skill.key, "SKILL.md"), "utf8"), target: "source", status: null };
2535
+ return { path: skill.key, content: fs21.readFileSync(path20.join(skill.key, "SKILL.md"), "utf8"), target: "source", status: null };
2283
2536
  },
2284
2537
  "PUT /api/skills/file": (_, body) => {
2285
2538
  const skill = getSkill(root2, body.key);
2286
2539
  if (skill.managed) throw new HttpError(403, "This skill is managed by the app that installed it");
2287
- fs20.writeFileSync(path20.join(skill.key, "SKILL.md"), String(body.content ?? ""));
2540
+ fs21.writeFileSync(path20.join(skill.key, "SKILL.md"), String(body.content ?? ""));
2288
2541
  return { ok: true, status: null };
2289
2542
  },
2290
2543
  "POST /api/skills/install": (_, body) => {
@@ -2333,12 +2586,12 @@ async function startServer({ root: root2, port, open: openBrowser }) {
2333
2586
  return;
2334
2587
  }
2335
2588
  const type = IMAGE_MIME[path20.extname(file).toLowerCase()];
2336
- if (!type || !fs20.existsSync(file) || !fs20.statSync(file).isFile()) {
2589
+ if (!type || !fs21.existsSync(file) || !fs21.statSync(file).isFile()) {
2337
2590
  res.writeHead(404).end();
2338
2591
  return;
2339
2592
  }
2340
2593
  res.writeHead(200, { "content-type": type, "cache-control": "no-cache", "content-security-policy": "sandbox; frame-ancestors 'none'" });
2341
- fs20.createReadStream(file).pipe(res);
2594
+ fs21.createReadStream(file).pipe(res);
2342
2595
  }
2343
2596
  function openDoc(rel, res) {
2344
2597
  let doc;
@@ -2390,7 +2643,7 @@ async function startServer({ root: root2, port, open: openBrowser }) {
2390
2643
  console.log(`
2391
2644
  ${pc.bold("markode")} ${pc.dim("\u2192")} ${pc.cyan(url2)} ${pc.dim(root2)}
2392
2645
  `);
2393
- if (!fs20.existsSync(WEB_DIR)) console.log(pc.yellow(" Web UI not built: run `pnpm build`, or `pnpm dev` and open http://localhost:4320\n"));
2646
+ if (!fs21.existsSync(WEB_DIR)) console.log(pc.yellow(" Web UI not built: run `pnpm build`, or `pnpm dev` and open http://localhost:4320\n"));
2394
2647
  else if (openBrowser) open(url2).catch(() => {
2395
2648
  });
2396
2649
  }
@@ -2411,17 +2664,17 @@ function listen(server, port) {
2411
2664
  }
2412
2665
  function serveStatic(pathname, res) {
2413
2666
  let file = path20.join(WEB_DIR, path20.normalize(pathname).replace(/^(\.\.[/\\])+/, ""));
2414
- if (!file.startsWith(WEB_DIR) || !fs20.existsSync(file) || fs20.statSync(file).isDirectory()) file = path20.join(WEB_DIR, "index.html");
2415
- if (!fs20.existsSync(file)) {
2667
+ if (!file.startsWith(WEB_DIR) || !fs21.existsSync(file) || fs21.statSync(file).isDirectory()) file = path20.join(WEB_DIR, "index.html");
2668
+ if (!fs21.existsSync(file)) {
2416
2669
  res.writeHead(404).end("Web UI not built. Run `pnpm build`.");
2417
2670
  return;
2418
2671
  }
2419
2672
  res.writeHead(200, { "content-type": MIME[path20.extname(file)] ?? "application/octet-stream", "content-security-policy": "frame-ancestors 'none'" });
2420
- fs20.createReadStream(file).pipe(res);
2673
+ fs21.createReadStream(file).pipe(res);
2421
2674
  }
2422
2675
 
2423
2676
  // src/cli/init.ts
2424
- import fs21 from "fs";
2677
+ import fs22 from "fs";
2425
2678
  import path21 from "path";
2426
2679
  import * as p from "@clack/prompts";
2427
2680
  import pc2 from "picocolors";
@@ -2433,12 +2686,12 @@ function check(value) {
2433
2686
  return value;
2434
2687
  }
2435
2688
  async function offerClaudeLink(root2, d) {
2436
- if (fs21.existsSync(path21.join(root2, "CLAUDE.md"))) return;
2689
+ if (fs22.existsSync(path21.join(root2, "CLAUDE.md"))) return;
2437
2690
  const link2 = d ? d.mainDoc === "CLAUDE.md" : check(await p.confirm({ message: "Claude Code reads CLAUDE.md, not AGENTS.md. Add a CLAUDE.md that imports AGENTS.md?", initialValue: true }));
2438
2691
  if (link2 && linkAgentsDoc(root2)) p.log.success("Created CLAUDE.md (imports AGENTS.md)");
2439
2692
  }
2440
2693
  async function chooseMainDoc(root2, d) {
2441
- const existing = MAIN_DOCS.filter((d2) => fs21.existsSync(path21.join(root2, d2)) && !isPointer(fs21.readFileSync(path21.join(root2, d2), "utf8"), d2));
2694
+ const existing = MAIN_DOCS.filter((d2) => fs22.existsSync(path21.join(root2, d2)) && !isPointer(fs22.readFileSync(path21.join(root2, d2), "utf8"), d2));
2442
2695
  if (d) {
2443
2696
  if (existing.length === 1 && existing[0] === "AGENTS.md") await offerClaudeLink(root2, d);
2444
2697
  if (existing.length) return existing.includes(d.mainDoc) ? d.mainDoc : existing[0];
@@ -2713,7 +2966,7 @@ async function runInit(root2, plan2) {
2713
2966
  const mainFile = path21.join(root2, mainDoc);
2714
2967
  if (has2("dashboard")) workflow = await chooseWorkflow(root2, mainDoc, previous?.workflow, d);
2715
2968
  if (workflow === "openspec" || workflow === "speckit") applyWorkflowToFile(mainFile, workflow);
2716
- const mainText = fs21.readFileSync(mainFile, "utf8");
2969
+ const mainText = fs22.readFileSync(mainFile, "utf8");
2717
2970
  const sourceLang = d ? SOURCE_LANG_MARK.test(mainText) ? sourceLangOf(mainText) : detectedLang : check(await p.select({ message: SOURCE_LANG_QUESTION, options: LANG_OPTIONS, initialValue: SOURCE_LANG_MARK.test(mainText) ? sourceLangOf(mainText) : detectedLang }));
2718
2971
  const rules = listRules();
2719
2972
  const applied = appliedRuleIds(mainText);
@@ -2912,9 +3165,9 @@ var option = (name) => {
2912
3165
  var command = args[0] && !args[0].startsWith("-") ? args[0] : "start";
2913
3166
  var root = process.env.MARKODE_ROOT ?? process.cwd();
2914
3167
  async function main() {
2915
- if (fs22.existsSync(root)) setProjectRoot(root);
3168
+ if (fs23.existsSync(root)) setProjectRoot(root);
2916
3169
  if (flag("--help") || flag("-h")) return console.log(HELP);
2917
- if (flag("--version") || flag("-v")) return console.log(JSON.parse(fs22.readFileSync(path22.join(PKG_ROOT, "package.json"), "utf8")).version);
3170
+ if (flag("--version") || flag("-v")) return console.log(JSON.parse(fs23.readFileSync(path22.join(PKG_ROOT, "package.json"), "utf8")).version);
2918
3171
  const translation = flag("--status") || flag("--mark") || flag("--keep");
2919
3172
  if ((command === "sync" || command === "translate") && translation) return sync();
2920
3173
  if (command === "translate" || flag("--translate")) return runTranslate(root);
@@ -3013,7 +3266,7 @@ function link() {
3013
3266
  }
3014
3267
  async function url() {
3015
3268
  const doc = args[1] && !args[1].startsWith("-") ? args[1] : void 0;
3016
- if (doc && (!doc.toLowerCase().endsWith(".md") || !fs22.existsSync(path22.join(root, doc)))) {
3269
+ if (doc && (!doc.toLowerCase().endsWith(".md") || !fs23.existsSync(path22.join(root, doc)))) {
3017
3270
  console.error(`Usage: markode url [<doc.md>] (relative to ${root})`);
3018
3271
  process.exitCode = 1;
3019
3272
  return;
@@ -3029,7 +3282,7 @@ function stop() {
3029
3282
  }
3030
3283
  async function update() {
3031
3284
  const latest = await latestVersion();
3032
- if (!isNewer(latest, CURRENT_VERSION)) return console.log(`markode ${CURRENT_VERSION} is the latest version.`);
3285
+ if (!isNewer(latest, CURRENT_VERSION)) return console.log(`markode ${CURRENT_VERSION} is the latest version (one published in the last minutes may not show yet).`);
3033
3286
  console.log(`markode ${latest} is out (you have ${CURRENT_VERSION}).`);
3034
3287
  if (flag("--check")) return;
3035
3288
  const via = flag("--pnpm") ? "pnpm" : flag("--npm") ? "npm" : installer();
@@ -3055,7 +3308,7 @@ function changes() {
3055
3308
  }
3056
3309
  async function wait() {
3057
3310
  const rel = args[1];
3058
- if (!rel || !fs22.existsSync(path22.join(root, rel))) {
3311
+ if (!rel || !fs23.existsSync(path22.join(root, rel))) {
3059
3312
  console.error(`Usage: markode wait <proposal.md> (relative to ${root})`);
3060
3313
  process.exitCode = 1;
3061
3314
  return;
@@ -1 +1 @@
1
- import{m as e,t}from"./mermaid-parser.core-C1XIxySl.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-okGi814h.js";import"./chunk-DSNLSHJZ-C0Wri32R.js";import{n as i,r as a,t as o}from"./chunk-2E7WHVMD-B2TT-9T2.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-C-385ykR.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
+ import{m as e,t}from"./mermaid-parser.core-Dh1kQWot.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-D76sYeGJ.js";import"./chunk-DSNLSHJZ-CK3bwwQ-.js";import{n as i,r as a,t as o}from"./chunk-2E7WHVMD-Bg92ygkh.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-I_-4X5xX.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-CVF0b6Yz.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};
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-Cihah0nd.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};
@@ -1 +1 @@
1
- import"./chunk-NGNAAXSQ-C2Wy9Xmz.js";export{M as createArchitectureServices}from"./mermaid-parser.core-C1XIxySl.js";
1
+ import"./chunk-NGNAAXSQ-C2Wy9Xmz.js";export{M as createArchitectureServices}from"./mermaid-parser.core-Dh1kQWot.js";