@pact-foundation/pact 16.5.0 → 17.0.1

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,32 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [17.0.1](https://github.com/pact-foundation/pact-js/compare/v17.0.0...v17.0.1) (2026-07-01)
6
+
7
+
8
+ ### Fixes and Improvements
9
+
10
+ * **verifier:** run beforeEach/afterEach once per interaction without desyncing on hook failure ([#1865](https://github.com/pact-foundation/pact-js/issues/1865)) ([fed47e2](https://github.com/pact-foundation/pact-js/commit/fed47e220af427d654f8b192333e6d6425118425)), closes [#1864](https://github.com/pact-foundation/pact-js/issues/1864)
11
+
12
+ ## [17.0.0](https://github.com/pact-foundation/pact-js/compare/v16.5.0...v17.0.0) (2026-06-25)
13
+
14
+
15
+ ### ⚠ BREAKING CHANGES
16
+
17
+ * drop node 20, test against node 26 (#1813)
18
+
19
+ * drop node 20, test against node 26 ([#1813](https://github.com/pact-foundation/pact-js/issues/1813)) ([bdf71f7](https://github.com/pact-foundation/pact-js/commit/bdf71f758cb410f2795b46dc36d173a1399feac3))
20
+
21
+
22
+ ### Features
23
+
24
+ * enable scarf download analytics ([#1859](https://github.com/pact-foundation/pact-js/issues/1859)) ([c1d5593](https://github.com/pact-foundation/pact-js/commit/c1d5593ff0580f8439550c0e3ba7300c6c8f608a))
25
+
26
+
27
+ ### Fixes and Improvements
28
+
29
+ * ESM import issue ([#1860](https://github.com/pact-foundation/pact-js/issues/1860)) ([f6b204c](https://github.com/pact-foundation/pact-js/commit/f6b204c6bec219b94db8370eee4c44258253be09))
30
+
5
31
  ## [16.5.0](https://github.com/pact-foundation/pact-js/compare/v16.4.0...v16.5.0) (2026-05-24)
6
32
 
7
33
 
package/README.md CHANGED
@@ -300,6 +300,25 @@ See [CONTRIBUTING](CONTRIBUTING.md).
300
300
  </a>
301
301
  <br />
302
302
 
303
+ ## Anonymized analytics
304
+
305
+ Pact JS uses [Scarf](https://scarf.sh/) to collect [anonymized installation analytics](https://github.com/scarf-sh/scarf-js?tab=readme-ov-file#as-a-user-of-a-package-using-scarf-js-what-information-does-scarf-js-send-about-me). These analytics help support the maintainers of this library and ONLY run during installation. To [opt out](https://github.com/scarf-sh/scarf-js?tab=readme-ov-file#as-a-user-of-a-package-using-scarf-js-how-can-i-opt-out-of-analytics), you can set the `scarfSettings.enabled` field to `false` in your project's `package.json`:
306
+
307
+ ```
308
+ // package.json
309
+ {
310
+ // ...
311
+ "scarfSettings": {
312
+ "enabled": false
313
+ }
314
+ // ...
315
+ }
316
+ ```
317
+
318
+ Alternatively, you can set the environment variable `SCARF_ANALYTICS` to `false` as part of the environment that installs your npm packages, e.g., `SCARF_ANALYTICS=false npm install`.
319
+
320
+ For more information, see [docs.pact.io/telemetry](https://docs.pact.io/telemetry).
321
+
303
322
  [spec]: https://github.com/pact-foundation/pact-specification
304
323
  [10xx]: https://github.com/pact-foundation/pact-js/tree/10.x.x
305
324
  [9xx]: https://github.com/pact-foundation/pact-js/tree/9.x.x
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pact-foundation/pact",
3
- "version": "16.5.0",
3
+ "version": "17.0.1",
4
4
  "description": "Pact for all things Javascript",
5
5
  "main": "./src/index.js",
6
6
  "types": "./src/index.d.ts",
@@ -33,7 +33,7 @@
33
33
  "url": "git+https://github.com/pact-foundation/pact-js.git"
34
34
  },
35
35
  "engines": {
36
- "node": ">=20"
36
+ "node": ">=22"
37
37
  },
38
38
  "keywords": [
39
39
  "pact",
@@ -104,6 +104,7 @@
104
104
  },
105
105
  "dependencies": {
106
106
  "@pact-foundation/pact-core": "^19.2.0",
107
+ "@scarf/scarf": "^1.4.0",
107
108
  "axios": "^1.12.2",
108
109
  "body-parser": "^2.2.0",
109
110
  "chalk": "4.1.2",
@@ -111,7 +112,7 @@
111
112
  "graphql": "^16.11.0",
112
113
  "graphql-tag": "^2.12.6",
113
114
  "http-proxy": "^1.18.1",
114
- "https-proxy-agent": "^9.0.0",
115
+ "https-proxy-agent": "^7.0.6",
115
116
  "js-base64": "^3.7.8",
116
117
  "lodash": "^4.17.21",
117
118
  "ramda": "^0.32.0",
@@ -120,17 +121,17 @@
120
121
  "stack-utils": "^2.0.6"
121
122
  },
122
123
  "devDependencies": {
123
- "@babel/cli": "7.28.6",
124
- "@babel/core": "7.29.0",
125
- "@babel/preset-env": "7.29.5",
126
- "@biomejs/biome": "2.4.15",
127
- "@tsconfig/node20": "20.1.9",
124
+ "@babel/cli": "8.0.1",
125
+ "@babel/core": "8.0.1",
126
+ "@babel/preset-env": "8.0.2",
127
+ "@biomejs/biome": "2.4.16",
128
+ "@tsconfig/node22": "22.0.5",
128
129
  "@types/express": "4.17.25",
129
130
  "@types/http-proxy": "1.17.17",
130
131
  "@types/lodash": "4.17.24",
131
132
  "@types/nock": "11.1.0",
132
- "@types/node": "24.12.4",
133
- "@types/ramda": "0.31.1",
133
+ "@types/node": "24.13.2",
134
+ "@types/ramda": "0.32.0",
134
135
  "@types/stack-utils": "2.0.3",
135
136
  "@vitest/coverage-v8": "3.2.4",
136
137
  "commit-and-tag-version": "12.7.3",
@@ -1,14 +1,29 @@
1
1
  /**
2
- * These handlers assume that the number of "setup" and "teardown" requests to
3
- * `/_pactSetup` are always sequential and balanced, i.e. if 3 "setup" actions
4
- * are received prior to an interaction being executed, then 3 "teardown"
5
- * actions will be received after that interaction has ended.
2
+ * `beforeEach`/`afterEach` are driven off the provider-state setup/teardown
3
+ * requests the core makes to `/_pactSetup`. For each interaction the core sends
4
+ * one or more "setup" actions, runs the interaction, then sends one or more
5
+ * "teardown" actions.
6
+ *
7
+ * We track the interaction boundary with a single `insideInteraction` flag that
8
+ * flips on the setup<->teardown edges, rather than counting requests. This is:
9
+ * - idempotent under retries: the core retries a failed state-change request,
10
+ * and a duplicate "setup" while already inside an interaction is a no-op; and
11
+ * - self-healing: it cannot accumulate error and latch into a broken state.
12
+ *
13
+ * Hook failures are recorded on `HooksState.errors` and the state-change request
14
+ * is still answered with a success, so a throwing hook never turns into a non-2xx
15
+ * response (which the core would retry, desyncing interaction tracking). The
16
+ * verifier surfaces any recorded errors once verification completes, so a failing
17
+ * hook still fails the build.
6
18
  */
7
19
  import type { RequestHandler } from 'express';
8
20
  import type { Hook } from './types';
9
21
  export type HooksState = {
10
- setupCounter: number;
22
+ insideInteraction: boolean;
23
+ errors: Error[];
11
24
  };
12
- export declare const registerHookStateTracking: (hooksState: HooksState) => RequestHandler;
13
- export declare const registerBeforeHook: (beforeEach: Hook, hooksState: HooksState) => RequestHandler;
14
- export declare const registerAfterHook: (afterEach: Hook, hooksState: HooksState) => RequestHandler;
25
+ export declare const createHooksState: () => HooksState;
26
+ export declare const registerHooks: (hooks: {
27
+ beforeEach?: Hook;
28
+ afterEach?: Hook;
29
+ }, hooksState: HooksState) => RequestHandler;
@@ -3,53 +3,43 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.registerAfterHook = exports.registerBeforeHook = exports.registerHookStateTracking = void 0;
6
+ exports.registerHooks = exports.createHooksState = void 0;
7
7
  const logger_1 = __importDefault(require("../../../common/logger"));
8
- const registerHookStateTracking = (hooksState) => async ({ body }, _res, next) => {
9
- if (body?.action === 'setup')
10
- hooksState.setupCounter += 1;
11
- if (body?.action === 'teardown')
12
- hooksState.setupCounter -= 1;
13
- logger_1.default.debug(`hooks state counter is ${hooksState.setupCounter} after receiving "${body?.action}" action`);
14
- next();
15
- };
16
- exports.registerHookStateTracking = registerHookStateTracking;
17
- const registerBeforeHook = (beforeEach, hooksState) => async ({ body }, _res, next) => {
18
- if (body?.action === 'setup' && hooksState.setupCounter === 1) {
19
- logger_1.default.debug("executing 'beforeEach' hook");
20
- try {
21
- await beforeEach();
22
- next();
23
- }
24
- catch (e) {
25
- const error = e instanceof Error ? e : new Error(String(e));
26
- logger_1.default.error(`error executing 'beforeEach' hook: ${error.message}`);
27
- logger_1.default.debug(`Stack trace was: ${error.stack}`);
28
- next(new Error(`error executing 'beforeEach' hook: ${error.message}`));
29
- }
8
+ const createHooksState = () => ({
9
+ insideInteraction: false,
10
+ errors: [],
11
+ });
12
+ exports.createHooksState = createHooksState;
13
+ const runHook = async (name, hook, hooksState) => {
14
+ logger_1.default.debug(`executing '${name}' hook`);
15
+ try {
16
+ await hook();
30
17
  }
31
- else {
32
- next();
18
+ catch (e) {
19
+ const error = e instanceof Error ? e : new Error(String(e));
20
+ logger_1.default.error(`error executing '${name}' hook: ${error.message}`);
21
+ logger_1.default.debug(`Stack trace was: ${error.stack}`);
22
+ hooksState.errors.push(new Error(`error executing '${name}' hook: ${error.message}`));
33
23
  }
34
24
  };
35
- exports.registerBeforeHook = registerBeforeHook;
36
- const registerAfterHook = (afterEach, hooksState) => async ({ body }, _res, next) => {
37
- if (body?.action === 'teardown' && hooksState.setupCounter === 0) {
38
- logger_1.default.debug("executing 'afterEach' hook");
39
- try {
40
- await afterEach();
41
- next();
42
- }
43
- catch (e) {
44
- const error = e instanceof Error ? e : new Error(String(e));
45
- logger_1.default.error(`error executing 'afterEach' hook: ${error.message}`);
46
- logger_1.default.debug(`Stack trace was: ${error.stack}`);
47
- next(new Error(`error executing 'afterEach' hook: ${error.message}`));
48
- }
25
+ const registerHooks = (hooks, hooksState) => async ({ body }, _res, next) => {
26
+ const action = body?.action;
27
+ if (action === 'setup' && !hooksState.insideInteraction) {
28
+ // rising edge: the first "setup" of a new interaction
29
+ hooksState.insideInteraction = true;
30
+ if (hooks.beforeEach)
31
+ await runHook('beforeEach', hooks.beforeEach, hooksState);
49
32
  }
50
- else {
51
- next();
33
+ else if (action === 'teardown' && hooksState.insideInteraction) {
34
+ // falling edge: the first "teardown" after the interaction ran
35
+ hooksState.insideInteraction = false;
36
+ if (hooks.afterEach)
37
+ await runHook('afterEach', hooks.afterEach, hooksState);
52
38
  }
39
+ // Always continue with a successful response. A hook failure must never
40
+ // become a non-2xx state-change response, or the core will retry it and
41
+ // desync interaction tracking. Failures are surfaced by the verifier later.
42
+ next();
53
43
  };
54
- exports.registerAfterHook = registerAfterHook;
44
+ exports.registerHooks = registerHooks;
55
45
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/hooks.ts"],"names":[],"mappings":";;;;;;AAQA,oEAA4C;AAOrC,MAAM,yBAAyB,GACpC,CAAC,UAAsB,EAAkB,EAAE,CAC3C,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAC7B,IAAI,IAAI,EAAE,MAAM,KAAK,OAAO;QAAE,UAAU,CAAC,YAAY,IAAI,CAAC,CAAC;IAC3D,IAAI,IAAI,EAAE,MAAM,KAAK,UAAU;QAAE,UAAU,CAAC,YAAY,IAAI,CAAC,CAAC;IAE9D,gBAAM,CAAC,KAAK,CACV,0BAA0B,UAAU,CAAC,YAAY,qBAAqB,IAAI,EAAE,MAAM,UAAU,CAC7F,CAAC;IAEF,IAAI,EAAE,CAAC;AACT,CAAC,CAAC;AAXS,QAAA,yBAAyB,6BAWlC;AAEG,MAAM,kBAAkB,GAC7B,CAAC,UAAgB,EAAE,UAAsB,EAAkB,EAAE,CAC7D,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAC7B,IAAI,IAAI,EAAE,MAAM,KAAK,OAAO,IAAI,UAAU,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;QAC9D,gBAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,UAAU,EAAE,CAAC;YACnB,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,gBAAM,CAAC,KAAK,CAAC,sCAAsC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACpE,gBAAM,CAAC,KAAK,CAAC,oBAAoB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,IAAI,KAAK,CAAC,sCAAsC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,EAAE,CAAC;IACT,CAAC;AACH,CAAC,CAAC;AAjBS,QAAA,kBAAkB,sBAiB3B;AAEG,MAAM,iBAAiB,GAC5B,CAAC,SAAe,EAAE,UAAsB,EAAkB,EAAE,CAC5D,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAC7B,IAAI,IAAI,EAAE,MAAM,KAAK,UAAU,IAAI,UAAU,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;QACjE,gBAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,SAAS,EAAE,CAAC;YAClB,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,gBAAM,CAAC,KAAK,CAAC,qCAAqC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACnE,gBAAM,CAAC,KAAK,CAAC,oBAAoB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,EAAE,CAAC;IACT,CAAC;AACH,CAAC,CAAC;AAjBS,QAAA,iBAAiB,qBAiB1B"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/hooks.ts"],"names":[],"mappings":";;;;;;AAoBA,oEAA4C;AAQrC,MAAM,gBAAgB,GAAG,GAAe,EAAE,CAAC,CAAC;IACjD,iBAAiB,EAAE,KAAK;IACxB,MAAM,EAAE,EAAE;CACX,CAAC,CAAC;AAHU,QAAA,gBAAgB,oBAG1B;AAEH,MAAM,OAAO,GAAG,KAAK,EACnB,IAAgC,EAChC,IAAU,EACV,UAAsB,EACP,EAAE;IACjB,gBAAM,CAAC,KAAK,CAAC,cAAc,IAAI,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,IAAI,EAAE,CAAC;IACf,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,gBAAM,CAAC,KAAK,CAAC,oBAAoB,IAAI,WAAW,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,gBAAM,CAAC,KAAK,CAAC,oBAAoB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,UAAU,CAAC,MAAM,CAAC,IAAI,CACpB,IAAI,KAAK,CAAC,oBAAoB,IAAI,WAAW,KAAK,CAAC,OAAO,EAAE,CAAC,CAC9D,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEK,MAAM,aAAa,GACxB,CACE,KAA8C,EAC9C,UAAsB,EACN,EAAE,CACpB,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAC7B,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC;IAE5B,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;QACxD,sDAAsD;QACtD,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC;QACpC,IAAI,KAAK,CAAC,UAAU;YAClB,MAAM,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;SAAM,IAAI,MAAM,KAAK,UAAU,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC;QACjE,+DAA+D;QAC/D,UAAU,CAAC,iBAAiB,GAAG,KAAK,CAAC;QACrC,IAAI,KAAK,CAAC,SAAS;YACjB,MAAM,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,wEAAwE;IACxE,wEAAwE;IACxE,4EAA4E;IAC5E,IAAI,EAAE,CAAC;AACT,CAAC,CAAC;AAxBS,QAAA,aAAa,iBAwBtB"}
@@ -2,100 +2,101 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const vitest_1 = require("vitest");
4
4
  const hooks_1 = require("./hooks");
5
- // This mimics the proxy setup (src/dsl/verifier/proxy/proxy.ts), whereby the
6
- // state handling middleware is run regardless of whether a hook is registered
7
- // or not.
8
- const doRequest = async (action, hooksState, hookHandler) => {
9
- const hooksStateHandler = (0, hooks_1.registerHookStateTracking)(hooksState);
10
- const hookRequestHandler = hookHandler || ((_req, _res, next) => next());
11
- // biome-ignore lint/suspicious/noExplicitAny: partial mock object — only body is needed to exercise the hook logic
12
- const request = {
13
- body: {
14
- action,
15
- },
16
- };
5
+ // Mimics the proxy: a single hooks middleware handles every `/_pactSetup`
6
+ // request. `doRequest` drives it with a given action and resolves once the
7
+ // middleware calls next().
8
+ const doRequest = (action, handler) => {
9
+ // biome-ignore lint/suspicious/noExplicitAny: partial mock — only body is needed
10
+ const request = { body: { action } };
17
11
  return new Promise((resolve) => {
18
- // biome-ignore lint/suspicious/noExplicitAny: null passed as res/next mocks; only body is exercised
19
- hooksStateHandler(request, null, () => {
20
- // biome-ignore lint/suspicious/noExplicitAny: null passed as res mock; only body is exercised
21
- hookRequestHandler(request, null, resolve);
22
- });
12
+ // biome-ignore lint/suspicious/noExplicitAny: null res mock; only body is exercised
13
+ handler(request, null, () => resolve());
23
14
  });
24
15
  };
25
- describe('Verifier', () => {
16
+ describe('Verifier hooks', () => {
26
17
  afterEach(() => {
27
18
  vitest_1.vi.restoreAllMocks();
28
19
  });
29
- describe('#registerBeforeHook', () => {
30
- describe('when the state setup routine is called multiple times before the next teardown', () => {
31
- it('it executes the beforeEach hook only once', async () => {
32
- const hooksState = { setupCounter: 0 };
33
- const hook = vitest_1.vi.fn().mockResolvedValue(undefined);
34
- const hookHandler = (0, hooks_1.registerBeforeHook)(hook, hooksState);
35
- await doRequest('setup', hooksState, hookHandler);
36
- await doRequest('setup', hooksState, hookHandler);
37
- await doRequest('teardown', hooksState);
38
- await doRequest('teardown', hooksState);
39
- expect(hook).toHaveBeenCalledOnce();
40
- });
41
- });
20
+ it('runs beforeEach and afterEach once per interaction (multiple "given" states)', async () => {
21
+ const state = (0, hooks_1.createHooksState)();
22
+ const beforeEach = vitest_1.vi.fn().mockResolvedValue(undefined);
23
+ const afterEach = vitest_1.vi.fn().mockResolvedValue(undefined);
24
+ const handler = (0, hooks_1.registerHooks)({ beforeEach, afterEach }, state);
25
+ // Interaction with two "given" states: setup x2, teardown x2
26
+ await doRequest('setup', handler);
27
+ await doRequest('setup', handler);
28
+ await doRequest('teardown', handler);
29
+ await doRequest('teardown', handler);
30
+ expect(beforeEach).toHaveBeenCalledOnce();
31
+ expect(afterEach).toHaveBeenCalledOnce();
42
32
  });
43
- describe('#registerAfterHook', () => {
44
- describe('when the state teardown routine is called multiple times before the next setup', () => {
45
- it('it executes the afterEach hook only once', async () => {
46
- const hooksState = { setupCounter: 0 };
47
- const hook = vitest_1.vi.fn().mockResolvedValue(undefined);
48
- const hookHandler = (0, hooks_1.registerAfterHook)(hook, hooksState);
49
- await doRequest('setup', hooksState);
50
- await doRequest('setup', hooksState);
51
- await doRequest('teardown', hooksState, hookHandler);
52
- await doRequest('teardown', hooksState, hookHandler);
53
- expect(hook).toHaveBeenCalledOnce();
54
- });
55
- });
33
+ it('runs the hooks once for each of several interactions', async () => {
34
+ const state = (0, hooks_1.createHooksState)();
35
+ const beforeEach = vitest_1.vi.fn().mockResolvedValue(undefined);
36
+ const afterEach = vitest_1.vi.fn().mockResolvedValue(undefined);
37
+ const handler = (0, hooks_1.registerHooks)({ beforeEach, afterEach }, state);
38
+ // Interaction 1 (two states)
39
+ await doRequest('setup', handler);
40
+ await doRequest('setup', handler);
41
+ await doRequest('teardown', handler);
42
+ await doRequest('teardown', handler);
43
+ // Interaction 2 (one state)
44
+ await doRequest('setup', handler);
45
+ await doRequest('teardown', handler);
46
+ // Interaction 3 (three states)
47
+ await doRequest('setup', handler);
48
+ await doRequest('setup', handler);
49
+ await doRequest('setup', handler);
50
+ await doRequest('teardown', handler);
51
+ await doRequest('teardown', handler);
52
+ await doRequest('teardown', handler);
53
+ expect(beforeEach).toHaveBeenCalledTimes(3);
54
+ expect(afterEach).toHaveBeenCalledTimes(3);
56
55
  });
57
- describe('#registerBeforeHook and #registerAfterHook', () => {
58
- describe('when the state teardown routine is called multiple times before the next setup', () => {
59
- it('it executes the beforeEach and afterEach hooks only once', async () => {
60
- const hooksState = { setupCounter: 0 };
61
- const beforeHook = vitest_1.vi.fn().mockResolvedValue(undefined);
62
- const afterHook = vitest_1.vi.fn().mockResolvedValue(undefined);
63
- const beforeHookHandler = (0, hooks_1.registerBeforeHook)(beforeHook, hooksState);
64
- const afterHookHandler = (0, hooks_1.registerAfterHook)(afterHook, hooksState);
65
- await doRequest('setup', hooksState, beforeHookHandler);
66
- await doRequest('setup', hooksState, beforeHookHandler);
67
- await doRequest('teardown', hooksState, afterHookHandler);
68
- await doRequest('teardown', hooksState, afterHookHandler);
69
- expect(beforeHook).toHaveBeenCalledOnce();
70
- expect(afterHook).toHaveBeenCalledOnce();
71
- });
72
- });
73
- describe('when multiple interactions are executed', () => {
74
- it('it executes the beforeEach and afterEach hooks once for each interaction', async () => {
75
- const hooksState = { setupCounter: 0 };
76
- const beforeHook = vitest_1.vi.fn().mockResolvedValue(undefined);
77
- const afterHook = vitest_1.vi.fn().mockResolvedValue(undefined);
78
- const beforeHookHandler = (0, hooks_1.registerBeforeHook)(beforeHook, hooksState);
79
- const afterHookHandler = (0, hooks_1.registerAfterHook)(afterHook, hooksState);
80
- // Interaction 1 (two "given" states)
81
- await doRequest('setup', hooksState, beforeHookHandler);
82
- await doRequest('setup', hooksState, beforeHookHandler);
83
- await doRequest('teardown', hooksState, afterHookHandler);
84
- await doRequest('teardown', hooksState, afterHookHandler);
85
- // Interaction 2 (one "given" state)
86
- await doRequest('setup', hooksState, beforeHookHandler);
87
- await doRequest('teardown', hooksState, afterHookHandler);
88
- // Interaction 3 (three "given" states)
89
- await doRequest('setup', hooksState, beforeHookHandler);
90
- await doRequest('setup', hooksState, beforeHookHandler);
91
- await doRequest('setup', hooksState, beforeHookHandler);
92
- await doRequest('teardown', hooksState, afterHookHandler);
93
- await doRequest('teardown', hooksState, afterHookHandler);
94
- await doRequest('teardown', hooksState, afterHookHandler);
95
- expect(beforeHook).toHaveBeenCalledTimes(3);
96
- expect(afterHook).toHaveBeenCalledTimes(3);
97
- });
98
- });
56
+ // Regression for #1864: a failing beforeEach used to desync a global counter,
57
+ // silently disabling the hooks for every subsequent interaction.
58
+ it('keeps running hooks for later interactions after a hook throws, and records the error', async () => {
59
+ const state = (0, hooks_1.createHooksState)();
60
+ const beforeEach = vitest_1.vi
61
+ .fn()
62
+ .mockRejectedValueOnce(new Error('transient failure'))
63
+ .mockResolvedValue(undefined);
64
+ const afterEach = vitest_1.vi.fn().mockResolvedValue(undefined);
65
+ const handler = (0, hooks_1.registerHooks)({ beforeEach, afterEach }, state);
66
+ // Three single-state interactions; beforeEach throws on the first.
67
+ for (let i = 0; i < 3; i++) {
68
+ await doRequest('setup', handler);
69
+ await doRequest('teardown', handler);
70
+ }
71
+ expect(beforeEach).toHaveBeenCalledTimes(3);
72
+ expect(afterEach).toHaveBeenCalledTimes(3);
73
+ expect(state.errors).toHaveLength(1);
74
+ expect(state.errors[0].message).toContain('beforeEach');
75
+ });
76
+ // A throwing hook must never turn into a non-2xx response (the proxy must keep
77
+ // serving), or the core would retry the request and desync tracking.
78
+ it('still calls next() when a hook throws', async () => {
79
+ const state = (0, hooks_1.createHooksState)();
80
+ const beforeEach = vitest_1.vi.fn().mockRejectedValue(new Error('boom'));
81
+ const handler = (0, hooks_1.registerHooks)({ beforeEach }, state);
82
+ // doRequest resolves only when next() is called.
83
+ await expect(doRequest('setup', handler)).resolves.toBeUndefined();
84
+ });
85
+ // The core retries a failed state-change request: a duplicate "setup" before
86
+ // any "teardown" must not re-fire beforeEach nor desync the interaction state.
87
+ it('is idempotent under a retried setup request', async () => {
88
+ const state = (0, hooks_1.createHooksState)();
89
+ const beforeEach = vitest_1.vi.fn().mockResolvedValue(undefined);
90
+ const afterEach = vitest_1.vi.fn().mockResolvedValue(undefined);
91
+ const handler = (0, hooks_1.registerHooks)({ beforeEach, afterEach }, state);
92
+ await doRequest('setup', handler);
93
+ await doRequest('setup', handler); // retried/duplicate setup
94
+ await doRequest('teardown', handler);
95
+ // next interaction
96
+ await doRequest('setup', handler);
97
+ await doRequest('teardown', handler);
98
+ expect(beforeEach).toHaveBeenCalledTimes(2);
99
+ expect(afterEach).toHaveBeenCalledTimes(2);
99
100
  });
100
101
  });
101
102
  //# sourceMappingURL=hooks.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.spec.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/hooks.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.spec.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/hooks.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
+ export * from './hooks';
1
2
  export * from './proxy';
@@ -14,5 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./hooks"), exports);
17
18
  __exportStar(require("./proxy"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0CAAwB"}
@@ -1,4 +1,5 @@
1
1
  import http from 'node:http';
2
+ import { type HooksState } from './hooks';
2
3
  import type { ProxyOptions } from './types';
3
4
  export declare const waitForServerReady: (server: http.Server) => Promise<http.Server>;
4
- export declare const createProxy: (config: ProxyOptions, stateSetupPath: string, messageTransportPath: string) => http.Server;
5
+ export declare const createProxy: (config: ProxyOptions, stateSetupPath: string, messageTransportPath: string, hooksState: HooksState) => http.Server;
@@ -21,7 +21,7 @@ const waitForServerReady = (server) => new Promise((resolve, reject) => {
21
21
  });
22
22
  exports.waitForServerReady = waitForServerReady;
23
23
  // Get the Proxy we'll pass to the CLI for verification
24
- const createProxy = (config, stateSetupPath, messageTransportPath) => {
24
+ const createProxy = (config, stateSetupPath, messageTransportPath, hooksState) => {
25
25
  const app = (0, express_1.default)();
26
26
  const proxy = new http_proxy_1.default();
27
27
  logger_1.default.trace(`Setting up state proxy with path: ${stateSetupPath}`);
@@ -36,18 +36,14 @@ const createProxy = (config, stateSetupPath, messageTransportPath) => {
36
36
  }));
37
37
  app.use(body_parser_1.default.urlencoded({ extended: true }));
38
38
  app.use('/{*splat}', body_parser_1.default.raw({ type: '*/*' }));
39
- // Hooks
40
- const hooksState = {
41
- setupCounter: 0,
42
- };
43
- app.use(stateSetupPath, (0, hooks_1.registerHookStateTracking)(hooksState));
44
- if (config.beforeEach) {
45
- logger_1.default.trace("registered 'beforeEach' hook");
46
- app.use(stateSetupPath, (0, hooks_1.registerBeforeHook)(config.beforeEach, hooksState));
47
- }
48
- if (config.afterEach) {
49
- logger_1.default.trace("registered 'afterEach' hook");
50
- app.use(stateSetupPath, (0, hooks_1.registerAfterHook)(config.afterEach, hooksState));
39
+ // Hooks. Tracking is only needed when a hook is registered; both hooks share
40
+ // the same interaction-boundary tracking, so they are registered together.
41
+ if (config.beforeEach || config.afterEach) {
42
+ if (config.beforeEach)
43
+ logger_1.default.trace("registered 'beforeEach' hook");
44
+ if (config.afterEach)
45
+ logger_1.default.trace("registered 'afterEach' hook");
46
+ app.use(stateSetupPath, (0, hooks_1.registerHooks)({ beforeEach: config.beforeEach, afterEach: config.afterEach }, hooksState));
51
47
  }
52
48
  // Trace req/res logging
53
49
  if (config.logLevel === 'debug' || config.logLevel === 'trace') {
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/proxy.ts"],"names":[],"mappings":"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"}
@@ -59,7 +59,7 @@ describe('#toServerOptions', () => {
59
59
  expect(res.agent?.proxy?.toString()).toBe(expectedProxy);
60
60
  });
61
61
  it('prefers HTTPS_PROXY to HTTP_PROXY', () => {
62
- process.env.HTTPS_PROXY = 'http://unused/';
62
+ process.env.HTTP_PROXY = 'http://ignored.proxy/';
63
63
  const expectedProxy = 'http://expected.proxy/';
64
64
  process.env.HTTPS_PROXY = expectedProxy;
65
65
  const res = toServerOptions();
@@ -1 +1 @@
1
- {"version":3,"file":"proxyRequest.spec.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/proxyRequest.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxyRequest.spec.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/proxyRequest.spec.ts"],"names":[],"mappings":";;AAAA,6CAAuC;AAEvC,iDAAuE;AAGvE,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,eAAe,GAAG,CAAC,OAAqB,EAAE,EAAE,GAAuB,EAAE,EAAE;IAC3E,wGAAwG;IACxG,IAAA,8BAAkB,EAAC,IAAI,EAAE,GAAG,IAAK,EAAU,CAAC,CAAC;IAE/C,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;YACzB,MAAM,GAAG,GAAG,eAAe,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YAEpD,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;YAE9B,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,GAAG,GAAG,eAAe,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAEnD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAC7B,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;YAE9B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,cAAc,GAAG,iBAAiB,CAAC;YAEzC,MAAM,GAAG,GAAG,eAAe,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC;YAEjE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;YAE9B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,MAAM,UAAU,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAEtC,SAAS,CAAC,GAAG,EAAE;YACb,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,UAAU,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YAClC,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;YAE9B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;YAC1B,MAAM,aAAa,GAAG,oBAAoB,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,aAAa,CAAC;YAExC,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;YAE9B,MAAM,CAAE,GAAG,CAAC,KAAiC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CACpE,aAAa,CACd,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;YACzB,MAAM,aAAa,GAAG,kBAAkB,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,aAAa,CAAC;YAEvC,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;YAE9B,MAAM,CAAE,GAAG,CAAC,KAAiC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CACpE,aAAa,CACd,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,uBAAuB,CAAC;YACjD,MAAM,aAAa,GAAG,wBAAwB,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,aAAa,CAAC;YAExC,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;YAE9B,MAAM,CAAE,GAAG,CAAC,KAAiC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CACpE,aAAa,CACd,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,GAAG,GAAG,eAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAE/C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,sBAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;YAE9B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,sBAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -96,8 +96,11 @@ class Verifier {
96
96
  if ((0, lodash_1.isEmpty)(this.config)) {
97
97
  return Promise.reject(new configurationError_1.default('No configuration provided to verifier'));
98
98
  }
99
- // Start the verification CLI proxy server
100
- const server = (0, proxy_1.createProxy)(this.config, this.stateSetupPath, this.messageTransportPath);
99
+ // Start the verification CLI proxy server. The hooks state is owned here so
100
+ // that any beforeEach/afterEach failures recorded during verification can be
101
+ // surfaced once it completes.
102
+ const hooksState = (0, proxy_1.createHooksState)();
103
+ const server = (0, proxy_1.createProxy)(this.config, this.stateSetupPath, this.messageTransportPath, hooksState);
101
104
  logger_1.default.trace(`proxy created, waiting for startup`);
102
105
  // Run the verification once the proxy server is available
103
106
  return (0, proxy_1.waitForServerReady)(server)
@@ -109,6 +112,11 @@ class Verifier {
109
112
  .then((result) => {
110
113
  logger_1.default.trace('Verification completed, closing server');
111
114
  server.close();
115
+ if (hooksState.errors.length > 0) {
116
+ throw new Error(`Provider verification hooks failed:\n${hooksState.errors
117
+ .map((e) => ` - ${e.message}`)
118
+ .join('\n')}`);
119
+ }
112
120
  return result;
113
121
  })
114
122
  .catch((e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../../src/dsl/verifier/verifier.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIH,wDAA2B;AAC3B,2EAEoC;AACpC,mCAAuC;AACvC,8DAA0D;AAC1D,0CAAkD;AAClD,yFAAiE;AACjE,mCAA0D;AAG1D,MAAa,QAAQ;IACX,OAAO,GAAG,kBAAkB,CAAC;IAE7B,cAAc,GAAG,aAAa,CAAC;IAE/B,oBAAoB,GAAG,YAAY,CAAC;IAEpC,MAAM,CAAkB;IAExB,gBAAgB,GAAiC;QACvD,wBAAwB;KACzB,CAAC;IAEF,YAAY,MAAuB;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3D,mBAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAA,oBAAW,EAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAClC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,gBAAM,CAAC,IAAI,CACT,GAAG,CAAC,wDAAwD,CAC7D,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;QACjC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,GAAG,UAAU,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACnD,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;YAEjC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;gBAChC,gBAAM,CAAC,KAAK,CACV,8BAA8B,IAAI,CAAC,MAAM,CAAC,eAAe,+EAA+E,CACzI,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IACE,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe;YAC5B,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAC7B,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EACzB,CAAC;YACD,MAAM,IAAI,4BAAkB,CAC1B,+EAA+E,CAChF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,cAAc;QACnB,gBAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAElC,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,4BAAkB,CAAC,uCAAuC,CAAC,CAChE,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,MAAM,MAAM,GAAG,IAAA,mBAAW,EACxB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,oBAAoB,CAC1B,CAAC;QACF,gBAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAEnD,0DAA0D;QAC1D,OAAO,IAAA,0BAAkB,EAAC,MAAM,CAAC;aAC9B,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,gBAAM,CAAC,KAAK,CACV,qBAAsB,MAAM,CAAC,OAAO,EAAkB,CAAC,OAAO,EAAE,CACjE,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;aACpC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,gBAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;YACvD,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,gBAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC;YAClE,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IACP,CAAC;IAED,mCAAmC;IAC3B,uBAAuB;QAC7B,OAAO,CAAC,MAAmB,EAAE,EAAE;YAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,EAAiB,CAAC;YACjD,MAAM,IAAI,GAA4B;gBACpC,sBAAsB,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE;gBACvE,GAAG,IAAA,aAAI,EAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC;gBAChC,eAAe,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;gBAC1C,UAAU,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;oBAChD;wBACE,IAAI;wBACJ,IAAI,EAAE,IAAI,CAAC,oBAAoB;wBAC/B,QAAQ,EAAE,SAAS;qBACpB;iBACF,CAAC;aACH,CAAC;YACF,gBAAM,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9D,OAAO,mBAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC;IACJ,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,GAAG,IAAI,kBAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACnD,OAAO,CACL,oBAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,oBAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CACvE,CAAC;IACJ,CAAC;CACF;AArID,4BAqIC"}
1
+ {"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../../src/dsl/verifier/verifier.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ const logger_1 = __importDefault(require("../../common/logger"));
9
9
  const verifier_1 = require("./verifier");
10
10
  const mockState = vitest_1.vi.hoisted(() => ({ executed: false }));
11
11
  vitest_1.vi.mock('./proxy', () => ({
12
+ createHooksState: () => ({ insideInteraction: false, errors: [] }),
12
13
  createProxy: () => ({
13
14
  close: () => {
14
15
  mockState.executed = true;
@@ -1 +1 @@
1
- {"version":3,"file":"verifier.spec.js","sourceRoot":"","sources":["../../../../src/dsl/verifier/verifier.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifier.spec.js","sourceRoot":"","sources":["../../../../src/dsl/verifier/verifier.spec.ts"],"names":[],"mappings":"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"}