@p-buddy/parkdown 0.0.6 → 0.0.8

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/README.md CHANGED
@@ -44,7 +44,7 @@ populateMarkdownInclusions(file, writeFile);
44
44
 
45
45
  [](./.assets/authoring.md)
46
46
  <!-- p↓ BEGIN -->
47
- <!-- p↓ length lines: 572 chars: 17752 -->
47
+ <!-- p↓ length lines: 574 chars: 17955 -->
48
48
  ## Authoring
49
49
 
50
50
  You author inclusions in your markdown files using a link with no text i.e. `[](<url>)`, where `<url>` points to some local or remote text resource (e.g.`./other.md`, `https://example.com/remote.md`).
@@ -55,6 +55,8 @@ These links can be rendered either [inline](#inline) or [block](#block), dependi
55
55
 
56
56
  Inline inclusions occur when your _text-less_ link has 1 or more siblings (meaning it's **not** the only node in a [paragraph](https://www.markdownguide.org/basic-syntax/#paragraphs-1)).
57
57
 
58
+ > **CAUTION:** [parkdown](https://www.npmjs.com/package/@p-buddy/parkdown) will not protect you from authoring inline inclusions that should actually be [block](#block) inclusions to be valid markdown.
59
+
58
60
  There are two equivalent ways to author inline inclusions, [single-line](#single-line) or [multi-line](#multi-line), and which you choose depends solely on how you want your raw markdown to look (it will **not** affect the rendered output).
59
61
 
60
62
  #### Single-line
package/dist/cli.js CHANGED
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command as t } from "@commander-js/extra-typings";
3
- import { populateMarkdownInclusions as r, depopulateMarkdownInclusions as l } from "@p-buddy/parkdown";
4
- const p = "0.0.6", f = new t().version(p).option("--nw, --no-write", "Do NOT write result to file (defaults to false)", !1).option("--ni, --no-inclusions", "Do NOT process file inclusions (defaults to false)", !1).option("-d, --depopulate", "Remove populated inclusions from the file", !1).option("-f, --file <flag>", "The file(s) to process", (e, o) => (o.push(e), o), new Array()).option("-r, --remap-imports", "Remap import specifiers in code blocks from one destination to another").parse(), { inclusions: a, depopulate: c, file: n, write: i } = f.opts();
3
+ import { populateMarkdownInclusions as l, depopulateMarkdownInclusions as r } from "@p-buddy/parkdown";
4
+ const f = "0.0.8", p = new t().version(f).option("--nw, --no-write", "Do NOT write result to file (defaults to false)", !1).option("--ni, --no-inclusions", "Do NOT process file inclusions (defaults to false)", !1).option("-d, --depopulate", "Remove populated inclusions from the file", !1).option("-f, --file <flag>", "The file(s) to process", (s, o) => (o.push(s), o), new Array()).parse(), { inclusions: c, depopulate: u, file: n, write: i } = p.opts();
5
5
  n.length === 0 && n.push("README.md");
6
- const u = [
7
- [r, !a],
8
- [l, c]
6
+ const a = [
7
+ [l, !c],
8
+ [r, u]
9
9
  ];
10
- for (const [e] of u.filter(([o, s]) => s))
10
+ for (const [s] of a.filter(([o, e]) => e))
11
11
  for (const o of n) {
12
- const s = e(o, !i);
13
- i && console.log(s);
12
+ const e = s(o, !i);
13
+ i && console.log(e);
14
14
  }
package/dist/index.js CHANGED
@@ -1,43 +1,41 @@
1
1
  var ue = Object.defineProperty;
2
- var me = (e, t, n) => t in e ? ue(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
- var q = (e, t, n) => me(e, typeof t != "symbol" ? t + "" : t, n);
4
- import { writeFileSync as J, readFileSync as he } from "node:fs";
5
- import { basename as fe, dirname as O, join as x, resolve as V } from "node:path";
6
- import { URLSearchParams as ge } from "node:url";
7
- import { unified as de } from "unified";
2
+ var he = (e, t, n) => t in e ? ue(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
+ var q = (e, t, n) => he(e, typeof t != "symbol" ? t + "" : t, n);
4
+ import { writeFileSync as J, readFileSync as ge } from "node:fs";
5
+ import { basename as fe, dirname as j, join as S, resolve as Z } from "node:path";
6
+ import { URLSearchParams as de } from "node:url";
7
+ import { unified as we } from "unified";
8
8
  import ve from "remark-parse";
9
- import { visit as we } from "unist-util-visit";
10
- import $e from "stable-hash";
9
+ import { visit as $e } from "unist-util-visit";
11
10
  import { dedent as D } from "ts-dedent";
12
- import Ce from "extract-comments";
13
- const f = (e, t) => e.position.start.offset - t.position.start.offset;
14
- f.reverse = (e, t) => f(t, e);
15
- const I = (e) => e.position !== void 0 && e.position.start.offset !== void 0 && e.position.end.offset !== void 0, ye = de().use(ve), j = {
16
- md: (e) => ye.parse(e)
17
- }, S = (e, t) => {
11
+ const g = (e, t) => e.position.start.offset - t.position.start.offset;
12
+ g.reverse = (e, t) => g(t, e);
13
+ const I = (e) => e.position !== void 0 && e.position.start.offset !== void 0 && e.position.end.offset !== void 0, Ce = we().use(ve), R = {
14
+ md: (e) => Ce.parse(e)
15
+ }, N = (e, t) => {
18
16
  const n = [];
19
- return we(e, (o, s, r) => {
20
- if (o.type !== "root") {
21
- if (t && o.type !== t) return;
22
- if (I(o)) {
23
- const i = $e(r), c = ((r == null ? void 0 : r.children.length) ?? 0) - 1;
24
- n.push({ ...o, parentID: i, siblingIndex: s, siblingCount: c });
17
+ return $e(e, (s, o, r) => {
18
+ if (s.type !== "root") {
19
+ if (t && s.type !== t) return;
20
+ if (I(s)) {
21
+ const i = ((r == null ? void 0 : r.children.length) ?? 0) - 1;
22
+ n.push({ ...s, siblingIndex: o, siblingCount: i });
25
23
  }
26
24
  }
27
25
  }), n;
28
- }, Ee = (e) => e.children.length === 0, Z = (e, t, ...n) => {
26
+ }, ye = (e) => e.children.length === 0, K = (e, t, ...n) => {
29
27
  if (n.length === 0) throw new Error("No nodes to replace content from");
30
- n.sort(f);
31
- const o = n.at(0), s = n.at(-1);
32
- return e.slice(0, o.position.start.offset) + t + e.slice(s.position.end.offset);
33
- }, xe = (e, t, n) => {
34
- const o = Math.min(t.position.end.offset, n.position.end.offset), s = Math.max(t.position.start.offset, n.position.start.offset);
35
- return e.slice(o, s);
28
+ n.sort(g);
29
+ const s = n.at(0), o = n.at(-1);
30
+ return e.slice(0, s.position.start.offset) + t + e.slice(o.position.end.offset);
31
+ }, Ee = (e, t, n) => {
32
+ const s = Math.min(t.position.end.offset, n.position.end.offset), o = Math.max(t.position.start.offset, n.position.start.offset);
33
+ return e.slice(s, o);
36
34
  }, E = (...e) => e.join(" "), Se = (...e) => e.join(`
37
- `), be = (e) => {
35
+ `), Ne = (e) => {
38
36
  const t = e.split("?");
39
37
  return t.length > 1 ? [t.slice(0, -1).join("?"), t.at(-1)] : [e, ""];
40
- }, ke = (e) => be(e)[0];
38
+ }, xe = (e) => Ne(e)[0];
41
39
  class d {
42
40
  constructor() {
43
41
  q(this, "intervals", []);
@@ -53,32 +51,32 @@ class d {
53
51
  if (!t.length) return this.intervals = [];
54
52
  t.sort((r, i) => r[0] - i[0]);
55
53
  const n = [];
56
- let [o, s] = t[0];
54
+ let [s, o] = t[0];
57
55
  for (let r = 1; r < t.length; r++) {
58
56
  const [i, c] = t[r];
59
- i <= s ? s = Math.max(s, c) : (n.push([o, s]), o = i, s = c);
57
+ i <= o ? o = Math.max(o, c) : (n.push([s, o]), s = i, o = c);
60
58
  }
61
- return n.push([o, s]), this.intervals = n;
59
+ return n.push([s, o]), this.intervals = n;
62
60
  }
63
61
  subtract(t) {
64
- const { intervals: n } = this, { intervals: o } = t;
65
- if (!n.length || !o.length) return n;
66
- let s = [...n];
67
- for (const [r, i] of o) {
62
+ const { intervals: n } = this, { intervals: s } = t;
63
+ if (!n.length || !s.length) return n;
64
+ let o = [...n];
65
+ for (const [r, i] of s) {
68
66
  const c = [];
69
- for (const [l, a] of s) {
67
+ for (const [l, a] of o) {
70
68
  if (i <= l || r >= a) {
71
69
  c.push([l, a]);
72
70
  continue;
73
71
  }
74
72
  r > l && c.push([l, r]), i < a && c.push([i, a]);
75
73
  }
76
- s = c;
74
+ o = c;
77
75
  }
78
- return this.intervals = s;
76
+ return this.intervals = o;
79
77
  }
80
78
  }
81
- const W = /,\s*(?![^()]*\))/, B = {
79
+ const B = /,\s*(?![^()]*\))/, F = {
82
80
  reserved: {
83
81
  semi: ";",
84
82
  slash: "/",
@@ -104,7 +102,7 @@ const W = /,\s*(?![^()]*\))/, B = {
104
102
  unsquare: "]",
105
103
  tick: "`"
106
104
  }
107
- }, Ne = "-", F = {
105
+ }, ke = "-", U = {
108
106
  static: [
109
107
  ["'''", '"'],
110
108
  ["''", "'"],
@@ -112,87 +110,87 @@ const W = /,\s*(?![^()]*\))/, B = {
112
110
  [/p↓:\s+/g, ""]
113
111
  ],
114
112
  url: [
115
- ...Object.entries(B.unsafe),
116
- ...Object.entries(B.reserved)
113
+ ...Object.entries(F.unsafe),
114
+ ...Object.entries(F.reserved)
117
115
  ]
118
- }, U = (e, [t, n]) => e.replaceAll(t, n), K = (e, t = Ne) => {
119
- const n = F.static.reduce(U, e);
120
- return F.url.map(([o, s]) => [t + o + t, s]).reduce(U, n).replaceAll(t, " ");
121
- }, Me = ["string", "number", "boolean"], _e = (e) => Me.includes(e), Te = /^([a-zA-Z0-9_-]+)(?:\(([^)]*)\))?$/, Oe = (e) => {
116
+ }, G = (e, [t, n]) => e.replaceAll(t, n), Y = (e, t = ke) => {
117
+ const n = U.static.reduce(G, e);
118
+ return U.url.map(([s, o]) => [t + s + t, o]).reduce(G, n).replaceAll(t, " ");
119
+ }, be = ["string", "number", "boolean"], _e = (e) => be.includes(e), Te = /^([a-zA-Z0-9_-]+)(?:\(([^)]*)\))?$/, Oe = (e) => {
122
120
  const t = e.match(Te);
123
121
  if (!t) throw new Error(`Invalid invocation: ${e}`);
124
- const [, n, o = ""] = t;
125
- if (!o.trim()) return { name: n, parameters: [] };
126
- const s = Ie(o);
127
- return { name: n, parameters: s };
128
- }, De = (e, t) => {
122
+ const [, n, s = ""] = t;
123
+ if (!s.trim()) return { name: n, parameters: [] };
124
+ const o = je(s);
125
+ return { name: n, parameters: o };
126
+ }, Me = (e, t) => {
129
127
  for (let n = t + 1; n < e.length; n++)
130
128
  if (e[n] !== void 0) return !1;
131
129
  return !0;
132
- }, Ie = (e) => {
130
+ }, je = (e) => {
133
131
  const t = [];
134
- let n = "", o = !1;
135
- for (let s = 0; s < e.length; s++) {
136
- const r = e[s], i = r === "'";
137
- if (i && e.at(s + 1) === "'") {
138
- const c = e.at(s + 2) === "'";
139
- o = !o, n += c ? "'''" : "''", s += c ? 2 : 1;
140
- } else i ? (o = !o, n += r) : r === "," && !o ? (t.push(n.trim()), n = "") : n += r;
132
+ let n = "", s = !1;
133
+ for (let o = 0; o < e.length; o++) {
134
+ const r = e[o], i = r === "'";
135
+ if (i && e.at(o + 1) === "'") {
136
+ const c = e.at(o + 2) === "'";
137
+ s = !s, n += c ? "'''" : "''", o += c ? 2 : 1;
138
+ } else i ? (s = !s, n += r) : r === "," && !s ? (t.push(n.trim()), n = "") : n += r;
141
139
  }
142
- return t.push(n.trim()), t.map((s) => s === "" ? void 0 : s ? je(s) : void 0).filter((s, r, i) => s !== void 0 || !De(i, r));
143
- }, je = (e) => {
140
+ return t.push(n.trim()), t.map((o) => o === "" ? void 0 : o ? De(o) : void 0).filter((o, r, i) => o !== void 0 || !Me(i, r));
141
+ }, De = (e) => {
144
142
  const t = e.length >= 2 && e[0] === "'" && e.at(-1) === "'", n = t && e.length >= 4 && e[1] === "'" && e.at(-2) === "'";
145
143
  return !t || n ? e : e.slice(1, -1);
146
- }, Le = (e) => {
144
+ }, Ie = (e) => {
147
145
  const t = /^(\w+)(?:\(([^)]*)\))?/, n = e.match(t);
148
146
  if (!n) return { name: e };
149
- const [, o, s] = n;
150
- if (!s) return { name: o };
147
+ const [, s, o] = n;
148
+ if (!o) return { name: s };
151
149
  const r = /(\w+)(\?)?:\s*([^,]+)/g, i = [];
152
150
  let c;
153
- for (; (c = r.exec(s)) !== null; ) {
154
- const [, l, a, p] = c, u = p.trim();
155
- if (!_e(u)) throw new Error(`Unsupported type: ${u}`);
156
- i.push({ name: l, optional: a === "?", type: u });
151
+ for (; (c = r.exec(o)) !== null; ) {
152
+ const [, l, a, p] = c, m = p.trim();
153
+ if (!_e(m)) throw new Error(`Unsupported type: ${m}`);
154
+ i.push({ name: l, optional: a === "?", type: m });
157
155
  }
158
- return { name: o, parameters: i };
159
- }, Y = (e) => {
160
- const t = e.map(Le).reduce(
161
- (n, { name: o, parameters: s }) => n.set(o, s),
156
+ return { name: s, parameters: i };
157
+ }, ee = (e) => {
158
+ const t = e.map(Ie).reduce(
159
+ (n, { name: s, parameters: o }) => n.set(s, o),
162
160
  /* @__PURE__ */ new Map()
163
161
  );
164
162
  return (n) => {
165
- const { name: o, parameters: s } = Oe(n);
166
- if (!t.has(o))
167
- throw new Error(`Unknown method: ${o}`);
168
- const r = t.get(o);
163
+ const { name: s, parameters: o } = Oe(n);
164
+ if (!t.has(s))
165
+ throw new Error(`Unknown method: ${s}`);
166
+ const r = t.get(s);
169
167
  if (r === void 0)
170
- return { name: o };
171
- if (s.length > r.length) {
168
+ return { name: s };
169
+ if (o.length > r.length) {
172
170
  const i = r.filter(({ optional: l }) => !l).length, c = i === r.length ? i.toString() : `${i} - ${r.length}`;
173
- throw new Error(`Too many parameters: ${s.length} for method '${o}' (expected: ${c})`);
171
+ throw new Error(`Too many parameters: ${o.length} for method '${s}' (expected: ${c})`);
174
172
  }
175
173
  return r.reduce((i, { name: c, optional: l, type: a }, p) => {
176
- const u = s[p];
177
- if (u === void 0) {
174
+ const m = o[p];
175
+ if (m === void 0) {
178
176
  if (l) return i;
179
- throw new Error(`Missing required parameter: ${c} for method '${o}'`);
177
+ throw new Error(`Missing required parameter: ${c} for method '${s}'`);
180
178
  }
181
179
  switch (a) {
182
180
  case "string":
183
- i[c] = u;
181
+ i[c] = m;
184
182
  break;
185
183
  case "number":
186
184
  case "boolean":
187
- i[c] = JSON.parse(u);
185
+ i[c] = JSON.parse(m);
188
186
  break;
189
187
  }
190
188
  if (typeof i[c] !== a)
191
- throw new Error(`Invalid type: ${c} must be ${a}, got ${typeof i[c]} for method '${o}'`);
189
+ throw new Error(`Invalid type: ${c} must be ${a}, got ${typeof i[c]} for method '${s}'`);
192
190
  return i;
193
- }, { name: o });
191
+ }, { name: s });
194
192
  };
195
- }, G = (e) => Object.entries(e).filter(([t]) => t !== "name" && !isNaN(Number(t))).map(([t, n]) => n), Ae = [
193
+ }, H = (e) => Object.entries(e).filter(([t]) => t !== "name" && !isNaN(Number(t))).map(([t, n]) => n), Re = [
196
194
  /**
197
195
  * Wraps the content in a markdown-formatted code block.
198
196
  * @param lang The language of the code block (defaults to the file extension).
@@ -222,26 +220,34 @@ const W = /,\s*(?![^()]*\))/, B = {
222
220
  * @example [](<url>?wrap=dropdown(hello_world,,_))
223
221
  */
224
222
  "dropdown(summary: string, open?: boolean, space?: string)"
225
- ], Pe = Y(Ae), g = (e, t = 1) => `
223
+ ], Ae = ee(Re), f = (e, t = 1) => `
226
224
  `.repeat(t) + e + `
227
- `.repeat(t), T = (e, t, n) => `<${t}${n ? ` ${n}` : ""}>${g(e)}</${t}>`, H = (e, t, n) => {
228
- const o = Pe(t);
229
- switch (o.name) {
225
+ `.repeat(t), M = (e, t, n) => `<${t}${n ? ` ${n}` : ""}>${f(e)}</${t}>`, Q = (e, t, n) => {
226
+ const s = Ae(t);
227
+ switch (s.name) {
230
228
  case "code":
231
- if (!o.lang && !o.meta && (n == null ? void 0 : n.inline) && !e.includes(`
229
+ if (!s.lang && !s.meta && (n == null ? void 0 : n.inline) && !e.includes(`
232
230
  `)) return `\`${e}\``;
233
- const r = o.lang ?? (n == null ? void 0 : n.extension) ?? "", i = o.meta ? ` ${o.meta}` : "";
234
- return g(`\`\`\`${r}${i}${g(e)}\`\`\``);
231
+ const r = s.lang ?? (n == null ? void 0 : n.extension) ?? "", i = s.meta ? ` ${s.meta}` : "";
232
+ return f(`\`\`\`${r}${i}${f(e)}\`\`\``);
235
233
  case "quote":
236
234
  return n != null && n.inline && !e.includes(`
237
235
 
238
- `) ? `> ${e}` : g(T(g(e), "blockquote"));
236
+ `) ? `> ${e}` : f(M(f(e), "blockquote"));
239
237
  case "dropdown":
240
- const c = T(K(o.summary), "summary");
241
- return g(T([c, e].join(`
242
- `), "details", o.open ? "open" : void 0));
238
+ const c = M(Y(s.summary), "summary");
239
+ return f(M([c, e].join(`
240
+ `), "details", s.open ? "open" : void 0));
243
241
  }
244
- }, Re = [
242
+ }, A = (e) => {
243
+ const t = /(\/\/[^\n]*|\/\*[\s\S]*?\*\/|<!--[\s\S]*?-->)/gm, n = [];
244
+ let s;
245
+ for (; (s = t.exec(e)) !== null; ) {
246
+ const o = [s.index, s.index + s[0].length], r = Pe(s[0]).trim();
247
+ n.push({ range: o, value: r });
248
+ }
249
+ return n;
250
+ }, Pe = (e) => e.startsWith("//") ? e.slice(2) : e.startsWith("/*") ? e.slice(2, -2) : e.startsWith("<!--") ? e.slice(4, -3) : e, We = [
245
251
  /**
246
252
  * Extract regions from the retrieved content between comments that INCLUDE the specified ids.
247
253
  * @param id The id of the comment to extract.
@@ -272,107 +278,102 @@ const W = /,\s*(?![^()]*\))/, B = {
272
278
  * @example [](<url>?region=replace(specifier,new_content,_)
273
279
  */
274
280
  "replace(id: string, with?: string, space?: string)"
275
- ], qe = Y(Re), L = (e) => Ce(e), b = (e, t) => L(e).filter(({ value: n }) => n.includes(t)).sort((n, o) => n.range[0] - o.range[0]), We = (e, ...t) => {
281
+ ], Le = ee(We), x = (e, t) => A(e).filter(({ value: n }) => n.includes(t)).sort((n, s) => n.range[0] - s.range[0]), qe = (e, ...t) => {
276
282
  if (t.length === 0) return e;
277
- const n = ([i, c]) => e.slice(i, c), o = L(e), s = new d(), r = new d();
283
+ const n = ([i, c]) => e.slice(i, c), s = A(e), o = new d(), r = new d();
278
284
  for (const i of t) {
279
- const c = o.filter(({ value: l }) => l.includes(i)).sort((l, a) => l.range[0] - a.range[0]);
285
+ const c = s.filter(({ value: l }) => l.includes(i)).sort((l, a) => l.range[0] - a.range[0]);
280
286
  for (let l = 0; l < c.length - 1; l += 2) {
281
287
  const a = c[l], p = c[l + 1];
282
- s.push(a.range[1], p.range[0]);
283
- const [u, ...y] = n([a.range[1], p.range[0]]), v = y[y.length - 1];
284
- r.push(a.range[0], a.range[1] + (u.trim() ? 0 : 1)), r.push(p.range[0], p.range[1] + (v.trim() ? 0 : 1));
288
+ o.push(a.range[1], p.range[0]);
289
+ const [m, ...y] = n([a.range[1], p.range[0]]), w = y[y.length - 1];
290
+ r.push(a.range[0], a.range[1] + (m.trim() ? 0 : 1)), r.push(p.range[0], p.range[1] + (w.trim() ? 0 : 1));
285
291
  }
286
292
  }
287
- return s.collapse(), r.collapse(), D(
288
- s.subtract(r).map(n).filter(Boolean).join("")
293
+ return o.collapse(), r.collapse(), D(
294
+ o.subtract(r).map(n).filter(Boolean).join("")
289
295
  ).trim();
290
296
  }, Be = (e, ...t) => {
291
297
  if (t.length === 0) return e;
292
- const n = ([i, c]) => e.slice(i, c), o = L(e), s = new d();
298
+ const n = ([i, c]) => e.slice(i, c), s = A(e), o = new d();
293
299
  for (const i of t) {
294
- const c = o.filter(({ value: l }) => l.includes(i)).sort((l, a) => l.range[0] - a.range[0]);
300
+ const c = s.filter(({ value: l }) => l.includes(i)).sort((l, a) => l.range[0] - a.range[0]);
295
301
  for (let l = 0; l < c.length - 1; l += 2) {
296
- const a = c[l], p = c[l + 1], u = n([p.range[1], p.range[1] + 1]).at(-1);
297
- s.push(a.range[0], u === `
302
+ const a = c[l], p = c[l + 1], m = n([p.range[1], p.range[1] + 1]).at(-1);
303
+ o.push(a.range[0], m === `
298
304
  ` ? p.range[1] + 1 : p.range[1]);
299
305
  }
300
306
  }
301
- s.collapse();
307
+ o.collapse();
302
308
  const r = new d();
303
- return r.push(0, e.length), r.subtract(s), D(
309
+ return r.push(0, e.length), r.subtract(o), D(
304
310
  r.collapse().map(n).filter(Boolean).join("")
305
311
  ).trim();
306
- }, Fe = (e, t, n, o) => {
312
+ }, Fe = (e, t, n, s) => {
307
313
  if (!t) return e;
308
- const s = b(e, t);
309
- if (s.length < 2) return e;
314
+ const o = x(e, t);
315
+ if (o.length < 2) return e;
310
316
  let r = "", i = 0;
311
- for (let l = 0; l < s.length - 1; l += 2) {
312
- const a = s[l], p = s[l + 1];
313
- r += e.slice(i, a.range[1]), r += K(n ?? a.value, o), i = p.range[0];
317
+ for (let l = 0; l < o.length - 1; l += 2) {
318
+ const a = o[l], p = o[l + 1];
319
+ r += e.slice(i, a.range[1]), r += Y(n ?? a.value, s), i = p.range[0];
314
320
  }
315
321
  r += e.slice(i);
316
322
  const c = new d();
317
323
  return c.push(0, r.length), c.subtract(
318
- b(r, t).reduce((l, { range: a }) => (l.push(...a), l), new d())
324
+ x(r, t).reduce((l, { range: a }) => (l.push(...a), l), new d())
319
325
  ), D(
320
326
  c.collapse().map(([l, a]) => r.slice(l, a)).filter(Boolean).join("")
321
327
  ).trim();
322
- }, Q = (e) => ({ space: e === " ", newline: e === `
323
- ` }), z = (e) => [
324
- ...b(e, "p↓:"),
325
- ...b(e, "parkdown:")
326
- ].sort((t, n) => t.range[0] - n.range[0]).reverse().reduce((t, { range: [n, o], loc: { start: { column: s } } }) => {
327
- const r = (l, a) => t.slice(0, l) + t.slice(a), i = {
328
- prev: Q(t[n - 1]),
329
- next: Q(t[o]),
330
- startLine: s === 0,
331
- final: o === t.length
332
- };
333
- return i.startLine && (i.next.newline || i.final) ? r(n - (i.final ? 1 : 0), o + 1) : i.startLine ? r(n, o + (i.next.space ? 1 : 0)) : r(n - (i.prev.space ? 1 : 0), o);
334
- }, e), Ue = (e, t) => {
335
- if (!t) return z(e);
336
- const n = qe(t);
337
- switch (n.name) {
328
+ }, z = (e) => ({ isSpace: e === " ", isNewline: e === `
329
+ ` || e === void 0 }), X = (e) => [
330
+ ...x(e, "p↓:"),
331
+ ...x(e, "parkdown:")
332
+ ].sort((t, n) => t.range[0] - n.range[0]).reverse().reduce((t, { range: [n, s], value: o }) => {
333
+ const r = (a, p) => t.slice(0, a) + t.slice(p), i = z(t[n - 1]), c = z(t[s]), l = s === t.length;
334
+ return i.isNewline && c.isNewline ? r(n - (l ? 1 : 0), s + 1) : i.isNewline ? r(n, s + (c.isSpace ? 1 : 0)) : r(n - (i.isSpace ? 1 : 0), s);
335
+ }, e), Ue = (e, t, n) => {
336
+ if (!t) return X(e);
337
+ const s = Le(t);
338
+ switch (s.name) {
338
339
  case "extract":
339
- e = We(e, n.id, ...G(n));
340
+ e = qe(e, s.id, ...H(s));
340
341
  break;
341
342
  case "remove":
342
- e = Be(e, n.id, ...G(n));
343
+ e = Be(e, s.id, ...H(s));
343
344
  break;
344
345
  case "replace":
345
- e = Fe(e, n.id, n.with, n.space);
346
+ e = Fe(e, s.id, s.with, s.space);
346
347
  break;
347
348
  }
348
- return z(e);
349
- }, Ge = ["http", "./", "../"], He = ({ url: e }) => Ge.some((t) => e.startsWith(t)), Qe = (e) => I(e) && Ee(e) && He(e), ee = ({ url: e }, t) => `[](${t ? x(t, e) : e})`, m = {
349
+ return n ? X(e) : e;
350
+ }, Ge = ["http", "./", "../"], He = ({ url: e }) => Ge.some((t) => e.startsWith(t)), Qe = (e) => I(e) && ye(e) && He(e), te = ({ url: e }, t) => `[](${t ? S(t, e) : e})`, u = {
350
351
  _open: "<!--",
351
352
  _close: "-->",
352
353
  _flag: "p↓",
353
354
  get begin() {
354
- return E(m._open, m._flag, "BEGIN", m._close);
355
+ return E(u._open, u._flag, "BEGIN", u._close);
355
356
  },
356
357
  get end() {
357
- return E(m._open, m._flag, "END", m._close);
358
+ return E(u._open, u._flag, "END", u._close);
358
359
  },
359
360
  lengthOf(e) {
360
361
  const t = `lines: ${e.split(`
361
362
  `).length}`, n = `chars: ${e.length}`;
362
- return E(m._open, m._flag, "length", t, n, m._close);
363
+ return E(u._open, u._flag, "length", t, n, u._close);
363
364
  }
364
- }, X = (e) => (t) => I(t) && t.value === m[e], ze = ({ position: e, url: t, siblingCount: n }, o) => ({ position: e, url: t, headingDepth: o, inline: n >= 1 }), Xe = ({ position: { start: e }, url: t, siblingCount: n }, { position: { end: o } }, s) => ({ position: { start: e, end: o }, url: t, headingDepth: s, inline: n >= 1 }), Je = (e, t, n) => (e.inline ? E : Se)(
365
- ee(e, n),
366
- m.begin,
367
- m.lengthOf(t),
365
+ }, V = (e) => (t) => I(t) && t.value === u[e], ze = ({ position: e, url: t, siblingCount: n }, s) => ({ position: e, url: t, headingDepth: s, inline: n >= 1 }), Xe = ({ position: { start: e }, url: t, siblingCount: n }, { position: { end: s } }, o) => ({ position: { start: e, end: s }, url: t, headingDepth: o, inline: n >= 1 }), Ve = (e, t, n) => (e.inline ? E : Se)(
366
+ te(e, n),
367
+ u.begin,
368
+ u.lengthOf(t),
368
369
  t,
369
- m.end
370
- ), Ve = (e) => {
371
- const t = S(e, "heading").reduce((n, { position: o, depth: s }) => n.set(o.start.line, s), /* @__PURE__ */ new Map());
370
+ u.end
371
+ ), Je = (e) => {
372
+ const t = N(e, "heading").reduce((n, { position: s, depth: o }) => n.set(s.start.line, o), /* @__PURE__ */ new Map());
372
373
  return (n) => {
373
- for (let o = n.position.start.line; o >= 1; o--) {
374
- const s = t.get(o);
375
- if (s) return s;
374
+ for (let s = n.position.start.line; s >= 1; s--) {
375
+ const o = t.get(s);
376
+ if (o) return o;
376
377
  }
377
378
  return 0;
378
379
  };
@@ -381,105 +382,108 @@ const W = /,\s*(?![^()]*\))/, B = {
381
382
  closingCommentNotMatchedToOpening: ({ position: { start: e } }) => new Error(`Closing comment (@${e.line}:${e.column}) does not match to opening comment`),
382
383
  openingCommentNotClosed: ({ position: { start: e } }) => new Error(`Opening comment (@${e.line}:${e.column}) is not followed by a closing comment`)
383
384
  }, Ze = (e, t) => {
384
- const n = [], o = [
385
+ const n = [], s = [
385
386
  ...e.map((r) => ({ node: r, type: "open" })),
386
387
  ...t.map((r) => ({ node: r, type: "close" }))
387
- ].sort((r, i) => f(r.node, i.node)), s = [];
388
- for (const r of o)
389
- if (r.type === "open") s.push(r);
388
+ ].sort((r, i) => g(r.node, i.node)), o = [];
389
+ for (const r of s)
390
+ if (r.type === "open") o.push(r);
390
391
  else {
391
392
  const i = r.node;
392
- if (s.length === 0)
393
+ if (o.length === 0)
393
394
  throw k.closingCommentNotMatchedToOpening(i);
394
- const c = s.pop().node;
395
- if (s.length > 0) continue;
395
+ const c = o.pop().node;
396
+ if (o.length > 0) continue;
396
397
  n.push({ open: c, close: i });
397
398
  }
398
- if (s.length > 0)
399
- throw k.openingCommentNotClosed(s[0].node);
399
+ if (o.length > 0)
400
+ throw k.openingCommentNotClosed(o[0].node);
400
401
  return n;
401
402
  }, Ke = (e, t, n) => {
402
- const o = [...t].sort(f), s = [];
403
- return [...n].sort((r, i) => f.reverse(r.open, i.open)).forEach((r) => {
404
- for (; o.length > 0; ) {
405
- const i = o.pop();
403
+ const s = [...t].sort(g), o = [];
404
+ return [...n].sort((r, i) => g.reverse(r.open, i.open)).forEach((r) => {
405
+ for (; s.length > 0; ) {
406
+ const i = s.pop();
406
407
  if (i.position.start.offset < r.open.position.start.offset) {
407
- if (xe(e, i, r.open).trim() !== "")
408
+ if (Ee(e, i, r.open).trim() !== "")
408
409
  throw k.openingCommentDoesNotFollowLink(r.open);
409
- return s.push([i, r]);
410
+ return o.push([i, r]);
410
411
  }
411
- s.push(i);
412
+ o.push(i);
412
413
  }
413
414
  throw k.openingCommentDoesNotFollowLink(r.open);
414
- }), s.push(...o.reverse()), s.reverse();
415
- }, te = (e, t) => {
416
- t ?? (t = j.md(e));
417
- const n = Ve(t), o = S(t, "link").filter(Qe), s = S(t, "html").sort(f), r = s.filter(X("begin")), i = s.filter(X("end")), c = Ze(r, i);
418
- return Ke(e, o, c).map((a) => Array.isArray(a) ? Xe(a[0], a[1].close, n(a[0])) : ze(a, n(a)));
419
- }, Ye = (e, { url: t }) => (n) => e(x(O(t), n)), ne = (...e) => {
420
- const t = e.reduce((n, o) => n + o, 0);
415
+ }), o.push(...s.reverse()), o.reverse();
416
+ }, ne = (e, t) => {
417
+ t ?? (t = R.md(e));
418
+ const n = Je(t), s = N(t, "link").filter(Qe), o = N(t, "html").sort(g), r = o.filter(V("begin")), i = o.filter(V("end")), c = Ze(r, i);
419
+ return Ke(e, s, c).map((a) => Array.isArray(a) ? Xe(a[0], a[1].close, n(a[0])) : ze(a, n(a)));
420
+ }, Ye = (e, { url: t }) => (n) => e(S(j(t), n)), se = (...e) => {
421
+ const t = e.reduce((n, s) => n + s, 0);
421
422
  return Math.min(Math.max(t, 1), 6);
422
423
  }, et = (e, t, n) => {
423
424
  if (t === 0) return e;
424
- n ?? (n = j.md(e));
425
- const o = S(n, "heading"), s = e.split(`
425
+ n ?? (n = R.md(e));
426
+ const s = N(n, "heading"), o = e.split(`
426
427
  `);
427
- for (const r of o) {
428
- const { depth: i, position: { start: c, end: l } } = r, a = ne(i, t), p = s[c.line - 1].slice(i, l.column), u = "#".repeat(a) + p;
429
- s[c.line - 1] = u, r.depth = a;
428
+ for (const r of s) {
429
+ const { depth: i, position: { start: c, end: l } } = r, a = se(i, t), p = o[c.line - 1].slice(i, l.column), m = "#".repeat(a) + p;
430
+ o[c.line - 1] = m, r.depth = a;
430
431
  }
431
- return s.join(`
432
+ return o.join(`
432
433
  `);
433
- }, oe = (e) => te(e).reverse().sort(f.reverse).reduce((t, n) => Z(t, ee(n), n), e), se = (e, t, n, o, s) => {
434
+ }, oe = (e) => ne(e).reverse().sort(g.reverse).reduce((t, n) => K(t, te(n), n), e), re = (e, t, n, s, o) => {
434
435
  try {
435
436
  e = oe(e), e = et(e, t);
436
- const r = j.md(e);
437
- return te(e, r).sort(f).reverse().map((i) => {
438
- var P, R;
439
- const { url: c, headingDepth: l } = i, [a, ...p] = fe(c).split("?"), u = a.split(".").pop() ?? "", y = p.join("?"), v = O(c), A = x(v, a);
437
+ const r = R.md(e);
438
+ return ne(e, r).sort(g).reverse().map((i) => {
439
+ var W, L;
440
+ const { url: c, headingDepth: l } = i, [a, ...p] = fe(c).split("?"), m = a.split(".").pop() ?? "", y = p.join("?"), w = j(c), P = S(w, a);
440
441
  if (c.startsWith("./") || c.startsWith("../")) {
441
- let h = n(A);
442
- const w = new ge(y), N = (P = w.get("region")) == null ? void 0 : P.split(W);
443
- h = (N == null ? void 0 : N.reduce(($, C) => Ue($, C), h)) ?? h;
444
- const ce = w.has("skip"), le = w.get("heading") ?? 0, ae = w.has("inline");
445
- let { inline: M } = i;
446
- if (ae && (M = !0), !ce)
447
- if (u === "md") {
448
- const $ = Ye(n, i), C = s ? x(s, v) : v, pe = ne(l, Number(le));
449
- h = se(
442
+ let h = n(P);
443
+ const v = new de(y), b = (W = v.get("region")) == null ? void 0 : W.split(B);
444
+ h = (b == null ? void 0 : b.reduce(
445
+ ($, C, O, { length: me }) => Ue($, C, O === me - 1),
446
+ h
447
+ )) ?? h;
448
+ const le = v.has("skip"), ae = v.get("heading") ?? 0, pe = v.has("inline");
449
+ let { inline: _ } = i;
450
+ if (pe && (_ = !0), !le)
451
+ if (m === "md") {
452
+ const $ = Ye(n, i), C = o ? S(o, w) : w, O = se(l, Number(ae));
453
+ h = re(
450
454
  h,
451
455
  /** p↓: ... */
452
- pe,
456
+ O,
453
457
  $,
454
- A,
458
+ P,
455
459
  C
456
460
  /** p↓: ... */
457
461
  );
458
- } else /^(js|ts)x?|svelte$/i.test(u) && (h = H(
462
+ } else /^(js|ts)x?|svelte$/i.test(m) && (h = Q(
459
463
  h,
460
464
  "code",
461
465
  /** p↓: ... */
462
- { extension: u, inline: M }
466
+ { extension: m, inline: _ }
463
467
  /** p↓: ... */
464
468
  ));
465
- const _ = (R = w.get("wrap")) == null ? void 0 : R.split(W);
466
- return h = (_ == null ? void 0 : _.reduce(($, C) => H($, C, { extension: u, inline: M }), h)) ?? h, { target: i, content: Je(i, h, s) };
469
+ const T = (L = v.get("wrap")) == null ? void 0 : L.split(B);
470
+ return h = (T == null ? void 0 : T.reduce(($, C) => Q($, C, { extension: m, inline: _ }), h)) ?? h, { target: i, content: Ve(i, h, o) };
467
471
  } else throw c.startsWith("http") ? new Error("External web links are not implemented yet") : new Error(`Unsupported link type: ${c}`);
468
- }).reduce((i, { target: c, content: l }) => Z(i, l, c), e);
472
+ }).reduce((i, { target: c, content: l }) => K(i, l, c), e);
469
473
  } catch (r) {
470
- throw new Error(`Error populating inclusions in file ${o}: ${r}`);
474
+ throw new Error(`Error populating inclusions in file ${s ?? "(unknown)"}: ${r}`);
471
475
  }
472
- }, re = (e) => he(e, "utf-8"), ie = (e) => {
473
- const t = V(e), n = O(t);
474
- return { markdown: re(t), dir: n, path: t };
475
- }, ut = (e, t = !0) => {
476
- const { dir: n, path: o, markdown: s } = ie(e), i = se(s, 0, (c) => re(V(n, ke(c))), o);
477
- return t && J(o, i), i;
478
- }, mt = (e, t = !0) => {
479
- const { path: n, markdown: o } = ie(e), s = oe(o);
480
- return t && J(n, s), s;
476
+ }, ie = (e) => ge(e, "utf-8"), ce = (e) => {
477
+ const t = Z(e), n = j(t);
478
+ return { markdown: ie(t), dir: n, path: t };
479
+ }, at = (e, t = !0) => {
480
+ const { dir: n, path: s, markdown: o } = ce(e), i = re(o, 0, (c) => ie(Z(n, xe(c))), s);
481
+ return t && J(s, i), i;
482
+ }, pt = (e, t = !0) => {
483
+ const { path: n, markdown: s } = ce(e), o = oe(s);
484
+ return t && J(n, o), o;
481
485
  };
482
486
  export {
483
- mt as depopulateMarkdownInclusions,
484
- ut as populateMarkdownInclusions
487
+ pt as depopulateMarkdownInclusions,
488
+ at as populateMarkdownInclusions
485
489
  };
@@ -1,13 +1,13 @@
1
- (function(p,h){typeof exports=="object"&&typeof module<"u"?h(exports,require("node:fs"),require("node:path"),require("node:url"),require("unified"),require("remark-parse"),require("unist-util-visit"),require("stable-hash"),require("ts-dedent"),require("extract-comments")):typeof define=="function"&&define.amd?define(["exports","node:fs","node:path","node:url","unified","remark-parse","unist-util-visit","stable-hash","ts-dedent","extract-comments"],h):(p=typeof globalThis<"u"?globalThis:p||self,h(p.index={},p.node_fs,p.node_path,p.node_url,p.unified,p.remarkParse,p.unistUtilVisit,p.hash,p.tsDedent,p._extractComments))})(this,function(p,h,f,ie,ce,le,ae,pe,b,ue){"use strict";var Je=Object.defineProperty;var Ze=(p,h,f)=>h in p?Je(p,h,{enumerable:!0,configurable:!0,writable:!0,value:f}):p[h]=f;var re=(p,h,f)=>Ze(p,typeof h!="symbol"?h+"":h,f);const v=(e,n)=>e.position.start.offset-n.position.start.offset;v.reverse=(e,n)=>v(n,e);const j=e=>e.position!==void 0&&e.position.start.offset!==void 0&&e.position.end.offset!==void 0,me=ce.unified().use(le),q={md:e=>me.parse(e)},x=(e,n)=>{const t=[];return ae.visit(e,(s,o,r)=>{if(s.type!=="root"){if(n&&s.type!==n)return;if(j(s)){const i=pe(r),c=((r==null?void 0:r.children.length)??0)-1;t.push({...s,parentID:i,siblingIndex:o,siblingCount:c})}}}),t},he=e=>e.children.length===0,A=(e,n,...t)=>{if(t.length===0)throw new Error("No nodes to replace content from");t.sort(v);const s=t.at(0),o=t.at(-1);return e.slice(0,s.position.start.offset)+n+e.slice(o.position.end.offset)},fe=(e,n,t)=>{const s=Math.min(n.position.end.offset,t.position.end.offset),o=Math.max(n.position.start.offset,t.position.start.offset);return e.slice(s,o)},S=(...e)=>e.join(" "),de=(...e)=>e.join(`
2
- `),ge=e=>{const n=e.split("?");return n.length>1?[n.slice(0,-1).join("?"),n.at(-1)]:[e,""]},ve=e=>ge(e)[0];class w{constructor(){re(this,"intervals",[])}push(n,t){this.intervals.push([Math.min(n,t),Math.max(n,t)])}combine(n){this.intervals.push(...n.intervals)}collapse(){const{intervals:n}=this;if(!n.length)return this.intervals=[];n.sort((r,i)=>r[0]-i[0]);const t=[];let[s,o]=n[0];for(let r=1;r<n.length;r++){const[i,c]=n[r];i<=o?o=Math.max(o,c):(t.push([s,o]),s=i,o=c)}return t.push([s,o]),this.intervals=t}subtract(n){const{intervals:t}=this,{intervals:s}=n;if(!t.length||!s.length)return t;let o=[...t];for(const[r,i]of s){const c=[];for(const[l,a]of o){if(i<=l||r>=a){c.push([l,a]);continue}r>l&&c.push([l,r]),i<a&&c.push([i,a])}o=c}return this.intervals=o}}const R=/,\s*(?![^()]*\))/,_={reserved:{semi:";",slash:"/",question:"?",colon:":",at:"@",equal:"=",and:"&"},unsafe:{quote:'"',angle:"<",unangle:">",hash:"#",percent:"%",curly:"{",uncurly:"}",pipe:"|",back:"\\",carrot:"^",tilde:"~",square:"[",unsquare:"]",tick:"`"}},we="-",W={static:[["'''",'"'],["''","'"],[/parkdown:\s+/g,""],[/p↓:\s+/g,""]],url:[...Object.entries(_.unsafe),...Object.entries(_.reserved)]},B=(e,[n,t])=>e.replaceAll(n,t),F=(e,n=we)=>{const t=W.static.reduce(B,e);return W.url.map(([s,o])=>[n+s+n,o]).reduce(B,t).replaceAll(n," ")},$e=["string","number","boolean"],Ce=e=>$e.includes(e),ye=/^([a-zA-Z0-9_-]+)(?:\(([^)]*)\))?$/,Ee=e=>{const n=e.match(ye);if(!n)throw new Error(`Invalid invocation: ${e}`);const[,t,s=""]=n;if(!s.trim())return{name:t,parameters:[]};const o=xe(s);return{name:t,parameters:o}},ke=(e,n)=>{for(let t=n+1;t<e.length;t++)if(e[t]!==void 0)return!1;return!0},xe=e=>{const n=[];let t="",s=!1;for(let o=0;o<e.length;o++){const r=e[o],i=r==="'";if(i&&e.at(o+1)==="'"){const c=e.at(o+2)==="'";s=!s,t+=c?"'''":"''",o+=c?2:1}else i?(s=!s,t+=r):r===","&&!s?(n.push(t.trim()),t=""):t+=r}return n.push(t.trim()),n.map(o=>o===""?void 0:o?Se(o):void 0).filter((o,r,i)=>o!==void 0||!ke(i,r))},Se=e=>{const n=e.length>=2&&e[0]==="'"&&e.at(-1)==="'",t=n&&e.length>=4&&e[1]==="'"&&e.at(-2)==="'";return!n||t?e:e.slice(1,-1)},Me=e=>{const n=/^(\w+)(?:\(([^)]*)\))?/,t=e.match(n);if(!t)return{name:e};const[,s,o]=t;if(!o)return{name:s};const r=/(\w+)(\?)?:\s*([^,]+)/g,i=[];let c;for(;(c=r.exec(o))!==null;){const[,l,a,u]=c,m=u.trim();if(!Ce(m))throw new Error(`Unsupported type: ${m}`);i.push({name:l,optional:a==="?",type:m})}return{name:s,parameters:i}},U=e=>{const n=e.map(Me).reduce((t,{name:s,parameters:o})=>t.set(s,o),new Map);return t=>{const{name:s,parameters:o}=Ee(t);if(!n.has(s))throw new Error(`Unknown method: ${s}`);const r=n.get(s);if(r===void 0)return{name:s};if(o.length>r.length){const i=r.filter(({optional:l})=>!l).length,c=i===r.length?i.toString():`${i} - ${r.length}`;throw new Error(`Too many parameters: ${o.length} for method '${s}' (expected: ${c})`)}return r.reduce((i,{name:c,optional:l,type:a},u)=>{const m=o[u];if(m===void 0){if(l)return i;throw new Error(`Missing required parameter: ${c} for method '${s}'`)}switch(a){case"string":i[c]=m;break;case"number":case"boolean":i[c]=JSON.parse(m);break}if(typeof i[c]!==a)throw new Error(`Invalid type: ${c} must be ${a}, got ${typeof i[c]} for method '${s}'`);return i},{name:s})}},G=e=>Object.entries(e).filter(([n])=>n!=="name"&&!isNaN(Number(n))).map(([n,t])=>t),Ne=U(["code(lang?: string, meta?: string)","quote()","dropdown(summary: string, open?: boolean, space?: string)"]),$=(e,n=1)=>`
1
+ (function(u,d){typeof exports=="object"&&typeof module<"u"?d(exports,require("node:fs"),require("node:path"),require("node:url"),require("unified"),require("remark-parse"),require("unist-util-visit"),require("ts-dedent")):typeof define=="function"&&define.amd?define(["exports","node:fs","node:path","node:url","unified","remark-parse","unist-util-visit","ts-dedent"],d):(u=typeof globalThis<"u"?globalThis:u||self,d(u.index={},u.node_fs,u.node_path,u.node_url,u.unified,u.remarkParse,u.unistUtilVisit,u.tsDedent))})(this,function(u,d,h,ce,le,ae,pe,j){"use strict";var Je=Object.defineProperty;var Ze=(u,d,h)=>d in u?Je(u,d,{enumerable:!0,configurable:!0,writable:!0,value:h}):u[d]=h;var ie=(u,d,h)=>Ze(u,typeof d!="symbol"?d+"":d,h);const v=(e,n)=>e.position.start.offset-n.position.start.offset;v.reverse=(e,n)=>v(n,e);const M=e=>e.position!==void 0&&e.position.start.offset!==void 0&&e.position.end.offset!==void 0,ue=le.unified().use(ae),O={md:e=>ue.parse(e)},k=(e,n)=>{const t=[];return pe.visit(e,(s,o,r)=>{if(s.type!=="root"){if(n&&s.type!==n)return;if(M(s)){const i=((r==null?void 0:r.children.length)??0)-1;t.push({...s,siblingIndex:o,siblingCount:i})}}}),t},me=e=>e.children.length===0,W=(e,n,...t)=>{if(t.length===0)throw new Error("No nodes to replace content from");t.sort(v);const s=t.at(0),o=t.at(-1);return e.slice(0,s.position.start.offset)+n+e.slice(o.position.end.offset)},de=(e,n,t)=>{const s=Math.min(n.position.end.offset,t.position.end.offset),o=Math.max(n.position.start.offset,t.position.start.offset);return e.slice(s,o)},N=(...e)=>e.join(" "),he=(...e)=>e.join(`
2
+ `),fe=e=>{const n=e.split("?");return n.length>1?[n.slice(0,-1).join("?"),n.at(-1)]:[e,""]},ge=e=>fe(e)[0];class w{constructor(){ie(this,"intervals",[])}push(n,t){this.intervals.push([Math.min(n,t),Math.max(n,t)])}combine(n){this.intervals.push(...n.intervals)}collapse(){const{intervals:n}=this;if(!n.length)return this.intervals=[];n.sort((r,i)=>r[0]-i[0]);const t=[];let[s,o]=n[0];for(let r=1;r<n.length;r++){const[i,c]=n[r];i<=o?o=Math.max(o,c):(t.push([s,o]),s=i,o=c)}return t.push([s,o]),this.intervals=t}subtract(n){const{intervals:t}=this,{intervals:s}=n;if(!t.length||!s.length)return t;let o=[...t];for(const[r,i]of s){const c=[];for(const[l,a]of o){if(i<=l||r>=a){c.push([l,a]);continue}r>l&&c.push([l,r]),i<a&&c.push([i,a])}o=c}return this.intervals=o}}const _=/,\s*(?![^()]*\))/,L={reserved:{semi:";",slash:"/",question:"?",colon:":",at:"@",equal:"=",and:"&"},unsafe:{quote:'"',angle:"<",unangle:">",hash:"#",percent:"%",curly:"{",uncurly:"}",pipe:"|",back:"\\",carrot:"^",tilde:"~",square:"[",unsquare:"]",tick:"`"}},ve="-",B={static:[["'''",'"'],["''","'"],[/parkdown:\s+/g,""],[/p↓:\s+/g,""]],url:[...Object.entries(L.unsafe),...Object.entries(L.reserved)]},F=(e,[n,t])=>e.replaceAll(n,t),U=(e,n=ve)=>{const t=B.static.reduce(F,e);return B.url.map(([s,o])=>[n+s+n,o]).reduce(F,t).replaceAll(n," ")},we=["string","number","boolean"],$e=e=>we.includes(e),Ce=/^([a-zA-Z0-9_-]+)(?:\(([^)]*)\))?$/,ye=e=>{const n=e.match(Ce);if(!n)throw new Error(`Invalid invocation: ${e}`);const[,t,s=""]=n;if(!s.trim())return{name:t,parameters:[]};const o=Ee(s);return{name:t,parameters:o}},Se=(e,n)=>{for(let t=n+1;t<e.length;t++)if(e[t]!==void 0)return!1;return!0},Ee=e=>{const n=[];let t="",s=!1;for(let o=0;o<e.length;o++){const r=e[o],i=r==="'";if(i&&e.at(o+1)==="'"){const c=e.at(o+2)==="'";s=!s,t+=c?"'''":"''",o+=c?2:1}else i?(s=!s,t+=r):r===","&&!s?(n.push(t.trim()),t=""):t+=r}return n.push(t.trim()),n.map(o=>o===""?void 0:o?ke(o):void 0).filter((o,r,i)=>o!==void 0||!Se(i,r))},ke=e=>{const n=e.length>=2&&e[0]==="'"&&e.at(-1)==="'",t=n&&e.length>=4&&e[1]==="'"&&e.at(-2)==="'";return!n||t?e:e.slice(1,-1)},Ne=e=>{const n=/^(\w+)(?:\(([^)]*)\))?/,t=e.match(n);if(!t)return{name:e};const[,s,o]=t;if(!o)return{name:s};const r=/(\w+)(\?)?:\s*([^,]+)/g,i=[];let c;for(;(c=r.exec(o))!==null;){const[,l,a,p]=c,m=p.trim();if(!$e(m))throw new Error(`Unsupported type: ${m}`);i.push({name:l,optional:a==="?",type:m})}return{name:s,parameters:i}},G=e=>{const n=e.map(Ne).reduce((t,{name:s,parameters:o})=>t.set(s,o),new Map);return t=>{const{name:s,parameters:o}=ye(t);if(!n.has(s))throw new Error(`Unknown method: ${s}`);const r=n.get(s);if(r===void 0)return{name:s};if(o.length>r.length){const i=r.filter(({optional:l})=>!l).length,c=i===r.length?i.toString():`${i} - ${r.length}`;throw new Error(`Too many parameters: ${o.length} for method '${s}' (expected: ${c})`)}return r.reduce((i,{name:c,optional:l,type:a},p)=>{const m=o[p];if(m===void 0){if(l)return i;throw new Error(`Missing required parameter: ${c} for method '${s}'`)}switch(a){case"string":i[c]=m;break;case"number":case"boolean":i[c]=JSON.parse(m);break}if(typeof i[c]!==a)throw new Error(`Invalid type: ${c} must be ${a}, got ${typeof i[c]} for method '${s}'`);return i},{name:s})}},H=e=>Object.entries(e).filter(([n])=>n!=="name"&&!isNaN(Number(n))).map(([n,t])=>t),xe=G(["code(lang?: string, meta?: string)","quote()","dropdown(summary: string, open?: boolean, space?: string)"]),$=(e,n=1)=>`
3
3
  `.repeat(n)+e+`
4
- `.repeat(n),O=(e,n,t)=>`<${n}${t?` ${t}`:""}>${$(e)}</${n}>`,H=(e,n,t)=>{const s=Ne(n);switch(s.name){case"code":if(!s.lang&&!s.meta&&(t==null?void 0:t.inline)&&!e.includes(`
4
+ `.repeat(n),q=(e,n,t)=>`<${n}${t?` ${t}`:""}>${$(e)}</${n}>`,Q=(e,n,t)=>{const s=xe(n);switch(s.name){case"code":if(!s.lang&&!s.meta&&(t==null?void 0:t.inline)&&!e.includes(`
5
5
  `))return`\`${e}\``;const r=s.lang??(t==null?void 0:t.extension)??"",i=s.meta?` ${s.meta}`:"";return $(`\`\`\`${r}${i}${$(e)}\`\`\``);case"quote":return t!=null&&t.inline&&!e.includes(`
6
6
 
7
- `)?`> ${e}`:$(O($(e),"blockquote"));case"dropdown":const c=O(F(s.summary),"summary");return $(O([c,e].join(`
8
- `),"details",s.open?"open":void 0))}},Te=U(["extract(id: string, 0?: string, 1?: string, 2?: string)","remove(id: string, 0?: string, 1?: string, 2?: string)","replace(id: string, with?: string, space?: string)"]),I=e=>ue(e),M=(e,n)=>I(e).filter(({value:t})=>t.includes(n)).sort((t,s)=>t.range[0]-s.range[0]),be=(e,...n)=>{if(n.length===0)return e;const t=([i,c])=>e.slice(i,c),s=I(e),o=new w,r=new w;for(const i of n){const c=s.filter(({value:l})=>l.includes(i)).sort((l,a)=>l.range[0]-a.range[0]);for(let l=0;l<c.length-1;l+=2){const a=c[l],u=c[l+1];o.push(a.range[1],u.range[0]);const[m,...T]=t([a.range[1],u.range[0]]),C=T[T.length-1];r.push(a.range[0],a.range[1]+(m.trim()?0:1)),r.push(u.range[0],u.range[1]+(C.trim()?0:1))}}return o.collapse(),r.collapse(),b.dedent(o.subtract(r).map(t).filter(Boolean).join("")).trim()},je=(e,...n)=>{if(n.length===0)return e;const t=([i,c])=>e.slice(i,c),s=I(e),o=new w;for(const i of n){const c=s.filter(({value:l})=>l.includes(i)).sort((l,a)=>l.range[0]-a.range[0]);for(let l=0;l<c.length-1;l+=2){const a=c[l],u=c[l+1],m=t([u.range[1],u.range[1]+1]).at(-1);o.push(a.range[0],m===`
9
- `?u.range[1]+1:u.range[1])}}o.collapse();const r=new w;return r.push(0,e.length),r.subtract(o),b.dedent(r.collapse().map(t).filter(Boolean).join("")).trim()},qe=(e,n,t,s)=>{if(!n)return e;const o=M(e,n);if(o.length<2)return e;let r="",i=0;for(let l=0;l<o.length-1;l+=2){const a=o[l],u=o[l+1];r+=e.slice(i,a.range[1]),r+=F(t??a.value,s),i=u.range[0]}r+=e.slice(i);const c=new w;return c.push(0,r.length),c.subtract(M(r,n).reduce((l,{range:a})=>(l.push(...a),l),new w)),b.dedent(c.collapse().map(([l,a])=>r.slice(l,a)).filter(Boolean).join("")).trim()},Q=e=>({space:e===" ",newline:e===`
10
- `}),z=e=>[...M(e,"p↓:"),...M(e,"parkdown:")].sort((n,t)=>n.range[0]-t.range[0]).reverse().reduce((n,{range:[t,s],loc:{start:{column:o}}})=>{const r=(l,a)=>n.slice(0,l)+n.slice(a),i={prev:Q(n[t-1]),next:Q(n[s]),startLine:o===0,final:s===n.length};return i.startLine&&(i.next.newline||i.final)?r(t-(i.final?1:0),s+1):i.startLine?r(t,s+(i.next.space?1:0)):r(t-(i.prev.space?1:0),s)},e),Oe=(e,n)=>{if(!n)return z(e);const t=Te(n);switch(t.name){case"extract":e=be(e,t.id,...G(t));break;case"remove":e=je(e,t.id,...G(t));break;case"replace":e=qe(e,t.id,t.with,t.space);break}return z(e)},Ie=["http","./","../"],De=({url:e})=>Ie.some(n=>e.startsWith(n)),Le=e=>j(e)&&he(e)&&De(e),X=({url:e},n)=>`[](${n?f.join(n,e):e})`,d={_open:"<!--",_close:"-->",_flag:"p↓",get begin(){return S(d._open,d._flag,"BEGIN",d._close)},get end(){return S(d._open,d._flag,"END",d._close)},lengthOf(e){const n=`lines: ${e.split(`
11
- `).length}`,t=`chars: ${e.length}`;return S(d._open,d._flag,"length",n,t,d._close)}},V=e=>n=>j(n)&&n.value===d[e],Pe=({position:e,url:n,siblingCount:t},s)=>({position:e,url:n,headingDepth:s,inline:t>=1}),Ae=({position:{start:e},url:n,siblingCount:t},{position:{end:s}},o)=>({position:{start:e,end:s},url:n,headingDepth:o,inline:t>=1}),Re=(e,n,t)=>(e.inline?S:de)(X(e,t),d.begin,d.lengthOf(n),n,d.end),_e=e=>{const n=x(e,"heading").reduce((t,{position:s,depth:o})=>t.set(s.start.line,o),new Map);return t=>{for(let s=t.position.start.line;s>=1;s--){const o=n.get(s);if(o)return o}return 0}},N={openingCommentDoesNotFollowLink:({position:{start:e}})=>new Error(`Opening comment (@${e.line}:${e.column}) does not follow link`),closingCommentNotMatchedToOpening:({position:{start:e}})=>new Error(`Closing comment (@${e.line}:${e.column}) does not match to opening comment`),openingCommentNotClosed:({position:{start:e}})=>new Error(`Opening comment (@${e.line}:${e.column}) is not followed by a closing comment`)},We=(e,n)=>{const t=[],s=[...e.map(r=>({node:r,type:"open"})),...n.map(r=>({node:r,type:"close"}))].sort((r,i)=>v(r.node,i.node)),o=[];for(const r of s)if(r.type==="open")o.push(r);else{const i=r.node;if(o.length===0)throw N.closingCommentNotMatchedToOpening(i);const c=o.pop().node;if(o.length>0)continue;t.push({open:c,close:i})}if(o.length>0)throw N.openingCommentNotClosed(o[0].node);return t},Be=(e,n,t)=>{const s=[...n].sort(v),o=[];return[...t].sort((r,i)=>v.reverse(r.open,i.open)).forEach(r=>{for(;s.length>0;){const i=s.pop();if(i.position.start.offset<r.open.position.start.offset){if(fe(e,i,r.open).trim()!=="")throw N.openingCommentDoesNotFollowLink(r.open);return o.push([i,r])}o.push(i)}throw N.openingCommentDoesNotFollowLink(r.open)}),o.push(...s.reverse()),o.reverse()},J=(e,n)=>{n??(n=q.md(e));const t=_e(n),s=x(n,"link").filter(Le),o=x(n,"html").sort(v),r=o.filter(V("begin")),i=o.filter(V("end")),c=We(r,i);return Be(e,s,c).map(a=>Array.isArray(a)?Ae(a[0],a[1].close,t(a[0])):Pe(a,t(a)))},Fe=(e,{url:n})=>t=>e(f.join(f.dirname(n),t)),Z=(...e)=>{const n=e.reduce((t,s)=>t+s,0);return Math.min(Math.max(n,1),6)},Ue=(e,n,t)=>{if(n===0)return e;t??(t=q.md(e));const s=x(t,"heading"),o=e.split(`
12
- `);for(const r of s){const{depth:i,position:{start:c,end:l}}=r,a=Z(i,n),u=o[c.line-1].slice(i,l.column),m="#".repeat(a)+u;o[c.line-1]=m,r.depth=a}return o.join(`
13
- `)},K=e=>J(e).reverse().sort(v.reverse).reduce((n,t)=>A(n,X(t),t),e),Y=(e,n,t,s,o)=>{try{e=K(e),e=Ue(e,n);const r=q.md(e);return J(e,r).sort(v).reverse().map(i=>{var se,oe;const{url:c,headingDepth:l}=i,[a,...u]=f.basename(c).split("?"),m=a.split(".").pop()??"",T=u.join("?"),C=f.dirname(c),te=f.join(C,a);if(c.startsWith("./")||c.startsWith("../")){let g=t(te);const y=new ie.URLSearchParams(T),D=(se=y.get("region"))==null?void 0:se.split(R);g=(D==null?void 0:D.reduce((E,k)=>Oe(E,k),g))??g;const Qe=y.has("skip"),ze=y.get("heading")??0,Xe=y.has("inline");let{inline:L}=i;if(Xe&&(L=!0),!Qe)if(m==="md"){const E=Fe(t,i),k=o?f.join(o,C):C,Ve=Z(l,Number(ze));g=Y(g,Ve,E,te,k)}else/^(js|ts)x?|svelte$/i.test(m)&&(g=H(g,"code",{extension:m,inline:L}));const P=(oe=y.get("wrap"))==null?void 0:oe.split(R);return g=(P==null?void 0:P.reduce((E,k)=>H(E,k,{extension:m,inline:L}),g))??g,{target:i,content:Re(i,g,o)}}else throw c.startsWith("http")?new Error("External web links are not implemented yet"):new Error(`Unsupported link type: ${c}`)}).reduce((i,{target:c,content:l})=>A(i,l,c),e)}catch(r){throw new Error(`Error populating inclusions in file ${s}: ${r}`)}},ee=e=>h.readFileSync(e,"utf-8"),ne=e=>{const n=f.resolve(e),t=f.dirname(n);return{markdown:ee(n),dir:t,path:n}},Ge=(e,n=!0)=>{const{dir:t,path:s,markdown:o}=ne(e),i=Y(o,0,c=>ee(f.resolve(t,ve(c))),s);return n&&h.writeFileSync(s,i),i},He=(e,n=!0)=>{const{path:t,markdown:s}=ne(e),o=K(s);return n&&h.writeFileSync(t,o),o};p.depopulateMarkdownInclusions=He,p.populateMarkdownInclusions=Ge,Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})});
7
+ `)?`> ${e}`:$(q($(e),"blockquote"));case"dropdown":const c=q(U(s.summary),"summary");return $(q([c,e].join(`
8
+ `),"details",s.open?"open":void 0))}},I=e=>{const n=/(\/\/[^\n]*|\/\*[\s\S]*?\*\/|<!--[\s\S]*?-->)/gm,t=[];let s;for(;(s=n.exec(e))!==null;){const o=[s.index,s.index+s[0].length],r=Te(s[0]).trim();t.push({range:o,value:r})}return t},Te=e=>e.startsWith("//")?e.slice(2):e.startsWith("/*")?e.slice(2,-2):e.startsWith("<!--")?e.slice(4,-3):e,be=G(["extract(id: string, 0?: string, 1?: string, 2?: string)","remove(id: string, 0?: string, 1?: string, 2?: string)","replace(id: string, with?: string, space?: string)"]),x=(e,n)=>I(e).filter(({value:t})=>t.includes(n)).sort((t,s)=>t.range[0]-s.range[0]),je=(e,...n)=>{if(n.length===0)return e;const t=([i,c])=>e.slice(i,c),s=I(e),o=new w,r=new w;for(const i of n){const c=s.filter(({value:l})=>l.includes(i)).sort((l,a)=>l.range[0]-a.range[0]);for(let l=0;l<c.length-1;l+=2){const a=c[l],p=c[l+1];o.push(a.range[1],p.range[0]);const[m,...b]=t([a.range[1],p.range[0]]),C=b[b.length-1];r.push(a.range[0],a.range[1]+(m.trim()?0:1)),r.push(p.range[0],p.range[1]+(C.trim()?0:1))}}return o.collapse(),r.collapse(),j.dedent(o.subtract(r).map(t).filter(Boolean).join("")).trim()},Me=(e,...n)=>{if(n.length===0)return e;const t=([i,c])=>e.slice(i,c),s=I(e),o=new w;for(const i of n){const c=s.filter(({value:l})=>l.includes(i)).sort((l,a)=>l.range[0]-a.range[0]);for(let l=0;l<c.length-1;l+=2){const a=c[l],p=c[l+1],m=t([p.range[1],p.range[1]+1]).at(-1);o.push(a.range[0],m===`
9
+ `?p.range[1]+1:p.range[1])}}o.collapse();const r=new w;return r.push(0,e.length),r.subtract(o),j.dedent(r.collapse().map(t).filter(Boolean).join("")).trim()},Oe=(e,n,t,s)=>{if(!n)return e;const o=x(e,n);if(o.length<2)return e;let r="",i=0;for(let l=0;l<o.length-1;l+=2){const a=o[l],p=o[l+1];r+=e.slice(i,a.range[1]),r+=U(t??a.value,s),i=p.range[0]}r+=e.slice(i);const c=new w;return c.push(0,r.length),c.subtract(x(r,n).reduce((l,{range:a})=>(l.push(...a),l),new w)),j.dedent(c.collapse().map(([l,a])=>r.slice(l,a)).filter(Boolean).join("")).trim()},z=e=>({isSpace:e===" ",isNewline:e===`
10
+ `||e===void 0}),V=e=>[...x(e,"p↓:"),...x(e,"parkdown:")].sort((n,t)=>n.range[0]-t.range[0]).reverse().reduce((n,{range:[t,s],value:o})=>{const r=(a,p)=>n.slice(0,a)+n.slice(p),i=z(n[t-1]),c=z(n[s]),l=s===n.length;return i.isNewline&&c.isNewline?r(t-(l?1:0),s+1):i.isNewline?r(t,s+(c.isSpace?1:0)):r(t-(i.isSpace?1:0),s)},e),qe=(e,n,t)=>{if(!n)return V(e);const s=be(n);switch(s.name){case"extract":e=je(e,s.id,...H(s));break;case"remove":e=Me(e,s.id,...H(s));break;case"replace":e=Oe(e,s.id,s.with,s.space);break}return t?V(e):e},Ie=["http","./","../"],Pe=({url:e})=>Ie.some(n=>e.startsWith(n)),Re=e=>M(e)&&me(e)&&Pe(e),X=({url:e},n)=>`[](${n?h.join(n,e):e})`,f={_open:"<!--",_close:"-->",_flag:"p↓",get begin(){return N(f._open,f._flag,"BEGIN",f._close)},get end(){return N(f._open,f._flag,"END",f._close)},lengthOf(e){const n=`lines: ${e.split(`
11
+ `).length}`,t=`chars: ${e.length}`;return N(f._open,f._flag,"length",n,t,f._close)}},J=e=>n=>M(n)&&n.value===f[e],Ae=({position:e,url:n,siblingCount:t},s)=>({position:e,url:n,headingDepth:s,inline:t>=1}),De=({position:{start:e},url:n,siblingCount:t},{position:{end:s}},o)=>({position:{start:e,end:s},url:n,headingDepth:o,inline:t>=1}),We=(e,n,t)=>(e.inline?N:he)(X(e,t),f.begin,f.lengthOf(n),n,f.end),_e=e=>{const n=k(e,"heading").reduce((t,{position:s,depth:o})=>t.set(s.start.line,o),new Map);return t=>{for(let s=t.position.start.line;s>=1;s--){const o=n.get(s);if(o)return o}return 0}},T={openingCommentDoesNotFollowLink:({position:{start:e}})=>new Error(`Opening comment (@${e.line}:${e.column}) does not follow link`),closingCommentNotMatchedToOpening:({position:{start:e}})=>new Error(`Closing comment (@${e.line}:${e.column}) does not match to opening comment`),openingCommentNotClosed:({position:{start:e}})=>new Error(`Opening comment (@${e.line}:${e.column}) is not followed by a closing comment`)},Le=(e,n)=>{const t=[],s=[...e.map(r=>({node:r,type:"open"})),...n.map(r=>({node:r,type:"close"}))].sort((r,i)=>v(r.node,i.node)),o=[];for(const r of s)if(r.type==="open")o.push(r);else{const i=r.node;if(o.length===0)throw T.closingCommentNotMatchedToOpening(i);const c=o.pop().node;if(o.length>0)continue;t.push({open:c,close:i})}if(o.length>0)throw T.openingCommentNotClosed(o[0].node);return t},Be=(e,n,t)=>{const s=[...n].sort(v),o=[];return[...t].sort((r,i)=>v.reverse(r.open,i.open)).forEach(r=>{for(;s.length>0;){const i=s.pop();if(i.position.start.offset<r.open.position.start.offset){if(de(e,i,r.open).trim()!=="")throw T.openingCommentDoesNotFollowLink(r.open);return o.push([i,r])}o.push(i)}throw T.openingCommentDoesNotFollowLink(r.open)}),o.push(...s.reverse()),o.reverse()},Z=(e,n)=>{n??(n=O.md(e));const t=_e(n),s=k(n,"link").filter(Re),o=k(n,"html").sort(v),r=o.filter(J("begin")),i=o.filter(J("end")),c=Le(r,i);return Be(e,s,c).map(a=>Array.isArray(a)?De(a[0],a[1].close,t(a[0])):Ae(a,t(a)))},Fe=(e,{url:n})=>t=>e(h.join(h.dirname(n),t)),K=(...e)=>{const n=e.reduce((t,s)=>t+s,0);return Math.min(Math.max(n,1),6)},Ue=(e,n,t)=>{if(n===0)return e;t??(t=O.md(e));const s=k(t,"heading"),o=e.split(`
12
+ `);for(const r of s){const{depth:i,position:{start:c,end:l}}=r,a=K(i,n),p=o[c.line-1].slice(i,l.column),m="#".repeat(a)+p;o[c.line-1]=m,r.depth=a}return o.join(`
13
+ `)},Y=e=>Z(e).reverse().sort(v.reverse).reduce((n,t)=>W(n,X(t),t),e),ee=(e,n,t,s,o)=>{try{e=Y(e),e=Ue(e,n);const r=O.md(e);return Z(e,r).sort(v).reverse().map(i=>{var oe,re;const{url:c,headingDepth:l}=i,[a,...p]=h.basename(c).split("?"),m=a.split(".").pop()??"",b=p.join("?"),C=h.dirname(c),se=h.join(C,a);if(c.startsWith("./")||c.startsWith("../")){let g=t(se);const y=new ce.URLSearchParams(b),P=(oe=y.get("region"))==null?void 0:oe.split(_);g=(P==null?void 0:P.reduce((S,E,D,{length:Xe})=>qe(S,E,D===Xe-1),g))??g;const Qe=y.has("skip"),ze=y.get("heading")??0,Ve=y.has("inline");let{inline:R}=i;if(Ve&&(R=!0),!Qe)if(m==="md"){const S=Fe(t,i),E=o?h.join(o,C):C,D=K(l,Number(ze));g=ee(g,D,S,se,E)}else/^(js|ts)x?|svelte$/i.test(m)&&(g=Q(g,"code",{extension:m,inline:R}));const A=(re=y.get("wrap"))==null?void 0:re.split(_);return g=(A==null?void 0:A.reduce((S,E)=>Q(S,E,{extension:m,inline:R}),g))??g,{target:i,content:We(i,g,o)}}else throw c.startsWith("http")?new Error("External web links are not implemented yet"):new Error(`Unsupported link type: ${c}`)}).reduce((i,{target:c,content:l})=>W(i,l,c),e)}catch(r){throw new Error(`Error populating inclusions in file ${s??"(unknown)"}: ${r}`)}},ne=e=>d.readFileSync(e,"utf-8"),te=e=>{const n=h.resolve(e),t=h.dirname(n);return{markdown:ne(n),dir:t,path:n}},Ge=(e,n=!0)=>{const{dir:t,path:s,markdown:o}=te(e),i=ee(o,0,c=>ne(h.resolve(t,ge(c))),s);return n&&d.writeFileSync(s,i),i},He=(e,n=!0)=>{const{path:t,markdown:s}=te(e),o=Y(s);return n&&d.writeFileSync(t,o),o};u.depopulateMarkdownInclusions=He,u.populateMarkdownInclusions=Ge,Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@p-buddy/parkdown",
3
3
  "type": "module",
4
4
  "private": false,
5
- "version": "0.0.6",
5
+ "version": "0.0.8",
6
6
  "main": "./dist/index.js",
7
7
  "bin": "./dist/cli.js",
8
8
  "files": [
@@ -24,10 +24,7 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@commander-js/extra-typings": "^13.1.0",
27
- "@flex-development/import-regex": "^3.0.0",
28
- "extract-comments": "^1.1.0",
29
27
  "remark-parse": "^11.0.0",
30
- "stable-hash": "^0.0.4",
31
28
  "ts-dedent": "^2.2.0",
32
29
  "unified": "^11.0.5",
33
30
  "unist-util-visit": "^5.0.0"