jamdesk 1.1.22 → 1.1.24

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 (55) hide show
  1. package/bin/jamdesk.js +38 -0
  2. package/bin/stderr-filter.js +27 -0
  3. package/dist/__tests__/integration/validate.integration.test.js +14 -0
  4. package/dist/__tests__/integration/validate.integration.test.js.map +1 -1
  5. package/dist/__tests__/unit/deps-sync.test.js +2 -2
  6. package/dist/__tests__/unit/deps-sync.test.js.map +1 -1
  7. package/dist/__tests__/unit/deps.test.d.ts +2 -0
  8. package/dist/__tests__/unit/deps.test.d.ts.map +1 -0
  9. package/dist/__tests__/unit/deps.test.js +297 -0
  10. package/dist/__tests__/unit/deps.test.js.map +1 -0
  11. package/dist/__tests__/unit/dev-spawn.test.d.ts +2 -0
  12. package/dist/__tests__/unit/dev-spawn.test.d.ts.map +1 -0
  13. package/dist/__tests__/unit/dev-spawn.test.js +51 -0
  14. package/dist/__tests__/unit/dev-spawn.test.js.map +1 -0
  15. package/dist/__tests__/unit/mdx-validator.test.js +22 -1
  16. package/dist/__tests__/unit/mdx-validator.test.js.map +1 -1
  17. package/dist/__tests__/unit/stderr-filter.test.d.ts +2 -0
  18. package/dist/__tests__/unit/stderr-filter.test.d.ts.map +1 -0
  19. package/dist/__tests__/unit/stderr-filter.test.js +66 -0
  20. package/dist/__tests__/unit/stderr-filter.test.js.map +1 -0
  21. package/dist/__tests__/unit/validate-password-warning.test.d.ts +2 -0
  22. package/dist/__tests__/unit/validate-password-warning.test.d.ts.map +1 -0
  23. package/dist/__tests__/unit/validate-password-warning.test.js +25 -0
  24. package/dist/__tests__/unit/validate-password-warning.test.js.map +1 -0
  25. package/dist/commands/dev.d.ts +17 -0
  26. package/dist/commands/dev.d.ts.map +1 -1
  27. package/dist/commands/dev.js +26 -3
  28. package/dist/commands/dev.js.map +1 -1
  29. package/dist/commands/validate.d.ts.map +1 -1
  30. package/dist/commands/validate.js +13 -0
  31. package/dist/commands/validate.js.map +1 -1
  32. package/dist/lib/deps.d.ts +12 -1
  33. package/dist/lib/deps.d.ts.map +1 -1
  34. package/dist/lib/deps.js +115 -24
  35. package/dist/lib/deps.js.map +1 -1
  36. package/dist/lib/mdx-validator.d.ts +6 -0
  37. package/dist/lib/mdx-validator.d.ts.map +1 -1
  38. package/dist/lib/mdx-validator.js +14 -3
  39. package/dist/lib/mdx-validator.js.map +1 -1
  40. package/package.json +1 -1
  41. package/vendored/app/(unlock)/jd/unlock/UnlockForm.tsx +176 -0
  42. package/vendored/app/(unlock)/jd/unlock/page.tsx +157 -0
  43. package/vendored/app/api/jd/unlock/route.ts +325 -0
  44. package/vendored/app/layout.tsx +26 -1
  45. package/vendored/lib/auth-resolver.ts +109 -0
  46. package/vendored/lib/docs-isr.ts +82 -6
  47. package/vendored/lib/docs-types.ts +26 -0
  48. package/vendored/lib/extract-highlights.ts +5 -0
  49. package/vendored/lib/glob-match.ts +83 -0
  50. package/vendored/lib/middleware-helpers.ts +26 -0
  51. package/vendored/lib/public-paths-resolver.ts +227 -0
  52. package/vendored/lib/redis.ts +94 -0
  53. package/vendored/lib/sanitize-from.ts +36 -0
  54. package/vendored/schema/docs-schema.json +50 -0
  55. package/vendored/shared/auth-cookie.ts +163 -0
package/bin/jamdesk.js CHANGED
@@ -4,6 +4,44 @@ import { existsSync, statSync, readdirSync } from 'fs';
4
4
  import { join, dirname } from 'path';
5
5
  import { fileURLToPath } from 'url';
6
6
  import { execSync } from 'child_process';
7
+ import { filterStderrChunk } from './stderr-filter.js';
8
+
9
+ // package.json declares engines.node >=20. --loglevel=error in deps.ts means
10
+ // users on older Node would silently miss npm's EBADENGINE warning and hit a
11
+ // cryptic runtime error later, so fail fast here before any dynamic import.
12
+ const nodeMajor = parseInt(process.versions.node.split('.')[0], 10);
13
+ if (Number.isFinite(nodeMajor) && nodeMajor < 20) {
14
+ process.stderr.write(
15
+ `jamdesk requires Node.js 20 or later. Detected: ${process.version}\n` +
16
+ `Install a newer Node from https://nodejs.org/ and try again.\n`,
17
+ );
18
+ process.exit(1);
19
+ }
20
+
21
+ // Eat Node's "ExperimentalWarning: Importing JSON modules …" line (and its
22
+ // trailing "(Use `node --trace-warnings …)" hint) before the dist entrypoint
23
+ // loads. End users can't act on these, and they hang around indefinitely
24
+ // whenever a transitive dep uses a still-experimental Node feature.
25
+ //
26
+ // Implementation note: attaching `process.on('warning', …)` does NOT stop
27
+ // the default printer — Node fires the listener AND writes the warning to
28
+ // stderr. The only user-land way to suppress is to intercept stderr.write
29
+ // itself. The filter operates per-line so a multi-line chunk that contains
30
+ // a warning line plus real output only drops the warning, not the whole
31
+ // chunk (QA probe found the old whole-chunk behavior silently swallowed
32
+ // error messages whose body happened to match). DeprecationWarning, real
33
+ // errors, and everything unrelated pass through. Set
34
+ // JAMDESK_SHOW_WARNINGS=1 to disable.
35
+ if (!process.env.JAMDESK_SHOW_WARNINGS) {
36
+ const originalStderrWrite = process.stderr.write.bind(process.stderr);
37
+ process.stderr.write = function (chunk, ...rest) {
38
+ const text = typeof chunk === 'string' ? chunk : chunk?.toString?.('utf8') ?? '';
39
+ const result = filterStderrChunk(text);
40
+ if (result.action === 'passthrough') return originalStderrWrite(chunk, ...rest);
41
+ if (result.action === 'drop') return true;
42
+ return originalStderrWrite(result.text, ...rest);
43
+ };
44
+ }
7
45
 
8
46
  const __dirname = dirname(fileURLToPath(import.meta.url));
9
47
  const cliRoot = join(__dirname, '..');
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Per-line filter for process.stderr.write that eats Node's
3
+ * ExperimentalWarning banner + its "(Use `node --trace-warnings ...)" hint
4
+ * while passing everything else through. Kept as a pure function so it can
5
+ * be unit-tested without installing the real stderr monkey-patch.
6
+ *
7
+ * Returns one of three actions:
8
+ * - { action: 'passthrough' } — no changes, caller should write the
9
+ * original chunk verbatim (preserves Buffer identity + encoding args).
10
+ * - { action: 'drop' } — the whole chunk was warning noise; caller
11
+ * should return the success code without hitting the real stream.
12
+ * - { action: 'filtered', text } — mixed chunk. `text` is the surviving
13
+ * lines rejoined with '\n'; caller writes `text` instead of the chunk.
14
+ */
15
+ export function filterStderrChunk(text) {
16
+ const suppressLineRe = /^\(node:\d+\) ExperimentalWarning:|^\(Use `node --trace-warnings/;
17
+ const lines = text.split('\n');
18
+ const filtered = lines.filter((line) => !suppressLineRe.test(line));
19
+ if (filtered.length === lines.length) {
20
+ return { action: 'passthrough' };
21
+ }
22
+ const newText = filtered.join('\n');
23
+ if (newText === '') {
24
+ return { action: 'drop' };
25
+ }
26
+ return { action: 'filtered', text: newText };
27
+ }
@@ -52,5 +52,19 @@ describe('validate command integration', () => {
52
52
  expect(result.error).toContain('not found');
53
53
  });
54
54
  });
55
+ describe('with password protected project', () => {
56
+ it('validates password protection configuration', async () => {
57
+ const configPath = path.join(fixturesDir, 'password-protected-project/docs.json');
58
+ const result = await validateConfig(configPath);
59
+ if (!result.valid) {
60
+ console.log('Validation error:', result.error);
61
+ }
62
+ expect(result.valid).toBe(true);
63
+ expect(result.config).toBeDefined();
64
+ const auth = result.config?.auth;
65
+ expect(auth?.password?.enabled).toBe(true);
66
+ expect(auth?.password?.hint).toBe('Ask your account manager for access');
67
+ });
68
+ });
55
69
  });
56
70
  //# sourceMappingURL=validate.integration.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.integration.test.js","sourceRoot":"","sources":["../../../src/__tests__/integration/validate.integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.integration.test.js","sourceRoot":"","sources":["../../../src/__tests__/integration/validate.integration.test.ts"],"names":[],"mappings":"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"}
@@ -44,8 +44,8 @@ const EXCLUDED_PACKAGES = [
44
44
  '@anthropic-ai/sdk', // Claude API for AI chat (server-only)
45
45
  'playwright', // Screenshot capture (server-only)
46
46
  'fast-glob', // File globbing (server-only, ISR build)
47
- // Type-only imports (not runtime deps)
48
- 'mdast', 'estree-jsx', 'mdast-util-mdx',
47
+ // Type-only imports (not runtime deps) — stripped by swc at compile
48
+ 'mdast', 'estree-jsx', 'mdast-util-mdx', 'hast',
49
49
  // MDX processing (bundled with next-mdx-remote/mdx-js)
50
50
  'remark-parse', 'remark-mdx', 'vfile', 'estree-util-visit',
51
51
  // False positives from parsing
@@ -1 +1 @@
1
- {"version":3,"file":"deps-sync.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/deps-sync.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deps-sync.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/deps-sync.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=deps.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/deps.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,297 @@
1
+ /**
2
+ * @vitest-environment node
3
+ */
4
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
5
+ import fs from 'fs-extra';
6
+ import path from 'path';
7
+ import os from 'os';
8
+ import * as childProcess from 'child_process';
9
+ import { EventEmitter } from 'events';
10
+ import { verifyCriticalPackagesInstalled, ensureDependencies, } from '../../lib/deps.js';
11
+ // vi.mock is hoisted above imports by Vitest — this replaces the child_process
12
+ // module so that deps.ts's `import { spawn }` picks up our mock at load time,
13
+ // which is the only way to intercept ESM named exports.
14
+ vi.mock('child_process', async (importOriginal) => {
15
+ const actual = await importOriginal();
16
+ return { ...actual, spawn: vi.fn() };
17
+ });
18
+ // Shared handle to the mocked spawn across every describe block below.
19
+ const spawnMock = vi.mocked(childProcess.spawn);
20
+ describe('verifyCriticalPackagesInstalled', () => {
21
+ let tmpDir;
22
+ beforeEach(async () => {
23
+ vi.useRealTimers(); // ensureDependencies arms a 5-min setTimeout on install; fake timers from another suite would hang us
24
+ tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'jamdesk-deps-test-'));
25
+ });
26
+ afterEach(async () => {
27
+ await fs.remove(tmpDir);
28
+ });
29
+ it('returns false when node_modules does not exist', async () => {
30
+ const result = await verifyCriticalPackagesInstalled(tmpDir);
31
+ expect(result).toBe(false);
32
+ });
33
+ it('returns false when @mdx-js/mdx is missing', async () => {
34
+ await fs.ensureDir(path.join(tmpDir, 'node_modules', 'next'));
35
+ await fs.writeJson(path.join(tmpDir, 'node_modules', 'next', 'package.json'), { name: 'next' });
36
+ await fs.ensureDir(path.join(tmpDir, 'node_modules', 'react'));
37
+ await fs.writeJson(path.join(tmpDir, 'node_modules', 'react', 'package.json'), { name: 'react' });
38
+ const result = await verifyCriticalPackagesInstalled(tmpDir);
39
+ expect(result).toBe(false);
40
+ });
41
+ it('returns true when all critical packages exist', async () => {
42
+ const criticalMarkers = ['next', 'react', 'react-dom', '@mdx-js/mdx'];
43
+ for (const name of criticalMarkers) {
44
+ const pkgDir = path.join(tmpDir, 'node_modules', name);
45
+ await fs.ensureDir(pkgDir);
46
+ await fs.writeJson(path.join(pkgDir, 'package.json'), { name });
47
+ }
48
+ const result = await verifyCriticalPackagesInstalled(tmpDir);
49
+ expect(result).toBe(true);
50
+ });
51
+ it('returns false when @mdx-js/mdx directory exists but package.json is missing', async () => {
52
+ // Simulates an aborted npm install that created the directory but didn't finish
53
+ const criticalMarkers = ['next', 'react', 'react-dom'];
54
+ for (const name of criticalMarkers) {
55
+ const pkgDir = path.join(tmpDir, 'node_modules', name);
56
+ await fs.ensureDir(pkgDir);
57
+ await fs.writeJson(path.join(pkgDir, 'package.json'), { name });
58
+ }
59
+ await fs.ensureDir(path.join(tmpDir, 'node_modules', '@mdx-js', 'mdx'));
60
+ const result = await verifyCriticalPackagesInstalled(tmpDir);
61
+ expect(result).toBe(false);
62
+ });
63
+ it('handles scoped package names correctly across separator conventions', async () => {
64
+ // path.join normalizes forward slashes in segments on Windows, but we
65
+ // want explicit coverage that splitting "@mdx-js/mdx" into scope + name
66
+ // produces a correct check. Create ONLY the scoped marker, no others.
67
+ const pkgDir = path.join(tmpDir, 'node_modules', '@mdx-js', 'mdx');
68
+ await fs.ensureDir(pkgDir);
69
+ await fs.writeJson(path.join(pkgDir, 'package.json'), { name: '@mdx-js/mdx' });
70
+ // next/react/react-dom are still missing → integrity should fail.
71
+ const result = await verifyCriticalPackagesInstalled(tmpDir);
72
+ expect(result).toBe(false);
73
+ });
74
+ });
75
+ // File-scope helper reused by the "integrity check", "marker ordering",
76
+ // and "windows spawn" describe blocks below. Builds a fake child-process
77
+ // that asynchronously emits `close` with the given exit code. If opts.touchMdx
78
+ // is set, it first simulates a successful npm install by writing the critical
79
+ // package markers to that directory.
80
+ function mockNpmSpawn(exitCode, opts) {
81
+ const child = new EventEmitter();
82
+ child.stderr = new EventEmitter();
83
+ child.kill = vi.fn();
84
+ setImmediate(async () => {
85
+ if (opts?.touchMdx) {
86
+ const pkgDir = path.join(opts.touchMdx, 'node_modules', '@mdx-js', 'mdx');
87
+ await fs.ensureDir(pkgDir);
88
+ await fs.writeJson(path.join(pkgDir, 'package.json'), { name: '@mdx-js/mdx' });
89
+ for (const name of ['next', 'react', 'react-dom']) {
90
+ const p = path.join(opts.touchMdx, 'node_modules', name);
91
+ await fs.ensureDir(p);
92
+ await fs.writeJson(path.join(p, 'package.json'), { name });
93
+ }
94
+ }
95
+ child.emit('close', exitCode);
96
+ });
97
+ return child;
98
+ }
99
+ describe('ensureDependencies integrity check', () => {
100
+ let tmpDir;
101
+ beforeEach(async () => {
102
+ vi.useRealTimers();
103
+ tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'jamdesk-ensure-test-'));
104
+ spawnMock.mockReset();
105
+ });
106
+ afterEach(async () => {
107
+ await fs.remove(tmpDir);
108
+ });
109
+ it('reinstalls when package.json marker matches but node_modules is empty', async () => {
110
+ // First call: mocked spawn writes a healthy install + the marker.
111
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
112
+ await ensureDependencies(false, tmpDir);
113
+ expect(spawnMock).toHaveBeenCalledTimes(1);
114
+ // Delete node_modules but keep the marker — this is the exact state that
115
+ // produced the isaama@trillet.ai Windows report.
116
+ await fs.remove(path.join(tmpDir, 'node_modules'));
117
+ expect(fs.existsSync(path.join(tmpDir, 'package.json'))).toBe(true);
118
+ // Second call: integrity check fails, reinstall triggered. The CLI version
119
+ // in the marker still matches (same process), so this *proves* the
120
+ // integrity check — not the version/hash mismatch — triggered reinstall.
121
+ spawnMock.mockClear();
122
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
123
+ await ensureDependencies(false, tmpDir);
124
+ expect(spawnMock).toHaveBeenCalledTimes(1);
125
+ });
126
+ it('skips install when both marker and node_modules are healthy', async () => {
127
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
128
+ await ensureDependencies(false, tmpDir);
129
+ spawnMock.mockClear();
130
+ // Second call with everything intact: no spawn
131
+ await ensureDependencies(false, tmpDir);
132
+ expect(spawnMock).not.toHaveBeenCalled();
133
+ });
134
+ it('reinstalls when marker JSON is corrupt', async () => {
135
+ // Write garbage instead of valid JSON. Current ensureDependencies has a
136
+ // try/catch around readJson; we want to confirm it falls through to the
137
+ // install branch rather than crashing.
138
+ await fs.writeFile(path.join(tmpDir, 'package.json'), '{ not valid json');
139
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
140
+ await ensureDependencies(false, tmpDir);
141
+ expect(spawnMock).toHaveBeenCalledTimes(1);
142
+ });
143
+ it('reinstalls when marker has valid JSON but missing _jamdeskVersion', async () => {
144
+ // An older CLI (or a hand-edited marker) could leave this field out.
145
+ // versionMatch would compare to undefined and fail, triggering reinstall.
146
+ await fs.writeJson(path.join(tmpDir, 'package.json'), {
147
+ name: 'jamdesk-workspace',
148
+ private: true,
149
+ dependencies: {},
150
+ });
151
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
152
+ await ensureDependencies(false, tmpDir);
153
+ expect(spawnMock).toHaveBeenCalledTimes(1);
154
+ });
155
+ it('reinstalls when marker version matches but hash differs', async () => {
156
+ // First: healthy install so the real version/hash marker gets written.
157
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
158
+ await ensureDependencies(false, tmpDir);
159
+ // Tamper with just the hash — simulates an upgrade that added a new
160
+ // package to REQUIRED_DEPS without bumping the CLI version (e.g. a dev
161
+ // testing a hot-patch).
162
+ const marker = await fs.readJson(path.join(tmpDir, 'package.json'));
163
+ marker._depsHash = 'deadbeef';
164
+ await fs.writeJson(path.join(tmpDir, 'package.json'), marker);
165
+ spawnMock.mockClear();
166
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
167
+ await ensureDependencies(false, tmpDir);
168
+ expect(spawnMock).toHaveBeenCalledTimes(1);
169
+ });
170
+ it('reinstalls when marker hash matches but CLI version differs', async () => {
171
+ // Start from a healthy install, then tamper just the version so the
172
+ // fields are valid but don't match the running CLI.
173
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
174
+ await ensureDependencies(false, tmpDir);
175
+ const marker = await fs.readJson(path.join(tmpDir, 'package.json'));
176
+ marker._jamdeskVersion = '0.0.0-test-downgrade';
177
+ await fs.writeJson(path.join(tmpDir, 'package.json'), marker);
178
+ spawnMock.mockClear();
179
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
180
+ await ensureDependencies(false, tmpDir);
181
+ expect(spawnMock).toHaveBeenCalledTimes(1);
182
+ });
183
+ });
184
+ describe('ensureDependencies marker ordering', () => {
185
+ let tmpDir;
186
+ beforeEach(async () => {
187
+ vi.useRealTimers();
188
+ tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'jamdesk-marker-test-'));
189
+ spawnMock.mockReset();
190
+ });
191
+ afterEach(async () => {
192
+ await fs.remove(tmpDir);
193
+ });
194
+ it('does not leave a marker file when npm install fails', async () => {
195
+ // Mock npm install to exit with code 1 (failure)
196
+ spawnMock.mockImplementation(() => mockNpmSpawn(1));
197
+ await expect(ensureDependencies(false, tmpDir)).rejects.toThrow();
198
+ // Marker file should NOT exist, so the next run will reinstall
199
+ const markerPath = path.join(tmpDir, 'package.json');
200
+ expect(fs.existsSync(markerPath)).toBe(false);
201
+ });
202
+ it('writes the marker file after npm install succeeds', async () => {
203
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
204
+ await ensureDependencies(false, tmpDir);
205
+ const markerPath = path.join(tmpDir, 'package.json');
206
+ expect(fs.existsSync(markerPath)).toBe(true);
207
+ const marker = await fs.readJson(markerPath);
208
+ expect(marker._jamdeskVersion).toBeDefined();
209
+ expect(marker._depsHash).toBeDefined();
210
+ });
211
+ it('first-time install writes the marker exactly once', async () => {
212
+ // No pre-existing marker, no pre-existing node_modules — pure cold path.
213
+ expect(fs.existsSync(path.join(tmpDir, 'package.json'))).toBe(false);
214
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
215
+ const result = await ensureDependencies(false, tmpDir);
216
+ expect(result).toBe(path.join(tmpDir, 'node_modules'));
217
+ expect(spawnMock).toHaveBeenCalledTimes(1);
218
+ const marker = await fs.readJson(path.join(tmpDir, 'package.json'));
219
+ expect(marker._jamdeskVersion).toBeDefined();
220
+ expect(marker._depsHash).toBeDefined();
221
+ expect(marker.dependencies).toBeDefined();
222
+ });
223
+ it('throws and removes marker when npm reports success but packages are missing', async () => {
224
+ // Silent npm failure: exit 0 but no packages written. The post-install
225
+ // integrity check is the belt-and-braces for this.
226
+ spawnMock.mockImplementation(() => mockNpmSpawn(0 /* no touchMdx */));
227
+ await expect(ensureDependencies(false, tmpDir))
228
+ .rejects.toThrow(/critical packages are missing/);
229
+ // Marker must not survive a silent failure — next run should reinstall.
230
+ expect(fs.existsSync(path.join(tmpDir, 'package.json'))).toBe(false);
231
+ });
232
+ it('existing marker is removed on failure even if it was valid before', async () => {
233
+ // First call: successful install writes a real marker.
234
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
235
+ await ensureDependencies(false, tmpDir);
236
+ expect(fs.existsSync(path.join(tmpDir, 'package.json'))).toBe(true);
237
+ // Break the install (by nuking node_modules), then trip a failing reinstall.
238
+ await fs.remove(path.join(tmpDir, 'node_modules'));
239
+ spawnMock.mockClear();
240
+ spawnMock.mockImplementation(() => mockNpmSpawn(1));
241
+ await expect(ensureDependencies(false, tmpDir)).rejects.toThrow();
242
+ // Marker should be gone so the next run definitely reinstalls.
243
+ expect(fs.existsSync(path.join(tmpDir, 'package.json'))).toBe(false);
244
+ });
245
+ });
246
+ describe('ensureDependencies windows spawn', () => {
247
+ let tmpDir;
248
+ let originalPlatform;
249
+ beforeEach(async () => {
250
+ vi.useRealTimers();
251
+ tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'jamdesk-win-test-'));
252
+ spawnMock.mockReset();
253
+ originalPlatform = Object.getOwnPropertyDescriptor(process, 'platform');
254
+ });
255
+ afterEach(async () => {
256
+ if (originalPlatform) {
257
+ Object.defineProperty(process, 'platform', originalPlatform);
258
+ }
259
+ await fs.remove(tmpDir);
260
+ });
261
+ it('spawns npm with shell:true on win32', async () => {
262
+ Object.defineProperty(process, 'platform', { value: 'win32', configurable: true });
263
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
264
+ await ensureDependencies(false, tmpDir);
265
+ expect(spawnMock).toHaveBeenCalledTimes(1);
266
+ const [cmd, args, opts] = spawnMock.mock.calls[0];
267
+ expect(cmd).toBe('npm');
268
+ expect(args).toEqual(['install', '--omit=dev', '--no-audit', '--no-fund', '--loglevel=error']);
269
+ expect(opts.shell).toBe(true);
270
+ });
271
+ it('spawns npm without shell option on darwin/linux', async () => {
272
+ Object.defineProperty(process, 'platform', { value: 'darwin', configurable: true });
273
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
274
+ await ensureDependencies(false, tmpDir);
275
+ expect(spawnMock).toHaveBeenCalledTimes(1);
276
+ const [cmd, args, opts] = spawnMock.mock.calls[0];
277
+ expect(cmd).toBe('npm');
278
+ expect(args).toEqual(['install', '--omit=dev', '--no-audit', '--no-fund', '--loglevel=error']);
279
+ expect(opts.shell).toBeUndefined();
280
+ });
281
+ it('propagates spawn errors (e.g. ENOENT) as rejections', async () => {
282
+ Object.defineProperty(process, 'platform', { value: 'darwin', configurable: true });
283
+ // Simulate an immediate spawn error (e.g. npm not on PATH at all).
284
+ spawnMock.mockImplementation(() => {
285
+ const child = new EventEmitter();
286
+ child.stderr = new EventEmitter();
287
+ child.kill = vi.fn();
288
+ setImmediate(() => child.emit('error', new Error('spawn npm ENOENT')));
289
+ return child;
290
+ });
291
+ await expect(ensureDependencies(false, tmpDir))
292
+ .rejects.toThrow(/spawn npm ENOENT/);
293
+ // And no stale marker left behind.
294
+ expect(fs.existsSync(path.join(tmpDir, 'package.json'))).toBe(false);
295
+ });
296
+ });
297
+ //# sourceMappingURL=deps.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deps.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/deps.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dev-spawn.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-spawn.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/dev-spawn.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @vitest-environment node
3
+ *
4
+ * Unit tests for the `resolveNextBin` helper in `src/commands/dev.ts`.
5
+ *
6
+ * Task 6.5 of docs/plans/2026-04-14-cli-mdx-broken-install-fix.md —
7
+ * matches the Windows-spawn pattern used in `deps.test.ts` so a future
8
+ * isaama-style bug report for `jamdesk dev` on Windows has unit coverage.
9
+ */
10
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
11
+ import path from 'path';
12
+ import { resolveNextBin } from '../../commands/dev.js';
13
+ describe('resolveNextBin', () => {
14
+ let originalPlatform;
15
+ beforeEach(() => {
16
+ originalPlatform = Object.getOwnPropertyDescriptor(process, 'platform');
17
+ });
18
+ afterEach(() => {
19
+ if (originalPlatform) {
20
+ Object.defineProperty(process, 'platform', originalPlatform);
21
+ }
22
+ });
23
+ it('returns .cmd shim + shell:true on win32', () => {
24
+ Object.defineProperty(process, 'platform', { value: 'win32', configurable: true });
25
+ const { bin, shell } = resolveNextBin('/home/test/.jamdesk');
26
+ expect(bin).toBe(path.join('/home/test/.jamdesk', '.bin', 'next.cmd'));
27
+ expect(shell).toBe(true);
28
+ });
29
+ it('returns POSIX shim + shell:false on darwin', () => {
30
+ Object.defineProperty(process, 'platform', { value: 'darwin', configurable: true });
31
+ const { bin, shell } = resolveNextBin('/home/test/.jamdesk');
32
+ expect(bin).toBe(path.join('/home/test/.jamdesk', '.bin', 'next'));
33
+ expect(shell).toBe(false);
34
+ });
35
+ it('returns POSIX shim + shell:false on linux', () => {
36
+ Object.defineProperty(process, 'platform', { value: 'linux', configurable: true });
37
+ const { bin, shell } = resolveNextBin('/home/test/.jamdesk');
38
+ expect(bin).toBe(path.join('/home/test/.jamdesk', '.bin', 'next'));
39
+ expect(shell).toBe(false);
40
+ });
41
+ it('joins the binary onto any depsDir, including Windows-style paths', () => {
42
+ Object.defineProperty(process, 'platform', { value: 'win32', configurable: true });
43
+ // On macOS test runs, path.join treats backslashes as literal characters
44
+ // inside a single segment, so the assertion uses the raw expected shape
45
+ // rather than re-running path.join.
46
+ const { bin } = resolveNextBin('C:\\Users\\USER\\.jamdesk');
47
+ expect(bin).toContain('C:\\Users\\USER\\.jamdesk');
48
+ expect(bin).toContain('next.cmd');
49
+ });
50
+ });
51
+ //# sourceMappingURL=dev-spawn.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-spawn.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/dev-spawn.test.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,8 @@
2
2
  * @vitest-environment node
3
3
  */
4
4
  import { describe, it, expect } from 'vitest';
5
- import { validateMdxFile } from '../../lib/mdx-validator.js';
5
+ import path from 'path';
6
+ import { validateMdxFile, buildMdxNotFoundError } from '../../lib/mdx-validator.js';
6
7
  describe('MDX Validator', () => {
7
8
  describe('valid content', () => {
8
9
  it('passes valid MDX with components', async () => {
@@ -261,4 +262,24 @@ title: Test
261
262
  });
262
263
  });
263
264
  });
265
+ describe('buildMdxNotFoundError', () => {
266
+ it('includes the full expected @mdx-js/mdx path', () => {
267
+ const err = buildMdxNotFoundError('/Users/test/.jamdesk');
268
+ expect(err.message).toContain(path.join('/Users/test/.jamdesk', 'node_modules', '@mdx-js', 'mdx'));
269
+ });
270
+ it('tells the user how to repair via PowerShell Remove-Item', () => {
271
+ const err = buildMdxNotFoundError('/Users/test/.jamdesk');
272
+ expect(err.message).toContain('PowerShell: Remove-Item -Recurse -Force "/Users/test/.jamdesk"');
273
+ });
274
+ it('mentions the underlying cause so the user has context', () => {
275
+ const err = buildMdxNotFoundError('/Users/test/.jamdesk');
276
+ expect(err.message).toMatch(/install was interrupted|reinstall/i);
277
+ });
278
+ it('passes a Windows-style depsDir through to the PowerShell hint verbatim', () => {
279
+ const err = buildMdxNotFoundError('C:\\Users\\USER\\.jamdesk');
280
+ // The PowerShell command must target the actual depsDir, NOT a hardcoded
281
+ // fallback — this is the bug this test guards against (see Task 6 review).
282
+ expect(err.message).toContain('Remove-Item -Recurse -Force "C:\\Users\\USER\\.jamdesk"');
283
+ });
284
+ });
264
285
  //# sourceMappingURL=mdx-validator.test.js.map