@dogsbay/serialize-core 0.2.0-beta.115 → 0.2.0-beta.116

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.
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Child-links realization — `::child-links` → the page's children, from the
3
+ * NAV (plans/child-links.md).
4
+ *
5
+ * A `child-links` node is a QUERY: "list the pages under this one". Only
6
+ * `format-dogsbay-md` can carry the query itself; every other target needs
7
+ * the answer, and the answer belongs to the build (a page added next week
8
+ * must appear), which is why importers emit the node instead of a list.
9
+ *
10
+ * I/O-free like `includes.ts`: the caller supplies the nav, the holding
11
+ * page's href, and a page lookup. A listing that finds nothing is REPORTED
12
+ * and becomes nothing — Cloudflare's own component throws there.
13
+ */
14
+ import type { NavItem, TreeNode } from "@dogsbay/types";
15
+ export interface ChildLinksContext {
16
+ nav: NavItem[];
17
+ /** The holding page's href, as the nav writes hrefs. */
18
+ pageHref: string;
19
+ /**
20
+ * Map a `folder=` attribute (a site path such as `/workers/runtime-apis/`)
21
+ * to nav href form. Default: used as written.
22
+ */
23
+ folderHref?: (folder: string) => string;
24
+ /**
25
+ * Asked when `nav` has nothing under the folder: typically the page
26
+ * DIRECTORY, for pages hidden from the sidebar (Cloudflare's
27
+ * `sidebar: hidden` sections are still listed by its component) or a
28
+ * folder whose nav group has no page of its own. Keyed by `navKey`.
29
+ */
30
+ fallbackChildren?: (key: string) => NavItem[] | undefined;
31
+ /** Title, description and tags of the page at a nav href, when known. */
32
+ lookup?: (href: string) => {
33
+ title?: string;
34
+ description?: string;
35
+ tags?: string[];
36
+ data?: Record<string, unknown>;
37
+ } | undefined;
38
+ /**
39
+ * The href to WRITE for a nav href. `site build` builds its nav with the
40
+ * base path on, but trees must carry site-relative links: Astro adds the
41
+ * base itself, and an export target (a vault, MkDocs) has none.
42
+ */
43
+ outputHref?: (navHref: string) => string;
44
+ }
45
+ export interface ChildLinksResult {
46
+ /** Listings realized. */
47
+ realized: number;
48
+ /** Listings that found no nav node, or a node without children: `folder` (or the page href). */
49
+ empty: string[];
50
+ /** Listings answered by `fallbackChildren` because the nav had nothing there. */
51
+ fromFallback: string[];
52
+ }
53
+ /** Normalize an href for comparison: no hash or query, no trailing slash, no `.md`/`index`. */
54
+ export declare function navKey(href: string): string;
55
+ /**
56
+ * Replace every `child-links` node in `tree` with its listing. Mutates in
57
+ * place (callers hold the array) and returns what happened.
58
+ */
59
+ export declare function realizeChildLinks(tree: TreeNode[], ctx: ChildLinksContext): ChildLinksResult;
60
+ /** Does this tree hold a `child-links` node? (Cheap pre-check for callers.) */
61
+ export declare function hasChildLinks(tree: TreeNode[]): boolean;
62
+ /**
63
+ * The page DIRECTORY as `fallbackChildren`: a folder's pages, by title, for
64
+ * folders the nav does not show (hidden from the sidebar, or a nav group with
65
+ * no page of its own). A sub-folder with no page of its own is addressable by
66
+ * its path and becomes an href-less group, which `realizeChildLinks`
67
+ * flattens — leaving it out lost everything below it. Callers pass only
68
+ * pages to list (not fragments, partials or redirect stubs). Shared by the
69
+ * Dogsbay CLI and dogsbay-ssg.
70
+ */
71
+ export declare function directoryChildren(pages: Array<{
72
+ slug: string;
73
+ title?: string;
74
+ }>, hrefOf: (slug: string) => string): (key: string) => NavItem[] | undefined;
75
+ //# sourceMappingURL=child-links.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"child-links.d.ts","sourceRoot":"","sources":["../src/child-links.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAc,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAEpE,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,OAAO,EAAE,CAAC;IACf,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,EAAE,GAAG,SAAS,CAAC;IAC1D,yEAAyE;IACzE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,SAAS,CAAC;IACjI;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAgB;IAC/B,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,gGAAgG;IAChG,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,iFAAiF;IACjF,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,+FAA+F;AAC/F,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI3C;AA4CD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,iBAAiB,GAAG,gBAAgB,CAsH5F;AA0CD,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAEvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAC9C,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAC/B,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,EAAE,GAAG,SAAS,CAkCxC"}
@@ -0,0 +1,264 @@
1
+ /** Normalize an href for comparison: no hash or query, no trailing slash, no `.md`/`index`. */
2
+ export function navKey(href) {
3
+ let h = href.replace(/[?#].*$/, "").replace(/\/index(\.mdx?)?$/, "").replace(/\.mdx?$/, "");
4
+ h = h.replace(/\/+$/, "");
5
+ return h === "" ? "/" : h;
6
+ }
7
+ function findNode(items, key, rootKey = "/") {
8
+ // The home page's children are the nav's top level (its own "Home" entry
9
+ // is a leaf, and is skipped as a self-link). Under a base path the root
10
+ // is the base (`/docs`), not `/`.
11
+ if (key === "/" || key === rootKey)
12
+ return { label: "", href: key, children: items };
13
+ // Prefer the node that HAS children: a section's "Overview" self-entry
14
+ // shares its href and comes first.
15
+ let hit;
16
+ const walk = (list) => {
17
+ for (const item of list) {
18
+ if (item.href !== undefined && navKey(item.href) === key) {
19
+ if (item.children?.length) {
20
+ if (!hit?.children?.length)
21
+ hit = item;
22
+ }
23
+ else if (!hit)
24
+ hit = item;
25
+ }
26
+ if (item.children)
27
+ walk(item.children);
28
+ }
29
+ };
30
+ walk(items);
31
+ return hit;
32
+ }
33
+ /**
34
+ * The children to list: those linking somewhere other than the parent (a
35
+ * section's "Overview" self-entry does not), with a group that has no page of
36
+ * its own FLATTENED into its parent — dropping it lost every page inside.
37
+ * A child that links OUT (a URL) is listed too, by its nav label: a folder
38
+ * whose pages are all external links (Cloudflare `external_link:` — partner
39
+ * integrations, templates on GitHub) listed nothing, where the source's
40
+ * listing links each one to its URL.
41
+ */
42
+ function listable(children, parentKey) {
43
+ const out = [];
44
+ for (const c of children ?? []) {
45
+ if (c.href === undefined)
46
+ out.push(...listable(c.children, parentKey));
47
+ else if (/^[a-z][a-z0-9+.-]*:|^\/\//i.test(c.href) || navKey(c.href) !== parentKey)
48
+ out.push(c);
49
+ }
50
+ return out;
51
+ }
52
+ const bool = (v) => v === true || v === "true" || v === "";
53
+ /**
54
+ * Replace every `child-links` node in `tree` with its listing. Mutates in
55
+ * place (callers hold the array) and returns what happened.
56
+ */
57
+ export function realizeChildLinks(tree, ctx) {
58
+ const result = { realized: 0, empty: [], fromFallback: [] };
59
+ const write = ctx.outputHref ?? ((h) => h);
60
+ const toFolder = ctx.folderHref ?? ((f) => f);
61
+ const rootKey = navKey(toFolder("/"));
62
+ const expand = (node) => {
63
+ const props = node.props ?? {};
64
+ // `scope=section`: the top-level section the page is in (Cloudflare's
65
+ // <ListTutorials> lists its section's tutorials). The page's path relative
66
+ // to the site root is its href minus what `folderHref` adds for "/".
67
+ let folder = typeof props.folder === "string" && props.folder ? props.folder : undefined;
68
+ if (!folder && props.scope === "section") {
69
+ // `scopeBase`: the page's own source namespace on a versioned or
70
+ // localized site (`/v2`), set at import; the section is the first
71
+ // segment BELOW it, not the version.
72
+ const scopeBase = typeof props.scopeBase === "string" ? props.scopeBase.replace(/\/+$/, "") : "";
73
+ const base = navKey(toFolder(`${scopeBase}/`)).replace(/\/$/, "");
74
+ const rel = base === "" ? ctx.pageHref : ctx.pageHref.startsWith(`${base}/`) ? ctx.pageHref.slice(base.length) : ctx.pageHref;
75
+ const seg = rel.split("/").filter(Boolean)[0];
76
+ folder = `${scopeBase}/${seg ? `${seg}/` : ""}`;
77
+ }
78
+ const key = navKey(folder ? toFolder(folder) : ctx.pageHref);
79
+ const matchSrc = typeof props.match === "string" ? props.match : undefined;
80
+ const conditions = parseMatch(matchSrc);
81
+ // A condition without `field:` cannot mean anything; an empty listing
82
+ // would hide the typo, so it is reported as empty instead.
83
+ if (matchSrc && matchSrc.split(";").some((c) => c.trim() && !c.includes(":"))) {
84
+ result.empty.push(`${folder ?? ctx.pageHref} (match "${matchSrc}": a condition has no "field:")`);
85
+ return [];
86
+ }
87
+ const depth = Math.max(1, Math.min(6, Number(props.depth ?? 1) || 1));
88
+ const descriptions = bool(props.descriptions);
89
+ const cards = props.style === "cards";
90
+ const tag = typeof props.tag === "string" && props.tag ? props.tag : undefined;
91
+ const tagged = (items) => (tag ? items.filter((i) => ctx.lookup?.(i.href)?.tags?.includes(tag)) : items);
92
+ let top;
93
+ if (conditions.length) {
94
+ // A QUERY, not a tree: every page under the folder whose front matter
95
+ // matches, flat, by title — read from the page directory when there is
96
+ // one (a collection query sees pages the sidebar hides), else the nav.
97
+ const source = ctx.fallbackChildren?.(key) ?? findNode(ctx.nav, key, rootKey)?.children ?? [];
98
+ const self = navKey(ctx.pageHref);
99
+ const seen = new Set();
100
+ const titled = flatten(source)
101
+ .filter((i) => {
102
+ const k = navKey(i.href);
103
+ if (k === self || k === key || seen.has(k))
104
+ return false;
105
+ seen.add(k);
106
+ return matches(ctx.lookup?.(i.href)?.data, conditions);
107
+ })
108
+ .map((i) => ({ i, t: ctx.lookup?.(i.href)?.title ?? i.label }));
109
+ top = tagged(titled.sort((a, b) => a.t.localeCompare(b.t)).map((x) => x.i));
110
+ }
111
+ else {
112
+ top = tagged(listable(findNode(ctx.nav, key, rootKey)?.children, key));
113
+ if (!top.length && ctx.fallbackChildren) {
114
+ top = tagged(listable(ctx.fallbackChildren(key), key));
115
+ if (top.length)
116
+ result.fromFallback.push(folder ?? ctx.pageHref);
117
+ }
118
+ }
119
+ if (!top.length) {
120
+ result.empty.push(folder ?? ctx.pageHref);
121
+ return [];
122
+ }
123
+ result.realized++;
124
+ const info = (item) => {
125
+ const hit = ctx.lookup?.(item.href);
126
+ return { title: hit?.title || item.label, description: descriptions ? hit?.description : undefined };
127
+ };
128
+ if (cards) {
129
+ return [
130
+ {
131
+ type: "cards",
132
+ children: top.map((item) => {
133
+ const { title, description } = info(item);
134
+ return {
135
+ type: "card",
136
+ props: { title, href: write(item.href) },
137
+ children: description ? [{ type: "paragraph", inline: [{ type: "text", text: description }] }] : [],
138
+ };
139
+ }),
140
+ },
141
+ ];
142
+ }
143
+ const list = (items, level, parentKey) => ({
144
+ type: "unordered-list",
145
+ children: items.map((item) => {
146
+ const { title, description } = info(item);
147
+ const inline = [{ type: "link", href: write(item.href), children: [{ type: "text", text: title }] }];
148
+ if (description)
149
+ inline.push({ type: "text", text: `: ${description}` });
150
+ const children = [{ type: "paragraph", inline }];
151
+ const itemKey = navKey(item.href);
152
+ const below = listable(item.children, itemKey);
153
+ if (!conditions.length && level < depth && below.length)
154
+ children.push(list(below, level + 1, itemKey));
155
+ return { type: "list-item", children };
156
+ }),
157
+ });
158
+ return [list(top, 1, key)];
159
+ };
160
+ const walk = (nodes) => {
161
+ for (let i = 0; i < nodes.length; i++) {
162
+ const node = nodes[i];
163
+ if (node.type === "child-links") {
164
+ const out = expand(node);
165
+ nodes.splice(i, 1, ...out);
166
+ i += out.length - 1;
167
+ continue;
168
+ }
169
+ if (node.children)
170
+ walk(node.children);
171
+ }
172
+ };
173
+ walk(tree);
174
+ return result;
175
+ }
176
+ /** Every linked page in a nav subtree, depth-first (groups without a page contribute their pages). */
177
+ function flatten(items) {
178
+ const out = [];
179
+ const walk = (list) => {
180
+ for (const i of list) {
181
+ if (i.href !== undefined && !/^[a-z][a-z0-9+.-]*:|^\/\//i.test(i.href))
182
+ out.push(i);
183
+ if (i.children)
184
+ walk(i.children);
185
+ }
186
+ };
187
+ walk(items);
188
+ return out;
189
+ }
190
+ /**
191
+ * `match="pcx_content_type:tutorial,example;products:waf"` — every condition
192
+ * must hold; a condition holds when the front-matter field (a string, or a
193
+ * list of strings or `{ id }` objects) contains any of its values.
194
+ */
195
+ function parseMatch(src) {
196
+ if (!src)
197
+ return [];
198
+ return src
199
+ .split(";")
200
+ .map((c) => c.trim())
201
+ .filter(Boolean)
202
+ .map((c) => {
203
+ const at = c.indexOf(":");
204
+ return { field: c.slice(0, at).trim(), values: c.slice(at + 1).split(",").map((v) => v.trim()).filter(Boolean) };
205
+ })
206
+ .filter((c) => c.field && c.values.length);
207
+ }
208
+ function matches(data, conditions) {
209
+ if (!data)
210
+ return false;
211
+ return conditions.every(({ field, values }) => {
212
+ const v = data[field];
213
+ const have = (Array.isArray(v) ? v : [v]).map((x) => (x && typeof x === "object" && "id" in x ? String(x.id) : x == null ? "" : String(x)));
214
+ return values.some((want) => have.includes(want));
215
+ });
216
+ }
217
+ /** Does this tree hold a `child-links` node? (Cheap pre-check for callers.) */
218
+ export function hasChildLinks(tree) {
219
+ return tree.some((n) => n.type === "child-links" || (n.children ? hasChildLinks(n.children) : false));
220
+ }
221
+ /**
222
+ * The page DIRECTORY as `fallbackChildren`: a folder's pages, by title, for
223
+ * folders the nav does not show (hidden from the sidebar, or a nav group with
224
+ * no page of its own). A sub-folder with no page of its own is addressable by
225
+ * its path and becomes an href-less group, which `realizeChildLinks`
226
+ * flattens — leaving it out lost everything below it. Callers pass only
227
+ * pages to list (not fragments, partials or redirect stubs). Shared by the
228
+ * Dogsbay CLI and dogsbay-ssg.
229
+ */
230
+ export function directoryChildren(pages, hrefOf) {
231
+ const root = { kids: new Map() };
232
+ // The root answers to "/" and to the base (`hrefOf("")` → `/docs/`).
233
+ const byKey = new Map([["/", root], [navKey(hrefOf("")), root]]);
234
+ for (const page of pages) {
235
+ const segs = page.slug.replace(/(^|\/)index$/, "").split("/").filter(Boolean);
236
+ let dir = root;
237
+ for (let i = 0; i < segs.length; i++) {
238
+ if (!dir.kids.has(segs[i])) {
239
+ const d = { kids: new Map() };
240
+ dir.kids.set(segs[i], d);
241
+ byKey.set(navKey(hrefOf(segs.slice(0, i + 1).join("/"))), d);
242
+ }
243
+ dir = dir.kids.get(segs[i]);
244
+ }
245
+ dir.item = { label: page.title || segs[segs.length - 1] || "Home", href: hrefOf(page.slug) };
246
+ }
247
+ // Cached: a query at "/" asks for the whole site, once per page holding one.
248
+ const cache = new Map();
249
+ const items = (dir) => {
250
+ let hit = cache.get(dir);
251
+ if (!hit) {
252
+ hit = [...dir.kids.entries()]
253
+ .map(([seg, d]) => ({ ...(d.item ?? { label: seg }), children: items(d) }))
254
+ .sort((x, y) => x.label.localeCompare(y.label));
255
+ cache.set(dir, hit);
256
+ }
257
+ return hit;
258
+ };
259
+ return (key) => {
260
+ const dir = byKey.get(key);
261
+ return dir ? items(dir) : undefined;
262
+ };
263
+ }
264
+ //# sourceMappingURL=child-links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"child-links.js","sourceRoot":"","sources":["../src/child-links.ts"],"names":[],"mappings":"AAkDA,+FAA+F;AAC/F,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC5F,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1B,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAgB,EAAE,GAAW,EAAE,OAAO,GAAG,GAAG;IAC5D,yEAAyE;IACzE,wEAAwE;IACxE,kCAAkC;IAClC,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACrF,uEAAuE;IACvE,mCAAmC;IACnC,IAAI,GAAwB,CAAC;IAC7B,MAAM,IAAI,GAAG,CAAC,IAAe,EAAQ,EAAE;QACrC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBACzD,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;oBAC1B,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM;wBAAE,GAAG,GAAG,IAAI,CAAC;gBACzC,CAAC;qBAAM,IAAI,CAAC,GAAG;oBAAE,GAAG,GAAG,IAAI,CAAC;YAC9B,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,KAAK,CAAC,CAAC;IACZ,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,QAAQ,CAAC,QAA+B,EAAE,SAAiB;IAClE,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;aAClE,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AAEpE;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAgB,EAAE,GAAsB;IACxE,MAAM,MAAM,GAAqB,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC9E,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,CAAC,IAAc,EAAc,EAAE;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/B,sEAAsE;QACtE,2EAA2E;QAC3E,qEAAqE;QACrE,IAAI,MAAM,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACzF,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACzC,iEAAiE;YACjE,kEAAkE;YAClE,qCAAqC;YACrC,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACjG,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClE,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC9H,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAClD,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QACxC,sEAAsE;QACtE,2DAA2D;QAC3D,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9E,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,QAAQ,YAAY,QAAQ,iCAAiC,CAAC,CAAC;YAClG,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,OAAO,CAAC;QAEtC,MAAM,GAAG,GAAG,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/E,MAAM,MAAM,GAAG,CAAC,KAAgB,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACrH,IAAI,GAAc,CAAC;QACnB,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,sEAAsE;YACtE,uEAAuE;YACvE,uEAAuE;YACvE,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC;YAC9F,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;iBAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBACZ,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAK,CAAC,CAAC;gBAC1B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,OAAO,KAAK,CAAC;gBACzD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACZ,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;YAC1D,CAAC,CAAC;iBACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACnE,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;YACvE,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBACxC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBACvD,IAAI,GAAG,CAAC,MAAM;oBAAE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC1C,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,CAAC,QAAQ,EAAE,CAAC;QAElB,MAAM,IAAI,GAAG,CAAC,IAAa,EAAE,EAAE;YAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;YACrC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACvG,CAAC,CAAC;QAEF,IAAI,KAAK,EAAE,CAAC;YACV,OAAO;gBACL;oBACE,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;wBACzB,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC1C,OAAO;4BACL,IAAI,EAAE,MAAM;4BACZ,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAK,CAAC,EAAE;4BACzC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;yBACpG,CAAC;oBACJ,CAAC,CAAC;iBACH;aACF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,KAAgB,EAAE,KAAa,EAAE,SAAiB,EAAY,EAAE,CAAC,CAAC;YAC9E,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC3B,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM,MAAM,GAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBACpH,IAAI,WAAW;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,EAAE,CAAC,CAAC;gBACzE,MAAM,QAAQ,GAAe,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;gBACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC/C,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM;oBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;gBACxG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;YACzC,CAAC,CAAC;SACH,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,KAAiB,EAAQ,EAAE;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAChC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;gBACzB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;gBAC3B,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;gBACpB,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ;gBAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,CAAC;IACX,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sGAAsG;AACtG,SAAS,OAAO,CAAC,KAAgB;IAC/B,MAAM,GAAG,GAAc,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,IAAe,EAAE,EAAE;QAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpF,IAAI,CAAC,CAAC,QAAQ;gBAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,KAAK,CAAC,CAAC;IACZ,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,GAAuB;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACnH,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,OAAO,CAAC,IAAyC,EAAE,UAAsD;IAChH,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAE,CAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjK,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,aAAa,CAAC,IAAgB;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxG,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAA8C,EAC9C,MAAgC;IAGhC,MAAM,IAAI,GAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IACtC,qEAAqE;IACrE,MAAM,KAAK,GAAG,IAAI,GAAG,CAAc,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9E,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;gBACnC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzB,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/D,CAAC;YACD,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,CAAC;QAC/B,CAAC;QACD,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/F,CAAC;IACD,6EAA6E;IAC7E,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,KAAK,GAAG,CAAC,GAAQ,EAAa,EAAE;QACpC,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;iBAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;iBAC1E,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAClD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -19,8 +19,9 @@
19
19
  export { leafInline, leafHtml, hasInline, hasContent, codeText, codeLang, tabTitle, tabValue, cardFields, cardBodySources, headingLevel, headingText, headingFragment, slugifyHeadingText, calloutVariant, calloutTitle, listStart, mediaSrc, renderLeaf, type CardFields, } from "./reads.js";
20
20
  export { walkInline, applyTextFlags, inlinePlainText, markdownInlineEmitters, htmlInlineEmitters, escapeHtml, escapeAttr, codeSpan, type InlineContext, type InlineEmitters, type InlineWalkOptions, } from "./inline.js";
21
21
  export { ExportLedger, formatLedgerReport, formatCapabilityTable, unsupportedFeatures, validateCapabilities, validateLedgerAgainstCapabilities, type SupportLevel, type CapabilityDeclaration, type LossAction, type ExportLedgerEntry, type LedgerSummaryRow, } from "./capability.js";
22
- export { pickCodeFence, pickDirectiveFence, indent, prefixLines, normalizeTrailingWhitespace, stripHtml, inlineHtmlToMarkdown, yamlScalar, frontmatterBlock, } from "./text.js";
22
+ export { pickCodeFence, pickDirectiveFence, indent, prefixLines, normalizeTrailingWhitespace, stripHtml, inlineHtmlToMarkdown, escapeMarkdownText, isSafeHref, neutralizeMarkdown, markdownDestination, markdownTitle, markdownLatex, remarkMath, footnoteLabel, mapOutsideCodeSpans, safeAnchorId, yamlScalar, frontmatterBlock, } from "./text.js";
23
23
  export { resolvePlugins, composeCapabilities, formatPluginConflicts, type ExportPluginMeta, type ResolvedPlugins, type ProviderConflict, type InvalidOverride, type ResolveOptions, } from "./plugins.js";
24
24
  export { realizeIncludes, hasIncludes, type RealizeResult, type RealizeOptions, } from "./includes.js";
25
+ export { realizeChildLinks, hasChildLinks, directoryChildren, navKey, type ChildLinksContext, type ChildLinksResult, } from "./child-links.js";
25
26
  export { renderUnknownNode, type UnknownNodePolicy, type UnknownNodeOptions, } from "./unknown.js";
26
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,eAAe,EACf,YAAY,EACZ,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,UAAU,EACV,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,UAAU,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,QAAQ,EACR,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,iCAAiC,EACjC,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,MAAM,EACN,WAAW,EACX,2BAA2B,EAC3B,SAAS,EACT,oBAAoB,EACpB,UAAU,EACV,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,eAAe,EACf,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,eAAe,EACf,YAAY,EACZ,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,UAAU,EACV,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,UAAU,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,QAAQ,EACR,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,iCAAiC,EACjC,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,MAAM,EACN,WAAW,EACX,2BAA2B,EAC3B,SAAS,EACT,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,eAAe,EACf,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,MAAM,EACN,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -19,8 +19,9 @@
19
19
  export { leafInline, leafHtml, hasInline, hasContent, codeText, codeLang, tabTitle, tabValue, cardFields, cardBodySources, headingLevel, headingText, headingFragment, slugifyHeadingText, calloutVariant, calloutTitle, listStart, mediaSrc, renderLeaf, } from "./reads.js";
20
20
  export { walkInline, applyTextFlags, inlinePlainText, markdownInlineEmitters, htmlInlineEmitters, escapeHtml, escapeAttr, codeSpan, } from "./inline.js";
21
21
  export { ExportLedger, formatLedgerReport, formatCapabilityTable, unsupportedFeatures, validateCapabilities, validateLedgerAgainstCapabilities, } from "./capability.js";
22
- export { pickCodeFence, pickDirectiveFence, indent, prefixLines, normalizeTrailingWhitespace, stripHtml, inlineHtmlToMarkdown, yamlScalar, frontmatterBlock, } from "./text.js";
22
+ export { pickCodeFence, pickDirectiveFence, indent, prefixLines, normalizeTrailingWhitespace, stripHtml, inlineHtmlToMarkdown, escapeMarkdownText, isSafeHref, neutralizeMarkdown, markdownDestination, markdownTitle, markdownLatex, remarkMath, footnoteLabel, mapOutsideCodeSpans, safeAnchorId, yamlScalar, frontmatterBlock, } from "./text.js";
23
23
  export { resolvePlugins, composeCapabilities, formatPluginConflicts, } from "./plugins.js";
24
24
  export { realizeIncludes, hasIncludes, } from "./includes.js";
25
+ export { realizeChildLinks, hasChildLinks, directoryChildren, navKey, } from "./child-links.js";
25
26
  export { renderUnknownNode, } from "./unknown.js";
26
27
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,eAAe,EACf,YAAY,EACZ,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,UAAU,GAEX,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,UAAU,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,QAAQ,GAIT,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,iCAAiC,GAMlC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,MAAM,EACN,WAAW,EACX,2BAA2B,EAC3B,SAAS,EACT,oBAAoB,EACpB,UAAU,EACV,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,qBAAqB,GAMtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,eAAe,EACf,WAAW,GAGZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,iBAAiB,GAGlB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,eAAe,EACf,YAAY,EACZ,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,UAAU,GAEX,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,UAAU,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,QAAQ,GAIT,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,iCAAiC,GAMlC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,MAAM,EACN,WAAW,EACX,2BAA2B,EAC3B,SAAS,EACT,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,qBAAqB,GAMtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,eAAe,EACf,WAAW,GAGZ,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,MAAM,GAGP,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,iBAAiB,GAGlB,MAAM,cAAc,CAAC"}
package/dist/inline.d.ts CHANGED
@@ -61,6 +61,9 @@ export interface InlineEmitters {
61
61
  icon?: (node: Extract<InlineNode, {
62
62
  type: "icon";
63
63
  }>, ctx: InlineContext) => string;
64
+ badge?: (node: Extract<InlineNode, {
65
+ type: "badge";
66
+ }>, ctx: InlineContext) => string;
64
67
  math?: (node: Extract<InlineNode, {
65
68
  type: "math";
66
69
  }>, ctx: InlineContext) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"inline.d.ts","sourceRoot":"","sources":["../src/inline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inline.d.ts","sourceRoot":"","sources":["../src/inline.ts"],"names":[],"mappings":"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"}
package/dist/inline.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { footnoteLabel, remarkMath, isSafeHref, markdownDestination, markdownTitle } from "./text.js";
1
2
  /**
2
3
  * Best-effort plain-text degradation for a variant a format cannot express.
3
4
  * Always prefer losing formatting over losing CONTENT.
@@ -14,6 +15,8 @@ export function inlinePlainText(node, escape) {
14
15
  return escape(node.keys.join("+"));
15
16
  case "icon":
16
17
  return escape(node.library ? `${node.library}:${node.name}` : node.name);
18
+ case "badge":
19
+ return escape(node.text);
17
20
  case "break":
18
21
  return "\n";
19
22
  case "html-inline":
@@ -85,19 +88,28 @@ export function markdownInlineEmitters() {
85
88
  italic: (s) => `*${s}*`,
86
89
  strike: (s) => `~~${s}~~`,
87
90
  }),
91
+ // An unsafe scheme keeps the link text and is reported; a title cannot
92
+ // end its own quotes.
88
93
  link: (node, ctx) => {
89
- const title = node.title ? ` "${node.title}"` : "";
90
- return `[${ctx.recurse(node.children)}](${node.href}${title})`;
94
+ if (!isSafeHref(node.href)) {
95
+ ctx.report("link", `unsafe link target dropped (${node.href.slice(0, 40)})`);
96
+ return ctx.recurse(node.children);
97
+ }
98
+ return `[${ctx.recurse(node.children)}](${markdownDestination(node.href)}${markdownTitle(node.title)})`;
91
99
  },
92
- image: (node) => {
93
- const title = node.title ? ` "${node.title}"` : "";
94
- return `![${node.alt ?? ""}](${node.src}${title})`;
100
+ image: (node, ctx) => {
101
+ if (!isSafeHref(node.src, "image")) {
102
+ ctx.report("image", `unsafe image source dropped (${node.src.slice(0, 40)})`);
103
+ return ctx.escape(node.alt ?? "");
104
+ }
105
+ return `![${(node.alt ?? "").replace(/[[\]\\]/g, "\\$&")}](${markdownDestination(node.src)}${markdownTitle(node.title)})`;
95
106
  },
96
107
  code: (node) => codeSpan(node.text),
97
108
  highlight: (node, ctx) => `==${ctx.recurse(node.children)}==`,
98
- "footnote-ref": (node) => `[^${node.label}]`,
99
- kbd: (node) => node.keys.map((k) => `<kbd>${k}</kbd>`).join("+"),
100
- math: (node) => `$${node.latex}$`,
109
+ "footnote-ref": (node) => `[^${footnoteLabel(node.label)}]`,
110
+ kbd: (node) => node.keys.map((k) => `<kbd>${escapeHtml(k)}</kbd>`).join("+"),
111
+ // remark-math reads `$` like code backticks (`\$` does not escape).
112
+ math: (node) => remarkMath(node.latex, false),
101
113
  // The presets MUST cover all 11 variants — omitting one is the bug this
102
114
  // module was written to stop (format-astro silently dropped `highlight`
103
115
  // for exactly this reason, until the retrofit put it on this walk).
@@ -111,7 +123,7 @@ export function markdownInlineEmitters() {
111
123
  icon: (node, ctx) => {
112
124
  const full = node.library ? `${node.library}:${node.name}` : node.name;
113
125
  ctx.report("icon", `no icon syntax in this format — emitted as the name "${full}"`);
114
- return node.name;
126
+ return ctx.escape(node.name);
115
127
  },
116
128
  "html-inline": (node) => node.html,
117
129
  break: () => " \n",
@@ -163,10 +175,20 @@ export function htmlInlineEmitters() {
163
175
  strike: (s) => `<s>${s}</s>`,
164
176
  }),
165
177
  link: (node, ctx) => {
178
+ if (!isSafeHref(node.href)) {
179
+ ctx.report("link", `unsafe link target dropped (${node.href.slice(0, 40)})`);
180
+ return ctx.recurse(node.children);
181
+ }
166
182
  const title = node.title ? ` title="${escapeAttr(node.title)}"` : "";
167
183
  return `<a href="${escapeAttr(node.href)}"${title}>${ctx.recurse(node.children)}</a>`;
168
184
  },
169
- image: (node) => `<img src="${escapeAttr(node.src)}" alt="${escapeAttr(node.alt ?? "")}" />`,
185
+ image: (node, ctx) => {
186
+ if (!isSafeHref(node.src, "image")) {
187
+ ctx.report("image", `unsafe image source dropped (${node.src.slice(0, 40)})`);
188
+ return ctx.escape(node.alt ?? "");
189
+ }
190
+ return `<img src="${escapeAttr(node.src)}" alt="${escapeAttr(node.alt ?? "")}" />`;
191
+ },
170
192
  code: (node, ctx) => `<code>${ctx.escape(node.text)}</code>`,
171
193
  highlight: (node, ctx) => `<mark>${ctx.recurse(node.children)}</mark>`,
172
194
  "footnote-ref": (node) => `<sup><a href="#fn-${node.label}" id="fnref-${node.label}">[${node.label}]</a></sup>`,
@@ -1 +1 @@
1
- {"version":3,"file":"inline.js","sourceRoot":"","sources":["../src/inline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inline.js","sourceRoot":"","sources":["../src/inline.ts"],"names":[],"mappings":"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"}
package/dist/text.d.ts CHANGED
@@ -35,21 +35,108 @@ export declare function normalizeTrailingWhitespace(content: string): string;
35
35
  * use for HTML they cannot represent. Callers should record the degradation.
36
36
  */
37
37
  export declare function stripHtml(html: string): string;
38
- /**
39
- * Convert common INLINE HTML back to markdown.
40
- *
41
- * Importers frequently hand serializers pre-rendered HTML for prose
42
- * (`<code>x</code>`, `<strong>y</strong>`). Passing it through works in
43
- * MDX-ish targets but produces source no human wants to maintain — and the
44
- * point of a migration is clean, editable markdown.
45
- *
46
- * Deliberately conservative: only unambiguous inline tags, non-greedy, and
47
- * block-level markup is left completely alone (a regex cannot restructure
48
- * tables or lists safely). Anything not listed here survives as raw HTML.
49
- */
50
- export declare function inlineHtmlToMarkdown(html: string): string;
38
+ export declare function inlineHtmlToMarkdown(html: string, options?: {
39
+ /** The caller strips the remaining tags (`stripHtml`), so ALL text
40
+ * becomes Markdown and is escaped, block HTML or not. */
41
+ flatten?: boolean;
42
+ }): string;
51
43
  /** Serialize a value as YAML frontmatter scalar, quoting when required. */
52
44
  export declare function yamlScalar(value: string): string;
53
45
  /** Build a YAML frontmatter block from ordered entries. Empty → "". */
54
46
  export declare function frontmatterBlock(entries: Array<[string, string | number | boolean | undefined]>): string;
47
+ /**
48
+ * Text → CommonMark (or MDX) that reads back as the same text.
49
+ *
50
+ * A TreeNode `text` is LITERAL: an importer that met `&lt;script&gt;`, `\*`
51
+ * or `\[x\](…)` in its source stored `<script>`, `*`, `[x](…)`. Written into
52
+ * Markdown unescaped, those become a live element, emphasis and a link —
53
+ * the Docusaurus `.md` export put a spec's `<script>` and a
54
+ * `[x](javascript:…)` link into the site that way.
55
+ *
56
+ * - `<`, `{` and `}` become ENTITIES (`&lt;`, `&#123;`, `&#125;`), which read
57
+ * the same in CommonMark and MDX and which no later MDX pass re-reads. A
58
+ * backslash form did not survive Docusaurus' `sanitizeForMdx`: the text
59
+ * `\{` became `\\{`, a literal backslash and a live expression.
60
+ * - `&` before an entity name becomes `&amp;`.
61
+ * - Backslash, `` ` ``, `*`, `[`, `]`, `~~` and a run of `_` at a word edge
62
+ * are backslash-escaped. Both brackets: an unbalanced `\]` let
63
+ * `[@dependabot[bot]](url)` link the wrong text. A task marker (`[ ]`,
64
+ * `[x]`) starting the text is kept: GFM and Obsidian draw it as a
65
+ * checkbox, and the parser keeps it as text.
66
+ * - A URL written as text keeps its `_` and `\` (GFM autolinks it, and an
67
+ * escape would end up in the href); its brackets and backticks are still
68
+ * escaped.
69
+ *
70
+ * `mdx: true` also escapes a `<` before any non-space character (`<3` is a
71
+ * syntax error in MDX), not only a tag-shaped one, and braces. Without it
72
+ * braces stay, as CommonMark reads them as text.
73
+ */
74
+ export declare function escapeMarkdownText(text: string, options?: {
75
+ mdx?: boolean;
76
+ /**
77
+ * How `<`, `{` and `}` are escaped. `"entity"` (default) reads the same
78
+ * everywhere and survives a later MDX pass (Docusaurus). `"backslash"`
79
+ * (`\<`, `\{`) is easier to read in a file people edit (an Obsidian
80
+ * vault) and is what a target that does not decode entities needs
81
+ * (OpenKnowledge).
82
+ */
83
+ style?: "entity" | "backslash";
84
+ }): string;
85
+ /**
86
+ * May this URL be written as a link or image destination? Not a
87
+ * `javascript:`, `vbscript:` or `data:` URL (a `data:image/` source is
88
+ * allowed for images), however it is cased or padded with control
89
+ * characters and whitespace — browsers strip those before reading the
90
+ * scheme. markdown-it refuses these when it PARSES Markdown; a link node an
91
+ * importer built directly never passed that check.
92
+ */
93
+ export declare function isSafeHref(href: string, kind?: "link" | "image"): boolean;
94
+ /**
95
+ * Markdown from a string we did not write (an OpenAPI description, which
96
+ * the spec defines as CommonMark) made inert where it could run: raw HTML
97
+ * (`<` before a tag name becomes `&lt;`, which still reads `<`) and link or
98
+ * definition destinations with a `javascript:`/`vbscript:`/`data:` scheme
99
+ * (their `](` is escaped, so the text stays and the link goes). The rest of
100
+ * the Markdown is kept.
101
+ */
102
+ export declare function neutralizeMarkdown(md: string): string;
103
+ /**
104
+ * Apply `fn` to the parts of `md` outside inline code spans, leaving the
105
+ * spans as written. Spans are found as CommonMark finds them — a run of N
106
+ * backticks closed by the next run of exactly N, a backslash-escaped
107
+ * backtick opening nothing — in one pass over the runs (a backtracking
108
+ * RegExp took 7.6 s on 50,000 backticks).
109
+ */
110
+ export declare function mapOutsideCodeSpans(md: string, fn: (prose: string) => string): string;
111
+ /**
112
+ * A URL as a Markdown link or image destination that the reader resolves
113
+ * back to the same URL, and that nothing in it can end: `&` becomes `&amp;`
114
+ * (so `javascript&#58;` stays those characters rather than decoding to a
115
+ * scheme), a backslash is escaped, and space, `(`, `)`, `<`, `>` and control
116
+ * characters are percent-encoded (a `)` ended the destination and the rest
117
+ * became live Markdown).
118
+ */
119
+ export declare function markdownDestination(url: string): string;
120
+ /** A link or image title: one line, its quotes and backslashes escaped. */
121
+ export declare function markdownTitle(title: string | undefined): string;
122
+ /**
123
+ * LaTeX for `$…$` / `$$…$$` math read by arithmatex (MkDocs) or Obsidian:
124
+ * an unescaped `$` would close the span early, so it becomes `\$`.
125
+ */
126
+ export declare function markdownLatex(latex: string): string;
127
+ /**
128
+ * Math for remark-math / micromark (Docusaurus, MDX targets), which reads
129
+ * `$` like code: a run of N dollars is closed by a run of N, and `\$` does
130
+ * NOT escape. The delimiter is sized past any run in the LaTeX instead.
131
+ */
132
+ export declare function remarkMath(latex: string, display: boolean): string;
133
+ /**
134
+ * A footnote label every reader accepts, written the same way for the
135
+ * reference and its definition. Injective: other characters are
136
+ * hex-encoded (`note.1` → `note_x2e_1`), not deleted, so `*` and `†` do
137
+ * not collide with footnote 1.
138
+ */
139
+ export declare function footnoteLabel(label: string): string;
140
+ /** An id for `{#id}` or `id="…"`: characters that cannot end either. */
141
+ export declare function safeAnchorId(id: string): string;
55
142
  //# sourceMappingURL=text.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,GAAG,GAAG,GAAS,GAAG,MAAM,CAOjF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED,uEAAuE;AACvE,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAKnE;AAED,+EAA+E;AAC/E,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMnE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkC9C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwBzD;AAkBD,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA8BhD;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC,GAC9D,MAAM,CAQR"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,GAAG,GAAG,GAAS,GAAG,MAAM,CAOjF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED,uEAAuE;AACvE,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAKnE;AAED,+EAA+E;AAC/E,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMnE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkC9C;AAoBD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP;8DAC0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;CACd,GACL,MAAM,CAkDR;AA6BD,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA8BhD;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC,GAC9D,MAAM,CAQR;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,OAAO,CAAC;IACd;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;CAC3B,GACL,MAAM,CA+BR;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,OAAgB,GAAG,OAAO,CAKjF;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAyBrD;AA8BD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAwCrF;AAQD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAE/D;AAYD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAUlE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE/C"}
package/dist/text.js CHANGED
@@ -114,7 +114,12 @@ export function stripHtml(html) {
114
114
  * block-level markup is left completely alone (a regex cannot restructure
115
115
  * tables or lists safely). Anything not listed here survives as raw HTML.
116
116
  */
117
- export function inlineHtmlToMarkdown(html) {
117
+ /** Block-level HTML: its text is not inline Markdown. */
118
+ /** HTML that STARTS an HTML block (CommonMark start condition 6): its text
119
+ * is not read as Markdown. A block tag later in the line is inline HTML,
120
+ * and the text around it is Markdown. */
121
+ const HTML_BLOCK = /^\s*<\/?(?:table|thead|tbody|tr|td|th|pre|div|ul|ol|li|dl|dt|dd|blockquote|h[1-6]|section|details|summary|figure)\b/i;
122
+ export function inlineHtmlToMarkdown(html, options = {}) {
118
123
  // Code spans are converted FIRST and then masked, so the emphasis/link rules
119
124
  // below cannot rewrite markup that is meant to be shown literally
120
125
  // (`<code><b>x</b></code>` must stay `<b>x</b>`, not become `**x**`).
@@ -123,6 +128,24 @@ export function inlineHtmlToMarkdown(html) {
123
128
  masked.push(codeSpanText(inner));
124
129
  return `\u0000CODE${masked.length - 1}\u0000`;
125
130
  });
131
+ // Text between tags is literal: `[x](javascript:…)` or `*x*` written there
132
+ // must not become a link or emphasis in the Markdown. Only when the
133
+ // result stays inline: inside an HTML BLOCK (a table, a <pre>, a <div>)
134
+ // CommonMark processes no escapes, so they would show as backslashes, and
135
+ // no Markdown is read there either. (Text is HTML here: `&lt;` already
136
+ // means `<`, so `&` and `<` are left alone.)
137
+ if (options.flatten || !HTML_BLOCK.test(out)) {
138
+ out = out.replace(/(^|>)([^<>]+)(?=<|$)/g, (_m, lead, text) => lead +
139
+ text
140
+ .replace(/\\/g, "\\\\")
141
+ .replace(/[*[\]]/g, "\\$&")
142
+ // A backtick as an entity: an escaped `\`` is still taken for a
143
+ // code-span delimiter by the MDX passes that mask code, and the
144
+ // braces between two of them were left live.
145
+ .replace(/`/g, "&#96;")
146
+ .replace(/~~/g, "\\~\\~")
147
+ .replace(/_+/g, (run, at, all) => /[A-Za-z0-9]/.test(all[at - 1] ?? "") && /[A-Za-z0-9]/.test(all[at + run.length] ?? "") ? run : run.replace(/_/g, "\\_")));
148
+ }
126
149
  out = out
127
150
  .replace(/<(?:strong|b)>([\s\S]*?)<\/(?:strong|b)>/gi, "**$1**")
128
151
  .replace(/<(?:em|i)>([\s\S]*?)<\/(?:em|i)>/gi, "*$1*")
@@ -131,10 +154,25 @@ export function inlineHtmlToMarkdown(html) {
131
154
  .replace(
132
155
  // `[^>]*` would stop at a `>` inside another attribute value
133
156
  // (`<a href="x" title="a > b">`), so skip quoted runs explicitly.
134
- /<a\s+href="([^"]*)"(?:[^>"']|"[^"]*"|'[^']*')*>([\s\S]*?)<\/a>/gi, (_m, href, text) => `[${text}](${href})`)
157
+ /<a\s+href="([^"]*)"(?:[^>"']|"[^"]*"|'[^']*')*>([\s\S]*?)<\/a>/gi,
158
+ // An unsafe scheme keeps the text and loses the link.
159
+ (_m, href, text) => {
160
+ const url = decodeAttr(href);
161
+ return isSafeHref(url) ? `[${text}](${markdownDestination(url)})` : text;
162
+ })
135
163
  .replace(/<br\s*\/?>/gi, " \n");
136
164
  return out.replace(/\u0000CODE(\d+)\u0000/g, (_m, i) => masked[Number(i)]);
137
165
  }
166
+ /** An HTML attribute value as the browser reads it (entities decoded). */
167
+ function decodeAttr(v) {
168
+ return v
169
+ .replace(/&#x([0-9a-f]+);?/gi, (_m, h) => String.fromCodePoint(parseInt(h, 16)))
170
+ .replace(/&#(\d+);?/g, (_m, d) => String.fromCodePoint(Number(d)))
171
+ .replace(/&colon;/gi, ":")
172
+ .replace(/&tab;/gi, "\t")
173
+ .replace(/&newline;/gi, "\n")
174
+ .replace(/&amp;/gi, "&");
175
+ }
138
176
  /** CommonMark code span (see serialize-core `codeSpan`; duplicated here to keep
139
177
  * text.ts free of an inline.ts import cycle). */
140
178
  function codeSpanText(text) {
@@ -188,4 +226,262 @@ export function frontmatterBlock(entries) {
188
226
  return "";
189
227
  return `---\n${lines.join("\n")}\n---`;
190
228
  }
229
+ /** A URL written as text: GFM autolinks it, so a backslash or `_` escape
230
+ * inside it would land in the href. */
231
+ const URL_TEXT = /\b(?:https?:\/\/|www\.)[^\s<>]+/g;
232
+ /**
233
+ * Text → CommonMark (or MDX) that reads back as the same text.
234
+ *
235
+ * A TreeNode `text` is LITERAL: an importer that met `&lt;script&gt;`, `\*`
236
+ * or `\[x\](…)` in its source stored `<script>`, `*`, `[x](…)`. Written into
237
+ * Markdown unescaped, those become a live element, emphasis and a link —
238
+ * the Docusaurus `.md` export put a spec's `<script>` and a
239
+ * `[x](javascript:…)` link into the site that way.
240
+ *
241
+ * - `<`, `{` and `}` become ENTITIES (`&lt;`, `&#123;`, `&#125;`), which read
242
+ * the same in CommonMark and MDX and which no later MDX pass re-reads. A
243
+ * backslash form did not survive Docusaurus' `sanitizeForMdx`: the text
244
+ * `\{` became `\\{`, a literal backslash and a live expression.
245
+ * - `&` before an entity name becomes `&amp;`.
246
+ * - Backslash, `` ` ``, `*`, `[`, `]`, `~~` and a run of `_` at a word edge
247
+ * are backslash-escaped. Both brackets: an unbalanced `\]` let
248
+ * `[@dependabot[bot]](url)` link the wrong text. A task marker (`[ ]`,
249
+ * `[x]`) starting the text is kept: GFM and Obsidian draw it as a
250
+ * checkbox, and the parser keeps it as text.
251
+ * - A URL written as text keeps its `_` and `\` (GFM autolinks it, and an
252
+ * escape would end up in the href); its brackets and backticks are still
253
+ * escaped.
254
+ *
255
+ * `mdx: true` also escapes a `<` before any non-space character (`<3` is a
256
+ * syntax error in MDX), not only a tag-shaped one, and braces. Without it
257
+ * braces stay, as CommonMark reads them as text.
258
+ */
259
+ export function escapeMarkdownText(text, options = {}) {
260
+ const bs = options.style === "backslash";
261
+ const task = /^\s*\[[ xX]\](?=\s|$)/.exec(text);
262
+ const head = task ? task[0] : "";
263
+ const body = text.slice(head.length);
264
+ const common = (s) => s
265
+ .replace(/&(?=#?[A-Za-z0-9]+;)/g, "&amp;")
266
+ .replace(options.mdx ? /<(?=\S|$)/g : /<(?=[A-Za-z/!?])/g, bs ? "\\<" : "&lt;")
267
+ .replace(options.mdx ? /[{}]/g : /(?!)/g, (b) => (bs ? `\\${b}` : b === "{" ? "&#123;" : "&#125;"))
268
+ .replace(/[[\]]/g, "\\$&")
269
+ .replace(/`/g, bs ? "\\`" : "&#96;")
270
+ // A `$` in text is a dollar, not math: remark-math and MDX passes
271
+ // that mask `$…$` must not see a span (its braces stayed live).
272
+ .replace(/\$/g, bs ? "\\$" : "&#36;");
273
+ const prose = (s) => common(s.replace(/\\/g, "\\\\"))
274
+ .replace(/\*/g, "\\*")
275
+ .replace(/~~/g, "\\~\\~")
276
+ .replace(/_+/g, (run, at, all) => {
277
+ const before = all[at - 1] ?? "";
278
+ const after = all[at + run.length] ?? "";
279
+ return /[A-Za-z0-9]/.test(before) && /[A-Za-z0-9]/.test(after) ? run : run.replace(/_/g, "\\_");
280
+ });
281
+ let out = "";
282
+ let last = 0;
283
+ for (const m of body.matchAll(URL_TEXT)) {
284
+ out += prose(body.slice(last, m.index)) + common(m[0]);
285
+ last = m.index + m[0].length;
286
+ }
287
+ return head + out + prose(body.slice(last));
288
+ }
289
+ /**
290
+ * May this URL be written as a link or image destination? Not a
291
+ * `javascript:`, `vbscript:` or `data:` URL (a `data:image/` source is
292
+ * allowed for images), however it is cased or padded with control
293
+ * characters and whitespace — browsers strip those before reading the
294
+ * scheme. markdown-it refuses these when it PARSES Markdown; a link node an
295
+ * importer built directly never passed that check.
296
+ */
297
+ export function isSafeHref(href, kind = "link") {
298
+ const scheme = href.replace(/[\u0000-\u0020\u007f]+/g, "").toLowerCase();
299
+ if (/^(?:javascript|vbscript):/.test(scheme))
300
+ return false;
301
+ if (/^data:/.test(scheme))
302
+ return kind === "image" && /^data:image\/(?:gif|png|jpeg|webp);/.test(scheme);
303
+ return true;
304
+ }
305
+ /**
306
+ * Markdown from a string we did not write (an OpenAPI description, which
307
+ * the spec defines as CommonMark) made inert where it could run: raw HTML
308
+ * (`<` before a tag name becomes `&lt;`, which still reads `<`) and link or
309
+ * definition destinations with a `javascript:`/`vbscript:`/`data:` scheme
310
+ * (their `](` is escaped, so the text stays and the link goes). The rest of
311
+ * the Markdown is kept.
312
+ */
313
+ export function neutralizeMarkdown(md) {
314
+ // Code is shown, not read: a `<token>` in a code span or fence stays.
315
+ const masked = [];
316
+ const mask = (m) => `\u0000M${masked.push(m) - 1}\u0000`;
317
+ let out = maskFencedCode(md, mask);
318
+ out = mapOutsideCodeSpans(out, (prose) => prose
319
+ // A safe angle-bracket destination is rewritten plain (percent-
320
+ // encoded), so every `<` left can be escaped without exception.
321
+ .replace(/\]\(\s*<([^<>\n]*)>/g, (m, url) => isSafeHref(markdownUrl(url)) ? `](${markdownDestination(markdownUrl(url))}` : `\\](${url}`)
322
+ // A destination whose scheme could run, however it is spelled:
323
+ // entities and backslash escapes decoded first, as the reader does.
324
+ // Escaping the `]` keeps the text and drops the link.
325
+ // (Not one the angle-bracket pass above already escaped: `\](`.)
326
+ .replace(/(?<!\\)\](\(\s*)([^\s)<>]*)/g, (m, open, dest) => isSafeHref(markdownUrl(dest)) ? m : `\\]${open}${dest}`)
327
+ .replace(/^(\s{0,3}\[[^\]\n]*)\](:\s*<?)(\S*)/gm, (m, label, sep, dest) => isSafeHref(markdownUrl(dest)) ? m : `${label}\\]${sep}${dest}`)
328
+ .replace(/<(?=[A-Za-z/!?])/g, "&lt;"));
329
+ return out.replace(/\u0000M(\d+)\u0000/g, (_m, n) => masked[Number(n)]);
330
+ }
331
+ /**
332
+ * Replace each fenced code block (opening line to its closing fence, or to
333
+ * the end) with `mask(block)`. Line by line: a RegExp backtracked
334
+ * quadratically on one long line of backticks.
335
+ */
336
+ function maskFencedCode(md, mask) {
337
+ const lines = md.split("\n");
338
+ const out = [];
339
+ for (let i = 0; i < lines.length; i++) {
340
+ const open = /^ {0,3}(`{3,}|~{3,})/.exec(lines[i]);
341
+ // A backtick fence's info string may not contain a backtick.
342
+ if (!open || (open[1][0] === "`" && lines[i].slice(open[0].length).includes("`"))) {
343
+ out.push(lines[i]);
344
+ continue;
345
+ }
346
+ const fence = open[1];
347
+ let j = i + 1;
348
+ while (j < lines.length) {
349
+ const close = /^ {0,3}(`+|~+)[ \t]*$/.exec(lines[j]);
350
+ if (close && close[1][0] === fence[0] && close[1].length >= fence.length)
351
+ break;
352
+ j++;
353
+ }
354
+ out.push(mask(lines.slice(i, Math.min(j, lines.length - 1) + 1).join("\n")));
355
+ i = j;
356
+ }
357
+ return out.join("\n");
358
+ }
359
+ /**
360
+ * Apply `fn` to the parts of `md` outside inline code spans, leaving the
361
+ * spans as written. Spans are found as CommonMark finds them — a run of N
362
+ * backticks closed by the next run of exactly N, a backslash-escaped
363
+ * backtick opening nothing — in one pass over the runs (a backtracking
364
+ * RegExp took 7.6 s on 50,000 backticks).
365
+ */
366
+ export function mapOutsideCodeSpans(md, fn) {
367
+ const runs = [];
368
+ for (let i = 0; i < md.length;) {
369
+ if (md[i] !== "`") {
370
+ i++;
371
+ continue;
372
+ }
373
+ let j = i;
374
+ while (md[j] === "`")
375
+ j++;
376
+ let bs = 0;
377
+ for (let k = i - 1; k >= 0 && md[k] === "\\"; k--)
378
+ bs++;
379
+ // An escaped first backtick is literal; the rest of the run still counts.
380
+ if (bs % 2) {
381
+ if (j - i > 1)
382
+ runs.push({ at: i + 1, len: j - i - 1 });
383
+ }
384
+ else
385
+ runs.push({ at: i, len: j - i });
386
+ i = j;
387
+ }
388
+ const byLen = new Map();
389
+ runs.forEach((r, n) => {
390
+ const list = byLen.get(r.len);
391
+ if (list)
392
+ list.push(n);
393
+ else
394
+ byLen.set(r.len, [n]);
395
+ });
396
+ const next = new Map(); // len → index into byLen list
397
+ let out = "";
398
+ let from = 0;
399
+ for (let n = 0; n < runs.length; n++) {
400
+ const r = runs[n];
401
+ if (r.at < from)
402
+ continue;
403
+ const list = byLen.get(r.len);
404
+ let k = next.get(r.len) ?? 0;
405
+ while (k < list.length && list[k] <= n)
406
+ k++;
407
+ next.set(r.len, k);
408
+ if (k >= list.length)
409
+ continue; // no closer: literal backticks
410
+ const close = runs[list[k]];
411
+ out += fn(md.slice(from, r.at)) + md.slice(r.at, close.at + close.len);
412
+ from = close.at + close.len;
413
+ n = list[k];
414
+ }
415
+ return out + fn(md.slice(from));
416
+ }
417
+ /** A Markdown destination as the reader resolves it: backslash escapes
418
+ * and character references decoded. */
419
+ function markdownUrl(dest) {
420
+ return decodeAttr(dest.replace(/\\([!-/:-@[-`{-~])/g, "$1"));
421
+ }
422
+ /**
423
+ * A URL as a Markdown link or image destination that the reader resolves
424
+ * back to the same URL, and that nothing in it can end: `&` becomes `&amp;`
425
+ * (so `javascript&#58;` stays those characters rather than decoding to a
426
+ * scheme), a backslash is escaped, and space, `(`, `)`, `<`, `>` and control
427
+ * characters are percent-encoded (a `)` ended the destination and the rest
428
+ * became live Markdown).
429
+ */
430
+ export function markdownDestination(url) {
431
+ return url
432
+ // Only an `&` the reader would decode (`&#58;`, `&amp;`): `Q&A.md` stays.
433
+ .replace(/&(?=#?[A-Za-z0-9]+;)/g, "&amp;")
434
+ .replace(/\\/g, "\\\\")
435
+ .replace(/[\u0000-\u0020\u007f()<>]/g, (c) => "%" + c.charCodeAt(0).toString(16).toUpperCase().padStart(2, "0"));
436
+ }
437
+ /** A link or image title: one line, its quotes and backslashes escaped. */
438
+ export function markdownTitle(title) {
439
+ return title ? ` "${title.replace(/\s*[\r\n]+\s*/g, " ").replace(/["\\]/g, "\\$&")}"` : "";
440
+ }
441
+ /**
442
+ * A tag-shaped `<` in LaTeX becomes `< ` (with a space): inert as HTML,
443
+ * and the same to KaTeX/MathJax in math mode. Where no math plugin is
444
+ * configured the span is plain Markdown, and a `<script>` in the LaTeX was
445
+ * live. (`\lt` broke `\text{a<b}`.)
446
+ */
447
+ function inertLatex(latex) {
448
+ return latex.replace(/<(?=[A-Za-z/!?])/g, "< ");
449
+ }
450
+ /**
451
+ * LaTeX for `$…$` / `$$…$$` math read by arithmatex (MkDocs) or Obsidian:
452
+ * an unescaped `$` would close the span early, so it becomes `\$`.
453
+ */
454
+ export function markdownLatex(latex) {
455
+ return inertLatex(latex).replace(/(\\*)\$/g, (m, bs) => (bs.length % 2 ? m : `${bs}\\$`));
456
+ }
457
+ /**
458
+ * Math for remark-math / micromark (Docusaurus, MDX targets), which reads
459
+ * `$` like code: a run of N dollars is closed by a run of N, and `\$` does
460
+ * NOT escape. The delimiter is sized past any run in the LaTeX instead.
461
+ */
462
+ export function remarkMath(latex, display) {
463
+ const tex = inertLatex(latex);
464
+ const longest = Math.max(0, ...[...tex.matchAll(/\$+/g)].map((m) => m[0].length));
465
+ if (display) {
466
+ const fence = "$".repeat(Math.max(2, longest + 1));
467
+ return `${fence}\n${tex}\n${fence}`;
468
+ }
469
+ const fence = "$".repeat(longest + 1);
470
+ const pad = /^\$|\$$/.test(tex) ? " " : "";
471
+ return `${fence}${pad}${tex}${pad}${fence}`;
472
+ }
473
+ /**
474
+ * A footnote label every reader accepts, written the same way for the
475
+ * reference and its definition. Injective: other characters are
476
+ * hex-encoded (`note.1` → `note_x2e_1`), not deleted, so `*` and `†` do
477
+ * not collide with footnote 1.
478
+ */
479
+ export function footnoteLabel(label) {
480
+ const out = String(label).replace(/[^A-Za-z0-9-]|_/g, (c) => `_x${c.codePointAt(0).toString(16)}_`);
481
+ return out || "1";
482
+ }
483
+ /** An id for `{#id}` or `id="…"`: characters that cannot end either. */
484
+ export function safeAnchorId(id) {
485
+ return id.replace(/[^\w.:-]/g, "-");
486
+ }
191
487
  //# sourceMappingURL=text.js.map
package/dist/text.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,YAAuB,GAAG;IACvE,MAAM,EAAE,GAAG,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7C,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QACzC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG;YAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACnD,CAAC;IACD,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/C,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG;YAAE,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACnD,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,MAAM,CAAC,OAAe,EAAE,MAAc;IACpD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,OAAO;SACX,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACjD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,MAAc;IACzD,OAAO,OAAO;SACX,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;SAC7D,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,2BAA2B,CAAC,OAAe;IACzD,OAAO,OAAO;SACX,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;SAC1C,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI;SACR,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;SAC7B,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC;QACtC,wEAAwE;QACxE,yEAAyE;QACzE,yEAAyE;QACzE,8DAA8D;SAC7D,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QACzB,wEAAwE;QACxE,uEAAuE;QACvE,mDAAmD;QACnD,EAAE;QACF,wEAAwE;QACxE,sEAAsE;QACtE,wEAAwE;QACxE,uEAAuE;SACtE,OAAO,CAAC,sCAAsC,EAAE,CAAC,GAAG,EAAE,EAAE;QACvD,MAAM,GAAG,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;eAC9C,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;eAC9C,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,CAAC;IAC7D,CAAC,CAAC;QACF,qFAAqF;SACpF,OAAO,CAAC,kDAAkD,EAAE,EAAE,CAAC;SAC/D,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,6EAA6E;IAC7E,kEAAkE;IAClE,sEAAsE;IACtE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC,EAAE,EAAE,KAAa,EAAE,EAAE;QACzE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QACjC,OAAO,aAAa,MAAM,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,GAAG,GAAG,GAAG;SACN,OAAO,CAAC,4CAA4C,EAAE,QAAQ,CAAC;SAC/D,OAAO,CAAC,oCAAoC,EAAE,MAAM,CAAC;SACrD,OAAO,CAAC,oDAAoD,EAAE,QAAQ,CAAC;SACvE,OAAO,CAAC,4BAA4B,EAAE,QAAQ,CAAC;SAC/C,OAAO;IACN,6DAA6D;IAC7D,kEAAkE;IAClE,kEAAkE,EAClE,CAAC,EAAE,EAAE,IAAY,EAAE,IAAY,EAAE,EAAE,CAAC,IAAI,IAAI,KAAK,IAAI,GAAG,CACzD;SACA,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAEnC,OAAO,GAAG,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,EAAE,EAAE,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrF,CAAC;AAED;kDACkD;AAClD,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAC9C,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EACvD,CAAC,CACF,CAAC;IACF,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,QAAQ,GACZ,IAAI,CAAC,MAAM,KAAK,CAAC;QACjB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAChC,OAAO,GAAG,KAAK,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC;AAC/C,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,UAAU;IACd,oCAAoC;IACpC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC,gDAAgD;QAChD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QACnB,yCAAyC;QACzC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACpB,wEAAwE;QACxE,0EAA0E;QAC1E,qCAAqC;QACrC,wCAAwC,CAAC,IAAI,CAAC,KAAK,CAAC;QACpD,sDAAsD,CAAC,IAAI,CAAC,KAAK,CAAC;QAClE,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC;QACpC,qEAAqE;QACrE,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;QACnC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,UAAU,EAAE,CAAC;QACf,uEAAuE;QACvE,uEAAuE;QACvE,iBAAiB;QACjB,OAAO,IAAI,KAAK;aACb,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;aACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;aACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;aACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,gBAAgB,CAC9B,OAA+D;IAE/D,MAAM,KAAK,GAAG,OAAO;SAClB,MAAM,CAAC,CAAC,CAAC,EAA4C,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;SAC3E,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACpB,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAChF,CAAC;IACJ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,OAAO,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dogsbay/serialize-core",
3
- "version": "0.2.0-beta.115",
3
+ "version": "0.2.0-beta.116",
4
4
  "description": "Shared serializer core — shape-tolerant TreeNode reads, a generic inline walker, fence/indent utilities, and the export capability ledger every format exporter builds on",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -18,12 +18,11 @@
18
18
  "devDependencies": {
19
19
  "@types/node": "^25.9.5",
20
20
  "typescript": "^5.9.3",
21
- "vitest": "^4.1.10",
22
- "@dogsbay/format-dogsbay-md": "0.2.0-beta.115"
21
+ "vitest": "^4.1.10"
23
22
  },
24
23
  "license": "MIT",
25
24
  "dependencies": {
26
- "@dogsbay/types": "0.2.0-beta.115"
25
+ "@dogsbay/types": "0.2.0-beta.116"
27
26
  },
28
27
  "repository": {
29
28
  "type": "git",