modestbench 0.5.1 → 0.7.0

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 (117) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +6 -2
  3. package/dist/adapters/jest-adapter.cjs +496 -0
  4. package/dist/adapters/jest-adapter.cjs.map +1 -0
  5. package/dist/adapters/jest-adapter.d.cts +42 -0
  6. package/dist/adapters/jest-adapter.d.cts.map +1 -0
  7. package/dist/adapters/jest-adapter.d.ts +42 -0
  8. package/dist/adapters/jest-adapter.d.ts.map +1 -0
  9. package/dist/adapters/jest-adapter.js +459 -0
  10. package/dist/adapters/jest-adapter.js.map +1 -0
  11. package/dist/adapters/jest-hooks.cjs +83 -0
  12. package/dist/adapters/jest-hooks.cjs.map +1 -0
  13. package/dist/adapters/jest-hooks.d.cts +24 -0
  14. package/dist/adapters/jest-hooks.d.cts.map +1 -0
  15. package/dist/adapters/jest-hooks.d.ts +24 -0
  16. package/dist/adapters/jest-hooks.d.ts.map +1 -0
  17. package/dist/adapters/jest-hooks.js +78 -0
  18. package/dist/adapters/jest-hooks.js.map +1 -0
  19. package/dist/adapters/jest-register.cjs +17 -0
  20. package/dist/adapters/jest-register.cjs.map +1 -0
  21. package/dist/adapters/jest-register.d.cts +12 -0
  22. package/dist/adapters/jest-register.d.cts.map +1 -0
  23. package/dist/adapters/jest-register.d.ts +12 -0
  24. package/dist/adapters/jest-register.d.ts.map +1 -0
  25. package/dist/adapters/jest-register.js +15 -0
  26. package/dist/adapters/jest-register.js.map +1 -0
  27. package/dist/adapters/types.cjs.map +1 -1
  28. package/dist/adapters/types.d.cts +5 -1
  29. package/dist/adapters/types.d.cts.map +1 -1
  30. package/dist/adapters/types.d.ts +5 -1
  31. package/dist/adapters/types.d.ts.map +1 -1
  32. package/dist/adapters/types.js.map +1 -1
  33. package/dist/cli/commands/run.cjs +17 -11
  34. package/dist/cli/commands/run.cjs.map +1 -1
  35. package/dist/cli/commands/run.js +9 -3
  36. package/dist/cli/commands/run.js.map +1 -1
  37. package/dist/cli/commands/test.cjs +17 -15
  38. package/dist/cli/commands/test.cjs.map +1 -1
  39. package/dist/cli/commands/test.d.cts.map +1 -1
  40. package/dist/cli/commands/test.d.ts.map +1 -1
  41. package/dist/cli/commands/test.js +5 -3
  42. package/dist/cli/commands/test.js.map +1 -1
  43. package/dist/cli/index.cjs +5 -2
  44. package/dist/cli/index.cjs.map +1 -1
  45. package/dist/cli/index.d.cts.map +1 -1
  46. package/dist/cli/index.d.ts.map +1 -1
  47. package/dist/cli/index.js +6 -3
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/constants.cjs +1 -0
  50. package/dist/constants.cjs.map +1 -1
  51. package/dist/constants.d.cts +1 -0
  52. package/dist/constants.d.cts.map +1 -1
  53. package/dist/constants.d.ts +1 -0
  54. package/dist/constants.d.ts.map +1 -1
  55. package/dist/constants.js +1 -0
  56. package/dist/constants.js.map +1 -1
  57. package/dist/index.cjs +4 -1
  58. package/dist/index.cjs.map +1 -1
  59. package/dist/index.d.cts +1 -0
  60. package/dist/index.d.cts.map +1 -1
  61. package/dist/index.d.ts +1 -0
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +2 -0
  64. package/dist/index.js.map +1 -1
  65. package/dist/reporters/index.cjs +3 -1
  66. package/dist/reporters/index.cjs.map +1 -1
  67. package/dist/reporters/index.d.cts +1 -0
  68. package/dist/reporters/index.d.cts.map +1 -1
  69. package/dist/reporters/index.d.ts +1 -0
  70. package/dist/reporters/index.d.ts.map +1 -1
  71. package/dist/reporters/index.js +1 -0
  72. package/dist/reporters/index.js.map +1 -1
  73. package/dist/reporters/nyan.cjs +318 -0
  74. package/dist/reporters/nyan.cjs.map +1 -0
  75. package/dist/reporters/nyan.d.cts +118 -0
  76. package/dist/reporters/nyan.d.cts.map +1 -0
  77. package/dist/reporters/nyan.d.ts +118 -0
  78. package/dist/reporters/nyan.d.ts.map +1 -0
  79. package/dist/reporters/nyan.js +314 -0
  80. package/dist/reporters/nyan.js.map +1 -0
  81. package/dist/types/core.cjs.map +1 -1
  82. package/dist/types/core.d.cts +13 -12
  83. package/dist/types/core.d.cts.map +1 -1
  84. package/dist/types/core.d.ts +13 -12
  85. package/dist/types/core.d.ts.map +1 -1
  86. package/dist/types/core.js.map +1 -1
  87. package/dist/types/index.cjs +0 -2
  88. package/dist/types/index.cjs.map +1 -1
  89. package/dist/types/index.d.cts +0 -1
  90. package/dist/types/index.d.cts.map +1 -1
  91. package/dist/types/index.d.ts +0 -1
  92. package/dist/types/index.d.ts.map +1 -1
  93. package/dist/types/index.js +0 -2
  94. package/dist/types/index.js.map +1 -1
  95. package/package.json +28 -8
  96. package/src/adapters/jest-adapter.ts +563 -0
  97. package/src/adapters/jest-hooks.ts +82 -0
  98. package/src/adapters/jest-register.ts +16 -0
  99. package/src/adapters/types.ts +5 -1
  100. package/src/cli/commands/run.ts +10 -3
  101. package/src/cli/commands/test.ts +5 -3
  102. package/src/cli/index.ts +10 -2
  103. package/src/constants.ts +2 -1
  104. package/src/index.ts +3 -0
  105. package/src/reporters/index.ts +1 -0
  106. package/src/reporters/nyan.ts +409 -0
  107. package/src/types/core.ts +16 -14
  108. package/src/types/index.ts +0 -3
  109. package/dist/types/cli.cjs +0 -12
  110. package/dist/types/cli.cjs.map +0 -1
  111. package/dist/types/cli.d.cts +0 -75
  112. package/dist/types/cli.d.cts.map +0 -1
  113. package/dist/types/cli.d.ts +0 -75
  114. package/dist/types/cli.d.ts.map +0 -1
  115. package/dist/types/cli.js +0 -9
  116. package/dist/types/cli.js.map +0 -1
  117. package/src/types/cli.ts +0 -82
@@ -0,0 +1,459 @@
1
+ /**
2
+ * ModestBench Jest Adapter
3
+ *
4
+ * Captures test definitions from Jest test files using ES module loader hooks.
5
+ *
6
+ * Jest differs from AVA and node:test in important ways:
7
+ *
8
+ * - Nested describe blocks: describe() callbacks execute IMMEDIATELY during file
9
+ * load to discover nested tests. We must run describe callbacks but NOT test
10
+ * functions.
11
+ * - Rich API surface: .skip, .only, .each, .todo, .concurrent, .failing modifiers
12
+ * - Jest object: Tests may access jest.fn(), jest.mock(), etc.
13
+ * - Expect assertions: Tests use expect() for assertions
14
+ *
15
+ * Architecture:
16
+ *
17
+ * 1. Install mock on globalThis
18
+ * 2. Loader intercepts '@jest/globals' imports and returns the mock
19
+ * 3. Import test file - describe callbacks execute, test functions are captured
20
+ * 4. Return captured test structure
21
+ */
22
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
23
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
24
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
25
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
26
+ });
27
+ }
28
+ return path;
29
+ };
30
+ import { pathToFileURL } from 'node:url';
31
+ /**
32
+ * Global capture state key
33
+ */
34
+ const CAPTURE_STATE_KEY = '__MODESTBENCH_JEST_CAPTURE__';
35
+ /**
36
+ * Get the current suite from the stack
37
+ */
38
+ const getCurrentSuite = (state) => {
39
+ return state.suiteStack[state.suiteStack.length - 1] ?? state.rootSuite;
40
+ };
41
+ /**
42
+ * Jest test framework adapter
43
+ *
44
+ * Captures test definitions by installing mock implementations before importing
45
+ * the test file.
46
+ *
47
+ * IMPORTANT: For this to work with Jest imports, you must run Node.js with our
48
+ * loader: node --import modestbench/jest your-test.js
49
+ */
50
+ export class JestAdapter {
51
+ framework = 'jest';
52
+ /**
53
+ * Capture test definitions from a Jest test file
54
+ *
55
+ * @param filePath - Absolute path to the test file
56
+ * @returns Captured test structure
57
+ */
58
+ async capture(filePath) {
59
+ // Initialize capture state
60
+ const state = initCaptureState();
61
+ // Install mocks
62
+ installJestMocks(state);
63
+ try {
64
+ // Import the test file
65
+ // The loader hook will intercept '@jest/globals' and use our mocks
66
+ // Describe callbacks will execute immediately, capturing the test structure
67
+ const fileUrl = pathToFileURL(filePath).href;
68
+ const bustCache = `?t=${Date.now()}`;
69
+ await import(__rewriteRelativeImportExtension(fileUrl + bustCache));
70
+ // Return captured structure
71
+ return toCapturedTestFile(state, filePath);
72
+ }
73
+ finally {
74
+ // Clean up
75
+ uninstallJestMocks();
76
+ clearCaptureState();
77
+ }
78
+ }
79
+ }
80
+ /**
81
+ * Clear capture state from globalThis
82
+ */
83
+ const clearCaptureState = () => {
84
+ // @ts-expect-error - intentionally using globalThis
85
+ delete globalThis[CAPTURE_STATE_KEY];
86
+ };
87
+ /**
88
+ * Create a mock expect function
89
+ *
90
+ * Jest's expect() returns an object with assertion methods. We provide a stub
91
+ * that allows tests to call expect() without errors during structure capture.
92
+ * Since we capture but don't execute test functions, this is mainly for
93
+ * safety.
94
+ */
95
+ const createMockExpect = () => {
96
+ const noop = () => mockExpect;
97
+ const noopAsync = () => Promise.resolve(mockExpect);
98
+ // Chainable assertion mock
99
+ const assertionChain = {
100
+ not: {},
101
+ rejects: {},
102
+ resolves: {},
103
+ };
104
+ // Common matchers - all return the chain for further chaining
105
+ const matchers = [
106
+ 'toBe',
107
+ 'toEqual',
108
+ 'toStrictEqual',
109
+ 'toBeNull',
110
+ 'toBeUndefined',
111
+ 'toBeDefined',
112
+ 'toBeTruthy',
113
+ 'toBeFalsy',
114
+ 'toBeNaN',
115
+ 'toContain',
116
+ 'toContainEqual',
117
+ 'toHaveLength',
118
+ 'toHaveProperty',
119
+ 'toMatch',
120
+ 'toMatchObject',
121
+ 'toMatchSnapshot',
122
+ 'toMatchInlineSnapshot',
123
+ 'toThrow',
124
+ 'toThrowError',
125
+ 'toThrowErrorMatchingSnapshot',
126
+ 'toThrowErrorMatchingInlineSnapshot',
127
+ 'toBeGreaterThan',
128
+ 'toBeGreaterThanOrEqual',
129
+ 'toBeLessThan',
130
+ 'toBeLessThanOrEqual',
131
+ 'toBeCloseTo',
132
+ 'toBeInstanceOf',
133
+ 'toHaveBeenCalled',
134
+ 'toHaveBeenCalledTimes',
135
+ 'toHaveBeenCalledWith',
136
+ 'toHaveBeenLastCalledWith',
137
+ 'toHaveBeenNthCalledWith',
138
+ 'toHaveReturned',
139
+ 'toHaveReturnedTimes',
140
+ 'toHaveReturnedWith',
141
+ 'toHaveLastReturnedWith',
142
+ 'toHaveNthReturnedWith',
143
+ ];
144
+ for (const matcher of matchers) {
145
+ assertionChain[matcher] = noop;
146
+ assertionChain.not[matcher] = noop;
147
+ assertionChain.resolves[matcher] = noopAsync;
148
+ assertionChain.rejects[matcher] = noopAsync;
149
+ }
150
+ const mockExpect = (_value) => assertionChain;
151
+ // Static expect methods
152
+ Object.assign(mockExpect, {
153
+ addSnapshotSerializer: noop,
154
+ any: noop,
155
+ anything: noop,
156
+ arrayContaining: noop,
157
+ assertions: noop,
158
+ closeTo: noop,
159
+ extend: noop,
160
+ getState: () => ({}),
161
+ hasAssertions: noop,
162
+ not: {
163
+ arrayContaining: noop,
164
+ objectContaining: noop,
165
+ stringContaining: noop,
166
+ stringMatching: noop,
167
+ },
168
+ objectContaining: noop,
169
+ setState: noop,
170
+ stringContaining: noop,
171
+ stringMatching: noop,
172
+ });
173
+ return mockExpect;
174
+ };
175
+ /**
176
+ * Create a mock jest object
177
+ *
178
+ * Provides stub implementations of common jest.* utilities that tests might
179
+ * call during structure capture. Since we don't execute test functions, most of
180
+ * these won't be called, but they're here for safety.
181
+ */
182
+ const createMockJestObject = () => {
183
+ const noop = () => { };
184
+ const noopReturnsThis = function () {
185
+ return this;
186
+ };
187
+ // Mock function factory
188
+ const mockFn = (implementation) => {
189
+ const fn = typeof implementation === 'function' ? implementation : noop;
190
+ return Object.assign(fn, {
191
+ mock: { calls: [], instances: [], results: [] },
192
+ mockClear: noopReturnsThis,
193
+ mockImplementation: noopReturnsThis,
194
+ mockImplementationOnce: noopReturnsThis,
195
+ mockName: noopReturnsThis,
196
+ mockRejectedValue: noopReturnsThis,
197
+ mockRejectedValueOnce: noopReturnsThis,
198
+ mockReset: noopReturnsThis,
199
+ mockResolvedValue: noopReturnsThis,
200
+ mockResolvedValueOnce: noopReturnsThis,
201
+ mockRestore: noopReturnsThis,
202
+ mockReturnThis: noopReturnsThis,
203
+ mockReturnValue: noopReturnsThis,
204
+ mockReturnValueOnce: noopReturnsThis,
205
+ });
206
+ };
207
+ return {
208
+ advanceTimersByTime: noop,
209
+ advanceTimersByTimeAsync: () => Promise.resolve(),
210
+ advanceTimersToNextTimer: noop,
211
+ advanceTimersToNextTimerAsync: () => Promise.resolve(),
212
+ autoMockOff: noopReturnsThis,
213
+ autoMockOn: noopReturnsThis,
214
+ clearAllMocks: noop,
215
+ clearAllTimers: noop,
216
+ createMockFromModule: () => ({}),
217
+ deepUnmock: noopReturnsThis,
218
+ disableAutomock: noopReturnsThis,
219
+ doMock: noop,
220
+ dontMock: noopReturnsThis,
221
+ enableAutomock: noopReturnsThis,
222
+ fn: mockFn,
223
+ genMockFromModule: () => ({}),
224
+ getRealSystemTime: () => Date.now(),
225
+ getSeed: () => 0,
226
+ getTimerCount: () => 0,
227
+ isEnvironmentTornDown: () => false,
228
+ isMockFunction: () => false,
229
+ isolateModules: noop,
230
+ isolateModulesAsync: () => Promise.resolve(),
231
+ mock: noop,
232
+ mocked: (source) => source,
233
+ now: () => Date.now(),
234
+ replaceProperty: noopReturnsThis,
235
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-unsafe-return -- Mimics Jest's requireActual API
236
+ requireActual: (moduleName) => require(moduleName),
237
+ requireMock: () => ({}),
238
+ resetAllMocks: noop,
239
+ resetModules: noopReturnsThis,
240
+ restoreAllMocks: noop,
241
+ retryTimes: noopReturnsThis,
242
+ runAllImmediates: noop,
243
+ runAllTicks: noop,
244
+ runAllTimers: noop,
245
+ runAllTimersAsync: () => Promise.resolve(),
246
+ runOnlyPendingTimers: noop,
247
+ runOnlyPendingTimersAsync: () => Promise.resolve(),
248
+ setMock: noopReturnsThis,
249
+ setSystemTime: noop,
250
+ setTimeout: noopReturnsThis,
251
+ spyOn: () => mockFn(),
252
+ unmock: noopReturnsThis,
253
+ unstable_mockModule: noop,
254
+ useFakeTimers: noopReturnsThis,
255
+ useRealTimers: noopReturnsThis,
256
+ };
257
+ };
258
+ /**
259
+ * Initialize capture state on globalThis
260
+ */
261
+ const initCaptureState = () => {
262
+ const rootSuite = {
263
+ children: [],
264
+ hooks: {
265
+ afterAll: [],
266
+ afterEach: [],
267
+ beforeAll: [],
268
+ beforeEach: [],
269
+ },
270
+ name: '',
271
+ tests: [],
272
+ };
273
+ const state = {
274
+ rootSuite,
275
+ suiteStack: [rootSuite],
276
+ };
277
+ // @ts-expect-error - intentionally using globalThis for cross-module state
278
+ globalThis[CAPTURE_STATE_KEY] = state;
279
+ return state;
280
+ };
281
+ /**
282
+ * Install Jest mocks on globalThis for module interception
283
+ */
284
+ const installJestMocks = (state) => {
285
+ const mockExpect = createMockExpect();
286
+ const mockJest = createMockJestObject();
287
+ /**
288
+ * Create a describe function implementation
289
+ */
290
+ const makeDescribeFn = (options = {}) => (name, fn) => {
291
+ const suite = {
292
+ children: [],
293
+ hooks: {
294
+ afterAll: [],
295
+ afterEach: [],
296
+ beforeAll: [],
297
+ beforeEach: [],
298
+ },
299
+ name,
300
+ only: options.only,
301
+ skip: options.skip,
302
+ tests: [],
303
+ };
304
+ const currentSuite = getCurrentSuite(state);
305
+ currentSuite.children.push(suite);
306
+ // Push onto stack, execute callback to discover nested tests, then pop
307
+ state.suiteStack.push(suite);
308
+ try {
309
+ fn(); // Execute describe callback to discover nested content
310
+ }
311
+ finally {
312
+ state.suiteStack.pop();
313
+ }
314
+ };
315
+ /**
316
+ * Create a test function implementation
317
+ */
318
+ const makeTestFn = (options = {}) => (name, fn, timeout) => {
319
+ const currentSuite = getCurrentSuite(state);
320
+ currentSuite.tests.push({
321
+ fn: fn ?? (() => { }),
322
+ name,
323
+ only: options.only,
324
+ skip: options.skip,
325
+ timeout,
326
+ });
327
+ };
328
+ // Create base describe function with modifiers
329
+ const describeFn = makeDescribeFn();
330
+ const describeOnly = makeDescribeFn({ only: true });
331
+ const describeSkip = makeDescribeFn({ skip: true });
332
+ const mockDescribe = Object.assign(describeFn, {
333
+ each: (table) => (nameTemplate, fn) => {
334
+ // Handle both array of arrays and template literal tagged syntax
335
+ const rows = Array.isArray(table[0]) ? table : [table];
336
+ for (const row of rows) {
337
+ // Simple template substitution for %s, %i, %d, %p, %j, etc.
338
+ let name = nameTemplate;
339
+ for (let i = 0; i < row.length; i++) {
340
+ name = name.replace(/%[sidpjfo#]/i, String(row[i]));
341
+ }
342
+ describeFn(name, () => fn(...row));
343
+ }
344
+ },
345
+ only: describeOnly,
346
+ skip: describeSkip,
347
+ });
348
+ // Create base test function with modifiers
349
+ const testFn = makeTestFn();
350
+ const testOnly = makeTestFn({ only: true });
351
+ const testSkip = makeTestFn({ skip: true });
352
+ const mockTest = Object.assign(testFn, {
353
+ concurrent: (name, fn, timeout) => {
354
+ // Treat concurrent tests as regular tests for benchmarking
355
+ testFn(name, fn, timeout);
356
+ },
357
+ each: (table) => (nameTemplate, fn, timeout) => {
358
+ const rows = Array.isArray(table[0]) ? table : [table];
359
+ for (const row of rows) {
360
+ let name = nameTemplate;
361
+ for (let i = 0; i < row.length; i++) {
362
+ name = name.replace(/%[sidpjfo#]/i, String(row[i]));
363
+ }
364
+ testFn(name, () => fn(...row), timeout);
365
+ }
366
+ },
367
+ failing: (name, fn, timeout) => {
368
+ // Treat failing tests as regular tests for benchmarking
369
+ testFn(name, fn, timeout);
370
+ },
371
+ only: testOnly,
372
+ skip: testSkip,
373
+ todo: (name) => {
374
+ const currentSuite = getCurrentSuite(state);
375
+ currentSuite.tests.push({
376
+ fn: () => { },
377
+ name,
378
+ skip: true,
379
+ });
380
+ },
381
+ });
382
+ // Hook registration helpers
383
+ const createHook = (hookType) => (fn, timeout) => {
384
+ const currentSuite = getCurrentSuite(state);
385
+ currentSuite.hooks[hookType].push({ fn, timeout });
386
+ };
387
+ // Install on globalThis for the loader to access
388
+ // @ts-expect-error - intentionally using globalThis
389
+ globalThis.__MODESTBENCH_JEST_MOCK__ = {
390
+ afterAll: createHook('afterAll'),
391
+ afterEach: createHook('afterEach'),
392
+ beforeAll: createHook('beforeAll'),
393
+ beforeEach: createHook('beforeEach'),
394
+ describe: mockDescribe,
395
+ expect: mockExpect,
396
+ fdescribe: mockDescribe.only,
397
+ fit: mockTest.only,
398
+ it: mockTest,
399
+ jest: mockJest,
400
+ test: mockTest,
401
+ xdescribe: mockDescribe.skip,
402
+ xit: mockTest.skip,
403
+ xtest: mockTest.skip,
404
+ };
405
+ };
406
+ /**
407
+ * Convert a mutable suite to the captured format
408
+ */
409
+ const convertSuite = (suite) => {
410
+ const hooks = {
411
+ after: suite.hooks.afterAll.map((h) => h.fn),
412
+ afterEach: suite.hooks.afterEach.map((h) => h.fn),
413
+ before: suite.hooks.beforeAll.map((h) => h.fn),
414
+ beforeEach: suite.hooks.beforeEach.map((h) => h.fn),
415
+ };
416
+ const tests = suite.tests.map((t) => ({
417
+ fn: t.fn,
418
+ name: t.name,
419
+ only: t.only,
420
+ skip: t.skip,
421
+ }));
422
+ return {
423
+ children: suite.children.map(convertSuite),
424
+ hooks,
425
+ name: suite.name,
426
+ only: suite.only,
427
+ skip: suite.skip,
428
+ tests,
429
+ };
430
+ };
431
+ /**
432
+ * Convert capture state to CapturedTestFile
433
+ */
434
+ const toCapturedTestFile = (state, filePath) => {
435
+ const root = state.rootSuite;
436
+ // Root-level tests (not in any describe block)
437
+ const rootTests = root.tests.map((t) => ({
438
+ fn: t.fn,
439
+ name: t.name,
440
+ only: t.only,
441
+ skip: t.skip,
442
+ }));
443
+ // Convert child suites
444
+ const rootSuites = root.children.map(convertSuite);
445
+ return {
446
+ filePath,
447
+ framework: 'jest',
448
+ rootSuites,
449
+ rootTests,
450
+ };
451
+ };
452
+ /**
453
+ * Uninstall Jest mocks
454
+ */
455
+ const uninstallJestMocks = () => {
456
+ // @ts-expect-error - cleaning up globalThis
457
+ delete globalThis.__MODESTBENCH_JEST_MOCK__;
458
+ };
459
+ //# sourceMappingURL=jest-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest-adapter.js","sourceRoot":"","sources":["../../src/adapters/jest-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ /**
3
+ * ModestBench Jest Loader Hooks
4
+ *
5
+ * ES module loader hooks that intercept `@jest/globals` imports and return our
6
+ * capturing mock from globalThis.
7
+ *
8
+ * Usage: node --import modestbench/jest test-file.js
9
+ *
10
+ * This loader exports async `resolve` and `load` hooks that get registered via
11
+ * module.register() when imported through jest-register.ts.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.load = exports.resolve = void 0;
15
+ /**
16
+ * Generate the mock module source code
17
+ *
18
+ * Uses top-level await to conditionally get mock or real module. Note: Uses
19
+ * '@jest/globals?passthrough' to bypass our hook when falling back.
20
+ *
21
+ * Security: The globalThis mock is only installed by our own adapter code, so
22
+ * the generated source is safe. No user input is interpolated into this
23
+ * template.
24
+ */
25
+ const generateMockSource = () => `
26
+ const mock = globalThis.__MODESTBENCH_JEST_MOCK__;
27
+
28
+ // If no mock installed, fall through to real @jest/globals
29
+ // The '?passthrough' query tells our hook to not intercept this import
30
+ const source = mock ?? await import('@jest/globals?passthrough');
31
+
32
+ export const describe = source.describe;
33
+ export const fdescribe = source.fdescribe ?? source.describe?.only;
34
+ export const xdescribe = source.xdescribe ?? source.describe?.skip;
35
+ export const test = source.test;
36
+ export const it = source.it ?? source.test;
37
+ export const fit = source.fit ?? source.test?.only;
38
+ export const xit = source.xit ?? source.test?.skip;
39
+ export const xtest = source.xtest ?? source.test?.skip;
40
+ export const expect = source.expect;
41
+ export const jest = source.jest;
42
+ export const beforeAll = source.beforeAll;
43
+ export const afterAll = source.afterAll;
44
+ export const beforeEach = source.beforeEach;
45
+ export const afterEach = source.afterEach;
46
+ export default source;
47
+ `;
48
+ /**
49
+ * Resolve hook - intercepts @jest/globals specifier
50
+ *
51
+ * Uses query param '?passthrough' to prevent infinite recursion when falling
52
+ * back to real @jest/globals (when no mock is installed).
53
+ */
54
+ const resolve = async (specifier, context, nextResolve) => {
55
+ // Only intercept bare '@jest/globals', not '@jest/globals?passthrough'
56
+ if (specifier === '@jest/globals') {
57
+ return {
58
+ shortCircuit: true,
59
+ url: 'modestbench://capture/jest',
60
+ };
61
+ }
62
+ // Strip passthrough query to resolve real @jest/globals
63
+ if (specifier === '@jest/globals?passthrough') {
64
+ return nextResolve('@jest/globals', context);
65
+ }
66
+ return nextResolve(specifier, context);
67
+ };
68
+ exports.resolve = resolve;
69
+ /**
70
+ * Load hook - returns mock module for our custom URL
71
+ */
72
+ const load = async (url, context, nextLoad) => {
73
+ if (url === 'modestbench://capture/jest') {
74
+ return {
75
+ format: 'module',
76
+ shortCircuit: true,
77
+ source: generateMockSource(),
78
+ };
79
+ }
80
+ return nextLoad(url, context);
81
+ };
82
+ exports.load = load;
83
+ //# sourceMappingURL=jest-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest-hooks.js","sourceRoot":"","sources":["../../src/adapters/jest-hooks.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAIH;;;;;;;;;GASG;AACH,MAAM,kBAAkB,GAAG,GAAW,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;CAsBxC,CAAC;AAEF;;;;;GAKG;AACI,MAAM,OAAO,GAAgB,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;IAC5E,uEAAuE;IACvE,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;QAClC,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,GAAG,EAAE,4BAA4B;SAClC,CAAC;IACJ,CAAC;IACD,wDAAwD;IACxD,IAAI,SAAS,KAAK,2BAA2B,EAAE,CAAC;QAC9C,OAAO,WAAW,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC,CAAC;AAbW,QAAA,OAAO,WAalB;AAEF;;GAEG;AACI,MAAM,IAAI,GAAa,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;IAC7D,IAAI,GAAG,KAAK,4BAA4B,EAAE,CAAC;QACzC,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,kBAAkB,EAAE;SAC7B,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC;AATW,QAAA,IAAI,QASf"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * ModestBench Jest Loader Hooks
3
+ *
4
+ * ES module loader hooks that intercept `@jest/globals` imports and return our
5
+ * capturing mock from globalThis.
6
+ *
7
+ * Usage: node --import modestbench/jest test-file.js
8
+ *
9
+ * This loader exports async `resolve` and `load` hooks that get registered via
10
+ * module.register() when imported through jest-register.ts.
11
+ */
12
+ import type { LoadHook, ResolveHook } from 'node:module';
13
+ /**
14
+ * Resolve hook - intercepts @jest/globals specifier
15
+ *
16
+ * Uses query param '?passthrough' to prevent infinite recursion when falling
17
+ * back to real @jest/globals (when no mock is installed).
18
+ */
19
+ export declare const resolve: ResolveHook;
20
+ /**
21
+ * Load hook - returns mock module for our custom URL
22
+ */
23
+ export declare const load: LoadHook;
24
+ //# sourceMappingURL=jest-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest-hooks.d.ts","sourceRoot":"","sources":["../../src/adapters/jest-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAoCzD;;;;;GAKG;AACH,eAAO,MAAM,OAAO,EAAE,WAarB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,IAAI,EAAE,QASlB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * ModestBench Jest Loader Hooks
3
+ *
4
+ * ES module loader hooks that intercept `@jest/globals` imports and return our
5
+ * capturing mock from globalThis.
6
+ *
7
+ * Usage: node --import modestbench/jest test-file.js
8
+ *
9
+ * This loader exports async `resolve` and `load` hooks that get registered via
10
+ * module.register() when imported through jest-register.ts.
11
+ */
12
+ import type { LoadHook, ResolveHook } from 'node:module';
13
+ /**
14
+ * Resolve hook - intercepts @jest/globals specifier
15
+ *
16
+ * Uses query param '?passthrough' to prevent infinite recursion when falling
17
+ * back to real @jest/globals (when no mock is installed).
18
+ */
19
+ export declare const resolve: ResolveHook;
20
+ /**
21
+ * Load hook - returns mock module for our custom URL
22
+ */
23
+ export declare const load: LoadHook;
24
+ //# sourceMappingURL=jest-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest-hooks.d.ts","sourceRoot":"","sources":["../../src/adapters/jest-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAoCzD;;;;;GAKG;AACH,eAAO,MAAM,OAAO,EAAE,WAarB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,IAAI,EAAE,QASlB,CAAC"}