jamdesk 1.1.59 → 1.1.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/deps.d.ts.map +1 -1
- package/dist/lib/deps.js +2 -1
- package/dist/lib/deps.js.map +1 -1
- package/dist/lib/frontmatter-utils.d.ts.map +1 -1
- package/dist/lib/frontmatter-utils.js +29 -2
- package/dist/lib/frontmatter-utils.js.map +1 -1
- package/package.json +1 -1
- package/vendored/components/mdx/ZoomableImage.tsx +3 -13
- package/vendored/lib/frontmatter-utils.ts +29 -2
- package/vendored/lib/mdx.ts +2 -1
- package/vendored/lib/preprocess-mdx.ts +12 -14
- package/vendored/lib/remark-svg-namespace-attrs.ts +160 -0
- package/vendored/lib/render-doc-page.tsx +49 -24
- package/vendored/scripts/build-search-index.cjs +28 -6
- package/vendored/workspace-package-lock.json +11 -10
- package/vendored/components/mdx/ImagePriorityProvider.tsx +0 -53
package/dist/lib/deps.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/lib/deps.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsBH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/lib/deps.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsBH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoEhD,CAAC;AA0CF;;;;;;;;;GASG;AACH,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAalB;AAiHD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,EAChB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,CAAC,CAyBjB;AAiMD;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
|
package/dist/lib/deps.js
CHANGED
|
@@ -72,7 +72,8 @@ export const REQUIRED_DEPS = {
|
|
|
72
72
|
'@babel/standalone': '^7.29.0',
|
|
73
73
|
// AST utilities (for rehype/remark plugins)
|
|
74
74
|
'unified': '^11.0.0',
|
|
75
|
-
'unist-util-visit': '^5.
|
|
75
|
+
'unist-util-visit': '^5.1.0',
|
|
76
|
+
'estree-util-visit': '^2.0.0',
|
|
76
77
|
// CSS
|
|
77
78
|
'tailwindcss': '^4.2.4',
|
|
78
79
|
'@tailwindcss/postcss': '^4.2.4',
|
package/dist/lib/deps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/lib/deps.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/lib/deps.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter-utils.d.ts","sourceRoot":"","sources":["../../src/lib/frontmatter-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"frontmatter-utils.d.ts","sourceRoot":"","sources":["../../src/lib/frontmatter-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAwD7D;AAkBD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG;IAExD,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;CACjB,CAIA"}
|
|
@@ -23,7 +23,8 @@ export function preprocessFrontmatter(content) {
|
|
|
23
23
|
const frontmatter = content.slice(3, frontmatterEnd - endMatch[0].length);
|
|
24
24
|
const body = content.slice(frontmatterEnd);
|
|
25
25
|
// Process each line of frontmatter
|
|
26
|
-
const
|
|
26
|
+
const lines = frontmatter.split('\n');
|
|
27
|
+
const fixedLines = lines.map((line, i) => {
|
|
27
28
|
// Skip empty lines and comments
|
|
28
29
|
if (!line.trim() || line.trim().startsWith('#'))
|
|
29
30
|
return line;
|
|
@@ -40,6 +41,12 @@ export function preprocessFrontmatter(content) {
|
|
|
40
41
|
// Skip if value looks like a nested object or array
|
|
41
42
|
if (value.startsWith('{') || value.startsWith('['))
|
|
42
43
|
return line;
|
|
44
|
+
// Skip if the value continues on the next line as an indented folded scalar
|
|
45
|
+
// (no explicit `|`/`>`). Quote-wrapping would orphan the continuation as an
|
|
46
|
+
// unindented mapping entry and break gray-matter parsing — YAML handles
|
|
47
|
+
// inline colons natively in folded scalars.
|
|
48
|
+
if (hasFoldedContinuation(lines, i))
|
|
49
|
+
return line;
|
|
43
50
|
// Fix YAML tags like !Jamdesk by removing the tag
|
|
44
51
|
let fixedValue = value.replace(/^![a-zA-Z][a-zA-Z0-9_-]*\s*/, '');
|
|
45
52
|
// If value contains a colon (not at end), wrap in quotes
|
|
@@ -50,7 +57,27 @@ export function preprocessFrontmatter(content) {
|
|
|
50
57
|
}
|
|
51
58
|
return `${indent}${key}: ${fixedValue}`;
|
|
52
59
|
});
|
|
53
|
-
|
|
60
|
+
// Preserve the original closing delimiter (incl. its trailing newline) so the
|
|
61
|
+
// first body line stays on its own row. Glueing it to `'\n---'` corrupted files
|
|
62
|
+
// with no blank line between frontmatter and the first JSX block, producing
|
|
63
|
+
// `---<Info>` and tripping MDX's "expected closing tag" validator.
|
|
64
|
+
return '---\n' + fixedLines.join('\n') + endMatch[0] + body;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* True if the value on `lines[i]` continues onto a subsequent indented line
|
|
68
|
+
* (a YAML folded scalar without an explicit `|` or `>` indicator). The next
|
|
69
|
+
* non-blank line must be indented and must NOT itself look like a sibling key.
|
|
70
|
+
*/
|
|
71
|
+
function hasFoldedContinuation(lines, i) {
|
|
72
|
+
for (let j = i + 1; j < lines.length; j++) {
|
|
73
|
+
const next = lines[j];
|
|
74
|
+
if (!next.trim())
|
|
75
|
+
continue;
|
|
76
|
+
const isIndented = /^\s/.test(next);
|
|
77
|
+
const looksLikeSiblingKey = /^\s*[a-zA-Z_][a-zA-Z0-9_]*:/.test(next);
|
|
78
|
+
return isIndented && !looksLikeSiblingKey;
|
|
79
|
+
}
|
|
80
|
+
return false;
|
|
54
81
|
}
|
|
55
82
|
/**
|
|
56
83
|
* Parse frontmatter with lenient preprocessing.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter-utils.js","sourceRoot":"","sources":["../../src/lib/frontmatter-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,mCAAmC;IACnC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAE/C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC1D,IAAI,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAC;IAE9B,MAAM,cAAc,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAChE,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAE3C,mCAAmC;IACnC,MAAM,
|
|
1
|
+
{"version":3,"file":"frontmatter-utils.js","sourceRoot":"","sources":["../../src/lib/frontmatter-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jamdesk",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.60",
|
|
4
4
|
"description": "CLI for Jamdesk — build, preview, and deploy documentation sites from MDX. Dev server with hot reload, 50+ components, OpenAPI support, AI search, and Mintlify migration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jamdesk",
|
|
@@ -30,17 +30,6 @@ export function ZoomableImage({
|
|
|
30
30
|
}: ZoomableImageProps) {
|
|
31
31
|
const [isZoomed, setIsZoomed] = useState(false);
|
|
32
32
|
|
|
33
|
-
// Default to lazy loading. We deliberately do NOT auto-promote the first
|
|
34
|
-
// image to eager/high — React 19 SSR emits a preload <link> + Flight HL
|
|
35
|
-
// hint for every non-lazy image. When <Link prefetch> fetches a sibling
|
|
36
|
-
// page's RSC payload, those HL hints get replayed into the current page's
|
|
37
|
-
// <head>, producing "preloaded but not used" warnings for images that
|
|
38
|
-
// exist on a different page. Docs pages are text-LCP, not image-LCP, so
|
|
39
|
-
// the LCP cost of lazy-loading is negligible. Authors can still opt into
|
|
40
|
-
// eager+high explicitly via props.
|
|
41
|
-
const effectiveLoading = loading || 'lazy';
|
|
42
|
-
const effectivePriority = fetchPriority;
|
|
43
|
-
|
|
44
33
|
useBodyScrollLock(isZoomed);
|
|
45
34
|
|
|
46
35
|
const handleClick = useCallback(() => {
|
|
@@ -71,9 +60,10 @@ export function ZoomableImage({
|
|
|
71
60
|
height={height}
|
|
72
61
|
className={`${className} ${noZoom ? '' : 'md:cursor-zoom-in'}`}
|
|
73
62
|
style={style}
|
|
74
|
-
|
|
63
|
+
// Default lazy — see addLazyLoadingToRawImg in lib/preprocess-mdx.ts
|
|
64
|
+
loading={loading || 'lazy'}
|
|
75
65
|
decoding={decoding || 'async'}
|
|
76
|
-
fetchPriority={
|
|
66
|
+
fetchPriority={fetchPriority}
|
|
77
67
|
onClick={handleClick}
|
|
78
68
|
/>
|
|
79
69
|
|
|
@@ -27,7 +27,8 @@ export function preprocessFrontmatter(content: string): string {
|
|
|
27
27
|
const body = content.slice(frontmatterEnd);
|
|
28
28
|
|
|
29
29
|
// Process each line of frontmatter
|
|
30
|
-
const
|
|
30
|
+
const lines = frontmatter.split('\n');
|
|
31
|
+
const fixedLines = lines.map((line, i) => {
|
|
31
32
|
// Skip empty lines and comments
|
|
32
33
|
if (!line.trim() || line.trim().startsWith('#')) return line;
|
|
33
34
|
|
|
@@ -46,6 +47,12 @@ export function preprocessFrontmatter(content: string): string {
|
|
|
46
47
|
// Skip if value looks like a nested object or array
|
|
47
48
|
if (value.startsWith('{') || value.startsWith('[')) return line;
|
|
48
49
|
|
|
50
|
+
// Skip if the value continues on the next line as an indented folded scalar
|
|
51
|
+
// (no explicit `|`/`>`). Quote-wrapping would orphan the continuation as an
|
|
52
|
+
// unindented mapping entry and break gray-matter parsing — YAML handles
|
|
53
|
+
// inline colons natively in folded scalars.
|
|
54
|
+
if (hasFoldedContinuation(lines, i)) return line;
|
|
55
|
+
|
|
49
56
|
// Fix YAML tags like !Jamdesk by removing the tag
|
|
50
57
|
let fixedValue = value.replace(/^![a-zA-Z][a-zA-Z0-9_-]*\s*/, '');
|
|
51
58
|
|
|
@@ -59,7 +66,27 @@ export function preprocessFrontmatter(content: string): string {
|
|
|
59
66
|
return `${indent}${key}: ${fixedValue}`;
|
|
60
67
|
});
|
|
61
68
|
|
|
62
|
-
|
|
69
|
+
// Preserve the original closing delimiter (incl. its trailing newline) so the
|
|
70
|
+
// first body line stays on its own row. Glueing it to `'\n---'` corrupted files
|
|
71
|
+
// with no blank line between frontmatter and the first JSX block, producing
|
|
72
|
+
// `---<Info>` and tripping MDX's "expected closing tag" validator.
|
|
73
|
+
return '---\n' + fixedLines.join('\n') + endMatch[0] + body;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* True if the value on `lines[i]` continues onto a subsequent indented line
|
|
78
|
+
* (a YAML folded scalar without an explicit `|` or `>` indicator). The next
|
|
79
|
+
* non-blank line must be indented and must NOT itself look like a sibling key.
|
|
80
|
+
*/
|
|
81
|
+
function hasFoldedContinuation(lines: string[], i: number): boolean {
|
|
82
|
+
for (let j = i + 1; j < lines.length; j++) {
|
|
83
|
+
const next = lines[j];
|
|
84
|
+
if (!next.trim()) continue;
|
|
85
|
+
const isIndented = /^\s/.test(next);
|
|
86
|
+
const looksLikeSiblingKey = /^\s*[a-zA-Z_][a-zA-Z0-9_]*:/.test(next);
|
|
87
|
+
return isIndented && !looksLikeSiblingKey;
|
|
88
|
+
}
|
|
89
|
+
return false;
|
|
63
90
|
}
|
|
64
91
|
|
|
65
92
|
/**
|
package/vendored/lib/mdx.ts
CHANGED
|
@@ -7,6 +7,7 @@ import remarkGfm from 'remark-gfm';
|
|
|
7
7
|
import type { MDXRemoteSerializeResult } from 'next-mdx-remote';
|
|
8
8
|
import { getContentDir } from './docs';
|
|
9
9
|
import { mdxSecurityOptions } from './mdx-security-options';
|
|
10
|
+
import { remarkSvgNamespaceAttrs } from './remark-svg-namespace-attrs';
|
|
10
11
|
import { getShikiOptions } from './shiki-config';
|
|
11
12
|
|
|
12
13
|
export interface DocFrontmatter {
|
|
@@ -44,7 +45,7 @@ export async function getDocContent(slug: string[]): Promise<DocContent | null>
|
|
|
44
45
|
// Keep expression props (e.g. cols={2}) compatible under next-mdx-remote v6.
|
|
45
46
|
...mdxSecurityOptions,
|
|
46
47
|
mdxOptions: {
|
|
47
|
-
remarkPlugins: [remarkGfm],
|
|
48
|
+
remarkPlugins: [remarkGfm, remarkSvgNamespaceAttrs],
|
|
48
49
|
rehypePlugins: [[rehypeShiki, shikiOptions]],
|
|
49
50
|
},
|
|
50
51
|
scope: data,
|
|
@@ -822,22 +822,20 @@ function normalizeMarkdownImageUrl(url: string, assetVersion?: string): string |
|
|
|
822
822
|
* Add `loading="lazy"` to raw <img> JSX in MDX that doesn't already specify
|
|
823
823
|
* `loading` or `fetchPriority`.
|
|
824
824
|
*
|
|
825
|
-
* Why: raw JSX <img> bypasses the MDXComponents provider
|
|
826
|
-
*
|
|
827
|
-
*
|
|
828
|
-
*
|
|
829
|
-
*
|
|
830
|
-
*
|
|
831
|
-
* "preloaded but not used within a few seconds" console warnings for images
|
|
832
|
-
* that belong to a different page.
|
|
825
|
+
* Why: raw JSX <img> bypasses the MDXComponents provider, and React 19's
|
|
826
|
+
* react-dom-server auto-emits a `<link rel="preload" as="image">` for any
|
|
827
|
+
* non-lazy <img> rendered server-side (especially when fetchPriority="high"
|
|
828
|
+
* is set). On a docs page the preloaded screenshot is rarely the LCP
|
|
829
|
+
* element, so it expires the few-second usage window and Chrome fires
|
|
830
|
+
* "preloaded using link preload but not used within a few seconds".
|
|
833
831
|
*
|
|
834
|
-
* Adding `loading="lazy"` opts out of React
|
|
835
|
-
*
|
|
836
|
-
*
|
|
832
|
+
* Adding `loading="lazy"` opts out of React's auto-preload. Authors who
|
|
833
|
+
* genuinely want eager loading can add `loading="eager"` or
|
|
834
|
+
* `fetchPriority="high"` explicitly.
|
|
837
835
|
*
|
|
838
836
|
* Markdown image syntax () is unaffected — those go through
|
|
839
|
-
* MDXComponents.img → ZoomableImage, which
|
|
840
|
-
*
|
|
837
|
+
* MDXComponents.img → ZoomableImage, which now also defaults to
|
|
838
|
+
* `loading="lazy"` (see ZoomableImage.tsx).
|
|
841
839
|
*/
|
|
842
840
|
export function addLazyLoadingToRawImg(content: string): string {
|
|
843
841
|
return transformOutsideCodeBlocks(content, addLazyLoadingToRawImgInText);
|
|
@@ -876,7 +874,7 @@ function transformImageDimensionsInText(text: string): string {
|
|
|
876
874
|
const escapedAlt = (alt as string).replace(/"/g, '"');
|
|
877
875
|
// Use <SizedImage> (registered in MDXComponents) instead of raw <img>.
|
|
878
876
|
// Raw <img> JSX in MDX bypasses the component provider, so these images
|
|
879
|
-
// wouldn't get ZoomableImage
|
|
877
|
+
// wouldn't get ZoomableImage's zoom-on-click + lazy-loading defaults.
|
|
880
878
|
const attrs = [`src="${url}"`, `alt="${escapedAlt}"`];
|
|
881
879
|
|
|
882
880
|
if (width) attrs.push(`width="${width}"`);
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* remark-svg-namespace-attrs
|
|
3
|
+
*
|
|
4
|
+
* MDX AST plugin that rewrites XML/xlink namespaced attributes on JSX
|
|
5
|
+
* elements (typically raw inline SVGs from design-tool exports) to React's
|
|
6
|
+
* camelCase form. Without this, React logs `Invalid DOM property
|
|
7
|
+
* `xmlns:xlink`. Did you mean `xmlnsXlink`?` for every render of a page
|
|
8
|
+
* containing such SVGs.
|
|
9
|
+
*
|
|
10
|
+
* After the rename, React's known XML namespace mapping serializes the prop
|
|
11
|
+
* back to its colon-form on the actual DOM, so SVG behavior is preserved.
|
|
12
|
+
*
|
|
13
|
+
* Two AST shapes carry namespaced JSX attrs in MDX:
|
|
14
|
+
* 1. mdast JSX nodes (`mdxJsxFlowElement`, `mdxJsxTextElement`) — top-level
|
|
15
|
+
* `<svg xmlns:xlink="…">` in the doc body. Attributes are flat strings
|
|
16
|
+
* with the colon embedded (`attr.name === 'xmlns:xlink'`).
|
|
17
|
+
* 2. estree JSX nodes inside expression containers
|
|
18
|
+
* (`mdxJsxAttributeValueExpression` for `<Card icon={<svg ...>}>`,
|
|
19
|
+
* `mdxFlowExpression` / `mdxTextExpression` for `{<svg .../>}` blocks).
|
|
20
|
+
* Attributes use `JSXNamespacedName` (`{ namespace, name }`) AST nodes.
|
|
21
|
+
*
|
|
22
|
+
* Both shapes need handling because Mintlify-migrated docs commonly nest
|
|
23
|
+
* SVGs inside Card icon attributes — pattern (2) — while hand-written
|
|
24
|
+
* inline SVGs use pattern (1).
|
|
25
|
+
*
|
|
26
|
+
* Allowlist below matches the React DOM property table: every entry is an
|
|
27
|
+
* attribute React explicitly maps. See:
|
|
28
|
+
* https://github.com/facebook/react/blob/main/packages/react-dom-bindings/src/shared/DOMProperty.js
|
|
29
|
+
* (search for `xlink` / `xml` / `xmlns`). Do not extend this list with attrs
|
|
30
|
+
* React doesn't map (e.g. `xml:id`) — they would still warn.
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
import type { Root } from 'mdast';
|
|
34
|
+
import type { MdxJsxFlowElement, MdxJsxTextElement } from 'mdast-util-mdx-jsx';
|
|
35
|
+
import type { MdxFlowExpression, MdxTextExpression } from 'mdast-util-mdx-expression';
|
|
36
|
+
import type { MdxjsEsm } from 'mdast-util-mdxjs-esm';
|
|
37
|
+
import { visit } from 'unist-util-visit';
|
|
38
|
+
import { visit as visitEstree } from 'estree-util-visit';
|
|
39
|
+
import type {
|
|
40
|
+
Program,
|
|
41
|
+
JSXOpeningElement,
|
|
42
|
+
JSXIdentifier,
|
|
43
|
+
JSXMemberExpression,
|
|
44
|
+
JSXNamespacedName,
|
|
45
|
+
} from 'estree-jsx';
|
|
46
|
+
import { logger } from '../shared/logger.js';
|
|
47
|
+
|
|
48
|
+
const NAMESPACE_ATTR_RENAMES: Record<string, string> = {
|
|
49
|
+
'xmlns:xlink': 'xmlnsXlink',
|
|
50
|
+
'xlink:href': 'xlinkHref',
|
|
51
|
+
'xlink:title': 'xlinkTitle',
|
|
52
|
+
'xlink:role': 'xlinkRole',
|
|
53
|
+
'xlink:arcrole': 'xlinkArcrole',
|
|
54
|
+
'xlink:show': 'xlinkShow',
|
|
55
|
+
'xlink:actuate': 'xlinkActuate',
|
|
56
|
+
'xlink:type': 'xlinkType',
|
|
57
|
+
'xml:lang': 'xmlLang',
|
|
58
|
+
'xml:space': 'xmlSpace',
|
|
59
|
+
'xml:base': 'xmlBase',
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const CAMEL_NAMES = new Set(Object.values(NAMESPACE_ATTR_RENAMES));
|
|
63
|
+
|
|
64
|
+
function warn(elementName: string, colonForm: string, camel: string): void {
|
|
65
|
+
logger.warn(
|
|
66
|
+
`[remark-svg-namespace-attrs] <${elementName}> has both ${colonForm} and ${camel}; dropping ${colonForm}.`,
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** Rewrite namespaced attributes on an mdast JSX element. */
|
|
71
|
+
function rewriteMdastAttrs(node: MdxJsxFlowElement | MdxJsxTextElement): void {
|
|
72
|
+
const existingCamel = new Set<string>();
|
|
73
|
+
for (const attr of node.attributes) {
|
|
74
|
+
if (attr.type !== 'mdxJsxAttribute') continue;
|
|
75
|
+
if (CAMEL_NAMES.has(attr.name)) existingCamel.add(attr.name);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
node.attributes = node.attributes.filter((attr) => {
|
|
79
|
+
if (attr.type !== 'mdxJsxAttribute') return true;
|
|
80
|
+
const camel = NAMESPACE_ATTR_RENAMES[attr.name];
|
|
81
|
+
if (!camel) return true;
|
|
82
|
+
if (existingCamel.has(camel)) {
|
|
83
|
+
warn(node.name ?? '', attr.name, camel);
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
attr.name = camel;
|
|
87
|
+
return true;
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function jsxName(nameNode: JSXIdentifier | JSXMemberExpression | JSXNamespacedName): string {
|
|
92
|
+
if (nameNode.type === 'JSXIdentifier') return nameNode.name;
|
|
93
|
+
if (nameNode.type === 'JSXNamespacedName') return `${nameNode.namespace.name}:${nameNode.name.name}`;
|
|
94
|
+
return jsxName(nameNode.object) + '.' + jsxName(nameNode.property);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** Rewrite namespaced attributes on a single estree JSX opening element. */
|
|
98
|
+
function rewriteJsxOpening(opening: JSXOpeningElement): void {
|
|
99
|
+
const elementName = jsxName(opening.name);
|
|
100
|
+
const existingCamel = new Set<string>();
|
|
101
|
+
for (const attr of opening.attributes) {
|
|
102
|
+
if (attr.type === 'JSXAttribute' && attr.name.type === 'JSXIdentifier') {
|
|
103
|
+
if (CAMEL_NAMES.has(attr.name.name)) existingCamel.add(attr.name.name);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
opening.attributes = opening.attributes.filter((attr) => {
|
|
108
|
+
if (attr.type !== 'JSXAttribute') return true;
|
|
109
|
+
if (attr.name.type !== 'JSXNamespacedName') return true;
|
|
110
|
+
const colonForm = `${attr.name.namespace.name}:${attr.name.name.name}`;
|
|
111
|
+
const camel = NAMESPACE_ATTR_RENAMES[colonForm];
|
|
112
|
+
if (!camel) return true;
|
|
113
|
+
if (existingCamel.has(camel)) {
|
|
114
|
+
warn(elementName, colonForm, camel);
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
attr.name = { type: 'JSXIdentifier', name: camel };
|
|
118
|
+
return true;
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function rewriteEstreeProgram(estree: Program | null | undefined): void {
|
|
123
|
+
if (!estree) return;
|
|
124
|
+
visitEstree(estree, (node) => {
|
|
125
|
+
if (node.type === 'JSXElement') {
|
|
126
|
+
rewriteJsxOpening(node.openingElement);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export function remarkSvgNamespaceAttrs() {
|
|
132
|
+
return (tree: Root) => {
|
|
133
|
+
visit(
|
|
134
|
+
tree,
|
|
135
|
+
['mdxJsxFlowElement', 'mdxJsxTextElement', 'mdxFlowExpression', 'mdxTextExpression', 'mdxjsEsm'],
|
|
136
|
+
(node) => {
|
|
137
|
+
if (node.type === 'mdxJsxFlowElement' || node.type === 'mdxJsxTextElement') {
|
|
138
|
+
const jsxNode = node as MdxJsxFlowElement | MdxJsxTextElement;
|
|
139
|
+
rewriteMdastAttrs(jsxNode);
|
|
140
|
+
// Also walk estree subtrees inside attribute value expressions —
|
|
141
|
+
// this is where SVGs inside e.g. <Card icon={<svg .../>}> live.
|
|
142
|
+
for (const attr of jsxNode.attributes) {
|
|
143
|
+
if (attr.type !== 'mdxJsxAttribute') continue;
|
|
144
|
+
const value = attr.value;
|
|
145
|
+
if (value && typeof value === 'object' && value.type === 'mdxJsxAttributeValueExpression') {
|
|
146
|
+
rewriteEstreeProgram(value.data?.estree);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
} else {
|
|
150
|
+
// mdxFlowExpression / mdxTextExpression — body-level `{...}` blocks.
|
|
151
|
+
// mdxjsEsm — top-level `import`/`export` declarations whose JSX
|
|
152
|
+
// (e.g. `export const Icon = () => <svg.../>`) lives only in estree.
|
|
153
|
+
rewriteEstreeProgram(
|
|
154
|
+
(node as MdxFlowExpression | MdxTextExpression | MdxjsEsm).data?.estree,
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
);
|
|
159
|
+
};
|
|
160
|
+
}
|
|
@@ -24,11 +24,14 @@ import { ApiPageWrapper } from '@/components/mdx/ApiPage';
|
|
|
24
24
|
import { OpenApiEndpoint } from '@/components/mdx/OpenApiEndpoint';
|
|
25
25
|
import { OpenApiError } from '@/components/openapi/OpenApiError';
|
|
26
26
|
import { getHighlighter } from '@/lib/shiki-highlighter';
|
|
27
|
+
import type { Highlighter } from 'shiki';
|
|
28
|
+
import type { Pluggable } from 'unified';
|
|
27
29
|
import { createShikiRehypePlugin } from '@/lib/shiki-config';
|
|
28
30
|
import rehypeSlug from 'rehype-slug';
|
|
29
31
|
import remarkGfm from 'remark-gfm';
|
|
30
32
|
import { rehypeCodeMeta, rehypeRestoreDataTitle } from '@/lib/rehype-code-meta';
|
|
31
33
|
import { rehypeClassToClassName } from '@/lib/rehype-class-to-classname';
|
|
34
|
+
import { remarkSvgNamespaceAttrs } from '@/lib/remark-svg-namespace-attrs';
|
|
32
35
|
import { rehypeNoZoomToData } from '@/lib/rehype-nozoom-to-data';
|
|
33
36
|
import { preprocessMdx, containsPanel, containsView, buildSnippetAliasMap } from '@/lib/preprocess-mdx';
|
|
34
37
|
import { loadSnippetsForIsr } from '@/lib/snippet-loader-isr';
|
|
@@ -71,7 +74,6 @@ import { extractLanguageFromPath, isValidLanguageCode } from '@/lib/language-uti
|
|
|
71
74
|
import { findFirstNavPage } from '@/lib/find-first-nav-page';
|
|
72
75
|
import { candidateSpecPaths } from '@/lib/openapi/lang-spec-path';
|
|
73
76
|
import { ApiEndpoint } from '@/components/mdx/ApiEndpoint';
|
|
74
|
-
import { ImagePriorityProvider } from '@/components/mdx/ImagePriorityProvider';
|
|
75
77
|
import { AIActionsMenu } from '@/components/AIActionsMenu';
|
|
76
78
|
import { getContextualOptions } from '@/lib/contextual-defaults';
|
|
77
79
|
import { SnippetComponents } from '@/components/snippets/ProjectSnippets';
|
|
@@ -80,6 +82,35 @@ type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTION
|
|
|
80
82
|
|
|
81
83
|
const DEFAULT_SITE_URL = 'https://docs.example.com';
|
|
82
84
|
|
|
85
|
+
/**
|
|
86
|
+
* Build the shared remark/rehype plugin lists used by both the API-page and
|
|
87
|
+
* docs-page MDXRemote call sites below. Only the plugin pipeline is shared;
|
|
88
|
+
* `recmaPlugins` and per-site MDXRemote options stay at the call sites.
|
|
89
|
+
*/
|
|
90
|
+
function getCommonMdxOptions(
|
|
91
|
+
config: DocsConfig,
|
|
92
|
+
highlighter: Highlighter,
|
|
93
|
+
): { remarkPlugins: Pluggable[]; rehypePlugins: Pluggable[] } {
|
|
94
|
+
return {
|
|
95
|
+
remarkPlugins: [
|
|
96
|
+
remarkGfm,
|
|
97
|
+
[remarkVisibility, { audience: 'humans' }],
|
|
98
|
+
remarkSvgNamespaceAttrs,
|
|
99
|
+
...getTypographyRemarkPlugins(config),
|
|
100
|
+
...getLatexRemarkPlugins(config),
|
|
101
|
+
],
|
|
102
|
+
rehypePlugins: [
|
|
103
|
+
rehypeNoZoomToData,
|
|
104
|
+
rehypeClassToClassName,
|
|
105
|
+
rehypeCodeMeta,
|
|
106
|
+
createShikiRehypePlugin(highlighter, config),
|
|
107
|
+
rehypeRestoreDataTitle,
|
|
108
|
+
...getLatexRehypePlugins(config),
|
|
109
|
+
rehypeSlug,
|
|
110
|
+
],
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
|
|
83
114
|
export interface RenderInput {
|
|
84
115
|
slug: string[];
|
|
85
116
|
projectSlug: string | null;
|
|
@@ -490,24 +521,21 @@ export async function renderDocPage(input: RenderInput): Promise<ReactElement> {
|
|
|
490
521
|
<OpenApiError message={openApiError} slug={slug.join('/')} />
|
|
491
522
|
)}
|
|
492
523
|
|
|
493
|
-
<
|
|
494
|
-
<
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
/>
|
|
509
|
-
</StepSlugProvider>
|
|
510
|
-
</ImagePriorityProvider>
|
|
524
|
+
<StepSlugProvider entries={stepEntries}>
|
|
525
|
+
<MDXRemote
|
|
526
|
+
source={openApiEndpointData
|
|
527
|
+
? content.replace(/<ResponseExample>[\s\S]*?<\/ResponseExample>/g, '')
|
|
528
|
+
: content}
|
|
529
|
+
components={AllComponentsWithInline}
|
|
530
|
+
options={{
|
|
531
|
+
...mdxSecurityOptions,
|
|
532
|
+
mdxOptions: {
|
|
533
|
+
...getCommonMdxOptions(config, highlighter),
|
|
534
|
+
recmaPlugins: [recmaCompoundComponents],
|
|
535
|
+
},
|
|
536
|
+
}}
|
|
537
|
+
/>
|
|
538
|
+
</StepSlugProvider>
|
|
511
539
|
</div>
|
|
512
540
|
|
|
513
541
|
<PageNavigation currentSlug={slug.join('/')} config={config} />
|
|
@@ -525,8 +553,7 @@ export async function renderDocPage(input: RenderInput): Promise<ReactElement> {
|
|
|
525
553
|
options={{
|
|
526
554
|
...mdxSecurityOptions,
|
|
527
555
|
mdxOptions: {
|
|
528
|
-
|
|
529
|
-
rehypePlugins: [rehypeNoZoomToData, rehypeClassToClassName, rehypeCodeMeta, createShikiRehypePlugin(highlighter, config), rehypeRestoreDataTitle, ...getLatexRehypePlugins(config), rehypeSlug],
|
|
556
|
+
...getCommonMdxOptions(config, highlighter),
|
|
530
557
|
recmaPlugins: [recmaCompoundComponents],
|
|
531
558
|
},
|
|
532
559
|
}}
|
|
@@ -557,9 +584,7 @@ export async function renderDocPage(input: RenderInput): Promise<ReactElement> {
|
|
|
557
584
|
)}
|
|
558
585
|
|
|
559
586
|
<div className={proseClasses}>
|
|
560
|
-
<
|
|
561
|
-
{hasView ? <ViewWrapper>{mdxContent}</ViewWrapper> : mdxContent}
|
|
562
|
-
</ImagePriorityProvider>
|
|
587
|
+
{hasView ? <ViewWrapper>{mdxContent}</ViewWrapper> : mdxContent}
|
|
563
588
|
|
|
564
589
|
<PageNavigation currentSlug={slug.join('/')} config={config} isWideMode={isWideMode || hasPanel} />
|
|
565
590
|
</div>
|
|
@@ -95,7 +95,8 @@ function preprocessFrontmatter(content) {
|
|
|
95
95
|
const frontmatter = content.slice(3, frontmatterEnd - endMatch[0].length);
|
|
96
96
|
const body = content.slice(frontmatterEnd);
|
|
97
97
|
|
|
98
|
-
const
|
|
98
|
+
const lines = frontmatter.split('\n');
|
|
99
|
+
const fixedLines = lines.map((line, i) => {
|
|
99
100
|
if (!line.trim() || line.trim().startsWith('#')) return line;
|
|
100
101
|
|
|
101
102
|
const match = line.match(/^(\s*)([a-zA-Z_][a-zA-Z0-9_]*):\s*(.*)$/);
|
|
@@ -109,6 +110,9 @@ function preprocessFrontmatter(content) {
|
|
|
109
110
|
|
|
110
111
|
if (value.startsWith('{') || value.startsWith('[')) return line;
|
|
111
112
|
|
|
113
|
+
// YAML folded scalar continuation — quote-wrapping orphans the next line.
|
|
114
|
+
if (hasFoldedContinuation(lines, i)) return line;
|
|
115
|
+
|
|
112
116
|
let fixedValue = value.replace(/^![a-zA-Z][a-zA-Z0-9_-]*\s*/, '');
|
|
113
117
|
|
|
114
118
|
if (fixedValue.includes(':') && !fixedValue.endsWith(':')) {
|
|
@@ -118,7 +122,21 @@ function preprocessFrontmatter(content) {
|
|
|
118
122
|
return `${indent}${key}: ${fixedValue}`;
|
|
119
123
|
});
|
|
120
124
|
|
|
121
|
-
|
|
125
|
+
// Preserve endMatch[0]'s trailing newline so the closing delimiter doesn't
|
|
126
|
+
// get glued to the first body line. Mirror of frontmatter-utils.ts.
|
|
127
|
+
return '---\n' + fixedLines.join('\n') + endMatch[0] + body;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/** Mirror of hasFoldedContinuation in lib/frontmatter-utils.ts. */
|
|
131
|
+
function hasFoldedContinuation(lines, i) {
|
|
132
|
+
for (let j = i + 1; j < lines.length; j++) {
|
|
133
|
+
const next = lines[j];
|
|
134
|
+
if (!next.trim()) continue;
|
|
135
|
+
const isIndented = /^\s/.test(next);
|
|
136
|
+
const looksLikeSiblingKey = /^\s*[a-zA-Z_][a-zA-Z0-9_]*:/.test(next);
|
|
137
|
+
return isIndented && !looksLikeSiblingKey;
|
|
138
|
+
}
|
|
139
|
+
return false;
|
|
122
140
|
}
|
|
123
141
|
|
|
124
142
|
/**
|
|
@@ -411,7 +429,11 @@ async function buildOramaIndex(searchData, outputDir) {
|
|
|
411
429
|
console.log(`✓ Built Orama index for MCP server`);
|
|
412
430
|
}
|
|
413
431
|
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
432
|
+
if (require.main === module) {
|
|
433
|
+
buildSearchIndex().catch(err => {
|
|
434
|
+
console.error('Error building search index:', err);
|
|
435
|
+
process.exit(1);
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
module.exports = { preprocessFrontmatter, parseFrontmatterLenient };
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"ajv": "^8.17.1",
|
|
29
29
|
"ajv-formats": "^3.0.1",
|
|
30
30
|
"autoprefixer": "^10.4.24",
|
|
31
|
+
"estree-util-visit": "^2.0.0",
|
|
31
32
|
"flexsearch": "^0.8.212",
|
|
32
33
|
"fs-extra": "^11.3.3",
|
|
33
34
|
"fuse.js": "^7.1.0",
|
|
@@ -56,7 +57,7 @@
|
|
|
56
57
|
"tailwindcss": "^4.2.4",
|
|
57
58
|
"typescript": "^6.0.3",
|
|
58
59
|
"unified": "^11.0.0",
|
|
59
|
-
"unist-util-visit": "^5.
|
|
60
|
+
"unist-util-visit": "^5.1.0"
|
|
60
61
|
}
|
|
61
62
|
},
|
|
62
63
|
"node_modules/@alloc/quick-lru": {
|
|
@@ -156,9 +157,9 @@
|
|
|
156
157
|
}
|
|
157
158
|
},
|
|
158
159
|
"node_modules/@babel/standalone": {
|
|
159
|
-
"version": "7.29.
|
|
160
|
-
"resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.29.
|
|
161
|
-
"integrity": "sha512-
|
|
160
|
+
"version": "7.29.3",
|
|
161
|
+
"resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.29.3.tgz",
|
|
162
|
+
"integrity": "sha512-MRg274T8RTFX8hfkeP+plq6SS8pGuN65dGL2R6YsPG58UDYi3iAlBWwFC/v0ewXZbbMVdGS70r+Vtt3BHHGZxA==",
|
|
162
163
|
"license": "MIT",
|
|
163
164
|
"engines": {
|
|
164
165
|
"node": ">=6.9.0"
|
|
@@ -2980,9 +2981,9 @@
|
|
|
2980
2981
|
"license": "MIT"
|
|
2981
2982
|
},
|
|
2982
2983
|
"node_modules/electron-to-chromium": {
|
|
2983
|
-
"version": "1.5.
|
|
2984
|
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.
|
|
2985
|
-
"integrity": "sha512-
|
|
2984
|
+
"version": "1.5.346",
|
|
2985
|
+
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.346.tgz",
|
|
2986
|
+
"integrity": "sha512-3PGbvVwt9AppQsta0Kuq5DIcSj7aQfDfCVS7KnV3nhXEDtuJVRS7kK28Q+qy5KRkQ4bICV4xOaXNeUaXe78dDg==",
|
|
2986
2987
|
"license": "ISC"
|
|
2987
2988
|
},
|
|
2988
2989
|
"node_modules/enhanced-resolve": {
|
|
@@ -5291,9 +5292,9 @@
|
|
|
5291
5292
|
"license": "MIT"
|
|
5292
5293
|
},
|
|
5293
5294
|
"node_modules/nanoid": {
|
|
5294
|
-
"version": "3.3.
|
|
5295
|
-
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.
|
|
5296
|
-
"integrity": "sha512-
|
|
5295
|
+
"version": "3.3.12",
|
|
5296
|
+
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz",
|
|
5297
|
+
"integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==",
|
|
5297
5298
|
"funding": [
|
|
5298
5299
|
{
|
|
5299
5300
|
"type": "github",
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { createContext, useContext, useRef, useMemo, type ReactNode } from 'react';
|
|
4
|
-
|
|
5
|
-
interface ImagePriorityContextValue {
|
|
6
|
-
/** Call once per image. Returns true for the first image only. */
|
|
7
|
-
claimPriority: () => boolean;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const ImagePriorityContext = createContext<ImagePriorityContextValue | null>(null);
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Wrap MDX content to auto-prioritize the first image for LCP.
|
|
14
|
-
* The first image to call `claimPriority()` gets `loading="eager"` + `fetchPriority="high"`.
|
|
15
|
-
* All subsequent images get the default `loading="lazy"`.
|
|
16
|
-
*/
|
|
17
|
-
export function ImagePriorityProvider({ children }: { children: ReactNode }) {
|
|
18
|
-
const claimed = useRef(false);
|
|
19
|
-
|
|
20
|
-
const value = useMemo<ImagePriorityContextValue>(() => ({
|
|
21
|
-
claimPriority: () => {
|
|
22
|
-
if (claimed.current) return false;
|
|
23
|
-
claimed.current = true;
|
|
24
|
-
return true;
|
|
25
|
-
},
|
|
26
|
-
}), []);
|
|
27
|
-
|
|
28
|
-
return (
|
|
29
|
-
<ImagePriorityContext.Provider value={value}>
|
|
30
|
-
{children}
|
|
31
|
-
</ImagePriorityContext.Provider>
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Hook for images to check if they should be the priority (LCP) image.
|
|
37
|
-
* Returns `{ isFirst: true }` for the first caller, `{ isFirst: false }` for all others.
|
|
38
|
-
* Safe to use outside provider — returns `{ isFirst: false }`.
|
|
39
|
-
*
|
|
40
|
-
* Uses a local ref to cache the result — without this, React strict mode's
|
|
41
|
-
* double-render would claim priority on the first pass, then the second pass
|
|
42
|
-
* would see `claimed.current === true` and no image would get priority.
|
|
43
|
-
*/
|
|
44
|
-
export function useImagePriority(): { isFirst: boolean } {
|
|
45
|
-
const ctx = useContext(ImagePriorityContext);
|
|
46
|
-
const result = useRef<boolean | null>(null);
|
|
47
|
-
|
|
48
|
-
if (result.current === null) {
|
|
49
|
-
result.current = ctx ? ctx.claimPriority() : false;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return { isFirst: result.current };
|
|
53
|
-
}
|