@drownek/paper-e2e-runner 1.0.2 → 1.0.5

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.
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Utilities for capturing and parsing V8 stack traces.
3
+ *
4
+ * Two concerns live here:
5
+ * 1. Capturing a call-site stack string at a known point (e.g. inside expect()),
6
+ * so that assertion errors can point back to the test file rather than runner internals.
7
+ * 2. Parsing a raw stack string to extract the first frame that references a given test file,
8
+ * returning its line and column numbers.
9
+ */
10
+ export interface StackLocation {
11
+ line: number;
12
+ column: number;
13
+ }
14
+ /**
15
+ * Capture the current call-site stack trace as a string.
16
+ *
17
+ * @param constructorOpt - When provided, all frames at and above this function
18
+ * are stripped from the trace (standard V8 `captureStackTrace` behavior).
19
+ * Pass the constructor of the class whose instantiation you want to hide.
20
+ */
21
+ export declare function captureCallSite(constructorOpt?: Function): string;
22
+ /**
23
+ * Walk a V8 stack string and return the location of the first frame that
24
+ * references `testFile`.
25
+ *
26
+ * Handles both URL-style frames (`file:///C:/…:line:col`) and plain path
27
+ * frames (`at Something (C:/…:line:col)`). The `testFile` value is
28
+ * normalized from a compiled `dist/*.spec.js` path back to the original
29
+ * `*.spec.ts` source path before matching, so source-mapped stacks resolve
30
+ * correctly.
31
+ *
32
+ * @returns The `{line, column}` of the matching frame, or `null` if no frame
33
+ * references the given test file.
34
+ */
35
+ export declare function extractLineNumberFromStack(stack: string | undefined, testFile: string): StackLocation | null;
36
+ //# sourceMappingURL=stack-trace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-trace.d.ts","sourceRoot":"","sources":["../../lib/stack-trace.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,cAAc,CAAC,EAAE,QAAQ,GAAG,MAAM,CAMjE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAoB5G"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Utilities for capturing and parsing V8 stack traces.
3
+ *
4
+ * Two concerns live here:
5
+ * 1. Capturing a call-site stack string at a known point (e.g. inside expect()),
6
+ * so that assertion errors can point back to the test file rather than runner internals.
7
+ * 2. Parsing a raw stack string to extract the first frame that references a given test file,
8
+ * returning its line and column numbers.
9
+ */
10
+ /**
11
+ * Capture the current call-site stack trace as a string.
12
+ *
13
+ * @param constructorOpt - When provided, all frames at and above this function
14
+ * are stripped from the trace (standard V8 `captureStackTrace` behavior).
15
+ * Pass the constructor of the class whose instantiation you want to hide.
16
+ */
17
+ export function captureCallSite(constructorOpt) {
18
+ const err = new Error();
19
+ if (constructorOpt) {
20
+ Error.captureStackTrace(err, constructorOpt);
21
+ }
22
+ return err.stack || '';
23
+ }
24
+ /**
25
+ * Walk a V8 stack string and return the location of the first frame that
26
+ * references `testFile`.
27
+ *
28
+ * Handles both URL-style frames (`file:///C:/…:line:col`) and plain path
29
+ * frames (`at Something (C:/…:line:col)`). The `testFile` value is
30
+ * normalized from a compiled `dist/*.spec.js` path back to the original
31
+ * `*.spec.ts` source path before matching, so source-mapped stacks resolve
32
+ * correctly.
33
+ *
34
+ * @returns The `{line, column}` of the matching frame, or `null` if no frame
35
+ * references the given test file.
36
+ */
37
+ export function extractLineNumberFromStack(stack, testFile) {
38
+ if (!stack)
39
+ return null;
40
+ // Normalize the test file path to the form that will appear in a
41
+ // source-mapped stack: forward slashes, no leading `dist/`, `.spec.ts` extension.
42
+ const normalizedTestFile = testFile
43
+ .replace(/\\/g, '/')
44
+ .replace(/^dist\//, '')
45
+ .replace(/\.spec\.js$/, '.spec.ts');
46
+ const lines = stack.split('\n');
47
+ for (const line of lines) {
48
+ const location = matchFileUrlFrame(line, normalizedTestFile, testFile)
49
+ ?? matchPlainPathFrame(line, normalizedTestFile, testFile);
50
+ if (location)
51
+ return location;
52
+ }
53
+ return null;
54
+ }
55
+ // ---------------------------------------------------------------------------
56
+ // Internal helpers – each matches one stack-frame style
57
+ // ---------------------------------------------------------------------------
58
+ /**
59
+ * Match a `file:///` URL-style frame, e.g.:
60
+ * at file:///C:/project/dist/foo.spec.js:12:5
61
+ */
62
+ function matchFileUrlFrame(line, normalizedTestFile, rawTestFile) {
63
+ const match = line.match(/file:\/\/\/(.+?):(\d+):(\d+)/);
64
+ if (!match)
65
+ return null;
66
+ const filePath = match[1].replace(/\\/g, '/');
67
+ if (referencesTestFile(filePath, normalizedTestFile, rawTestFile)) {
68
+ return { line: parseInt(match[2], 10), column: parseInt(match[3], 10) };
69
+ }
70
+ return null;
71
+ }
72
+ /**
73
+ * Match a plain-path frame, e.g.:
74
+ * at Object.<anonymous> (C:/project/dist/foo.spec.js:12:5)
75
+ * at C:/project/dist/foo.spec.js:12:5
76
+ */
77
+ function matchPlainPathFrame(line, normalizedTestFile, rawTestFile) {
78
+ const match = line.match(/at\s+(?:.*?\s+\()?(.+?):(\d+):(\d+)\)?/);
79
+ if (!match)
80
+ return null;
81
+ const filePath = match[1].replace(/\\/g, '/');
82
+ if (referencesTestFile(filePath, normalizedTestFile, rawTestFile)) {
83
+ return { line: parseInt(match[2], 10), column: parseInt(match[3], 10) };
84
+ }
85
+ return null;
86
+ }
87
+ /**
88
+ * Return `true` when `filePath` (from a stack frame) refers to the same test
89
+ * file as the normalized or raw test-file strings.
90
+ */
91
+ function referencesTestFile(filePath, normalizedTestFile, rawTestFile) {
92
+ const rawNormalised = rawTestFile.replace(/\\/g, '/');
93
+ return (filePath.includes(normalizedTestFile) ||
94
+ filePath.endsWith(normalizedTestFile) ||
95
+ filePath.includes(rawNormalised));
96
+ }
97
+ //# sourceMappingURL=stack-trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-trace.js","sourceRoot":"","sources":["../../lib/stack-trace.ts"],"names":[],"mappings":"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"}
package/dist/runner.d.ts CHANGED
@@ -11,7 +11,9 @@ export interface ServerWrapper {
11
11
  }
12
12
  export declare function test(name: string, fn: (context: TestContext) => Promise<void>): void;
13
13
  declare class RunnerMatchers<T = unknown> extends Matchers<T> {
14
+ private readonly callSite;
14
15
  constructor(actual: T, isNot?: boolean);
16
+ private waitAbit;
15
17
  toHaveReceivedMessage(this: RunnerMatchers<PlayerWrapper>, expectedMessage: string, strict?: boolean): Promise<void>;
16
18
  toContainItem(this: RunnerMatchers<PlayerWrapper>, itemName: string): Promise<void>;
17
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../runner.ts"],"names":[],"mappings":"AACA,OAAmB,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAK7C,OAAO,EAAE,WAAW,EAAE,UAAU,EAA0B,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAEnC,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAgBD,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAEpF;AAsCD,cAAM,cAAc,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;gBACrC,MAAM,EAAE,CAAC,EAAE,KAAK,GAAE,OAAe;IAIvC,qBAAqB,CAAC,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB3H,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAa5F;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAEtD;AAED,qBAAa,aAAa;IACtB,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;gBAEjG,GAAG,EAAE,GAAG;IASd,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK7C;AA0CD,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA+KpD"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../runner.ts"],"names":[],"mappings":"AACA,OAAmB,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAK7C,OAAO,EAAE,WAAW,EAAE,UAAU,EAA0B,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAQ3C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAEnC,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAkBD,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAEpF;AAsCD,cAAM,cAAc,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,QAAQ,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,MAAM,EAAE,CAAC,EAAE,KAAK,GAAE,OAAe;YAM/B,QAAQ;IAIhB,qBAAqB,CAAC,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAoC3H,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAwB5F;AACD,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAEtD;AAED,qBAAa,aAAa;IACtB,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;gBAEjG,GAAG,EAAE,GAAG;IASd,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK7C;AAoDD,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAqRpD"}
package/dist/runner.js CHANGED
@@ -6,10 +6,16 @@ import { join } from 'path';
6
6
  import { pathToFileURL } from 'url';
7
7
  import { ItemWrapper, GuiWrapper, createPlayerExtensions } from './lib/wrappers.js';
8
8
  import { Matchers } from "./lib/expect.js";
9
+ import { randomUUID } from "node:crypto";
10
+ import { install as installSourceMapSupport } from 'source-map-support';
11
+ import { captureCallSite, extractLineNumberFromStack } from './lib/stack-trace.js';
12
+ // Enable source map support for accurate TypeScript stack traces
13
+ installSourceMapSupport();
9
14
  export { ItemWrapper, GuiWrapper };
10
15
  const testRegistry = [];
11
16
  let currentPlayer = null;
12
17
  let messageBuffer = [];
18
+ const activeBots = [];
13
19
  export function test(name, fn) {
14
20
  testRegistry.push({ name, fn });
15
21
  }
@@ -41,22 +47,61 @@ function waitFor(checkFn, emitter, eventName, predicateFn, timeoutMsg, timeoutMs
41
47
  class RunnerMatchers extends Matchers {
42
48
  constructor(actual, isNot = false) {
43
49
  super(actual, isNot);
50
+ this.callSite = captureCallSite(RunnerMatchers);
51
+ }
52
+ async waitAbit(ms = 500) {
53
+ return new Promise(resolve => setTimeout(resolve, ms));
44
54
  }
45
55
  async toHaveReceivedMessage(expectedMessage, strict = false) {
46
56
  const player = this.actual;
47
57
  const bot = player.bot;
48
58
  const isMatch = (msg) => strict ? msg === expectedMessage : msg.includes(expectedMessage);
49
- const checkFn = () => messageBuffer.find(isMatch);
50
- await waitFor(checkFn, bot, 'message', (jsonMsg) => {
51
- const msgStr = String(jsonMsg);
52
- return isMatch(msgStr) ? msgStr : undefined;
53
- }, `Expected message "${expectedMessage}" not received`);
59
+ if (this.isNot) {
60
+ await this.waitAbit(500);
61
+ const found = messageBuffer.find(isMatch);
62
+ if (found) {
63
+ const error = new Error(`Expected NOT to receive message matching "${expectedMessage}", but received: "${found}"`);
64
+ error.stack = this.callSite;
65
+ throw error;
66
+ }
67
+ return;
68
+ }
69
+ try {
70
+ const checkFn = () => messageBuffer.find(isMatch);
71
+ await waitFor(checkFn, bot, 'message', (jsonMsg) => {
72
+ const msgStr = String(jsonMsg);
73
+ return isMatch(msgStr) ? msgStr : undefined;
74
+ }, `Expected message "${expectedMessage}" not received`);
75
+ }
76
+ catch (error) {
77
+ // Replace the error stack with our captured call site
78
+ const newError = new Error(error.message);
79
+ newError.stack = this.callSite;
80
+ throw newError;
81
+ }
54
82
  }
55
83
  async toContainItem(itemName) {
56
84
  const player = this.actual;
57
85
  const bot = player.bot;
58
86
  const checkFn = () => bot.inventory.items().some(item => item.name.includes(itemName));
59
- await waitFor(checkFn, bot, 'windowUpdate', checkFn, `Expected item "${itemName}" not found in inventory`);
87
+ if (this.isNot) {
88
+ await this.waitAbit(500);
89
+ if (checkFn()) {
90
+ const error = new Error(`Expected inventory NOT to contain item "${itemName}", but it was found`);
91
+ error.stack = this.callSite;
92
+ throw error;
93
+ }
94
+ return;
95
+ }
96
+ try {
97
+ await waitFor(checkFn, bot, 'windowUpdate', checkFn, `Expected item "${itemName}" not found`);
98
+ }
99
+ catch (error) {
100
+ // Replace the error stack with our captured call site
101
+ const newError = new Error(error.message);
102
+ newError.stack = this.callSite;
103
+ throw newError;
104
+ }
60
105
  }
61
106
  }
62
107
  export function expect(target) {
@@ -115,11 +160,12 @@ export async function runTestSession() {
115
160
  const javaPath = process.env.JAVA_PATH;
116
161
  const testFileFilter = process.env.TEST_FILES;
117
162
  const testNameFilter = process.env.TEST_NAMES;
163
+ const testResults = [];
118
164
  if (!serverJar || !serverDir) {
119
165
  throw new Error('SERVER_JAR, JAVA_PATH and SERVER_DIR environment variables must be set');
120
166
  }
121
167
  console.log('\nStarting Paper server...');
122
- const jvmArgsString = process.env.JVM_ARGS || '-Xmx2G -Dcom.mojang.eula.agree=true';
168
+ const jvmArgsString = process.env.JVM_ARGS || '';
123
169
  const jvmArgs = jvmArgsString.split(' ').filter(arg => arg.trim() !== '');
124
170
  console.log(`JVM Arguments: ${jvmArgs.join(' ')}`);
125
171
  const serverProcess = spawn(javaPath, [...jvmArgs, '-jar', serverJar, '--nogui'], {
@@ -172,7 +218,8 @@ export async function runTestSession() {
172
218
  }
173
219
  console.log(` Test: ${testCase.name}`);
174
220
  messageBuffer.length = 0;
175
- const botUsername = `TestBot_${Math.floor(Math.random() * 1000)}`;
221
+ const uniqueId = randomUUID().split('-')[0];
222
+ const botUsername = `Test_${uniqueId}`;
176
223
  console.log(`[Bot] Creating bot: ${botUsername}`);
177
224
  const bot = mineflayer.createBot({
178
225
  host: 'localhost',
@@ -182,6 +229,7 @@ export async function runTestSession() {
182
229
  auth: 'offline'
183
230
  });
184
231
  currentPlayer = bot;
232
+ activeBots.push(bot);
185
233
  await new Promise((resolve, reject) => {
186
234
  const timeout = setTimeout(() => {
187
235
  reject(new Error('Bot failed to spawn within 10 seconds'));
@@ -235,24 +283,110 @@ export async function runTestSession() {
235
283
  };
236
284
  await testCase.fn({ player, server });
237
285
  console.log(` PASSED\n`);
286
+ testResults.push({ file, testName: testCase.name, passed: true });
238
287
  }
239
288
  catch (error) {
240
- console.log(` FAILED: ${error.message}\n`);
241
- throw error;
289
+ const errorMsg = error.message;
290
+ const stack = error.stack;
291
+ const location = extractLineNumberFromStack(stack, file);
292
+ console.log(` FAILED: ${errorMsg}\n`);
293
+ testResults.push({
294
+ file,
295
+ testName: testCase.name,
296
+ passed: false,
297
+ error: errorMsg,
298
+ stack,
299
+ lineNumber: location?.line,
300
+ columnNumber: location?.column
301
+ });
242
302
  }
243
303
  finally {
304
+ bot.removeAllListeners('error');
305
+ bot.removeAllListeners('end');
244
306
  bot.quit();
245
307
  currentPlayer = null;
246
- await new Promise(resolve => setTimeout(resolve, 5000));
308
+ const index = activeBots.indexOf(bot);
309
+ if (index > -1)
310
+ activeBots.splice(index, 1);
247
311
  }
248
312
  }
249
313
  }
250
- console.log('\nAll tests passed!');
314
+ console.log('\n========================================');
315
+ console.log('Test Summary');
316
+ console.log('========================================');
317
+ const passed = testResults.filter(r => r.passed);
318
+ const failed = testResults.filter(r => !r.passed);
319
+ console.log(`Total: ${testResults.length}`);
320
+ console.log(`Passed: ${passed.length}`);
321
+ console.log(`Failed: ${failed.length}`);
322
+ if (failed.length > 0) {
323
+ console.log('\nFailed Tests:');
324
+ for (const result of failed) {
325
+ const filePath = result.file.replace(/^dist[/\\]/, '').replace(/\.spec\.js$/, '.spec.ts');
326
+ const absolutePath = join(process.cwd(), filePath);
327
+ const lineNumber = result.lineNumber;
328
+ const columnNumber = result.columnNumber || 1;
329
+ const fileUrl = pathToFileURL(absolutePath).href + (lineNumber ? `:${lineNumber}:${columnNumber}` : '');
330
+ console.log(` ✗ ${result.testName}`);
331
+ console.log(` ${result.error}`);
332
+ console.log(` ${fileUrl}`);
333
+ }
334
+ console.log('');
335
+ setTimeout(() => {
336
+ process.exit(1);
337
+ }, 1000).unref();
338
+ throw new Error(`${failed.length} test(s) failed`);
339
+ }
340
+ else {
341
+ console.log('\nAll tests passed!');
342
+ }
251
343
  }
252
344
  finally {
253
- console.log('\nStopping server...');
254
- serverProcess.kill();
255
- await new Promise(resolve => setTimeout(resolve, 2000));
345
+ await Promise.all(activeBots.map(bot => {
346
+ return new Promise((resolve) => {
347
+ const timeout = setTimeout(() => {
348
+ console.log(`[WARNING] Bot ${bot.username} cleanup timeout, forcing end`);
349
+ resolve();
350
+ }, 2000);
351
+ bot.once('end', () => {
352
+ clearTimeout(timeout);
353
+ resolve();
354
+ });
355
+ try {
356
+ bot.quit();
357
+ }
358
+ catch (err) {
359
+ clearTimeout(timeout);
360
+ resolve();
361
+ }
362
+ });
363
+ }));
364
+ activeBots.length = 0;
365
+ serverProcess.stdin.write('stop\n');
366
+ // Wait for the server to exit gracefully
367
+ await new Promise((resolve) => {
368
+ const timeout = setTimeout(() => {
369
+ console.log('[WARNING] Server did not stop gracefully, forcing shutdown...');
370
+ serverProcess.kill();
371
+ resolve();
372
+ }, 30000); // 30 second timeout
373
+ serverProcess.once('exit', (code) => {
374
+ clearTimeout(timeout);
375
+ if (code !== 0) {
376
+ console.log(`[WARNING] Server exited with code: ${code}`);
377
+ }
378
+ resolve();
379
+ });
380
+ });
381
+ // Clean up all listeners and streams
382
+ serverProcess.removeAllListeners();
383
+ serverProcess.stdin.end();
384
+ serverProcess.stdout.destroy();
385
+ serverProcess.stderr.destroy();
386
+ // Give the event loop a moment to drain, then force exit
387
+ setTimeout(() => {
388
+ process.exit(0);
389
+ }, 1000).unref();
256
390
  }
257
391
  }
258
392
  //# sourceMappingURL=runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAkC,MAAM,eAAe,CAAC;AACtE,OAAO,UAAmB,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAW,MAAM,MAAM,CAAC;AACrC,OAAO,EAAiB,aAAa,EAAE,MAAM,KAAK,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAqBnC,MAAM,YAAY,GAAe,EAAE,CAAC;AACpC,IAAI,aAAa,GAAe,IAAI,CAAC;AACrC,IAAI,aAAa,GAAa,EAAE,CAAC;AAEjC,MAAM,UAAU,IAAI,CAAC,IAAY,EAAE,EAA2C;IAC1E,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,OAAO,CACZ,OAA4B,EAC5B,OAAgC,EAChC,SAAiB,EACjB,WAAkD,EAClD,UAAkB,EAClB,YAAoB,IAAI;IAExB,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;IACzB,IAAI,MAAM;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAChD,OAAO;QACX,CAAC;QAED,IAAI,OAAqC,CAAC;QAC1C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,UAAU,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,OAAO,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YAC7B,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;YACjC,IAAI,GAAG,EAAE,CAAC;gBACN,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;QACL,CAAC,CAAC;QAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,cAA4B,SAAQ,QAAW;IACjD,YAAY,MAAS,EAAE,QAAiB,KAAK;QACzC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAsC,eAAuB,EAAE,SAAkB,KAAK;QAC7G,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACvB,MAAM,OAAO,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAE3G,MAAM,OAAO,GAAG,GAAuB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEtE,MAAM,OAAO,CACT,OAAO,EACP,GAAG,EACH,SAAS,EACT,CAAC,OAAgB,EAAsB,EAAE;YACrC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAChD,CAAC,EACD,qBAAqB,eAAe,gBAAgB,CACvD,CAAC;IACN,CAAC;IAED,KAAK,CAAC,aAAa,CAAsC,QAAgB;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACvB,MAAM,OAAO,GAAG,GAAY,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEhG,MAAM,OAAO,CACT,OAAO,EACP,GAAG,EACH,cAAc,EACd,OAAO,EACP,kBAAkB,QAAQ,0BAA0B,CACvD,CAAC;IACN,CAAC;CACJ;AAED,MAAM,UAAU,MAAM,CAAI,MAAS;IAC/B,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,OAAO,aAAa;IAMtB,YAAY,GAAQ;QAChB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAE7B,MAAM,UAAU,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe;QACtB,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;CACJ;AAED,KAAK,UAAU,kBAAkB,CAAC,aAA6C;IAC3E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACnE,CAAC,EAAE,MAAM,CAAC,CAAC;QAEX,IAAI,YAAY,GAAG,EAAE,CAAC;QAEtB,MAAM,WAAW,GAAG,CAAC,IAAY,EAAQ,EAAE;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/B,YAAY,IAAI,MAAM,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAEpB,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACzB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACvB,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC;gBACxC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;gBACzC,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBACzD,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC,CAAC;QAEF,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAE7C,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YACrC,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAmB,EAAE,EAAE;YAC7C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC9B,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,IAAI,wBAAwB,CAAC,CAAC,CAAC;YAC/E,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACzC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACvC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IAC9C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IAE9C,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC9F,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAE1C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,qCAAqC,CAAC;IACpF,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAE1E,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEnD,MAAM,aAAa,GAAG,KAAK,CAAC,QAAS,EAAE,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE;QAC/E,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAClC,CAAC,CAAC;IAEH,IAAI,CAAC;QACD,MAAM,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAE7C,2EAA2E;QAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,SAAS,GAAa,EAAE,CAAC;QAE7B,IAAI,gBAAgB,EAAE,CAAC;YACnB,qDAAqD;YACrD,MAAM,SAAS,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;iBACrC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;iBACzC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACrC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QACjC,CAAC;QAED,uEAAuE;QACvE,MAAM,SAAS,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;aAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3E,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAE7B,gCAAgC;QAChC,IAAI,cAAc,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,uCAAuC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjF,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAChC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;gBAC3E,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,eAAe,QAAQ,sBAAsB,OAAO,MAAM,OAAO,EAAE,CAAC,CAAC;gBAClG,OAAO,OAAO,CAAC;YACnB,CAAC,CAAC,CACL,CAAC;QACN,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,MAAM,gBAAgB,cAAc,CAAC,CAAC,CAAC,qBAAqB,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAEtH,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;YAE7C,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;YACxB,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAE5D,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;gBAClC,qCAAqC;gBACrC,IAAI,cAAc,EAAE,CAAC;oBACjB,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC9D,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC1E,IAAI,CAAC,OAAO,EAAE,CAAC;wBACX,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,IAAI,uBAAuB,cAAc,GAAG,CAAC,CAAC;wBAC9E,SAAS;oBACb,CAAC;gBACL,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;gBAExC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;gBAEzB,MAAM,WAAW,GAAG,WAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;gBAClE,OAAO,CAAC,GAAG,CAAC,uBAAuB,WAAW,EAAE,CAAC,CAAC;gBAElD,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC;oBAC7B,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,KAAK;oBACX,QAAQ,EAAE,WAAW;oBACrB,OAAO,EAAE,QAAQ;oBACjB,IAAI,EAAE,SAAS;iBAClB,CAAC,CAAC;gBAEH,aAAa,GAAG,GAAG,CAAC;gBAEpB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBACxC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;wBAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;oBAC/D,CAAC,EAAE,KAAK,CAAC,CAAC;oBAEV,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;wBACnB,OAAO,CAAC,GAAG,CAAC,SAAS,WAAW,uBAAuB,CAAC,CAAC;wBACzD,YAAY,CAAC,OAAO,CAAC,CAAC;wBACtB,OAAO,EAAE,CAAC;oBACd,CAAC,CAAC,CAAC;oBAEH,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;wBAC7B,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;wBACtD,YAAY,CAAC,OAAO,CAAC,CAAC;wBACtB,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChB,CAAC,CAAC,CAAC;oBAEH,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAc,EAAE,EAAE;wBAClC,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,EAAE,CAAC,CAAC;wBACvC,YAAY,CAAC,OAAO,CAAC,CAAC;wBACtB,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC,CAAC;oBACnD,CAAC,CAAC,CAAC;oBAEH,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAc,EAAE,EAAE;wBAC/B,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAC;oBACrD,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBAEH,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAgB,EAAE,EAAE;oBACnC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;oBAChC,OAAO,CAAC,GAAG,CAAC,4BAA4B,OAAO,GAAG,CAAC,CAAC;oBACpD,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChC,CAAC,CAAC,CAAC;gBAEH,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAe,EAAE,EAAE;oBACrC,MAAM,GAAG,GAAG,MAAuE,CAAC;oBACpF,OAAO,CAAC,GAAG,CAAC,6CAA6C,GAAG,CAAC,KAAK,YAAY,GAAG,CAAC,IAAI,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC/H,CAAC,CAAC,CAAC;gBAEH,GAAG,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,MAAe,EAAE,EAAE;oBACtC,MAAM,GAAG,GAAG,MAA4B,CAAC;oBACzC,OAAO,CAAC,GAAG,CAAC,uCAAuC,GAAG,EAAE,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;gBAClF,CAAC,CAAC,CAAC;gBAEF,GAA2C,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,MAAe,EAAE,EAAE;oBACvF,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC3E,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC;oBACD,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;oBACtC,MAAM,MAAM,GAAkB;wBAC1B,OAAO,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE;4BAC3B,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;4BAC1C,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;gCAC1C,IAAI,GAAG;oCAAE,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;4BAC3D,CAAC,CAAC,CAAC;4BACH,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;wBAC/C,CAAC;qBACJ,CAAC;oBAEF,MAAM,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;oBACtC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAChC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,OAAO,CAAC,GAAG,CAAC,eAAgB,KAAe,CAAC,OAAO,IAAI,CAAC,CAAC;oBACzD,MAAM,KAAK,CAAC;gBAChB,CAAC;wBAAS,CAAC;oBACP,GAAG,CAAC,IAAI,EAAE,CAAC;oBACX,aAAa,GAAG,IAAI,CAAC;oBACrB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC5D,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACvC,CAAC;YAAS,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,aAAa,CAAC,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../runner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drownek/paper-e2e-runner",
3
- "version": "1.0.2",
3
+ "version": "1.0.5",
4
4
  "description": "End-to-end testing framework for Paper/Spigot Minecraft plugins",
5
5
  "type": "module",
6
6
  "main": "dist/runner.js",
@@ -10,7 +10,8 @@
10
10
  },
11
11
  "scripts": {
12
12
  "build": "tsc",
13
- "prepublishOnly": "npm run build"
13
+ "prepublishOnly": "npm run build",
14
+ "watch": "tsc --watch"
14
15
  },
15
16
  "files": [
16
17
  "dist"
@@ -35,10 +36,14 @@
35
36
  "url": "https://github.com/drownek/paper-e2e-test/issues"
36
37
  },
37
38
  "dependencies": {
38
- "mineflayer": "^4.0.0"
39
+ "js-yaml": "^4.1.0",
40
+ "mineflayer": "^4.0.0",
41
+ "source-map-support": "^0.5.21"
39
42
  },
40
43
  "devDependencies": {
44
+ "@types/js-yaml": "^4.0.9",
41
45
  "@types/node": "^22.10.5",
46
+ "@types/source-map-support": "^0.5.10",
42
47
  "typescript": "^5.7.3"
43
48
  },
44
49
  "engines": {