jamdesk 1.1.23 → 1.1.25

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 (36) hide show
  1. package/bin/jamdesk.js +38 -0
  2. package/bin/stderr-filter.js +27 -0
  3. package/dist/__tests__/unit/deps-sync.test.js +2 -2
  4. package/dist/__tests__/unit/deps-sync.test.js.map +1 -1
  5. package/dist/__tests__/unit/deps.test.d.ts +2 -0
  6. package/dist/__tests__/unit/deps.test.d.ts.map +1 -0
  7. package/dist/__tests__/unit/deps.test.js +433 -0
  8. package/dist/__tests__/unit/deps.test.js.map +1 -0
  9. package/dist/__tests__/unit/dev-spawn.test.d.ts +2 -0
  10. package/dist/__tests__/unit/dev-spawn.test.d.ts.map +1 -0
  11. package/dist/__tests__/unit/dev-spawn.test.js +51 -0
  12. package/dist/__tests__/unit/dev-spawn.test.js.map +1 -0
  13. package/dist/__tests__/unit/mdx-validator.test.js +22 -1
  14. package/dist/__tests__/unit/mdx-validator.test.js.map +1 -1
  15. package/dist/__tests__/unit/stderr-filter.test.d.ts +2 -0
  16. package/dist/__tests__/unit/stderr-filter.test.d.ts.map +1 -0
  17. package/dist/__tests__/unit/stderr-filter.test.js +66 -0
  18. package/dist/__tests__/unit/stderr-filter.test.js.map +1 -0
  19. package/dist/__tests__/unit/windows-ci-diagnosis.test.d.ts +2 -0
  20. package/dist/__tests__/unit/windows-ci-diagnosis.test.d.ts.map +1 -0
  21. package/dist/__tests__/unit/windows-ci-diagnosis.test.js +132 -0
  22. package/dist/__tests__/unit/windows-ci-diagnosis.test.js.map +1 -0
  23. package/dist/commands/dev.d.ts +17 -0
  24. package/dist/commands/dev.d.ts.map +1 -1
  25. package/dist/commands/dev.js +26 -3
  26. package/dist/commands/dev.js.map +1 -1
  27. package/dist/lib/deps.d.ts +13 -1
  28. package/dist/lib/deps.d.ts.map +1 -1
  29. package/dist/lib/deps.js +291 -36
  30. package/dist/lib/deps.js.map +1 -1
  31. package/dist/lib/mdx-validator.d.ts +6 -0
  32. package/dist/lib/mdx-validator.d.ts.map +1 -1
  33. package/dist/lib/mdx-validator.js +14 -3
  34. package/dist/lib/mdx-validator.js.map +1 -1
  35. package/package.json +4 -1
  36. package/vendored/workspace-package-lock.json +6735 -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
+ }
@@ -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,433 @@
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
+ // "windows spawn", "install command", and "install lock" describe blocks.
77
+ // Builds a fake child-process that asynchronously emits `close` with the
78
+ // given exit code. Options:
79
+ // - `touchMdx`: simulate a successful npm install by writing the critical
80
+ // package markers into the given directory before emitting `close`.
81
+ // - `stderr`: emit the given string on stderr before `close` — used to
82
+ // feed canned npm error shapes (EUSAGE drift, ENETUNREACH, etc.) through
83
+ // deps.ts's stderr-capturing error path.
84
+ function mockNpmSpawn(exitCode, opts) {
85
+ const child = new EventEmitter();
86
+ child.stderr = new EventEmitter();
87
+ child.kill = vi.fn();
88
+ setImmediate(async () => {
89
+ if (opts?.touchMdx) {
90
+ const pkgDir = path.join(opts.touchMdx, 'node_modules', '@mdx-js', 'mdx');
91
+ await fs.ensureDir(pkgDir);
92
+ await fs.writeJson(path.join(pkgDir, 'package.json'), { name: '@mdx-js/mdx' });
93
+ for (const name of ['next', 'react', 'react-dom']) {
94
+ const p = path.join(opts.touchMdx, 'node_modules', name);
95
+ await fs.ensureDir(p);
96
+ await fs.writeJson(path.join(p, 'package.json'), { name });
97
+ }
98
+ }
99
+ if (opts?.stderr) {
100
+ child.stderr.emit('data', Buffer.from(opts.stderr));
101
+ }
102
+ child.emit('close', exitCode);
103
+ });
104
+ return child;
105
+ }
106
+ describe('ensureDependencies integrity check', () => {
107
+ let tmpDir;
108
+ beforeEach(async () => {
109
+ vi.useRealTimers();
110
+ tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'jamdesk-ensure-test-'));
111
+ spawnMock.mockReset();
112
+ });
113
+ afterEach(async () => {
114
+ await fs.remove(tmpDir);
115
+ });
116
+ it('reinstalls when package.json marker matches but node_modules is empty', async () => {
117
+ // First call: mocked spawn writes a healthy install + the marker.
118
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
119
+ await ensureDependencies(false, tmpDir);
120
+ expect(spawnMock).toHaveBeenCalledTimes(1);
121
+ // Delete node_modules but keep the marker — this is the exact state that
122
+ // produced the isaama@trillet.ai Windows report.
123
+ await fs.remove(path.join(tmpDir, 'node_modules'));
124
+ expect(fs.existsSync(path.join(tmpDir, 'package.json'))).toBe(true);
125
+ // Second call: integrity check fails, reinstall triggered. The CLI version
126
+ // in the marker still matches (same process), so this *proves* the
127
+ // integrity check — not the version/hash mismatch — triggered reinstall.
128
+ spawnMock.mockClear();
129
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
130
+ await ensureDependencies(false, tmpDir);
131
+ expect(spawnMock).toHaveBeenCalledTimes(1);
132
+ });
133
+ it('skips install when both marker and node_modules are healthy', async () => {
134
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
135
+ await ensureDependencies(false, tmpDir);
136
+ spawnMock.mockClear();
137
+ // Second call with everything intact: no spawn
138
+ await ensureDependencies(false, tmpDir);
139
+ expect(spawnMock).not.toHaveBeenCalled();
140
+ });
141
+ it('reinstalls when marker JSON is corrupt', async () => {
142
+ // Write garbage instead of valid JSON. Current ensureDependencies has a
143
+ // try/catch around readJson; we want to confirm it falls through to the
144
+ // install branch rather than crashing.
145
+ await fs.writeFile(path.join(tmpDir, 'package.json'), '{ not valid json');
146
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
147
+ await ensureDependencies(false, tmpDir);
148
+ expect(spawnMock).toHaveBeenCalledTimes(1);
149
+ });
150
+ it('reinstalls when marker has valid JSON but missing _jamdeskVersion', async () => {
151
+ // An older CLI (or a hand-edited marker) could leave this field out.
152
+ // versionMatch would compare to undefined and fail, triggering reinstall.
153
+ await fs.writeJson(path.join(tmpDir, 'package.json'), {
154
+ name: 'jamdesk-workspace',
155
+ private: true,
156
+ dependencies: {},
157
+ });
158
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
159
+ await ensureDependencies(false, tmpDir);
160
+ expect(spawnMock).toHaveBeenCalledTimes(1);
161
+ });
162
+ it('reinstalls when marker version matches but hash differs', async () => {
163
+ // First: healthy install so the real version/hash marker gets written.
164
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
165
+ await ensureDependencies(false, tmpDir);
166
+ // Tamper with just the hash — simulates an upgrade that added a new
167
+ // package to REQUIRED_DEPS without bumping the CLI version (e.g. a dev
168
+ // testing a hot-patch).
169
+ const marker = await fs.readJson(path.join(tmpDir, 'package.json'));
170
+ marker._depsHash = 'deadbeef';
171
+ await fs.writeJson(path.join(tmpDir, 'package.json'), marker);
172
+ spawnMock.mockClear();
173
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
174
+ await ensureDependencies(false, tmpDir);
175
+ expect(spawnMock).toHaveBeenCalledTimes(1);
176
+ });
177
+ it('reinstalls when marker hash matches but CLI version differs', async () => {
178
+ // Start from a healthy install, then tamper just the version so the
179
+ // fields are valid but don't match the running CLI.
180
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
181
+ await ensureDependencies(false, tmpDir);
182
+ const marker = await fs.readJson(path.join(tmpDir, 'package.json'));
183
+ marker._jamdeskVersion = '0.0.0-test-downgrade';
184
+ await fs.writeJson(path.join(tmpDir, 'package.json'), marker);
185
+ spawnMock.mockClear();
186
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
187
+ await ensureDependencies(false, tmpDir);
188
+ expect(spawnMock).toHaveBeenCalledTimes(1);
189
+ });
190
+ });
191
+ describe('ensureDependencies marker ordering', () => {
192
+ let tmpDir;
193
+ beforeEach(async () => {
194
+ vi.useRealTimers();
195
+ tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'jamdesk-marker-test-'));
196
+ spawnMock.mockReset();
197
+ });
198
+ afterEach(async () => {
199
+ await fs.remove(tmpDir);
200
+ });
201
+ it('does not leave a marker file when npm install fails', async () => {
202
+ // Mock npm install to exit with code 1 (failure)
203
+ spawnMock.mockImplementation(() => mockNpmSpawn(1));
204
+ await expect(ensureDependencies(false, tmpDir)).rejects.toThrow();
205
+ // Marker file should NOT exist, so the next run will reinstall
206
+ const markerPath = path.join(tmpDir, 'package.json');
207
+ expect(fs.existsSync(markerPath)).toBe(false);
208
+ });
209
+ it('writes the marker file after npm install succeeds', async () => {
210
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
211
+ await ensureDependencies(false, tmpDir);
212
+ const markerPath = path.join(tmpDir, 'package.json');
213
+ expect(fs.existsSync(markerPath)).toBe(true);
214
+ const marker = await fs.readJson(markerPath);
215
+ expect(marker._jamdeskVersion).toBeDefined();
216
+ expect(marker._depsHash).toBeDefined();
217
+ });
218
+ it('first-time install writes the marker exactly once', async () => {
219
+ // No pre-existing marker, no pre-existing node_modules — pure cold path.
220
+ expect(fs.existsSync(path.join(tmpDir, 'package.json'))).toBe(false);
221
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
222
+ const result = await ensureDependencies(false, tmpDir);
223
+ expect(result).toBe(path.join(tmpDir, 'node_modules'));
224
+ expect(spawnMock).toHaveBeenCalledTimes(1);
225
+ const marker = await fs.readJson(path.join(tmpDir, 'package.json'));
226
+ expect(marker._jamdeskVersion).toBeDefined();
227
+ expect(marker._depsHash).toBeDefined();
228
+ expect(marker.dependencies).toBeDefined();
229
+ });
230
+ it('throws and removes marker when npm reports success but packages are missing', async () => {
231
+ // Silent npm failure: exit 0 but no packages written. The post-install
232
+ // integrity check is the belt-and-braces for this.
233
+ spawnMock.mockImplementation(() => mockNpmSpawn(0 /* no touchMdx */));
234
+ await expect(ensureDependencies(false, tmpDir))
235
+ .rejects.toThrow(/critical packages are missing/);
236
+ // Marker must not survive a silent failure — next run should reinstall.
237
+ expect(fs.existsSync(path.join(tmpDir, 'package.json'))).toBe(false);
238
+ });
239
+ it('existing marker is removed on failure even if it was valid before', async () => {
240
+ // First call: successful install writes a real marker.
241
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
242
+ await ensureDependencies(false, tmpDir);
243
+ expect(fs.existsSync(path.join(tmpDir, 'package.json'))).toBe(true);
244
+ // Break the install (by nuking node_modules), then trip a failing reinstall.
245
+ await fs.remove(path.join(tmpDir, 'node_modules'));
246
+ spawnMock.mockClear();
247
+ spawnMock.mockImplementation(() => mockNpmSpawn(1));
248
+ await expect(ensureDependencies(false, tmpDir)).rejects.toThrow();
249
+ // Marker should be gone so the next run definitely reinstalls.
250
+ expect(fs.existsSync(path.join(tmpDir, 'package.json'))).toBe(false);
251
+ });
252
+ });
253
+ describe('ensureDependencies windows spawn', () => {
254
+ let tmpDir;
255
+ let originalPlatform;
256
+ beforeEach(async () => {
257
+ vi.useRealTimers();
258
+ tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'jamdesk-win-test-'));
259
+ spawnMock.mockReset();
260
+ originalPlatform = Object.getOwnPropertyDescriptor(process, 'platform');
261
+ });
262
+ afterEach(async () => {
263
+ if (originalPlatform) {
264
+ Object.defineProperty(process, 'platform', originalPlatform);
265
+ }
266
+ await fs.remove(tmpDir);
267
+ });
268
+ it('spawns npm with shell:true on win32', async () => {
269
+ Object.defineProperty(process, 'platform', { value: 'win32', configurable: true });
270
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
271
+ await ensureDependencies(false, tmpDir);
272
+ expect(spawnMock).toHaveBeenCalledTimes(1);
273
+ const [cmd, args, opts] = spawnMock.mock.calls[0];
274
+ expect(cmd).toBe('npm');
275
+ expect(args).toEqual(['ci', '--no-audit', '--no-fund', '--loglevel=error']);
276
+ expect(opts.shell).toBe(true);
277
+ });
278
+ it('spawns npm without shell option on darwin/linux', async () => {
279
+ Object.defineProperty(process, 'platform', { value: 'darwin', configurable: true });
280
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
281
+ await ensureDependencies(false, tmpDir);
282
+ expect(spawnMock).toHaveBeenCalledTimes(1);
283
+ const [cmd, args, opts] = spawnMock.mock.calls[0];
284
+ expect(cmd).toBe('npm');
285
+ expect(args).toEqual(['ci', '--no-audit', '--no-fund', '--loglevel=error']);
286
+ expect(opts.shell).toBeUndefined();
287
+ });
288
+ it('propagates spawn errors (e.g. ENOENT) as rejections', async () => {
289
+ Object.defineProperty(process, 'platform', { value: 'darwin', configurable: true });
290
+ // Simulate an immediate spawn error (e.g. npm not on PATH at all).
291
+ spawnMock.mockImplementation(() => {
292
+ const child = new EventEmitter();
293
+ child.stderr = new EventEmitter();
294
+ child.kill = vi.fn();
295
+ setImmediate(() => child.emit('error', new Error('spawn npm ENOENT')));
296
+ return child;
297
+ });
298
+ await expect(ensureDependencies(false, tmpDir))
299
+ .rejects.toThrow(/spawn npm ENOENT/);
300
+ // And no stale marker left behind.
301
+ expect(fs.existsSync(path.join(tmpDir, 'package.json'))).toBe(false);
302
+ });
303
+ });
304
+ describe('ensureDependencies install command', () => {
305
+ let tmpDir;
306
+ beforeEach(async () => {
307
+ vi.useRealTimers();
308
+ tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'jamdesk-ensure-cmd-test-'));
309
+ spawnMock.mockReset();
310
+ });
311
+ afterEach(async () => {
312
+ await fs.remove(tmpDir);
313
+ vi.restoreAllMocks();
314
+ });
315
+ it('copies the shipped workspace lockfile and runs npm ci (not npm install)', async () => {
316
+ // Stub fs.copy so the test doesn't require the real shipped lockfile
317
+ // to exist at the resolved path — we only care that deps.ts attempts
318
+ // to copy from vendored/workspace-package-lock.json into
319
+ // depsDir/package-lock.json.
320
+ const copySpy = vi
321
+ .spyOn(fs, 'copy')
322
+ .mockImplementation(async () => undefined);
323
+ // mockNpmSpawn pre-seeds the critical markers so the post-install
324
+ // verifyCriticalPackagesInstalled() check passes.
325
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
326
+ await ensureDependencies(false, tmpDir);
327
+ // Assert 1: fs.copy was called with a source ending in the shipped
328
+ // lockfile path and a dest pointing at depsDir/package-lock.json.
329
+ expect(copySpy).toHaveBeenCalledWith(expect.stringMatching(/vendored[\\/]workspace-package-lock\.json$/), path.join(tmpDir, 'package-lock.json'));
330
+ // Assert 2: spawn was called with 'npm ci' not 'npm install'.
331
+ expect(spawnMock).toHaveBeenCalled();
332
+ const [cmd, args] = spawnMock.mock.calls[0];
333
+ expect(cmd).toBe('npm');
334
+ expect(args).toEqual(['ci', '--no-audit', '--no-fund', '--loglevel=error']);
335
+ });
336
+ it('rethrows fs.copy ENOENT with a user-facing "damaged install" hint', async () => {
337
+ // Simulate the shipped lockfile being absent from the installed package
338
+ // (e.g. a broken global install or a corrupted vendored/ directory).
339
+ // deps.ts wraps fs.copy in a try/catch that rethrows with a reinstall
340
+ // hint — bare ENOENT from the Node stdlib would be useless to users.
341
+ const enoent = Object.assign(new Error("ENOENT: no such file or directory, copyfile '/some/path/vendored/workspace-package-lock.json'"), { code: 'ENOENT' });
342
+ vi.spyOn(fs, 'copy').mockImplementation(async () => {
343
+ throw enoent;
344
+ });
345
+ // spawn should never be called because the copy fails first, but set
346
+ // a safe default so the test fails loudly if control reaches spawn.
347
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
348
+ await expect(ensureDependencies(false, tmpDir)).rejects.toThrow(/Failed to copy workspace lockfile.*damaged.*npm install -g jamdesk/s);
349
+ expect(spawnMock).not.toHaveBeenCalled();
350
+ // Failure path clears the pre-install package.json so the next run reinstalls.
351
+ expect(fs.existsSync(path.join(tmpDir, 'package.json'))).toBe(false);
352
+ });
353
+ it('wraps an npm ci EUSAGE drift error with a reinstall hint', async () => {
354
+ // Real-world failure shape: shipped lockfile out of sync with REQUIRED_DEPS.
355
+ // deps.ts should surface a single actionable `npm install -g` instruction
356
+ // instead of dumping the raw npm boilerplate.
357
+ vi.spyOn(fs, 'copy').mockImplementation(async () => undefined);
358
+ spawnMock.mockImplementation(() => mockNpmSpawn(1, {
359
+ stderr: 'npm error code EUSAGE\n' +
360
+ 'npm error `npm ci` can only install packages when your package.json and package-lock.json\n' +
361
+ 'npm error or npm-shrinkwrap.json are in sync. Please update your lock file with `npm install`\n' +
362
+ 'npm error Missing: some-package@1.2.3 from lock file\n',
363
+ }));
364
+ await expect(ensureDependencies(false, tmpDir)).rejects.toThrow(/shipped lockfile is out of sync.*npm install -g jamdesk@latest/s);
365
+ });
366
+ it('does NOT apply the drift hint to a generic npm ci failure', async () => {
367
+ // Non-drift error (network) must fall through to the plain "npm ci
368
+ // exited with code N" so users aren't gaslit into reinstalling the CLI.
369
+ vi.spyOn(fs, 'copy').mockImplementation(async () => undefined);
370
+ spawnMock.mockImplementation(() => mockNpmSpawn(1, {
371
+ stderr: 'npm error code ENETUNREACH\n' +
372
+ 'npm error syscall connect\n' +
373
+ 'npm error errno ENETUNREACH\n',
374
+ }));
375
+ const err = await ensureDependencies(false, tmpDir).catch((e) => e);
376
+ expect(err).toBeInstanceOf(Error);
377
+ expect(err.message).toMatch(/npm ci exited with code 1[\s\S]*ENETUNREACH/);
378
+ expect(err.message).not.toMatch(/shipped lockfile is out of sync/);
379
+ });
380
+ });
381
+ describe('ensureDependencies install lock', () => {
382
+ let tmpDir;
383
+ beforeEach(async () => {
384
+ vi.useRealTimers();
385
+ tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'jamdesk-lock-test-'));
386
+ spawnMock.mockReset();
387
+ // Shared install-path stubs: bypass the real shipped-lockfile copy and
388
+ // default to a passing install. Individual tests override spawnMock as
389
+ // needed (e.g., the failure-cleanup test uses exit code 1).
390
+ vi.spyOn(fs, 'copy').mockImplementation(async () => undefined);
391
+ spawnMock.mockImplementation(() => mockNpmSpawn(0, { touchMdx: tmpDir }));
392
+ });
393
+ afterEach(async () => {
394
+ await fs.remove(tmpDir);
395
+ vi.restoreAllMocks();
396
+ });
397
+ it('serializes concurrent ensureDependencies calls so only one spawn runs', async () => {
398
+ // Without the lock, two concurrent npm ci runs would race on
399
+ // ~/.jamdesk/node_modules (npm ci deletes + rewrites it). With the
400
+ // lock, the loser re-checks after the winner releases and sees a fresh
401
+ // marker, so spawnMock fires exactly once.
402
+ const [result1, result2] = await Promise.all([
403
+ ensureDependencies(false, tmpDir),
404
+ ensureDependencies(false, tmpDir),
405
+ ]);
406
+ expect(result1).toBe(path.join(tmpDir, 'node_modules'));
407
+ expect(result2).toBe(path.join(tmpDir, 'node_modules'));
408
+ expect(spawnMock).toHaveBeenCalledTimes(1);
409
+ expect(fs.existsSync(path.join(tmpDir, '.install.lock'))).toBe(false);
410
+ });
411
+ it('removes the install lock file on successful install', async () => {
412
+ await ensureDependencies(false, tmpDir);
413
+ expect(fs.existsSync(path.join(tmpDir, '.install.lock'))).toBe(false);
414
+ });
415
+ it('removes the install lock file on failed install', async () => {
416
+ spawnMock.mockImplementation(() => mockNpmSpawn(1));
417
+ await expect(ensureDependencies(false, tmpDir)).rejects.toThrow();
418
+ expect(fs.existsSync(path.join(tmpDir, '.install.lock'))).toBe(false);
419
+ });
420
+ it('bypasses a stale lock file older than 10 minutes', async () => {
421
+ // A prior process crashed and left the lock file behind; the stale
422
+ // detector should remove it and proceed instead of polling forever.
423
+ await fs.ensureDir(tmpDir);
424
+ const lockPath = path.join(tmpDir, '.install.lock');
425
+ await fs.writeFile(lockPath, '999\n0\n');
426
+ const stale = new Date(Date.now() - 11 * 60 * 1000);
427
+ await fs.utimes(lockPath, stale, stale);
428
+ await ensureDependencies(false, tmpDir);
429
+ expect(spawnMock).toHaveBeenCalledTimes(1);
430
+ expect(fs.existsSync(lockPath)).toBe(false);
431
+ });
432
+ });
433
+ //# 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":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACL,+BAA+B,EAC/B,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAE3B,+EAA+E;AAC/E,8EAA8E;AAC9E,wDAAwD;AACxD,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;IAChD,MAAM,MAAM,GAAG,MAAM,cAAc,EAAkC,CAAC;IACtE,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,uEAAuE;AACvE,MAAM,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAEhD,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,IAAI,MAAc,CAAC;IAEnB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,sGAAsG;QAC1H,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAChG,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAElG,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;QACtE,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;YACvD,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC3F,gFAAgF;QAChF,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACvD,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;YACvD,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QAExE,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,sEAAsE;QACtE,wEAAwE;QACxE,sEAAsE;QACtE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACnE,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAC/E,kEAAkE;QAClE,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,wEAAwE;AACxE,0EAA0E;AAC1E,yEAAyE;AACzE,4BAA4B;AAC5B,0EAA0E;AAC1E,sEAAsE;AACtE,uEAAuE;AACvE,2EAA2E;AAC3E,2CAA2C;AAC3C,SAAS,YAAY,CACnB,QAAgB,EAChB,IAA6C;IAE7C,MAAM,KAAK,GAAG,IAAI,YAAY,EAAS,CAAC;IACxC,KAAK,CAAC,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IAClC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IACrB,YAAY,CAAC,KAAK,IAAI,EAAE;QACtB,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAC1E,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;YAC/E,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC;gBAClD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;gBACzD,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACtB,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QACD,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;YACjB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,IAAI,MAAc,CAAC;IAEnB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;QAC1E,SAAS,CAAC,SAAS,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,kEAAkE;QAClE,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC;QACjF,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAE3C,yEAAyE;QACzE,iDAAiD;QACjD,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpE,2EAA2E;QAC3E,mEAAmE;QACnE,yEAAyE;QACzE,SAAS,CAAC,SAAS,EAAE,CAAC;QACtB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC;QACjF,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC;QACjF,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,SAAS,CAAC,SAAS,EAAE,CAAC;QAEtB,+CAA+C;QAC/C,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,wEAAwE;QACxE,wEAAwE;QACxE,uCAAuC;QACvC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAE1E,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC;QACjF,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,qEAAqE;QACrE,0EAA0E;QAC1E,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE;YACpD,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,EAAE;SACjB,CAAC,CAAC;QAEH,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC;QACjF,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,uEAAuE;QACvE,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC;QACjF,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAExC,oEAAoE;QACpE,uEAAuE;QACvE,wBAAwB;QACxB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC;QAC9B,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;QAE9D,SAAS,CAAC,SAAS,EAAE,CAAC;QACtB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC;QACjF,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,oEAAoE;QACpE,oDAAoD;QACpD,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC;QACjF,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAExC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,eAAe,GAAG,sBAAsB,CAAC;QAChD,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;QAE9D,SAAS,CAAC,SAAS,EAAE,CAAC;QACtB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC;QACjF,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,IAAI,MAAc,CAAC;IAEnB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;QAC1E,SAAS,CAAC,SAAS,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,iDAAiD;QACjD,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAQ,CAAC,CAAC;QAE3D,MAAM,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAElE,+DAA+D;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACrD,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC;QAEjF,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAExC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACrD,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,yEAAyE;QACzE,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAErE,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC;QACjF,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEvD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC3F,uEAAuE;QACvE,mDAAmD;QACnD,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAQ,CAAC,CAAC;QAE7E,MAAM,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aAC5C,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;QAEpD,wEAAwE;QACxE,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,uDAAuD;QACvD,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC;QACjF,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpE,6EAA6E;QAC7E,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QACnD,SAAS,CAAC,SAAS,EAAE,CAAC;QACtB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAQ,CAAC,CAAC;QAE3D,MAAM,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAElE,+DAA+D;QAC/D,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,IAAI,MAAc,CAAC;IACnB,IAAI,gBAAgD,CAAC;IAErD,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACvE,SAAS,CAAC,SAAS,EAAE,CAAC;QACtB,gBAAgB,GAAG,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC;QAEjF,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAExC,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAE,IAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACpF,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC;QAEjF,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAExC,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAE,IAAY,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACpF,mEAAmE;QACnE,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAChC,MAAM,KAAK,GAAG,IAAI,YAAY,EAAS,CAAC;YACxC,KAAK,CAAC,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YACrB,YAAY,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aAC5C,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAEvC,mCAAmC;QACnC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,IAAI,MAAc,CAAC;IAEnB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,0BAA0B,CAAC,CAAC,CAAC;QAC9E,SAAS,CAAC,SAAS,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACvF,qEAAqE;QACrE,qEAAqE;QACrE,yDAAyD;QACzD,6BAA6B;QAC7B,MAAM,OAAO,GAAG,EAAE;aACf,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC;aACjB,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,SAAkB,CAAC,CAAC;QAEtD,kEAAkE;QAClE,kDAAkD;QAClD,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC;QAEjF,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAExC,mEAAmE;QACnE,kEAAkE;QAClE,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAClC,MAAM,CAAC,cAAc,CAAC,4CAA4C,CAAC,EACnE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC,CACvC,CAAC;QAEF,8DAA8D;QAC9D,MAAM,CAAC,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,wEAAwE;QACxE,qEAAqE;QACrE,sEAAsE;QACtE,qEAAqE;QACrE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAC1B,IAAI,KAAK,CAAC,+FAA+F,CAAC,EAC1G,EAAE,IAAI,EAAE,QAAQ,EAAE,CACnB,CAAC;QACF,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;YACjD,MAAM,MAAM,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,qEAAqE;QACrE,oEAAoE;QACpE,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC;QAEjF,MAAM,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC7D,qEAAqE,CACtE,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzC,+EAA+E;QAC/E,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,6EAA6E;QAC7E,0EAA0E;QAC1E,8CAA8C;QAC9C,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,SAAkB,CAAC,CAAC;QACxE,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE;YACjD,MAAM,EACJ,yBAAyB;gBACzB,6FAA6F;gBAC7F,iGAAiG;gBACjG,wDAAwD;SAC3D,CAAQ,CAAC,CAAC;QAEX,MAAM,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC7D,iEAAiE,CAClE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,mEAAmE;QACnE,wEAAwE;QACxE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,SAAkB,CAAC,CAAC;QACxE,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE;YACjD,MAAM,EACJ,8BAA8B;gBAC9B,6BAA6B;gBAC7B,+BAA+B;SAClC,CAAQ,CAAC,CAAC;QAEX,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;QAC3E,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,IAAI,MAAc,CAAC;IAEnB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACxE,SAAS,CAAC,SAAS,EAAE,CAAC;QACtB,uEAAuE;QACvE,uEAAuE;QACvE,4DAA4D;QAC5D,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,SAAkB,CAAC,CAAC;QACxE,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAQ,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,6DAA6D;QAC7D,mEAAmE;QACnE,uEAAuE;QACvE,2CAA2C;QAC3C,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC3C,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC;YACjC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAQ,CAAC,CAAC;QAC3D,MAAM,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAClE,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAChE,mEAAmE;QACnE,oEAAoE;QACpE,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACpD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACpD,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAExC,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAExC,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -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":""}