jamdesk 1.1.75 → 1.1.77
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/__tests__/unit/deps.test.js +184 -0
- package/dist/__tests__/unit/deps.test.js.map +1 -1
- package/dist/__tests__/unit/dev-spinner-ownership.test.d.ts +2 -0
- package/dist/__tests__/unit/dev-spinner-ownership.test.d.ts.map +1 -0
- package/dist/__tests__/unit/dev-spinner-ownership.test.js +37 -0
- package/dist/__tests__/unit/dev-spinner-ownership.test.js.map +1 -0
- package/dist/__tests__/unit/dev-workspace-symlinks.test.d.ts +2 -0
- package/dist/__tests__/unit/dev-workspace-symlinks.test.d.ts.map +1 -0
- package/dist/__tests__/unit/dev-workspace-symlinks.test.js +112 -0
- package/dist/__tests__/unit/dev-workspace-symlinks.test.js.map +1 -0
- package/dist/__tests__/unit/language-filter.test.d.ts +2 -0
- package/dist/__tests__/unit/language-filter.test.d.ts.map +1 -0
- package/dist/__tests__/unit/language-filter.test.js +166 -0
- package/dist/__tests__/unit/language-filter.test.js.map +1 -0
- package/dist/__tests__/unit/output.test.d.ts +2 -0
- package/dist/__tests__/unit/output.test.d.ts.map +1 -0
- package/dist/__tests__/unit/output.test.js +61 -0
- package/dist/__tests__/unit/output.test.js.map +1 -0
- package/dist/__tests__/unit/spinner.test.d.ts +2 -0
- package/dist/__tests__/unit/spinner.test.d.ts.map +1 -0
- package/dist/__tests__/unit/spinner.test.js +83 -0
- package/dist/__tests__/unit/spinner.test.js.map +1 -0
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +13 -3
- package/dist/commands/dev.js.map +1 -1
- package/dist/lib/deps.d.ts +22 -0
- package/dist/lib/deps.d.ts.map +1 -1
- package/dist/lib/deps.js +121 -27
- package/dist/lib/deps.js.map +1 -1
- package/dist/lib/language-filter.d.ts +31 -0
- package/dist/lib/language-filter.d.ts.map +1 -0
- package/dist/lib/language-filter.js +14 -0
- package/dist/lib/language-filter.js.map +1 -0
- package/dist/lib/spinner.d.ts +24 -0
- package/dist/lib/spinner.d.ts.map +1 -1
- package/dist/lib/spinner.js +59 -0
- package/dist/lib/spinner.js.map +1 -1
- package/package.json +3 -3
- package/vendored/app/[[...slug]]/page.tsx +12 -4
- package/vendored/app/layout.tsx +25 -10
- package/vendored/components/mdx/ApiPage.tsx +10 -2
- package/vendored/components/mdx/OpenApiEndpoint.tsx +41 -44
- package/vendored/components/mdx/YouTube.tsx +8 -0
- package/vendored/components/navigation/Sidebar.tsx +32 -17
- package/vendored/components/navigation/TabsNav.tsx +22 -30
- package/vendored/components/ui/CodePanel.tsx +48 -3
- package/vendored/hooks/useIsNavigationSettled.ts +74 -0
- package/vendored/lib/layout-helpers.tsx +27 -0
- package/vendored/lib/middleware-helpers.ts +79 -8
- package/vendored/lib/page-isr-helpers.ts +14 -9
- package/vendored/lib/prefetch-batcher.ts +51 -0
- package/vendored/lib/prefetch-rsc.ts +19 -0
- package/vendored/lib/project-resolver.ts +21 -5
- package/vendored/lib/r2-content.ts +16 -0
- package/vendored/lib/r2-feature-flags.ts +7 -0
- package/vendored/lib/render-doc-page-openapi-helpers.ts +110 -0
- package/vendored/lib/render-doc-page-parallel-helpers.ts +60 -0
- package/vendored/lib/render-doc-page.tsx +101 -52
- package/vendored/lib/sidebar-prefetch-walker.ts +50 -0
- package/vendored/lib/static-artifacts.ts +2 -1
- package/vendored/workspace-package-lock.json +101 -99
package/dist/lib/deps.js
CHANGED
|
@@ -13,7 +13,7 @@ import { fileURLToPath } from 'url';
|
|
|
13
13
|
import { homedir } from 'os';
|
|
14
14
|
import { output } from './output.js';
|
|
15
15
|
import { runWithSlowHint } from './slow-hint.js';
|
|
16
|
-
import { spinner } from './spinner.js';
|
|
16
|
+
import { spinner, logAboveSpinner } from './spinner.js';
|
|
17
17
|
import { createRequire } from 'module';
|
|
18
18
|
const require = createRequire(import.meta.url);
|
|
19
19
|
const cliPackage = require('../../package.json');
|
|
@@ -24,13 +24,13 @@ const JAMDESK_DIR = path.join(homedir(), '.jamdesk');
|
|
|
24
24
|
// compiled dist/lib/deps.js instead of re-parsing the TypeScript source.
|
|
25
25
|
export const REQUIRED_DEPS = {
|
|
26
26
|
// Next.js and React
|
|
27
|
-
'next': '^16.2.
|
|
27
|
+
'next': '^16.2.6',
|
|
28
28
|
// OpenAPI validation (for API reference docs)
|
|
29
29
|
'@apidevtools/swagger-parser': '^12.1.0',
|
|
30
30
|
'openapi-types': '^12.1.3',
|
|
31
31
|
'react': '^19.2.6',
|
|
32
32
|
'react-dom': '^19.2.6',
|
|
33
|
-
'@next/mdx': '^16.2.
|
|
33
|
+
'@next/mdx': '^16.2.6',
|
|
34
34
|
'next-mdx-remote': '^6.0.0',
|
|
35
35
|
'next-themes': '^0.4.6',
|
|
36
36
|
// Icons
|
|
@@ -88,10 +88,10 @@ export const REQUIRED_DEPS = {
|
|
|
88
88
|
'@upstash/redis': '^1.37.0',
|
|
89
89
|
// TypeScript (needed for Next.js to avoid auto-install breaking symlink)
|
|
90
90
|
'typescript': '^6.0.3',
|
|
91
|
-
'@types/node': '^25.
|
|
91
|
+
'@types/node': '^25.6.2',
|
|
92
92
|
'@types/react': '^19.2.14',
|
|
93
93
|
'@types/react-dom': '^19.0.0',
|
|
94
|
-
'@next/third-parties': '^16.2.
|
|
94
|
+
'@next/third-parties': '^16.2.6',
|
|
95
95
|
};
|
|
96
96
|
/**
|
|
97
97
|
* Generate a hash of REQUIRED_DEPS to detect when dependencies change.
|
|
@@ -232,6 +232,33 @@ async function withInstallLock(depsDir, verbose, fn) {
|
|
|
232
232
|
catch { /* ignore */ }
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
|
+
/**
|
|
236
|
+
* Reasons a reinstall might be triggered. Exported so the width-budget
|
|
237
|
+
* test in __tests__/unit/deps.test.ts can derive the worst-case spinner
|
|
238
|
+
* text from the same source production uses — locking the test to the
|
|
239
|
+
* actual constants prevents the "test asserts against its own copy" trap
|
|
240
|
+
* we'd otherwise have. Keep these terse and actionable: each value feeds
|
|
241
|
+
* directly into user-facing spinner text via `Updating dependencies (...)`.
|
|
242
|
+
*/
|
|
243
|
+
export const REINSTALL_REASONS = {
|
|
244
|
+
firstRun: 'first-run install',
|
|
245
|
+
depsChanged: 'deps changed',
|
|
246
|
+
// Kept brief intentionally: this value feeds directly into spinner text
|
|
247
|
+
// and combined with SLOW_HINT_SUFFIX must stay ≤ 78 cols.
|
|
248
|
+
// 'install is incomplete (missing critical packages)' (49 chars) was the
|
|
249
|
+
// original but exceeded the column budget — see width-budget test in
|
|
250
|
+
// src/__tests__/unit/deps.test.ts.
|
|
251
|
+
incomplete: 'install is incomplete',
|
|
252
|
+
unreadable: 'package.json unreadable',
|
|
253
|
+
};
|
|
254
|
+
/**
|
|
255
|
+
* Suffix appended to the install spinner text after `runWithSlowHint`'s
|
|
256
|
+
* 15-second threshold. Width budget: combined with the longest reason in
|
|
257
|
+
* `REINSTALL_REASONS` this string must keep the total spinner text ≤ 78
|
|
258
|
+
* chars (80 cols minus glyph + space). See plan
|
|
259
|
+
* docs/plans/2026-05-08-cli-deps-spinner-flashing-fix.md.
|
|
260
|
+
*/
|
|
261
|
+
export const SLOW_HINT_SUFFIX = ' (~1 min on first install)';
|
|
235
262
|
/**
|
|
236
263
|
* Returns the reason a reinstall is needed, or `null` if the existing
|
|
237
264
|
* install is healthy. Non-null strings feed directly into user-facing
|
|
@@ -240,7 +267,7 @@ async function withInstallLock(depsDir, verbose, fn) {
|
|
|
240
267
|
async function checkInstallReinstallReason(depsDir) {
|
|
241
268
|
const packageJsonPath = path.join(depsDir, 'package.json');
|
|
242
269
|
if (!fs.existsSync(packageJsonPath))
|
|
243
|
-
return
|
|
270
|
+
return REINSTALL_REASONS.firstRun;
|
|
244
271
|
try {
|
|
245
272
|
const pkg = await fs.readJson(packageJsonPath);
|
|
246
273
|
// _depsHash is the precise reinstall trigger — it's an MD5 of
|
|
@@ -250,15 +277,15 @@ async function checkInstallReinstallReason(depsDir) {
|
|
|
250
277
|
// with "deps need reinstalling" forced a 30s npm ci on every patch
|
|
251
278
|
// release. The marker is still WRITTEN post-install for debugging.
|
|
252
279
|
if (pkg._depsHash !== getDepsHash())
|
|
253
|
-
return
|
|
280
|
+
return REINSTALL_REASONS.depsChanged;
|
|
254
281
|
// N stat calls — only pay this once the hash already matches.
|
|
255
282
|
if (!(await verifyCriticalPackagesInstalled(depsDir))) {
|
|
256
|
-
return
|
|
283
|
+
return REINSTALL_REASONS.incomplete;
|
|
257
284
|
}
|
|
258
285
|
return null;
|
|
259
286
|
}
|
|
260
287
|
catch {
|
|
261
|
-
return
|
|
288
|
+
return REINSTALL_REASONS.unreadable;
|
|
262
289
|
}
|
|
263
290
|
}
|
|
264
291
|
export async function ensureDependencies(verbose, overrideDepsDir) {
|
|
@@ -271,12 +298,21 @@ export async function ensureDependencies(verbose, overrideDepsDir) {
|
|
|
271
298
|
output.info('Dependencies already installed');
|
|
272
299
|
return depsNodeModulesDir;
|
|
273
300
|
}
|
|
274
|
-
|
|
275
|
-
|
|
301
|
+
// INVARIANT: from this point on, ensureDependencies (and any function it
|
|
302
|
+
// calls) MUST NOT print via output.* / console.* while the install
|
|
303
|
+
// spinner is live. Those writes are plain console.log under the hood
|
|
304
|
+
// and interleave with ora's 80ms-cadence redraw, producing the visible
|
|
305
|
+
// "flash" symptom. Callers may safely print AFTER ensureDependencies
|
|
306
|
+
// returns. The pre-2026-05-08 code printed the reinstall reason here
|
|
307
|
+
// via output.info before entering withInstallLock, which is exactly
|
|
308
|
+
// what this invariant exists to forbid. The reason now lives inside
|
|
309
|
+
// the install-spinner's initial text — see runInstall below and plan
|
|
310
|
+
// docs/plans/2026-05-08-cli-deps-spinner-flashing-fix.md.
|
|
276
311
|
await fs.ensureDir(depsDir);
|
|
277
312
|
return withInstallLock(depsDir, verbose, async () => {
|
|
278
313
|
// Re-check after acquiring the lock — a peer install may have wiped +
|
|
279
|
-
// rewritten node_modules while we waited.
|
|
314
|
+
// rewritten node_modules while we waited. The fresh reason is what
|
|
315
|
+
// gets shown to the user, so it always reflects the actual cause.
|
|
280
316
|
const reason = await checkInstallReinstallReason(depsDir);
|
|
281
317
|
if (reason === null) {
|
|
282
318
|
if (verbose) {
|
|
@@ -284,7 +320,7 @@ export async function ensureDependencies(verbose, overrideDepsDir) {
|
|
|
284
320
|
}
|
|
285
321
|
return depsNodeModulesDir;
|
|
286
322
|
}
|
|
287
|
-
return runInstall(depsDir, verbose);
|
|
323
|
+
return runInstall(depsDir, verbose, reason);
|
|
288
324
|
});
|
|
289
325
|
}
|
|
290
326
|
/**
|
|
@@ -303,15 +339,20 @@ function looksLikeLockfileDrift(stderr) {
|
|
|
303
339
|
/Missing:.*from lock file/i.test(stderr) ||
|
|
304
340
|
/lock file'?s?\s.*does not satisfy/i.test(stderr));
|
|
305
341
|
}
|
|
306
|
-
async function runInstall(depsDir, verbose) {
|
|
342
|
+
async function runInstall(depsDir, verbose, reason) {
|
|
307
343
|
const depsNodeModulesDir = path.join(depsDir, 'node_modules');
|
|
308
344
|
const packageJsonPath = path.join(depsDir, 'package.json');
|
|
309
345
|
// Direct check — "first run" means no pre-existing marker file. Corrupt
|
|
310
346
|
// package.json falls through as "Updating..." since the file already exists.
|
|
311
347
|
const isFirstRun = !fs.existsSync(packageJsonPath);
|
|
348
|
+
// Fold the reinstall reason into the spinner text so all users (not just
|
|
349
|
+
// verbose) see the cause. Previously the reason was printed via
|
|
350
|
+
// output.info BEFORE the spinner, which interleaved console.log with
|
|
351
|
+
// ora's render — see plan
|
|
352
|
+
// docs/plans/2026-05-08-cli-deps-spinner-flashing-fix.md.
|
|
312
353
|
const baseSpinText = isFirstRun
|
|
313
|
-
? 'Installing dependencies
|
|
314
|
-
:
|
|
354
|
+
? 'Installing dependencies'
|
|
355
|
+
: `Updating dependencies (${reason})`;
|
|
315
356
|
const spin = spinner(`${baseSpinText}...`);
|
|
316
357
|
// Shared shape for both the pre-install and post-install writes. The
|
|
317
358
|
// version/hash marker fields are added ONLY in the post-install write —
|
|
@@ -378,9 +419,18 @@ async function runInstall(depsDir, verbose) {
|
|
|
378
419
|
// (scripts/generate-workspace-lockfile.js) guarantees sync, and
|
|
379
420
|
// the verify:workspace-lockfile pre-commit hook + CI job guard
|
|
380
421
|
// against drift.
|
|
422
|
+
//
|
|
423
|
+
// stdio: 'pipe' is hard-coded (NOT verbose-conditional). With
|
|
424
|
+
// 'inherit', npm's lifecycle scripts (postinstall hooks for next,
|
|
425
|
+
// sharp, esbuild, etc.) print directly to the terminal and push the
|
|
426
|
+
// ora spinner down a row on every emission — visually this looks
|
|
427
|
+
// like the spinner is "flashing." Piping + an explicit
|
|
428
|
+
// logAboveSpinner stream keeps verbose output visible AND keeps the
|
|
429
|
+
// spinner stable beneath it. See plan
|
|
430
|
+
// docs/plans/2026-05-08-cli-deps-spinner-flashing-fix.md.
|
|
381
431
|
const npmInstall = spawn('npm', ['ci', '--no-audit', '--no-fund', '--loglevel=error'], {
|
|
382
432
|
cwd: depsDir,
|
|
383
|
-
stdio:
|
|
433
|
+
stdio: 'pipe',
|
|
384
434
|
...(isWindows ? { shell: true } : {}),
|
|
385
435
|
});
|
|
386
436
|
// 5 minute timeout
|
|
@@ -388,15 +438,54 @@ async function runInstall(depsDir, verbose) {
|
|
|
388
438
|
npmInstall.kill('SIGKILL');
|
|
389
439
|
reject(new Error('npm ci timed out after 5 minutes'));
|
|
390
440
|
}, 300000);
|
|
391
|
-
//
|
|
441
|
+
// Always capture stderr for error messages. When verbose, ALSO stream
|
|
442
|
+
// both stdout and stderr above the live spinner so the user sees what
|
|
443
|
+
// npm is doing without disturbing ora's render.
|
|
444
|
+
//
|
|
445
|
+
// Per-stream line buffer: npm output arrives in arbitrary chunks that
|
|
446
|
+
// can split mid-line. Holding the trailing partial in `buf` until the
|
|
447
|
+
// next chunk completes it (with `\n`) prevents broken-up rows in the
|
|
448
|
+
// verbose output. The final partial (if any) is flushed on `close` so
|
|
449
|
+
// the most-diagnostic last line never goes missing on crash paths.
|
|
450
|
+
//
|
|
451
|
+
// The `?.` on `npmInstall.stderr?.on(...)` and `npmInstall.stdout?.on(...)`
|
|
452
|
+
// is load-bearing: at least one test (the ENOENT error path) provides
|
|
453
|
+
// an inline mock with no stdout EventEmitter. Removing the chaining
|
|
454
|
+
// breaks that test at runtime.
|
|
392
455
|
let stderrOutput = '';
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
456
|
+
let stderrBuf = '';
|
|
457
|
+
let stdoutBuf = '';
|
|
458
|
+
const handleData = (chunk, isStderr) => {
|
|
459
|
+
const text = chunk.toString();
|
|
460
|
+
if (isStderr)
|
|
461
|
+
stderrOutput += text;
|
|
462
|
+
const combined = (isStderr ? stderrBuf : stdoutBuf) + text;
|
|
463
|
+
const parts = combined.split('\n');
|
|
464
|
+
const trailing = parts.pop() ?? '';
|
|
465
|
+
if (verbose) {
|
|
466
|
+
for (const line of parts)
|
|
467
|
+
logAboveSpinner(line);
|
|
468
|
+
}
|
|
469
|
+
if (isStderr)
|
|
470
|
+
stderrBuf = trailing;
|
|
471
|
+
else
|
|
472
|
+
stdoutBuf = trailing;
|
|
473
|
+
};
|
|
474
|
+
const flushBuffers = () => {
|
|
475
|
+
if (verbose) {
|
|
476
|
+
if (stderrBuf.length > 0)
|
|
477
|
+
logAboveSpinner(stderrBuf);
|
|
478
|
+
if (stdoutBuf.length > 0)
|
|
479
|
+
logAboveSpinner(stdoutBuf);
|
|
480
|
+
}
|
|
481
|
+
stderrBuf = '';
|
|
482
|
+
stdoutBuf = '';
|
|
483
|
+
};
|
|
484
|
+
npmInstall.stderr?.on('data', (data) => handleData(data, true));
|
|
485
|
+
npmInstall.stdout?.on('data', (data) => handleData(data, false));
|
|
398
486
|
npmInstall.on('close', (code) => {
|
|
399
487
|
clearTimeout(timeout);
|
|
488
|
+
flushBuffers();
|
|
400
489
|
if (code === 0) {
|
|
401
490
|
resolve();
|
|
402
491
|
return;
|
|
@@ -414,11 +503,16 @@ async function runInstall(depsDir, verbose) {
|
|
|
414
503
|
reject(err);
|
|
415
504
|
});
|
|
416
505
|
});
|
|
417
|
-
// Update the spinner text after 15s with a
|
|
418
|
-
//
|
|
419
|
-
//
|
|
506
|
+
// Update the spinner text after 15s with a slow-install hint. Combined
|
|
507
|
+
// with the longest reason in REINSTALL_REASONS, it must fit in 78 cols
|
|
508
|
+
// (80 minus glyph + space) so ora doesn't wrap-and-flicker on standard
|
|
509
|
+
// terminals. Test guard:
|
|
510
|
+
// src/__tests__/unit/deps.test.ts > 'slow-hint text fits in 78 columns'
|
|
511
|
+
// imports both this constant and REINSTALL_REASONS to catch edits that
|
|
512
|
+
// blow past the budget. See plan
|
|
513
|
+
// docs/plans/2026-05-08-cli-deps-spinner-flashing-fix.md.
|
|
420
514
|
await runWithSlowHint(15000, () => {
|
|
421
|
-
spin.text = `${baseSpinText}
|
|
515
|
+
spin.text = `${baseSpinText}${SLOW_HINT_SUFFIX}...`;
|
|
422
516
|
}, npmCi);
|
|
423
517
|
// Write the marker only after install reports success AND the integrity
|
|
424
518
|
// check agrees. Belt-and-braces: if npm lies about exit code, we still
|
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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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Picks which `<lang>/` directories under projectDir to keep as workspace
|
|
3
|
+
* symlinks and which to skip. Skipping non-active language directories
|
|
4
|
+
* shrinks Turbopack's filesystem scan and dropped cold compile from ~67s
|
|
5
|
+
* to ~12s on jamdesk-docs (commit 90d781b4).
|
|
6
|
+
*
|
|
7
|
+
* The dev server still reads content from the user's source tree via
|
|
8
|
+
* JAMDESK_PROJECTS_DIR, so the language picker keeps showing every
|
|
9
|
+
* language and clicks always 200 OK — the workspace symlinks are a
|
|
10
|
+
* Turbopack-only performance layer.
|
|
11
|
+
*
|
|
12
|
+
* Default rules:
|
|
13
|
+
* 1. Language with `default: true`
|
|
14
|
+
* 2. First language in `navigation.languages[]`
|
|
15
|
+
*/
|
|
16
|
+
export interface LanguageFilter {
|
|
17
|
+
active: string | null;
|
|
18
|
+
skip: Set<string>;
|
|
19
|
+
}
|
|
20
|
+
interface NavigationLanguageEntry {
|
|
21
|
+
language?: string;
|
|
22
|
+
default?: boolean;
|
|
23
|
+
}
|
|
24
|
+
interface MinimalConfig {
|
|
25
|
+
navigation?: {
|
|
26
|
+
languages?: NavigationLanguageEntry[];
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export declare function getActiveLanguageFilter(config: MinimalConfig): LanguageFilter;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=language-filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-filter.d.ts","sourceRoot":"","sources":["../../src/lib/language-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnB;AAED,UAAU,uBAAuB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,aAAa;IACrB,UAAU,CAAC,EAAE;QACX,SAAS,CAAC,EAAE,uBAAuB,EAAE,CAAC;KACvC,CAAC;CACH;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAc7E"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function getActiveLanguageFilter(config) {
|
|
2
|
+
const validEntries = (config.navigation?.languages ?? []).filter((l) => typeof l.language === 'string');
|
|
3
|
+
if (validEntries.length === 0) {
|
|
4
|
+
return { active: null, skip: new Set() };
|
|
5
|
+
}
|
|
6
|
+
const codes = validEntries.map((l) => l.language);
|
|
7
|
+
const active = validEntries.find((l) => l.default)?.language ?? validEntries[0].language;
|
|
8
|
+
if (codes.length === 1) {
|
|
9
|
+
return { active, skip: new Set() };
|
|
10
|
+
}
|
|
11
|
+
const skip = new Set(codes.filter((c) => c !== active));
|
|
12
|
+
return { active, skip };
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=language-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-filter.js","sourceRoot":"","sources":["../../src/lib/language-filter.ts"],"names":[],"mappings":"AA+BA,MAAM,UAAU,uBAAuB,CAAC,MAAqB;IAC3D,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAC9D,CAAC,CAAC,EAAgD,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CACpF,CAAC;IACF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,EAAU,EAAE,CAAC;IACnD,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACzF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,EAAU,EAAE,CAAC;IAC7C,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;IACxD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
package/dist/lib/spinner.d.ts
CHANGED
|
@@ -1,4 +1,28 @@
|
|
|
1
1
|
import { type Ora } from 'ora';
|
|
2
|
+
export type { Ora };
|
|
2
3
|
export declare function spinner(text: string): Ora;
|
|
3
4
|
export declare function stopSpinner(): void;
|
|
5
|
+
/**
|
|
6
|
+
* Print `line` above any active ora spinner without garbling its render.
|
|
7
|
+
*
|
|
8
|
+
* On a TTY, ora 9.x's `start()` installs a `process.stdout.write`
|
|
9
|
+
* interceptor (`#hookedWrite` in ora/index.js) that automatically runs
|
|
10
|
+
* `clear()` → `originalWrite()` → `render()` for every external write
|
|
11
|
+
* while the spinner is active. So a bare `process.stdout.write` is the
|
|
12
|
+
* RIGHT way to log around a live spinner — the hook does the cursor
|
|
13
|
+
* dance correctly. Adding our own explicit `clear()` / `render()` on
|
|
14
|
+
* top of the hook causes runaway cursor churn (verified in Task 9
|
|
15
|
+
* smoke: 1.2 GB of redundant escape sequences in 5 minutes during
|
|
16
|
+
* npm ci). See plan
|
|
17
|
+
* docs/plans/2026-05-08-cli-deps-spinner-flashing-fix.md.
|
|
18
|
+
*
|
|
19
|
+
* In non-TTY environments (CI, log redirection, vitest's child runner)
|
|
20
|
+
* ora's `isEnabled` is `false`, so no hook is installed and the bare
|
|
21
|
+
* write goes through directly. Same code, both paths.
|
|
22
|
+
*
|
|
23
|
+
* Empty lines are skipped — npm output streams arrive in chunks that
|
|
24
|
+
* often end in `\n`, producing a trailing empty token after `split('\n')`
|
|
25
|
+
* that we don't want to emit as a blank row.
|
|
26
|
+
*/
|
|
27
|
+
export declare function logAboveSpinner(line: string): void;
|
|
4
28
|
//# sourceMappingURL=spinner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/lib/spinner.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/lib/spinner.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAMpC,YAAY,EAAE,GAAG,EAAE,CAAC;AAoBpB,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAsBzC;AAED,wBAAgB,WAAW,IAAI,IAAI,CAKlC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGlD"}
|
package/dist/lib/spinner.js
CHANGED
|
@@ -1,9 +1,41 @@
|
|
|
1
1
|
import ora from 'ora';
|
|
2
|
+
// Singleton spinner state. The contract enforced by `spinner()` below is
|
|
3
|
+
// "stop the previous one (silently — no checkmark) and start a new one." That
|
|
4
|
+
// is intentional: it lets `runInstall` in deps.ts seamlessly transition from
|
|
5
|
+
// "Checking dependencies..." into "Updating dependencies (...)..." without
|
|
6
|
+
// the caller having to know about it.
|
|
7
|
+
//
|
|
8
|
+
// The trap this comment exists to prevent: callers MUST NOT keep a reference
|
|
9
|
+
// to the value returned by `spinner()` across an `await` that re-enters
|
|
10
|
+
// `spinner()` (directly or indirectly). Doing so leaves the caller holding a
|
|
11
|
+
// dead reference whose `.succeed()` / `.fail()` calls land on the WRONG ora
|
|
12
|
+
// instance — typically one already stopped, which silently no-ops the
|
|
13
|
+
// status update. Pre-2026-05-08 dev.ts had exactly this bug across the
|
|
14
|
+
// `await ensureDependencies(...)` boundary; see plan
|
|
15
|
+
// docs/plans/2026-05-08-cli-deps-spinner-flashing-fix.md.
|
|
16
|
+
//
|
|
17
|
+
// If you need to log around an active spinner, use `logAboveSpinner` below.
|
|
2
18
|
let currentSpinner = null;
|
|
3
19
|
export function spinner(text) {
|
|
4
20
|
if (currentSpinner) {
|
|
5
21
|
currentSpinner.stop();
|
|
6
22
|
}
|
|
23
|
+
// Guard against PTY environments (e.g. `script -q`) that report
|
|
24
|
+
// process.stdout.columns = 0. Ora 9.x uses columns in
|
|
25
|
+
// #computeLineCountFrom: `Math.ceil(width / columns)`. When columns
|
|
26
|
+
// is 0, this evaluates to Infinity, setting #linesToClear = Infinity
|
|
27
|
+
// and causing an infinite clear loop that emits gigabytes of
|
|
28
|
+
// `ESC[1A ESC[0K` sequences. The `?? 80` fallback in ora only fires
|
|
29
|
+
// for null/undefined — 0 falls through. We clamp to 80 here so the
|
|
30
|
+
// spinner is always safe. This path is hit in `script -q` / any PTY
|
|
31
|
+
// tool that initialises column width to 0 before SIGWINCH fires.
|
|
32
|
+
if (process.stdout.columns === 0) {
|
|
33
|
+
Object.defineProperty(process.stdout, 'columns', {
|
|
34
|
+
value: 80,
|
|
35
|
+
writable: true,
|
|
36
|
+
configurable: true,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
7
39
|
currentSpinner = ora(text).start();
|
|
8
40
|
return currentSpinner;
|
|
9
41
|
}
|
|
@@ -13,4 +45,31 @@ export function stopSpinner() {
|
|
|
13
45
|
currentSpinner = null;
|
|
14
46
|
}
|
|
15
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Print `line` above any active ora spinner without garbling its render.
|
|
50
|
+
*
|
|
51
|
+
* On a TTY, ora 9.x's `start()` installs a `process.stdout.write`
|
|
52
|
+
* interceptor (`#hookedWrite` in ora/index.js) that automatically runs
|
|
53
|
+
* `clear()` → `originalWrite()` → `render()` for every external write
|
|
54
|
+
* while the spinner is active. So a bare `process.stdout.write` is the
|
|
55
|
+
* RIGHT way to log around a live spinner — the hook does the cursor
|
|
56
|
+
* dance correctly. Adding our own explicit `clear()` / `render()` on
|
|
57
|
+
* top of the hook causes runaway cursor churn (verified in Task 9
|
|
58
|
+
* smoke: 1.2 GB of redundant escape sequences in 5 minutes during
|
|
59
|
+
* npm ci). See plan
|
|
60
|
+
* docs/plans/2026-05-08-cli-deps-spinner-flashing-fix.md.
|
|
61
|
+
*
|
|
62
|
+
* In non-TTY environments (CI, log redirection, vitest's child runner)
|
|
63
|
+
* ora's `isEnabled` is `false`, so no hook is installed and the bare
|
|
64
|
+
* write goes through directly. Same code, both paths.
|
|
65
|
+
*
|
|
66
|
+
* Empty lines are skipped — npm output streams arrive in chunks that
|
|
67
|
+
* often end in `\n`, producing a trailing empty token after `split('\n')`
|
|
68
|
+
* that we don't want to emit as a blank row.
|
|
69
|
+
*/
|
|
70
|
+
export function logAboveSpinner(line) {
|
|
71
|
+
if (line.length === 0)
|
|
72
|
+
return;
|
|
73
|
+
process.stdout.write(`${line}\n`);
|
|
74
|
+
}
|
|
16
75
|
//# sourceMappingURL=spinner.js.map
|
package/dist/lib/spinner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/lib/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,GAAiB,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/lib/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,GAAiB,MAAM,KAAK,CAAC;AAQpC,yEAAyE;AACzE,8EAA8E;AAC9E,6EAA6E;AAC7E,2EAA2E;AAC3E,sCAAsC;AACtC,EAAE;AACF,6EAA6E;AAC7E,wEAAwE;AACxE,6EAA6E;AAC7E,4EAA4E;AAC5E,sEAAsE;AACtE,uEAAuE;AACvE,qDAAqD;AACrD,0DAA0D;AAC1D,EAAE;AACF,4EAA4E;AAC5E,IAAI,cAAc,GAAe,IAAI,CAAC;AAEtC,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IACD,gEAAgE;IAChE,sDAAsD;IACtD,oEAAoE;IACpE,qEAAqE;IACrE,6DAA6D;IAC7D,oEAAoE;IACpE,mEAAmE;IACnE,oEAAoE;IACpE,iEAAiE;IACjE,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE;YAC/C,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IACD,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IACnC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,IAAI,EAAE,CAAC;QACtB,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACpC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jamdesk",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.77",
|
|
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",
|
|
@@ -115,12 +115,12 @@
|
|
|
115
115
|
"nspell": "^2.1.5",
|
|
116
116
|
"open": "^11.0.0",
|
|
117
117
|
"ora": "^9.4.0",
|
|
118
|
-
"tar": "^7.5.
|
|
118
|
+
"tar": "^7.5.15"
|
|
119
119
|
},
|
|
120
120
|
"devDependencies": {
|
|
121
121
|
"@mdx-js/mdx": "^3.1.1",
|
|
122
122
|
"@types/fs-extra": "^11.0.0",
|
|
123
|
-
"@types/node": "^25.
|
|
123
|
+
"@types/node": "^25.6.2",
|
|
124
124
|
"typescript": "^6.0.2",
|
|
125
125
|
"vitest": "^4.1.5"
|
|
126
126
|
},
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// `/[project]/...` URLs without middleware involvement (used by tests and
|
|
5
5
|
// non-ISR local dev). The render body lives in lib/render-doc-page.tsx.
|
|
6
6
|
import { headers } from 'next/headers';
|
|
7
|
+
import { after } from 'next/server';
|
|
7
8
|
import fs from 'fs';
|
|
8
9
|
import path from 'path';
|
|
9
10
|
import type { Metadata } from 'next';
|
|
@@ -14,6 +15,7 @@ import {
|
|
|
14
15
|
getHostAtDocs,
|
|
15
16
|
} from '@/lib/content-loader';
|
|
16
17
|
import { renderDocPage, buildDocMetadata, type RenderInput } from '@/lib/render-doc-page';
|
|
18
|
+
import { withR2OpsContext, emitR2OpsSummary } from '@/lib/r2-content';
|
|
17
19
|
import { readFileSync as readMdxFile } from '@/lib/fs-readfile';
|
|
18
20
|
|
|
19
21
|
export const dynamic = 'force-dynamic';
|
|
@@ -195,11 +197,17 @@ async function resolveInput(params: PageProps['params']): Promise<RenderInput> {
|
|
|
195
197
|
}
|
|
196
198
|
|
|
197
199
|
export async function generateMetadata({ params }: PageProps): Promise<Metadata> {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
+
return withR2OpsContext(async () => {
|
|
201
|
+
const input = await resolveInput(params);
|
|
202
|
+
after(() => emitR2OpsSummary(input.projectSlug, 'page-metadata'));
|
|
203
|
+
return buildDocMetadata(input);
|
|
204
|
+
});
|
|
200
205
|
}
|
|
201
206
|
|
|
202
207
|
export default async function DocPage({ params }: PageProps) {
|
|
203
|
-
|
|
204
|
-
|
|
208
|
+
return withR2OpsContext(async () => {
|
|
209
|
+
const input = await resolveInput(params);
|
|
210
|
+
after(() => emitR2OpsSummary(input.projectSlug, 'page-render'));
|
|
211
|
+
return renderDocPage(input);
|
|
212
|
+
});
|
|
205
213
|
}
|
package/vendored/app/layout.tsx
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
// producing the visible flash + next-themes script-tag warnings.
|
|
8
8
|
import type { Metadata } from 'next';
|
|
9
9
|
import { headers } from 'next/headers';
|
|
10
|
+
import { after } from 'next/server';
|
|
10
11
|
import './globals.css';
|
|
11
12
|
import { getDocsConfig } from '@/lib/docs';
|
|
12
13
|
import { getDocsConfig as getIsrDocsConfig } from '@/lib/docs-isr';
|
|
@@ -19,10 +20,10 @@ import {
|
|
|
19
20
|
import { isRTLLanguage, resolveLanguageWithFallback } from '@/lib/language-utils';
|
|
20
21
|
import type { DocsConfig } from '@/lib/docs-types';
|
|
21
22
|
import { buildSiteTitle, getFaviconPath, FALLBACK_METADATA } from '@/lib/seo';
|
|
22
|
-
import {
|
|
23
|
-
import { DocsChrome, getLocalFileContent } from '@/lib/layout-helpers';
|
|
23
|
+
import { withR2OpsContext, emitR2OpsSummary } from '@/lib/r2-content';
|
|
24
|
+
import { DocsChrome, getLocalFileContent, loadCustomAssets } from '@/lib/layout-helpers';
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
async function generateMetadataImpl(): Promise<Metadata> {
|
|
26
27
|
// The placeholder shell would otherwise render with the paused
|
|
27
28
|
// project's title/favicon (and pay an R2 round-trip for it) — the
|
|
28
29
|
// nested (jd-system)/jd-inactive layout supplies neutral metadata.
|
|
@@ -32,6 +33,11 @@ export async function generateMetadata(): Promise<Metadata> {
|
|
|
32
33
|
return {robots: {index: false, follow: false}};
|
|
33
34
|
}
|
|
34
35
|
}
|
|
36
|
+
|
|
37
|
+
// No-op when no R2 ops happened (incl. flag-off path) — paths that do no
|
|
38
|
+
// R2 work simply log nothing.
|
|
39
|
+
after(() => emitR2OpsSummary(null, 'layout-metadata'));
|
|
40
|
+
|
|
35
41
|
let config: DocsConfig;
|
|
36
42
|
if (isIsrMode()) {
|
|
37
43
|
const headersList = await headers();
|
|
@@ -60,7 +66,11 @@ export async function generateMetadata(): Promise<Metadata> {
|
|
|
60
66
|
};
|
|
61
67
|
}
|
|
62
68
|
|
|
63
|
-
export
|
|
69
|
+
export async function generateMetadata(): Promise<Metadata> {
|
|
70
|
+
return withR2OpsContext(() => generateMetadataImpl());
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
async function rootLayoutImpl({
|
|
64
74
|
children,
|
|
65
75
|
}: {
|
|
66
76
|
children: React.ReactNode;
|
|
@@ -158,12 +168,11 @@ export default async function RootLayout({
|
|
|
158
168
|
let customCss: string | null = null;
|
|
159
169
|
let customJs: string | null = null;
|
|
160
170
|
if (isIsr && resolvedProjectSlug) {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
}
|
|
171
|
+
({ customCss, customJs } = await loadCustomAssets({
|
|
172
|
+
projectSlug: resolvedProjectSlug,
|
|
173
|
+
hasCustomCss: !!config._hasCustomCss,
|
|
174
|
+
hasCustomJs: !!config._hasCustomJs,
|
|
175
|
+
}));
|
|
167
176
|
} else {
|
|
168
177
|
customCss = getLocalFileContent('custom.css');
|
|
169
178
|
customJs = getLocalFileContent('custom.js');
|
|
@@ -173,6 +182,8 @@ export default async function RootLayout({
|
|
|
173
182
|
const lang = getLanguageFromRequest(headersList) ?? projectDefaultLang;
|
|
174
183
|
const dir = isRTLLanguage(lang) ? 'rtl' : undefined;
|
|
175
184
|
|
|
185
|
+
after(() => emitR2OpsSummary(resolvedProjectSlug, 'layout-render'));
|
|
186
|
+
|
|
176
187
|
return (
|
|
177
188
|
<DocsChrome
|
|
178
189
|
config={config}
|
|
@@ -187,3 +198,7 @@ export default async function RootLayout({
|
|
|
187
198
|
</DocsChrome>
|
|
188
199
|
);
|
|
189
200
|
}
|
|
201
|
+
|
|
202
|
+
export default async function RootLayout(props: { children: React.ReactNode }) {
|
|
203
|
+
return withR2OpsContext(() => rootLayoutImpl(props));
|
|
204
|
+
}
|