jamdesk 1.1.113 → 1.1.115

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.
@@ -53,6 +53,30 @@ describe('extractImageRefs', () => {
53
53
  ].join('\n'));
54
54
  expect(refs).toEqual([{ src: '/real.png', line: 7 }]);
55
55
  });
56
+ it('does NOT span across a JSX expression with two adjacent comments', () => {
57
+ // `{ /* a */ b /* c */ }` is a JSX expression that evaluates to `b` — it's
58
+ // NOT one giant comment. The regex must stop matching at the first `*/`,
59
+ // not greedily extend to the second one. If it overshoots, an image
60
+ // reference between the comments (or one captured *inside* `b`) would be
61
+ // silently stripped along with surrounding markup.
62
+ const refs = extractImageRefs('{ /* before */ <img src="/x.png" /> /* after */ }');
63
+ // The <img> sits between two JSX comments — neither comment encloses it,
64
+ // so it should be picked up as a real reference.
65
+ expect(refs).toEqual([{ src: '/x.png', line: 1 }]);
66
+ });
67
+ it('ignores image syntax inside JSX/MDX comments with internal whitespace', () => {
68
+ // Some MDX formatters and hand-written prose space out the braces, e.g.
69
+ // `{ /* ... */ }` instead of `{/* ... */}`. All variants must silence
70
+ // example image syntax.
71
+ const refs = extractImageRefs([
72
+ '{ /* ![spaced-both](/spaced-both.png) */ }',
73
+ '{ /* ![leading-only](/leading-only.png) */}',
74
+ '{/* ![trailing-only](/trailing-only.png) */ }',
75
+ '',
76
+ '<img src="/real.png" />',
77
+ ].join('\n'));
78
+ expect(refs).toEqual([{ src: '/real.png', line: 5 }]);
79
+ });
56
80
  it('ignores image syntax inside HTML comments (single and multi-line)', () => {
57
81
  const refs = extractImageRefs([
58
82
  '<!-- ![commented](/inline-comment.png) -->',
@@ -1 +1 @@
1
- {"version":3,"file":"validate-image-refs.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/validate-image-refs.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-image-refs.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/validate-image-refs.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate-image-refs.d.ts","sourceRoot":"","sources":["../../src/lib/validate-image-refs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,MAAM,WAAW,eAAe;IAC9B,oFAAoF;IACpF,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;CACb;AA8DD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CA4BjF;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,eAAe,EAAE,CAAC,CAmC5B"}
1
+ {"version":3,"file":"validate-image-refs.d.ts","sourceRoot":"","sources":["../../src/lib/validate-image-refs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAKH,MAAM,WAAW,eAAe;IAC9B,oFAAoF;IACpF,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;CACb;AAsED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CA4BjF;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,eAAe,EAAE,CAAC,CAmC5B"}
@@ -60,7 +60,15 @@ function stripCodeRegions(content) {
60
60
  // code, and MDX permits them anywhere. {/* ... */} is the only commenting
61
61
  // syntax that survives MDX parsing (HTML comments are removed by remark).
62
62
  let out = content.replace(/<!--[\s\S]*?-->/g, blank);
63
- out = out.replace(/\{\/\*[\s\S]*?\*\/\}/g, blank);
63
+ // JSX/MDX comments: tolerate internal whitespace between the braces and the
64
+ // comment delimiters (e.g. `{ /* ... */ }`) — some MDX formatters and
65
+ // hand-written prose use the spaced form, and we still want to silence
66
+ // example image syntax inside them. The body uses a tempered greedy
67
+ // `(?:(?!\*\/)[\s\S])*?` rather than `[\s\S]*?` so a JSX expression with
68
+ // two adjacent comments (`{ /* a */ b /* c */ }`) doesn't get matched as
69
+ // one giant span — the body must stop at the FIRST `*/`, then a `}` must
70
+ // follow (with optional whitespace) for the match to commit.
71
+ out = out.replace(/\{\s*\/\*(?:(?!\*\/)[\s\S])*?\*\/\s*\}/g, blank);
64
72
  // Fenced code blocks (allow leading indent on opener and closer, e.g.,
65
73
  // inside <Tab> wrappers that indent their children).
66
74
  out = out.replace(/(^|\n)[ \t]*(```|~~~)[^\n]*\n([\s\S]*?)\n[ \t]*\2(?=\n|$)/g, blank);
@@ -1 +1 @@
1
- {"version":3,"file":"validate-image-refs.js","sourceRoot":"","sources":["../../src/lib/validate-image-refs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-image-refs.js","sourceRoot":"","sources":["../../src/lib/validate-image-refs.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.113",
3
+ "version": "1.1.115",
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",
@@ -155,14 +155,32 @@ function findGroupsContainingPath(groups: ResolvedGroup[], currentPath: string,
155
155
  export function Sidebar({ config, layout = 'header-logo', tabsPosition: tabsPositionProp, isOpen = false, onClose }: SidebarProps) {
156
156
  const pathname = usePathname() ?? '';
157
157
  const router = useRouter();
158
+ const linkPrefix = useLinkPrefix();
158
159
  // Seed both `expanded: true` groups and the current page's ancestor groups
159
160
  // synchronously so SSR HTML matches first client paint. A useEffect-only seed
160
161
  // (the previous approach) renders the sidebar collapsed on the server, then
161
162
  // expands on hydration — visible as a flicker for any group that should be
162
163
  // open on first paint.
164
+ //
165
+ // The seed applies the same bare-root → first-page normalization as
166
+ // `activePathname` below: when the URL is just the project root (e.g. the
167
+ // Cloudflare Worker keeps the browser at /docs after the internal redirect
168
+ // to /docs/<firstPage>), seed against the first page's ancestor chain rather
169
+ // than the literal root — the root matches no `page.path` and would leave
170
+ // the active page's parent group collapsed on first paint.
163
171
  const [expandedGroups, setExpandedGroups] = useState<Set<string>>(() => {
164
172
  const initialNav = resolveNavigation(config, pathname || '/');
165
- const initialPath = (pathname || '').replace(/^\/(?:docs\/)?/, '');
173
+ const rootPath = linkPrefix || '/';
174
+ // `pathname || rootPath` handles both the null-pathname mask (`?? ''`
175
+ // above) and the bare-root case in one expression — when pathname is the
176
+ // root (or empty), seedPath becomes rootPath, then the bare-root remap
177
+ // below replaces it with the first page's path.
178
+ let seedPath = pathname || rootPath;
179
+ if (seedPath === rootPath) {
180
+ const firstPage = findFirstPageInGroups(initialNav.groups);
181
+ if (firstPage) seedPath = `${linkPrefix}/${firstPage}`;
182
+ }
183
+ const initialPath = seedPath.replace(/^\/(?:docs\/)?/, '');
166
184
  const seeded = findGroupsContainingPath(initialNav.groups, initialPath);
167
185
  findInitiallyExpandedGroups(initialNav.groups).forEach((g) => seeded.add(g));
168
186
  return seeded;
@@ -172,7 +190,6 @@ export function Sidebar({ config, layout = 'header-logo', tabsPosition: tabsPosi
172
190
  const [isSearchOpen, setIsSearchOpen] = useState(false);
173
191
  const { onSearchOpen, devNotice: searchDevNotice, isDevMode } = useSearchOpenHandler(setIsSearchOpen);
174
192
  const sidebarRef = useRef<HTMLElement>(null);
175
- const linkPrefix = useLinkPrefix();
176
193
 
177
194
  // Chat panel state — used for Pulsar sidebar AI button
178
195
  const { onChatOpen, devNotice } = useChatOpenHandler();
@@ -243,29 +260,41 @@ export function Sidebar({ config, layout = 'header-logo', tabsPosition: tabsPosi
243
260
  return firstPage ? `${linkPrefix}/${firstPage}` : effectivePathname;
244
261
  }, [effectivePathname, linkPrefix, resolvedNav.groups]);
245
262
 
246
- // Track if this is the initial mount (for resetting expanded state on refresh)
247
- const isInitialMount = useRef(true);
248
-
249
263
  // Memoize the groups that should be expanded for the current page
250
264
  const groupsForCurrentPage = useMemo(() => {
251
265
  const currentPath = activePathname?.replace(/^\/(?:docs\/)?/, '') || '';
252
266
  return findGroupsContainingPath(resolvedNav.groups, currentPath);
253
267
  }, [resolvedNav.groups, activePathname]);
254
268
 
255
- // On navigation, add the current page's ancestor groups to the existing
256
- // expanded set preserves anything the user has manually opened/collapsed.
257
- // The initial mount is already seeded by the useState lazy initializer.
269
+ // Re-evaluated whenever the resolved nav changes (e.g. switching tabs in
270
+ // multi-tab docs), so newly-flagged `expanded: true` groups open on cross-tab
271
+ // navigation. Without this re-eval, the schema flag would only be honored at
272
+ // first mount.
273
+ const initiallyExpandedGroups = useMemo(
274
+ () => findInitiallyExpandedGroups(resolvedNav.groups),
275
+ [resolvedNav.groups],
276
+ );
277
+
278
+ // Merge the current page's ancestor groups + `expanded: true` flagged groups
279
+ // into the expanded set. On initial mount this is a no-op because the lazy
280
+ // initializer already seeded both; the merge is preserved as a recovery path
281
+ // for transient initial-render state (e.g. SSR-null pathname window) and to
282
+ // pick up cross-tab navigation where new `expanded: true` groups appear. The
283
+ // setter returns the prior set reference unchanged when nothing was added —
284
+ // React then skips the re-render.
258
285
  useEffect(() => {
259
- if (isInitialMount.current) {
260
- isInitialMount.current = false;
261
- return;
262
- }
263
286
  setExpandedGroups((prev) => {
287
+ let changed = false;
264
288
  const newSet = new Set(prev);
265
- groupsForCurrentPage.forEach((g) => newSet.add(g));
266
- return newSet;
289
+ groupsForCurrentPage.forEach((g) => {
290
+ if (!newSet.has(g)) { newSet.add(g); changed = true; }
291
+ });
292
+ initiallyExpandedGroups.forEach((g) => {
293
+ if (!newSet.has(g)) { newSet.add(g); changed = true; }
294
+ });
295
+ return changed ? newSet : prev;
267
296
  });
268
- }, [groupsForCurrentPage]);
297
+ }, [groupsForCurrentPage, initiallyExpandedGroups]);
269
298
 
270
299
  // Detect dark mode for logo switching
271
300
  useEffect(() => {
@@ -347,8 +347,15 @@ function groupContainsPath(group: ResolvedGroup, path: string): boolean {
347
347
  // MAIN RESOLVER
348
348
  // =============================================================================
349
349
 
350
- // Cache resolved navigation per pathname to avoid re-resolving for Sidebar + Header
351
- const navigationCache = new Map<string, { navigation: ResolvedNavigation; timestamp: number }>();
350
+ // Cache resolved navigation per pathname to avoid re-resolving for Sidebar +
351
+ // Header within one render pass. The cache key includes `config.name`, but
352
+ // names are user-editable and collide across projects (we have customers
353
+ // sharing "Documentation", "Status", "Blog"). Without an identity tiebreaker,
354
+ // two same-named projects served by the same Vercel instance can read each
355
+ // other's resolved nav. We store the source config reference alongside the
356
+ // result and verify identity on read — across requests the references differ,
357
+ // so the cached entry is treated as a miss and recomputed.
358
+ const navigationCache = new Map<string, { config: DocsConfig; navigation: ResolvedNavigation; timestamp: number }>();
352
359
  const MAX_NAVIGATION_CACHE_SIZE = 500; // Max 500 project:pathname combinations
353
360
 
354
361
  /**
@@ -369,10 +376,11 @@ export function resolveNavigation(
369
376
  config: DocsConfig,
370
377
  pathname: string
371
378
  ): ResolvedNavigation {
372
- // Check cache first (include project name in key for multi-tenant correctness)
379
+ // Check cache first. The key includes project name for diagnostic clarity;
380
+ // the actual cross-tenant safety comes from the config-identity check below.
373
381
  const cacheKey = `${config.name || 'default'}:${pathname}`;
374
382
  const cached = navigationCache.get(cacheKey);
375
- if (cached) return cached.navigation;
383
+ if (cached && cached.config === config) return cached.navigation;
376
384
  let navigation = config.navigation;
377
385
 
378
386
  // Handle languages format (multi-language navigation)
@@ -508,7 +516,7 @@ export function resolveNavigation(
508
516
  }
509
517
 
510
518
  // Cache the result before returning
511
- navigationCache.set(cacheKey, { navigation: result, timestamp: Date.now() });
519
+ navigationCache.set(cacheKey, { config, navigation: result, timestamp: Date.now() });
512
520
  evictOldest(navigationCache, MAX_NAVIGATION_CACHE_SIZE);
513
521
  return result;
514
522
  }