modestbench 0.3.1 → 0.5.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 (175) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +46 -3
  3. package/dist/adapters/ava-adapter.cjs +421 -0
  4. package/dist/adapters/ava-adapter.cjs.map +1 -0
  5. package/dist/adapters/ava-adapter.d.cts +39 -0
  6. package/dist/adapters/ava-adapter.d.cts.map +1 -0
  7. package/dist/adapters/ava-adapter.d.ts +39 -0
  8. package/dist/adapters/ava-adapter.d.ts.map +1 -0
  9. package/dist/adapters/ava-adapter.js +384 -0
  10. package/dist/adapters/ava-adapter.js.map +1 -0
  11. package/dist/adapters/ava-hooks.cjs +66 -0
  12. package/dist/adapters/ava-hooks.cjs.map +1 -0
  13. package/dist/adapters/ava-hooks.d.cts +24 -0
  14. package/dist/adapters/ava-hooks.d.cts.map +1 -0
  15. package/dist/adapters/ava-hooks.d.ts +24 -0
  16. package/dist/adapters/ava-hooks.d.ts.map +1 -0
  17. package/dist/adapters/ava-hooks.js +61 -0
  18. package/dist/adapters/ava-hooks.js.map +1 -0
  19. package/dist/adapters/ava-register.cjs +16 -0
  20. package/dist/adapters/ava-register.cjs.map +1 -0
  21. package/dist/adapters/ava-register.d.cts +11 -0
  22. package/dist/adapters/ava-register.d.cts.map +1 -0
  23. package/dist/adapters/ava-register.d.ts +11 -0
  24. package/dist/adapters/ava-register.d.ts.map +1 -0
  25. package/dist/adapters/ava-register.js +14 -0
  26. package/dist/adapters/ava-register.js.map +1 -0
  27. package/dist/adapters/mocha-adapter.cjs +254 -0
  28. package/dist/adapters/mocha-adapter.cjs.map +1 -0
  29. package/dist/adapters/mocha-adapter.d.cts +26 -0
  30. package/dist/adapters/mocha-adapter.d.cts.map +1 -0
  31. package/dist/adapters/mocha-adapter.d.ts +26 -0
  32. package/dist/adapters/mocha-adapter.d.ts.map +1 -0
  33. package/dist/adapters/mocha-adapter.js +217 -0
  34. package/dist/adapters/mocha-adapter.js.map +1 -0
  35. package/dist/adapters/node-test-adapter.cjs +335 -0
  36. package/dist/adapters/node-test-adapter.cjs.map +1 -0
  37. package/dist/adapters/node-test-adapter.d.cts +41 -0
  38. package/dist/adapters/node-test-adapter.d.cts.map +1 -0
  39. package/dist/adapters/node-test-adapter.d.ts +41 -0
  40. package/dist/adapters/node-test-adapter.d.ts.map +1 -0
  41. package/dist/adapters/node-test-adapter.js +298 -0
  42. package/dist/adapters/node-test-adapter.js.map +1 -0
  43. package/dist/adapters/node-test-hooks.cjs +72 -0
  44. package/dist/adapters/node-test-hooks.cjs.map +1 -0
  45. package/dist/adapters/node-test-hooks.d.cts +24 -0
  46. package/dist/adapters/node-test-hooks.d.cts.map +1 -0
  47. package/dist/adapters/node-test-hooks.d.ts +24 -0
  48. package/dist/adapters/node-test-hooks.d.ts.map +1 -0
  49. package/dist/adapters/node-test-hooks.js +67 -0
  50. package/dist/adapters/node-test-hooks.js.map +1 -0
  51. package/dist/adapters/node-test-register.cjs +7 -0
  52. package/dist/adapters/node-test-register.cjs.map +1 -0
  53. package/dist/adapters/node-test-register.d.cts +2 -0
  54. package/dist/adapters/node-test-register.d.cts.map +1 -0
  55. package/dist/adapters/node-test-register.d.ts +2 -0
  56. package/dist/adapters/node-test-register.d.ts.map +1 -0
  57. package/dist/adapters/node-test-register.js +5 -0
  58. package/dist/adapters/node-test-register.js.map +1 -0
  59. package/dist/adapters/types.cjs +152 -0
  60. package/dist/adapters/types.cjs.map +1 -0
  61. package/dist/adapters/types.d.cts +112 -0
  62. package/dist/adapters/types.d.cts.map +1 -0
  63. package/dist/adapters/types.d.ts +112 -0
  64. package/dist/adapters/types.d.ts.map +1 -0
  65. package/dist/adapters/types.js +148 -0
  66. package/dist/adapters/types.js.map +1 -0
  67. package/dist/cli/commands/init.cjs +21 -16
  68. package/dist/cli/commands/init.cjs.map +1 -1
  69. package/dist/cli/commands/init.d.cts.map +1 -1
  70. package/dist/cli/commands/init.d.ts.map +1 -1
  71. package/dist/cli/commands/init.js +21 -16
  72. package/dist/cli/commands/init.js.map +1 -1
  73. package/dist/cli/commands/run.cjs +9 -2
  74. package/dist/cli/commands/run.cjs.map +1 -1
  75. package/dist/cli/commands/run.d.cts.map +1 -1
  76. package/dist/cli/commands/run.d.ts.map +1 -1
  77. package/dist/cli/commands/run.js +9 -2
  78. package/dist/cli/commands/run.js.map +1 -1
  79. package/dist/cli/commands/test.cjs +392 -0
  80. package/dist/cli/commands/test.cjs.map +1 -0
  81. package/dist/cli/commands/test.d.cts +38 -0
  82. package/dist/cli/commands/test.d.cts.map +1 -0
  83. package/dist/cli/commands/test.d.ts +38 -0
  84. package/dist/cli/commands/test.d.ts.map +1 -0
  85. package/dist/cli/commands/test.js +388 -0
  86. package/dist/cli/commands/test.js.map +1 -0
  87. package/dist/cli/index.cjs +72 -1
  88. package/dist/cli/index.cjs.map +1 -1
  89. package/dist/cli/index.d.cts.map +1 -1
  90. package/dist/cli/index.d.ts.map +1 -1
  91. package/dist/cli/index.js +73 -2
  92. package/dist/cli/index.js.map +1 -1
  93. package/dist/config/schema.cjs +2 -1
  94. package/dist/config/schema.cjs.map +1 -1
  95. package/dist/config/schema.d.cts +3 -3
  96. package/dist/config/schema.d.cts.map +1 -1
  97. package/dist/config/schema.d.ts +3 -3
  98. package/dist/config/schema.d.ts.map +1 -1
  99. package/dist/config/schema.js +2 -1
  100. package/dist/config/schema.js.map +1 -1
  101. package/dist/constants.cjs +13 -1
  102. package/dist/constants.cjs.map +1 -1
  103. package/dist/constants.d.cts +12 -0
  104. package/dist/constants.d.cts.map +1 -1
  105. package/dist/constants.d.ts +12 -0
  106. package/dist/constants.d.ts.map +1 -1
  107. package/dist/constants.js +12 -0
  108. package/dist/constants.js.map +1 -1
  109. package/dist/core/engine.cjs +4 -0
  110. package/dist/core/engine.cjs.map +1 -1
  111. package/dist/core/engine.d.cts.map +1 -1
  112. package/dist/core/engine.d.ts.map +1 -1
  113. package/dist/core/engine.js +4 -0
  114. package/dist/core/engine.js.map +1 -1
  115. package/dist/core/engines/tinybench-engine.cjs +163 -131
  116. package/dist/core/engines/tinybench-engine.cjs.map +1 -1
  117. package/dist/core/engines/tinybench-engine.d.cts +6 -0
  118. package/dist/core/engines/tinybench-engine.d.cts.map +1 -1
  119. package/dist/core/engines/tinybench-engine.d.ts +6 -0
  120. package/dist/core/engines/tinybench-engine.d.ts.map +1 -1
  121. package/dist/core/engines/tinybench-engine.js +163 -131
  122. package/dist/core/engines/tinybench-engine.js.map +1 -1
  123. package/dist/errors/base.cjs +2 -1
  124. package/dist/errors/base.cjs.map +1 -1
  125. package/dist/errors/base.d.cts.map +1 -1
  126. package/dist/errors/base.d.ts.map +1 -1
  127. package/dist/errors/base.js +2 -1
  128. package/dist/errors/base.js.map +1 -1
  129. package/dist/reporters/human.cjs +83 -27
  130. package/dist/reporters/human.cjs.map +1 -1
  131. package/dist/reporters/human.d.cts +1 -0
  132. package/dist/reporters/human.d.cts.map +1 -1
  133. package/dist/reporters/human.d.ts +1 -0
  134. package/dist/reporters/human.d.ts.map +1 -1
  135. package/dist/reporters/human.js +83 -27
  136. package/dist/reporters/human.js.map +1 -1
  137. package/dist/reporters/simple.cjs +68 -21
  138. package/dist/reporters/simple.cjs.map +1 -1
  139. package/dist/reporters/simple.d.cts +1 -0
  140. package/dist/reporters/simple.d.cts.map +1 -1
  141. package/dist/reporters/simple.d.ts +1 -0
  142. package/dist/reporters/simple.d.ts.map +1 -1
  143. package/dist/reporters/simple.js +68 -21
  144. package/dist/reporters/simple.js.map +1 -1
  145. package/dist/schema/modestbench-config.schema.json +1 -1
  146. package/dist/services/config-manager.cjs +2 -2
  147. package/dist/services/config-manager.cjs.map +1 -1
  148. package/dist/services/config-manager.js +3 -3
  149. package/dist/services/config-manager.js.map +1 -1
  150. package/dist/types/core.d.cts +2 -2
  151. package/dist/types/core.d.cts.map +1 -1
  152. package/dist/types/core.d.ts +2 -2
  153. package/dist/types/core.d.ts.map +1 -1
  154. package/package.json +60 -31
  155. package/src/adapters/ava-adapter.ts +553 -0
  156. package/src/adapters/ava-hooks.ts +65 -0
  157. package/src/adapters/ava-register.ts +15 -0
  158. package/src/adapters/mocha-adapter.ts +284 -0
  159. package/src/adapters/node-test-adapter.ts +391 -0
  160. package/src/adapters/node-test-hooks.ts +71 -0
  161. package/src/adapters/node-test-register.ts +5 -0
  162. package/src/adapters/types.ts +281 -0
  163. package/src/cli/commands/init.ts +25 -16
  164. package/src/cli/commands/run.ts +12 -2
  165. package/src/cli/commands/test.ts +546 -0
  166. package/src/cli/index.ts +81 -1
  167. package/src/config/schema.ts +2 -1
  168. package/src/constants.ts +15 -0
  169. package/src/core/engine.ts +5 -0
  170. package/src/core/engines/tinybench-engine.ts +213 -141
  171. package/src/errors/base.ts +3 -2
  172. package/src/reporters/human.ts +107 -36
  173. package/src/reporters/simple.ts +81 -22
  174. package/src/services/config-manager.ts +3 -3
  175. package/src/types/core.ts +2 -2
@@ -0,0 +1,298 @@
1
+ /**
2
+ * ModestBench Node.js Test Runner Adapter
3
+ *
4
+ * Captures test definitions from node:test files using ES module loader hooks.
5
+ *
6
+ * Unlike Mocha (which uses globals), node:test requires ES module import
7
+ * interception. We use Node.js module.register() API to install a custom loader
8
+ * that returns our capturing mock instead of the real node:test.
9
+ *
10
+ * Architecture:
11
+ *
12
+ * 1. Register a custom loader that intercepts node:test imports
13
+ * 2. Import the test file - this triggers test/describe calls
14
+ * 3. Retrieve captured state from global storage
15
+ * 4. Unregister the loader
16
+ */
17
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
18
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
19
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
20
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
21
+ });
22
+ }
23
+ return path;
24
+ };
25
+ import { pathToFileURL } from 'node:url';
26
+ /**
27
+ * Global capture state key
28
+ */
29
+ const CAPTURE_STATE_KEY = '__MODESTBENCH_NODE_TEST_CAPTURE__';
30
+ /**
31
+ * Node.js test runner adapter
32
+ *
33
+ * Captures test definitions by installing mock implementations before importing
34
+ * the test file.
35
+ *
36
+ * IMPORTANT: For this to work with actual node:test imports, you must run
37
+ * Node.js with our loader: node --import modestbench/node-test your-test.js
38
+ *
39
+ * Without the loader, this adapter only works with test files that use
40
+ * globalThis.**MODESTBENCH_NODE_TEST_MOCK** directly (not useful for real test
41
+ * files).
42
+ */
43
+ export class NodeTestAdapter {
44
+ framework = 'node-test';
45
+ /**
46
+ * Capture test definitions from a node:test file
47
+ *
48
+ * @param filePath - Absolute path to the test file
49
+ * @returns Captured test structure
50
+ */
51
+ async capture(filePath) {
52
+ // Initialize capture state
53
+ const state = initCaptureState();
54
+ // Install mocks
55
+ installNodeTestMocks(state);
56
+ try {
57
+ // Import the test file
58
+ // The loader hook will intercept 'node:test' and use our mocks
59
+ const fileUrl = pathToFileURL(filePath).href;
60
+ const bustCache = `?t=${Date.now()}`;
61
+ await import(__rewriteRelativeImportExtension(fileUrl + bustCache));
62
+ // Return captured structure
63
+ return toCapturedTestFile(state, filePath);
64
+ }
65
+ finally {
66
+ // Clean up
67
+ uninstallNodeTestMocks();
68
+ clearCaptureState();
69
+ }
70
+ }
71
+ }
72
+ /**
73
+ * Clear capture state from globalThis
74
+ */
75
+ const clearCaptureState = () => {
76
+ // @ts-expect-error - intentionally using globalThis
77
+ delete globalThis[CAPTURE_STATE_KEY];
78
+ };
79
+ /**
80
+ * Create empty hooks structure
81
+ */
82
+ const createEmptyHooks = () => {
83
+ return {
84
+ after: [],
85
+ afterEach: [],
86
+ before: [],
87
+ beforeEach: [],
88
+ };
89
+ };
90
+ /**
91
+ * Create a new suite structure
92
+ */
93
+ const createSuite = (name) => {
94
+ return {
95
+ children: [],
96
+ hooks: createEmptyHooks(),
97
+ name,
98
+ tests: [],
99
+ };
100
+ };
101
+ /**
102
+ * Initialize capture state on globalThis
103
+ */
104
+ const initCaptureState = () => {
105
+ const state = {
106
+ currentSuite: null,
107
+ rootSuites: [],
108
+ rootTests: [],
109
+ };
110
+ // @ts-expect-error - intentionally using globalThis for cross-module state
111
+ globalThis[CAPTURE_STATE_KEY] = state;
112
+ return state;
113
+ };
114
+ /**
115
+ * Install node:test mocks on globalThis for module interception
116
+ *
117
+ * Since we can't truly intercept ES imports without a loader, we use a
118
+ * workaround: install mocks that test files can import via a special path.
119
+ *
120
+ * For true node:test interception, users must run with: node --import
121
+ * modestbench/register test-file.js
122
+ */
123
+ const installNodeTestMocks = (state) => {
124
+ // Create mock test function
125
+ const mockTest = Object.assign((nameOrOptions, fnOrOptions, maybeFn) => {
126
+ let name;
127
+ let fn;
128
+ let skip = false;
129
+ let only = false;
130
+ // Parse arguments - node:test has flexible signatures
131
+ if (typeof nameOrOptions === 'string') {
132
+ name = nameOrOptions;
133
+ if (typeof fnOrOptions === 'function') {
134
+ fn = fnOrOptions;
135
+ }
136
+ else if (fnOrOptions && typeof fnOrOptions === 'object') {
137
+ skip = fnOrOptions.skip ?? false;
138
+ only = fnOrOptions.only ?? false;
139
+ fn = maybeFn ?? (() => { });
140
+ }
141
+ else {
142
+ fn = () => { };
143
+ }
144
+ }
145
+ else {
146
+ name = nameOrOptions.name ?? 'unnamed test';
147
+ skip = nameOrOptions.skip ?? false;
148
+ only = nameOrOptions.only ?? false;
149
+ fn = fnOrOptions ?? (() => { });
150
+ }
151
+ const test = { fn, name, only, skip };
152
+ if (state.currentSuite) {
153
+ state.currentSuite.tests.push(test);
154
+ }
155
+ else {
156
+ state.rootTests.push(test);
157
+ }
158
+ return Promise.resolve();
159
+ }, {
160
+ only: function only(name, fn) {
161
+ return mockTest(name, { only: true }, fn);
162
+ },
163
+ skip: function skip(name, fn) {
164
+ return mockTest(name, { skip: true }, fn);
165
+ },
166
+ todo: function todo(name, fn) {
167
+ return mockTest(name, { skip: true }, fn);
168
+ },
169
+ });
170
+ // Create mock describe function
171
+ const mockDescribe = Object.assign((nameOrOptions, fnOrOptions, maybeFn) => {
172
+ let name;
173
+ let fn;
174
+ if (typeof nameOrOptions === 'string') {
175
+ name = nameOrOptions;
176
+ if (typeof fnOrOptions === 'function') {
177
+ fn = fnOrOptions;
178
+ }
179
+ else {
180
+ fn = maybeFn;
181
+ }
182
+ }
183
+ else {
184
+ name = nameOrOptions.name ?? 'unnamed suite';
185
+ fn = fnOrOptions;
186
+ }
187
+ const suite = createSuite(name);
188
+ const parent = state.currentSuite;
189
+ if (parent) {
190
+ parent.children.push(suite);
191
+ }
192
+ else {
193
+ state.rootSuites.push(suite);
194
+ }
195
+ // Enter suite context
196
+ state.currentSuite = suite;
197
+ // Execute describe body
198
+ if (fn) {
199
+ fn();
200
+ }
201
+ // Exit back to parent
202
+ state.currentSuite = parent;
203
+ return Promise.resolve();
204
+ }, {
205
+ only: function only(name, fn) {
206
+ return mockDescribe(name, fn);
207
+ },
208
+ skip: function skip(_name, _fn) {
209
+ return Promise.resolve();
210
+ },
211
+ todo: function todo(_name, _fn) {
212
+ return Promise.resolve();
213
+ },
214
+ });
215
+ // Hook functions
216
+ const mockBefore = (fn) => {
217
+ if (state.currentSuite) {
218
+ state.currentSuite.hooks.before.push(fn);
219
+ }
220
+ };
221
+ const mockAfter = (fn) => {
222
+ if (state.currentSuite) {
223
+ state.currentSuite.hooks.after.push(fn);
224
+ }
225
+ };
226
+ const mockBeforeEach = (fn) => {
227
+ if (state.currentSuite) {
228
+ state.currentSuite.hooks.beforeEach.push(fn);
229
+ }
230
+ };
231
+ const mockAfterEach = (fn) => {
232
+ if (state.currentSuite) {
233
+ state.currentSuite.hooks.afterEach.push(fn);
234
+ }
235
+ };
236
+ // Install on globalThis for the loader to access
237
+ // @ts-expect-error - intentionally using globalThis
238
+ globalThis.__MODESTBENCH_NODE_TEST_MOCK__ = {
239
+ after: mockAfter,
240
+ afterEach: mockAfterEach,
241
+ before: mockBefore,
242
+ beforeEach: mockBeforeEach,
243
+ default: mockTest,
244
+ describe: mockDescribe,
245
+ it: mockTest,
246
+ mock: {
247
+ fn: () => () => { },
248
+ getter: () => { },
249
+ method: () => { },
250
+ reset: () => { },
251
+ restoreAll: () => { },
252
+ setter: () => { },
253
+ timers: {
254
+ enable: () => { },
255
+ reset: () => { },
256
+ runAll: () => { },
257
+ tick: () => { },
258
+ },
259
+ },
260
+ suite: mockDescribe,
261
+ test: mockTest,
262
+ };
263
+ };
264
+ /**
265
+ * Convert mutable capture state to immutable CapturedTestFile
266
+ */
267
+ const toCapturedTestFile = (state, filePath) => {
268
+ return {
269
+ filePath,
270
+ framework: 'node-test',
271
+ rootSuites: state.rootSuites.map(toImmutableSuite),
272
+ rootTests: state.rootTests.map(toImmutableTest),
273
+ };
274
+ };
275
+ const toImmutableSuite = (suite) => {
276
+ return {
277
+ children: suite.children.map(toImmutableSuite),
278
+ hooks: suite.hooks,
279
+ name: suite.name,
280
+ tests: suite.tests.map(toImmutableTest),
281
+ };
282
+ };
283
+ const toImmutableTest = (test) => {
284
+ return {
285
+ fn: test.fn,
286
+ name: test.name,
287
+ only: test.only,
288
+ skip: test.skip,
289
+ };
290
+ };
291
+ /**
292
+ * Uninstall node:test mocks
293
+ */
294
+ const uninstallNodeTestMocks = () => {
295
+ // @ts-expect-error - cleaning up globalThis
296
+ delete globalThis.__MODESTBENCH_NODE_TEST_MOCK__;
297
+ };
298
+ //# sourceMappingURL=node-test-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-test-adapter.js","sourceRoot":"","sources":["../../src/adapters/node-test-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ /**
3
+ * ModestBench Node.js Test Runner Loader
4
+ *
5
+ * ES module loader hook that intercepts `node:test` imports and returns our
6
+ * capturing mock from globalThis.
7
+ *
8
+ * Usage: node --import modestbench/node-test your-test.js
9
+ *
10
+ * This loader exports async `resolve` and `load` hooks that get registered via
11
+ * module.register() when imported.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.load = exports.resolve = void 0;
15
+ // Generate the mock module source code
16
+ // The generated module source uses top-level await to conditionally get the mock or real module
17
+ // Note: Uses 'node:test?passthrough' to bypass our hook when falling back
18
+ // Security: The globalThis mock is only installed by our own adapter code, so the generated
19
+ // source is safe. No user input is interpolated into this template.
20
+ const generateMockSource = () => `
21
+ const mock = globalThis.__MODESTBENCH_NODE_TEST_MOCK__;
22
+
23
+ // If no mock installed, fall through to real node:test
24
+ // The '?passthrough' query tells our hook to not intercept this import
25
+ const source = mock ?? await import('node:test?passthrough');
26
+
27
+ export const test = source.test;
28
+ export const describe = source.describe;
29
+ export const it = source.it;
30
+ export const before = source.before;
31
+ export const after = source.after;
32
+ export const beforeEach = source.beforeEach;
33
+ export const afterEach = source.afterEach;
34
+ export const suite = source.suite;
35
+ export default source.default ?? source.test;
36
+ `;
37
+ /**
38
+ * Resolve hook - intercepts node:test specifier
39
+ *
40
+ * Uses query param '?passthrough' to prevent infinite recursion when falling
41
+ * back to real node:test (when no mock is installed).
42
+ */
43
+ const resolve = async (specifier, context, nextResolve) => {
44
+ // Only intercept bare 'node:test', not 'node:test?passthrough'
45
+ if (specifier === 'node:test') {
46
+ return {
47
+ shortCircuit: true,
48
+ url: 'modestbench://capture/node-test',
49
+ };
50
+ }
51
+ // Strip passthrough query to resolve real node:test
52
+ if (specifier === 'node:test?passthrough') {
53
+ return nextResolve('node:test', context);
54
+ }
55
+ return nextResolve(specifier, context);
56
+ };
57
+ exports.resolve = resolve;
58
+ /**
59
+ * Load hook - returns mock module for our custom URL
60
+ */
61
+ const load = async (url, context, nextLoad) => {
62
+ if (url === 'modestbench://capture/node-test') {
63
+ return {
64
+ format: 'module',
65
+ shortCircuit: true,
66
+ source: generateMockSource(),
67
+ };
68
+ }
69
+ return nextLoad(url, context);
70
+ };
71
+ exports.load = load;
72
+ //# sourceMappingURL=node-test-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-test-hooks.js","sourceRoot":"","sources":["../../src/adapters/node-test-hooks.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAIH,uCAAuC;AACvC,gGAAgG;AAChG,0EAA0E;AAC1E,4FAA4F;AAC5F,oEAAoE;AACpE,MAAM,kBAAkB,GAAG,GAAW,EAAE,CAAC;;;;;;;;;;;;;;;;CAgBxC,CAAC;AAEF;;;;;GAKG;AACI,MAAM,OAAO,GAAgB,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;IAC5E,+DAA+D;IAC/D,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,GAAG,EAAE,iCAAiC;SACvC,CAAC;IACJ,CAAC;IACD,oDAAoD;IACpD,IAAI,SAAS,KAAK,uBAAuB,EAAE,CAAC;QAC1C,OAAO,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3C,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,iCAAiC,EAAE,CAAC;QAC9C,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 Node.js Test Runner Loader
3
+ *
4
+ * ES module loader hook that intercepts `node:test` imports and returns our
5
+ * capturing mock from globalThis.
6
+ *
7
+ * Usage: node --import modestbench/node-test your-test.js
8
+ *
9
+ * This loader exports async `resolve` and `load` hooks that get registered via
10
+ * module.register() when imported.
11
+ */
12
+ import type { LoadHook, ResolveHook } from 'node:module';
13
+ /**
14
+ * Resolve hook - intercepts node:test specifier
15
+ *
16
+ * Uses query param '?passthrough' to prevent infinite recursion when falling
17
+ * back to real node:test (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=node-test-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-test-hooks.d.ts","sourceRoot":"","sources":["../../src/adapters/node-test-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAyBzD;;;;;GAKG;AACH,eAAO,MAAM,OAAO,EAAE,WAarB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,IAAI,EAAE,QASlB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * ModestBench Node.js Test Runner Loader
3
+ *
4
+ * ES module loader hook that intercepts `node:test` imports and returns our
5
+ * capturing mock from globalThis.
6
+ *
7
+ * Usage: node --import modestbench/node-test your-test.js
8
+ *
9
+ * This loader exports async `resolve` and `load` hooks that get registered via
10
+ * module.register() when imported.
11
+ */
12
+ import type { LoadHook, ResolveHook } from 'node:module';
13
+ /**
14
+ * Resolve hook - intercepts node:test specifier
15
+ *
16
+ * Uses query param '?passthrough' to prevent infinite recursion when falling
17
+ * back to real node:test (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=node-test-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-test-hooks.d.ts","sourceRoot":"","sources":["../../src/adapters/node-test-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAyBzD;;;;;GAKG;AACH,eAAO,MAAM,OAAO,EAAE,WAarB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,IAAI,EAAE,QASlB,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * ModestBench Node.js Test Runner Loader
3
+ *
4
+ * ES module loader hook that intercepts `node:test` imports and returns our
5
+ * capturing mock from globalThis.
6
+ *
7
+ * Usage: node --import modestbench/node-test your-test.js
8
+ *
9
+ * This loader exports async `resolve` and `load` hooks that get registered via
10
+ * module.register() when imported.
11
+ */
12
+ // Generate the mock module source code
13
+ // The generated module source uses top-level await to conditionally get the mock or real module
14
+ // Note: Uses 'node:test?passthrough' to bypass our hook when falling back
15
+ // Security: The globalThis mock is only installed by our own adapter code, so the generated
16
+ // source is safe. No user input is interpolated into this template.
17
+ const generateMockSource = () => `
18
+ const mock = globalThis.__MODESTBENCH_NODE_TEST_MOCK__;
19
+
20
+ // If no mock installed, fall through to real node:test
21
+ // The '?passthrough' query tells our hook to not intercept this import
22
+ const source = mock ?? await import('node:test?passthrough');
23
+
24
+ export const test = source.test;
25
+ export const describe = source.describe;
26
+ export const it = source.it;
27
+ export const before = source.before;
28
+ export const after = source.after;
29
+ export const beforeEach = source.beforeEach;
30
+ export const afterEach = source.afterEach;
31
+ export const suite = source.suite;
32
+ export default source.default ?? source.test;
33
+ `;
34
+ /**
35
+ * Resolve hook - intercepts node:test specifier
36
+ *
37
+ * Uses query param '?passthrough' to prevent infinite recursion when falling
38
+ * back to real node:test (when no mock is installed).
39
+ */
40
+ export const resolve = async (specifier, context, nextResolve) => {
41
+ // Only intercept bare 'node:test', not 'node:test?passthrough'
42
+ if (specifier === 'node:test') {
43
+ return {
44
+ shortCircuit: true,
45
+ url: 'modestbench://capture/node-test',
46
+ };
47
+ }
48
+ // Strip passthrough query to resolve real node:test
49
+ if (specifier === 'node:test?passthrough') {
50
+ return nextResolve('node:test', context);
51
+ }
52
+ return nextResolve(specifier, context);
53
+ };
54
+ /**
55
+ * Load hook - returns mock module for our custom URL
56
+ */
57
+ export const load = async (url, context, nextLoad) => {
58
+ if (url === 'modestbench://capture/node-test') {
59
+ return {
60
+ format: 'module',
61
+ shortCircuit: true,
62
+ source: generateMockSource(),
63
+ };
64
+ }
65
+ return nextLoad(url, context);
66
+ };
67
+ //# sourceMappingURL=node-test-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-test-hooks.js","sourceRoot":"","sources":["../../src/adapters/node-test-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,uCAAuC;AACvC,gGAAgG;AAChG,0EAA0E;AAC1E,4FAA4F;AAC5F,oEAAoE;AACpE,MAAM,kBAAkB,GAAG,GAAW,EAAE,CAAC;;;;;;;;;;;;;;;;CAgBxC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAgB,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE;IAC5E,+DAA+D;IAC/D,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,GAAG,EAAE,iCAAiC;SACvC,CAAC;IACJ,CAAC;IACD,oDAAoD;IACpD,IAAI,SAAS,KAAK,uBAAuB,EAAE,CAAC;QAC1C,OAAO,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAa,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;IAC7D,IAAI,GAAG,KAAK,iCAAiC,EAAE,CAAC;QAC9C,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"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const node_module_1 = require("node:module");
4
+ (0, node_module_1.register)('./node-test-hooks.js', {
5
+ parentURL: require("url").pathToFileURL(__filename),
6
+ });
7
+ //# sourceMappingURL=node-test-register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-test-register.js","sourceRoot":"","sources":["../../src/adapters/node-test-register.ts"],"names":[],"mappings":";;AAAA,6CAAuC;AAEvC,IAAA,sBAAQ,EAAC,sBAAsB,EAAE;IAC/B,SAAS,0CAAiB;CAC3B,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=node-test-register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-test-register.d.ts","sourceRoot":"","sources":["../../src/adapters/node-test-register.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=node-test-register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-test-register.d.ts","sourceRoot":"","sources":["../../src/adapters/node-test-register.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { register } from 'node:module';
2
+ register('./node-test-hooks.js', {
3
+ parentURL: import.meta.url,
4
+ });
5
+ //# sourceMappingURL=node-test-register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-test-register.js","sourceRoot":"","sources":["../../src/adapters/node-test-register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,QAAQ,CAAC,sBAAsB,EAAE;IAC/B,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;CAC3B,CAAC,CAAC"}