@dogsbay/format-mdx 0.2.0-beta.12 → 0.2.0-beta.121

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/adapter.d.ts +159 -0
  2. package/dist/adapter.d.ts.map +1 -0
  3. package/dist/adapter.js +95 -0
  4. package/dist/adapter.js.map +1 -0
  5. package/dist/cli.d.ts.map +1 -1
  6. package/dist/cli.js +269 -19
  7. package/dist/cli.js.map +1 -1
  8. package/dist/extract.d.ts +32 -0
  9. package/dist/extract.d.ts.map +1 -0
  10. package/dist/extract.js +152 -0
  11. package/dist/extract.js.map +1 -0
  12. package/dist/fumadocs.d.ts +48 -0
  13. package/dist/fumadocs.d.ts.map +1 -0
  14. package/dist/fumadocs.js +472 -0
  15. package/dist/fumadocs.js.map +1 -0
  16. package/dist/index.d.ts +11 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +11 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/js-scan.d.ts +35 -0
  21. package/dist/js-scan.d.ts.map +1 -0
  22. package/dist/js-scan.js +124 -0
  23. package/dist/js-scan.js.map +1 -0
  24. package/dist/meta-nav.d.ts +29 -0
  25. package/dist/meta-nav.d.ts.map +1 -0
  26. package/dist/meta-nav.js +194 -0
  27. package/dist/meta-nav.js.map +1 -0
  28. package/dist/mintlify-nav.d.ts +31 -0
  29. package/dist/mintlify-nav.d.ts.map +1 -0
  30. package/dist/mintlify-nav.js +418 -0
  31. package/dist/mintlify-nav.js.map +1 -0
  32. package/dist/mintlify-openapi.d.ts +109 -0
  33. package/dist/mintlify-openapi.d.ts.map +1 -0
  34. package/dist/mintlify-openapi.js +363 -0
  35. package/dist/mintlify-openapi.js.map +1 -0
  36. package/dist/mintlify.d.ts +3 -0
  37. package/dist/mintlify.d.ts.map +1 -0
  38. package/dist/mintlify.js +196 -0
  39. package/dist/mintlify.js.map +1 -0
  40. package/dist/nav-extract.d.ts +43 -0
  41. package/dist/nav-extract.d.ts.map +1 -0
  42. package/dist/nav-extract.js +135 -0
  43. package/dist/nav-extract.js.map +1 -0
  44. package/dist/parse.d.ts +100 -4
  45. package/dist/parse.d.ts.map +1 -1
  46. package/dist/parse.js +1231 -150
  47. package/dist/parse.js.map +1 -1
  48. package/dist/ts-type-block.d.ts +43 -0
  49. package/dist/ts-type-block.d.ts.map +1 -0
  50. package/dist/ts-type-block.js +164 -0
  51. package/dist/ts-type-block.js.map +1 -0
  52. package/package.json +10 -8
@@ -0,0 +1,472 @@
1
+ /**
2
+ * Fumadocs adapter — component mappings for the Fumadocs UI vocabulary
3
+ * (fumadocs.dev), plus built-in named handlers for common per-docset
4
+ * components layered on top of Fumadocs (e.g. better-auth's <APIMethod>).
5
+ *
6
+ * Generic builtins already cover Callout/Tabs/Steps/Cards/Accordion-style
7
+ * tags; this adapter adds the Fumadocs-specific pieces: TypeTable,
8
+ * Files/File/Folder trees, Accordions, <Link> unwrapping, Banner,
9
+ * ImageZoom.
10
+ *
11
+ * Everything here is static structural mapping — no JSX execution, ever.
12
+ */
13
+ import { inlineToDogsbayMd } from "@dogsbay/format-dogsbay-md";
14
+ import { parseTsTypeBlock } from "./ts-type-block.js";
15
+ import { splitTopLevel } from "./js-scan.js";
16
+ // ── <APIMethod> → endpoint (built-in named handler) ──────
17
+ /**
18
+ * Map an `<APIMethod path method …>` block onto dogsbay's `endpoint`
19
+ * vocabulary (the format-openapi node rendered by EndpointCard /
20
+ * ParameterTable / ApiLayout and serialized agent-readably by
21
+ * format-dogsbay-md's renderEndpoint).
22
+ *
23
+ * The TS type block inside the fence is parsed with parseTsTypeBlock —
24
+ * the same deterministic line-based grammar better-auth's own component
25
+ * applies client-side. The declared type name becomes `clientMethod`
26
+ * (the authClient call name); parsed properties become parameters /
27
+ * request-body rows. The original fence rides along as a code sample,
28
+ * so nothing is lost even when a nuance doesn't parse. Parse failure →
29
+ * "preserve" (mdx-raw + ledger) — never guess.
30
+ */
31
+ /** "/two-factor/enable" → "twoFactor.enable" (kebab segments → camelCase). */
32
+ function pathToDotNotation(path) {
33
+ return path
34
+ .split("/")
35
+ .filter(Boolean)
36
+ .map((segment) => segment
37
+ .split("-")
38
+ .map((word, i) => i === 0 ? word.toLowerCase() : word.charAt(0).toUpperCase() + word.slice(1))
39
+ .join(""))
40
+ .join(".");
41
+ }
42
+ /**
43
+ * Generate the client call-site example the same way better-auth's own
44
+ * component does at runtime:
45
+ *
46
+ * const { data, error } = await authClient.twoFactor.enable({
47
+ * password: "secure-password", // required
48
+ * });
49
+ *
50
+ * Server-only props are skipped; GET-style calls wrap the props in a
51
+ * `query` object; nested object props open/close by path depth.
52
+ */
53
+ function buildClientCallSample(path, props, opts) {
54
+ const indent = (n) => " ".repeat(n);
55
+ const base = opts.asQuery ? 2 : 1;
56
+ let body = "";
57
+ const visible = props.filter((p) => !p.serverOnly);
58
+ for (let i = 0; i < visible.length; i++) {
59
+ const p = visible[i];
60
+ const comment = p.optional ? "" : " // required";
61
+ if (p.type === "Object") {
62
+ body += `${indent(p.path.length + base)}${p.name}: {${comment}\n`;
63
+ }
64
+ else {
65
+ const value = p.example ? `: ${p.example}` : "";
66
+ body += `${indent(p.path.length + base)}${p.name}${value},${comment}\n`;
67
+ }
68
+ // Close nested objects when depth decreases
69
+ const nextDepth = visible[i + 1]?.path.length ?? 0;
70
+ for (let d = p.path.length + (p.type === "Object" ? 1 : 0); d > nextDepth; d--) {
71
+ body += `${indent(d - 1 + base)}},\n`;
72
+ }
73
+ }
74
+ const args = body
75
+ ? opts.asQuery
76
+ ? `{\n${indent(1)}query: {\n${body}${indent(1)}},\n}`
77
+ : `{\n${body}}`
78
+ : "";
79
+ const assign = opts.noResult ? "" : `const ${opts.resultVariable} = `;
80
+ return `${assign}await authClient.${pathToDotNotation(path)}(${args});`;
81
+ }
82
+ export const apiMethodMapping = {
83
+ type: "endpoint",
84
+ container: true,
85
+ toNode: (attrs, innerSource) => {
86
+ const fence = innerSource.match(/```[^\n]*\n([\s\S]*?)\n[ \t]*```/);
87
+ if (!fence)
88
+ return "preserve";
89
+ const code = fence[1];
90
+ const parsed = parseTsTypeBlock(code);
91
+ if (!parsed)
92
+ return "preserve";
93
+ const method = (attrs.method || "GET").toUpperCase();
94
+ const path = attrs.path || "";
95
+ const notes = [];
96
+ if (attrs.note)
97
+ notes.push(attrs.note);
98
+ if (attrs.requireSession === "true")
99
+ notes.push("Requires an active session.");
100
+ if (attrs.requireBearerToken === "true")
101
+ notes.push("Requires a Bearer token.");
102
+ if (attrs.requireHeaders === "true") {
103
+ notes.push(attrs.headersComment || "Requires request headers to be passed.");
104
+ }
105
+ if (attrs.isServerOnly === "true")
106
+ notes.push("Server-side API only.");
107
+ if (attrs.isClientOnly === "true")
108
+ notes.push("Client SDK only.");
109
+ const asQuery = attrs.forceAsQuery === "true" ||
110
+ attrs.forceAsParam === "true" ||
111
+ (method === "GET" && attrs.forceAsBody !== "true");
112
+ const rows = parsed.props.map((p) => {
113
+ const flags = [];
114
+ if (p.serverOnly)
115
+ flags.push("server-only");
116
+ if (p.clientOnly)
117
+ flags.push("client-only");
118
+ const description = [p.description, flags.length ? `(${flags.join(", ")})` : ""]
119
+ .filter(Boolean)
120
+ .join(" ");
121
+ return {
122
+ name: [...p.path, p.name].join("."),
123
+ type: p.type,
124
+ required: !p.optional,
125
+ nullable: p.nullable || undefined,
126
+ description: description || undefined,
127
+ // Display form: `"secure-password"` (source text) → secure-password
128
+ example: p.example !== undefined ? displayValue(p.example) : undefined,
129
+ };
130
+ });
131
+ const props = {
132
+ method,
133
+ path,
134
+ clientMethod: parsed.name,
135
+ };
136
+ if (notes.length > 0)
137
+ props.description = notes.join(" ");
138
+ if (rows.length > 0) {
139
+ if (asQuery) {
140
+ props.parameters = rows.map((r) => ({
141
+ name: r.name,
142
+ in: "query",
143
+ type: r.type,
144
+ required: r.required,
145
+ description: r.description,
146
+ }));
147
+ }
148
+ else {
149
+ props.requestBody = rows;
150
+ }
151
+ }
152
+ // Generated call-site example — the same snippet better-auth's own
153
+ // component builds at runtime (client SDK method from the path,
154
+ // example values, // required comments, query wrap for GET).
155
+ // Server-only endpoints have no client call; they keep just the
156
+ // type block.
157
+ const samples = [];
158
+ if (attrs.isServerOnly !== "true") {
159
+ samples.push({
160
+ language: "ts",
161
+ label: "Client example",
162
+ code: buildClientCallSample(path, parsed.props, {
163
+ asQuery,
164
+ resultVariable: attrs.resultVariable || "{ data, error }",
165
+ noResult: attrs.noResult === "true",
166
+ }),
167
+ });
168
+ }
169
+ // Full-fidelity fallback channel: the original TS block rides along.
170
+ samples.push({ language: "ts", label: "Types", code });
171
+ props.codeSamples = samples;
172
+ return { type: "endpoint", props };
173
+ },
174
+ };
175
+ // ── <DatabaseTable> → table (built-in named handler) ─────
176
+ /**
177
+ * Map a `<DatabaseTable name fields={…}>` schema table onto a real table.
178
+ * `fields` is an array of `{name, type, description, isPrimaryKey?,
179
+ * isForeignKey?, isOptional?, isUnique?, references?: {model, field}}` —
180
+ * either inline or (the common shape) a same-file `export const`
181
+ * identifier resolved via ctx.moduleData. Static parsing only; anything
182
+ * that doesn't scan is preserved raw + ledgered.
183
+ */
184
+ export const databaseTableMapping = {
185
+ type: "table",
186
+ container: false,
187
+ toNode: (attrs, _inner, ctx) => {
188
+ const fieldsExpr = resolveAttrExpr(attrs.fields, ctx.moduleData);
189
+ if (!fieldsExpr)
190
+ return "preserve";
191
+ const elements = parseJsArrayElements(fieldsExpr);
192
+ if (!elements || elements.length === 0)
193
+ return "preserve";
194
+ const rows = [];
195
+ for (const element of elements) {
196
+ const entries = parseJsObjectEntries(element);
197
+ if (!entries)
198
+ return "preserve";
199
+ const f = Object.fromEntries(entries);
200
+ const name = f.name ? displayValue(f.name) : "";
201
+ const type = f.type ? displayValue(f.type) : "";
202
+ const description = f.description ? displayValue(f.description) : "";
203
+ const marks = [];
204
+ if (f.isPrimaryKey === "true")
205
+ marks.push("PK");
206
+ if (f.isForeignKey === "true")
207
+ marks.push("FK");
208
+ if (f.isUnique === "true")
209
+ marks.push("unique");
210
+ if (f.isOptional === "true")
211
+ marks.push("optional");
212
+ if (f.references) {
213
+ const ref = parseJsObjectEntries(f.references);
214
+ if (ref) {
215
+ const r = Object.fromEntries(ref);
216
+ if (r.model && r.field) {
217
+ marks.push(`→ ${displayValue(r.model)}.${displayValue(r.field)}`);
218
+ }
219
+ }
220
+ }
221
+ rows.push({
222
+ type: "tr",
223
+ children: [
224
+ cell(`<code>${escapeHtml(name)}</code>`),
225
+ cell(type ? `<code>${escapeHtml(type)}</code>` : ""),
226
+ cell(escapeHtml(marks.join(", "))),
227
+ cell(escapeHtml(description)),
228
+ ],
229
+ });
230
+ }
231
+ const node = {
232
+ type: "table",
233
+ children: [
234
+ {
235
+ type: "thead",
236
+ children: [{
237
+ type: "tr",
238
+ children: [cell("Field", true), cell("Type", true), cell("Key", true), cell("Description", true)],
239
+ }],
240
+ },
241
+ { type: "tbody", children: rows },
242
+ ],
243
+ };
244
+ // A caption is inline Markdown; the type table's name is plain text
245
+ if (attrs.name)
246
+ node.props = { caption: inlineToDogsbayMd([{ type: "text", text: String(attrs.name) }]) };
247
+ return node;
248
+ },
249
+ };
250
+ // ── <Resource resources={[…]}> → cards (built-in named handler) ──
251
+ /**
252
+ * Map a component carrying an inline array of link resources
253
+ * (`resources={[{title, description, href, tags}]}` — better-auth's
254
+ * `<Resource>`) onto a cards grid. The array may also be a same-file
255
+ * `export const` identifier (resolved via ctx.moduleData).
256
+ */
257
+ export const resourceCardsMapping = {
258
+ type: "cards",
259
+ container: false,
260
+ toNode: (attrs, _inner, ctx) => {
261
+ const raw = resolveAttrExpr(attrs.resources, ctx.moduleData) ??
262
+ resolveAttrExpr(attrs.items, ctx.moduleData) ??
263
+ resolveAttrExpr(attrs.data, ctx.moduleData);
264
+ if (!raw)
265
+ return "preserve";
266
+ const elements = parseJsArrayElements(raw);
267
+ if (!elements || elements.length === 0)
268
+ return "preserve";
269
+ const cards = [];
270
+ for (const element of elements) {
271
+ const entries = parseJsObjectEntries(element);
272
+ if (!entries)
273
+ return "preserve";
274
+ const o = Object.fromEntries(entries);
275
+ const title = o.title ?? o.name;
276
+ if (!title)
277
+ return "preserve";
278
+ const props = { title: displayValue(title) };
279
+ if (o.description)
280
+ props.description = displayValue(o.description);
281
+ const href = o.href ?? o.url ?? o.link;
282
+ if (href)
283
+ props.href = displayValue(href);
284
+ cards.push({ type: "card", props });
285
+ }
286
+ return { type: "cards", children: cards };
287
+ },
288
+ };
289
+ /** Built-in named handlers resolvable from declarative per-docset config. */
290
+ export const MDX_BUILTIN_HANDLERS = {
291
+ "api-method": apiMethodMapping,
292
+ "database-table": databaseTableMapping,
293
+ "resource-cards": resourceCardsMapping,
294
+ };
295
+ // ── <TypeTable> → table ──────────────────────────────────
296
+ function cell(html, header = false) {
297
+ return { type: header ? "th" : "td", children: [{ type: "prose", html }] };
298
+ }
299
+ function escapeHtml(s) {
300
+ return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
301
+ }
302
+ /**
303
+ * Parse the entries of a JS object literal WITHOUT executing it: returns
304
+ * [key, rawValue] pairs at one nesting level. Values are raw source spans
305
+ * (balanced braces/brackets/parens, quote-aware with JSX-text tolerance —
306
+ * see js-scan.ts). Returns null on anything that doesn't scan as
307
+ * `key: value, …`.
308
+ */
309
+ export function parseJsObjectEntries(src) {
310
+ let s = src.trim();
311
+ if (s.startsWith("{") && s.endsWith("}"))
312
+ s = s.slice(1, -1);
313
+ const pieces = splitTopLevel(s);
314
+ if (!pieces)
315
+ return null;
316
+ const entries = [];
317
+ for (const piece of pieces) {
318
+ // key: identifier, "quoted", or 'quoted' — then `: value`
319
+ const m = /^\s*(?:([\w$-]+)|"([^"]*)"|'([^']*)')\s*:\s*([\s\S]*)$/.exec(piece);
320
+ if (!m)
321
+ return null;
322
+ const key = m[1] ?? m[2] ?? m[3];
323
+ entries.push([key, m[4].trim()]);
324
+ }
325
+ return entries;
326
+ }
327
+ /**
328
+ * Split a JS array literal into top-level element spans (quote/bracket
329
+ * aware with JSX-text tolerance — see js-scan.ts; no execution).
330
+ * Returns null when the text doesn't scan.
331
+ */
332
+ export function parseJsArrayElements(src) {
333
+ const s = src.trim();
334
+ if (!s.startsWith("[") || !s.endsWith("]"))
335
+ return null;
336
+ return splitTopLevel(s.slice(1, -1));
337
+ }
338
+ /** Unquote a raw JS value for display; non-literals pass through as source. */
339
+ function displayValue(raw) {
340
+ const t = raw.trim();
341
+ const m = t.match(/^(["'`])([\s\S]*)\1$/);
342
+ return m ? m[2] : t;
343
+ }
344
+ /**
345
+ * Resolve an attribute expression: a literal passes through; a bare
346
+ * identifier resolves against the file's `export const` capture
347
+ * (ctx.moduleData). Returns null when unresolvable.
348
+ */
349
+ function resolveAttrExpr(expr, moduleData) {
350
+ if (!expr)
351
+ return null;
352
+ const t = expr.trim();
353
+ if (/^[\w$]+$/.test(t))
354
+ return moduleData[t] ?? null;
355
+ return t;
356
+ }
357
+ const typeTableMapping = {
358
+ type: "table",
359
+ container: false,
360
+ toNode: (attrs, _inner, ctx) => {
361
+ const obj = resolveAttrExpr(attrs.type, ctx.moduleData);
362
+ if (!obj)
363
+ return "preserve";
364
+ const entries = parseJsObjectEntries(obj);
365
+ if (!entries || entries.length === 0)
366
+ return "preserve";
367
+ const rows = [];
368
+ for (const [prop, rawValue] of entries) {
369
+ const fields = parseJsObjectEntries(rawValue);
370
+ if (!fields)
371
+ return "preserve";
372
+ const byKey = Object.fromEntries(fields);
373
+ const typeText = byKey.type ? displayValue(byKey.type) : "";
374
+ const descText = byKey.description ? displayValue(byKey.description) : "";
375
+ const defaultText = byKey.default ? displayValue(byKey.default) : "";
376
+ rows.push({
377
+ type: "tr",
378
+ children: [
379
+ cell(`<code>${escapeHtml(prop)}</code>`),
380
+ cell(typeText ? `<code>${escapeHtml(typeText)}</code>` : ""),
381
+ cell(escapeHtml(descText)),
382
+ cell(defaultText ? `<code>${escapeHtml(defaultText)}</code>` : ""),
383
+ ],
384
+ });
385
+ }
386
+ return {
387
+ type: "table",
388
+ children: [
389
+ {
390
+ type: "thead",
391
+ children: [{
392
+ type: "tr",
393
+ children: [cell("Prop", true), cell("Type", true), cell("Description", true), cell("Default", true)],
394
+ }],
395
+ },
396
+ { type: "tbody", children: rows },
397
+ ],
398
+ };
399
+ },
400
+ };
401
+ // ── <Files>/<Folder>/<File> → nested list ────────────────
402
+ const filesMapping = {
403
+ type: "unordered-list",
404
+ container: true,
405
+ toNode: (_attrs, innerSource, ctx) => {
406
+ const items = ctx.parseBlocks(innerSource).filter((n) => n.type === "list-item");
407
+ if (items.length === 0)
408
+ return "preserve";
409
+ return { type: "unordered-list", children: items };
410
+ },
411
+ };
412
+ const folderMapping = {
413
+ type: "list-item",
414
+ container: true,
415
+ toNode: (attrs, innerSource, ctx) => {
416
+ const name = attrs.name || attrs.title || "";
417
+ const items = ctx.parseBlocks(innerSource).filter((n) => n.type === "list-item");
418
+ const children = [
419
+ { type: "prose", html: `<strong>${escapeHtml(name)}/</strong>` },
420
+ ];
421
+ if (items.length > 0)
422
+ children.push({ type: "unordered-list", children: items });
423
+ return { type: "list-item", children };
424
+ },
425
+ };
426
+ const fileMapping = {
427
+ type: "list-item",
428
+ container: false,
429
+ toNode: (attrs) => ({
430
+ type: "list-item",
431
+ children: [{ type: "prose", html: `<code>${escapeHtml(attrs.name || attrs.title || "")}</code>` }],
432
+ }),
433
+ };
434
+ // ── The adapter ──────────────────────────────────────────
435
+ export const fumadocsAdapter = {
436
+ name: "fumadocs",
437
+ components: {
438
+ // Fumadocs cards container is <Cards>, not <CardGroup>
439
+ Cards: { type: "cards", container: true },
440
+ // Fumadocs accordions — dogsbay has first-class accordion nodes
441
+ Accordions: { type: "accordion", container: true },
442
+ Accordion: {
443
+ type: "accordion-item",
444
+ container: true,
445
+ propsFromAttrs: (attrs) => ({ title: attrs.title || "", id: attrs.id }),
446
+ },
447
+ Banner: {
448
+ type: "callout",
449
+ container: true,
450
+ propsFromAttrs: (attrs) => ({
451
+ variant: attrs.variant === "rainbow" ? "info" : attrs.variant || "info",
452
+ }),
453
+ },
454
+ TypeTable: typeTableMapping,
455
+ Files: filesMapping,
456
+ Folder: folderMapping,
457
+ File: fileMapping,
458
+ ImageZoom: {
459
+ type: "image",
460
+ container: false,
461
+ propsFromAttrs: (attrs) => ({ src: attrs.src, alt: attrs.alt }),
462
+ },
463
+ // Auto-generated from source/OpenAPI at build time — nothing static to keep
464
+ AutoTypeTable: { type: "", container: false, strip: true },
465
+ },
466
+ selfClosingTags: ["TypeTable", "File", "ImageZoom", "AutoTypeTable"],
467
+ inlineTransforms: [
468
+ // <Link href="/x">text</Link> → [text](/x) — next/link passthrough
469
+ [/<Link\s+[^>]*?href=\{?["']([^"'}]+)["']\}?[^>]*?>([\s\S]*?)<\/Link>/g, "[$2]($1)"],
470
+ ],
471
+ };
472
+ //# sourceMappingURL=fumadocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fumadocs.js","sourceRoot":"","sources":["../src/fumadocs.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,13 @@
1
- export { mdxToTree, extractHeadings } from "./parse.js";
1
+ export { mdxToTree, parseMdx, parseAttrs, extractHeadings, type MdxParseOptions, type MdxParseResult, } from "./parse.js";
2
+ export { compileComponentConfig, type ComponentMapping, type ComponentHandlerContext, type ChildrenPolicy, type MdxAdapter, type MdxLedgerEntry, type MdxComponentConfig, type MdxPreprocessContext, } from "./adapter.js";
3
+ export { fumadocsAdapter, apiMethodMapping, databaseTableMapping, resourceCardsMapping, MDX_BUILTIN_HANDLERS, parseJsObjectEntries, parseJsArrayElements, } from "./fumadocs.js";
4
+ export { mintlifyAdapter } from "./mintlify.js";
5
+ export { makeExtractMapping, type ExtractSpec } from "./extract.js";
6
+ export { parseTsTypeBlock, type TsTypeBlock, type TsTypeProp, } from "./ts-type-block.js";
7
+ export { buildFumadocsNav, detectFumadocsDir, type FumadocsNavOptions, } from "./meta-nav.js";
8
+ export { buildMintlifyNav, detectMintlifyDir, type MintlifyNavOptions, mintlifyRedirects, } from "./mintlify-nav.js";
9
+ export { mintlifyOpenApiSpecRef, buildMintlifyEndpointMap, openApiPageKey, } from "./mintlify-openapi.js";
10
+ export { extractNavFromTsx, extractNavFromTsxFile, type NavExtractOptions, } from "./nav-extract.js";
11
+ export { scanBalancedLiteral, splitTopLevel, isQuoteStart, captureConstLiteral, displayJsValue, } from "./js-scan.js";
2
12
  export type { TreeNode, InlineNode, ExportPage, NavItem } from "@dogsbay/types";
3
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACxD,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,QAAQ,EACR,UAAU,EACV,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,sBAAsB,EACtB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACL,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,UAAU,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,iBAAiB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,12 @@
1
- export { mdxToTree, extractHeadings } from "./parse.js";
1
+ export { mdxToTree, parseMdx, parseAttrs, extractHeadings, } from "./parse.js";
2
+ export { compileComponentConfig, } from "./adapter.js";
3
+ export { fumadocsAdapter, apiMethodMapping, databaseTableMapping, resourceCardsMapping, MDX_BUILTIN_HANDLERS, parseJsObjectEntries, parseJsArrayElements, } from "./fumadocs.js";
4
+ export { mintlifyAdapter } from "./mintlify.js";
5
+ export { makeExtractMapping } from "./extract.js";
6
+ export { parseTsTypeBlock, } from "./ts-type-block.js";
7
+ export { buildFumadocsNav, detectFumadocsDir, } from "./meta-nav.js";
8
+ export { buildMintlifyNav, detectMintlifyDir, mintlifyRedirects, } from "./mintlify-nav.js";
9
+ export { mintlifyOpenApiSpecRef, buildMintlifyEndpointMap, openApiPageKey, } from "./mintlify-openapi.js";
10
+ export { extractNavFromTsx, extractNavFromTsxFile, } from "./nav-extract.js";
11
+ export { scanBalancedLiteral, splitTopLevel, isQuoteStart, captureConstLiteral, displayJsValue, } from "./js-scan.js";
2
12
  //# 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,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,QAAQ,EACR,UAAU,EACV,eAAe,GAGhB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,sBAAsB,GAQvB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAoB,MAAM,cAAc,CAAC;AACpE,OAAO,EACL,gBAAgB,GAGjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,GAElB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAEjB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,GAEtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,cAAc,GACf,MAAM,cAAc,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Shared quote/bracket-aware scanning helpers for statically reading JS/TSX
3
+ * data literals — no execution, ever.
4
+ *
5
+ * The one subtlety: apostrophes and quotes inside JSX TEXT content are not
6
+ * string delimiters (`<p>';--</p>` — better-auth's actual SQL-joke icon —
7
+ * breaks a naive tracker). A quote only OPENS a string in a value position:
8
+ * when the previous non-whitespace character is one that can precede a JS
9
+ * expression (`= ( [ { , : ? & | ! ;` or a `=>` arrow) or at the start of
10
+ * the scanned span. A bare `>` (JSX tag close) is NOT a value position —
11
+ * that is exactly where JSX text apostrophes live.
12
+ */
13
+ /** Is src[i] a quote that starts a string (value position)? */
14
+ export declare function isQuoteStart(src: string, i: number, spanStart: number): boolean;
15
+ /**
16
+ * Scan a balanced literal starting at src[start] (which must be at or
17
+ * before the opening `{`/`[`/`(`). Returns the end index (exclusive, past
18
+ * the closing bracket) or -1 when the span never balances.
19
+ */
20
+ export declare function scanBalancedLiteral(src: string, start: number): number;
21
+ /**
22
+ * Capture the right-hand-side literal of a `const NAME = …` /
23
+ * `export const NAME = …` declaration (type annotations tolerated).
24
+ * Returns the raw literal text or null.
25
+ */
26
+ export declare function captureConstLiteral(source: string, name: string): string | null;
27
+ /** Unquote a raw JS value for display; non-literals pass through as source. */
28
+ export declare function displayJsValue(raw: string): string;
29
+ /**
30
+ * Split the top level of a balanced span into comma-separated pieces.
31
+ * `src` must already be the INNER text (without the outer brackets).
32
+ * Returns null when the span doesn't scan.
33
+ */
34
+ export declare function splitTopLevel(src: string): string[] | null;
35
+ //# sourceMappingURL=js-scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-scan.d.ts","sourceRoot":"","sources":["../src/js-scan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,+DAA+D;AAC/D,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAU/E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAkBtE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU/E;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAwB1D"}