@pact-foundation/pact 16.3.0 → 16.4.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.
- package/CHANGELOG.md +16 -3
- package/CONTRIBUTING.md +2 -2
- package/README.md +6 -2
- package/package.json +25 -28
- package/src/common/graphQL/configurationError.js +2 -22
- package/src/common/graphQL/configurationError.js.map +1 -1
- package/src/common/graphQL/graphQL.d.ts +2 -2
- package/src/common/graphQL/graphQL.js +11 -14
- package/src/common/graphQL/graphQL.js.map +1 -1
- package/src/common/graphQL/graphQLQueryError.js +2 -22
- package/src/common/graphQL/graphQLQueryError.js.map +1 -1
- package/src/common/logger.js +9 -9
- package/src/common/logger.js.map +1 -1
- package/src/common/matchingRules.d.ts +1 -1
- package/src/common/matchingRules.js +21 -21
- package/src/common/matchingRules.js.map +1 -1
- package/src/common/net.js +36 -42
- package/src/common/net.js.map +1 -1
- package/src/common/net.spec.js +41 -53
- package/src/common/net.spec.js.map +1 -1
- package/src/common/request.js +33 -82
- package/src/common/request.js.map +1 -1
- package/src/common/request.spec.js +26 -26
- package/src/common/request.spec.js.map +1 -1
- package/src/common/spec.js +3 -4
- package/src/common/spec.js.map +1 -1
- package/src/dsl/apolloGraphql.js +7 -25
- package/src/dsl/apolloGraphql.js.map +1 -1
- package/src/dsl/apolloGraphql.spec.js +21 -18
- package/src/dsl/apolloGraphql.spec.js.map +1 -1
- package/src/dsl/graphql.d.ts +2 -2
- package/src/dsl/graphql.js +29 -48
- package/src/dsl/graphql.js.map +1 -1
- package/src/dsl/graphql.spec.js +81 -66
- package/src/dsl/graphql.spec.js.map +1 -1
- package/src/dsl/interaction.d.ts +2 -2
- package/src/dsl/interaction.js +41 -48
- package/src/dsl/interaction.js.map +1 -1
- package/src/dsl/interaction.spec.js +77 -70
- package/src/dsl/interaction.spec.js.map +1 -1
- package/src/dsl/matchers.d.ts +1 -1
- package/src/dsl/matchers.js +19 -31
- package/src/dsl/matchers.js.map +1 -1
- package/src/dsl/matchers.spec.js +199 -208
- package/src/dsl/matchers.spec.js.map +1 -1
- package/src/dsl/message.d.ts +3 -3
- package/src/dsl/options.d.ts +3 -3
- package/src/dsl/verifier/proxy/hooks.d.ts +2 -2
- package/src/dsl/verifier/proxy/hooks.js +42 -112
- package/src/dsl/verifier/proxy/hooks.js.map +1 -1
- package/src/dsl/verifier/proxy/hooks.spec.js +84 -199
- package/src/dsl/verifier/proxy/hooks.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/messages.d.ts +2 -2
- package/src/dsl/verifier/proxy/messages.js +88 -106
- package/src/dsl/verifier/proxy/messages.js.map +1 -1
- package/src/dsl/verifier/proxy/parseBody.d.ts +1 -1
- package/src/dsl/verifier/proxy/parseBody.js +2 -2
- package/src/dsl/verifier/proxy/parseBody.js.map +1 -1
- package/src/dsl/verifier/proxy/parseBody.spec.js +31 -76
- package/src/dsl/verifier/proxy/parseBody.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/proxy.d.ts +2 -2
- package/src/dsl/verifier/proxy/proxy.js +22 -26
- package/src/dsl/verifier/proxy/proxy.js.map +1 -1
- package/src/dsl/verifier/proxy/proxy.spec.js +14 -14
- package/src/dsl/verifier/proxy/proxy.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/proxyRequest.d.ts +3 -3
- package/src/dsl/verifier/proxy/proxyRequest.js +7 -7
- package/src/dsl/verifier/proxy/proxyRequest.js.map +1 -1
- package/src/dsl/verifier/proxy/proxyRequest.spec.js +49 -64
- package/src/dsl/verifier/proxy/proxyRequest.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/setupStates.d.ts +3 -3
- package/src/dsl/verifier/proxy/stateHandler/setupStates.js +14 -18
- package/src/dsl/verifier/proxy/stateHandler/setupStates.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/setupStates.spec.js +76 -159
- package/src/dsl/verifier/proxy/stateHandler/setupStates.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.d.ts +2 -2
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.js +23 -72
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js +37 -85
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/tracer.d.ts +1 -1
- package/src/dsl/verifier/proxy/tracer.js +42 -35
- package/src/dsl/verifier/proxy/tracer.js.map +1 -1
- package/src/dsl/verifier/proxy/types.d.ts +5 -5
- package/src/dsl/verifier/types.d.ts +3 -3
- package/src/dsl/verifier/verifier.d.ts +1 -1
- package/src/dsl/verifier/verifier.js +49 -56
- package/src/dsl/verifier/verifier.js.map +1 -1
- package/src/dsl/verifier/verifier.spec.js +76 -93
- package/src/dsl/verifier/verifier.spec.js.map +1 -1
- package/src/errors/configurationError.js +2 -22
- package/src/errors/configurationError.js.map +1 -1
- package/src/errors/graphQLQueryError.js +2 -22
- package/src/errors/graphQLQueryError.js.map +1 -1
- package/src/errors/matcherError.js +2 -22
- package/src/errors/matcherError.js.map +1 -1
- package/src/errors/verificationError.js +2 -22
- package/src/errors/verificationError.js.map +1 -1
- package/src/httpPact/ffi.d.ts +2 -2
- package/src/httpPact/ffi.js +28 -29
- package/src/httpPact/ffi.js.map +1 -1
- package/src/httpPact/ffi.spec.js +30 -31
- package/src/httpPact/ffi.spec.js.map +1 -1
- package/src/httpPact/index.d.ts +3 -3
- package/src/httpPact/index.js +92 -149
- package/src/httpPact/index.js.map +1 -1
- package/src/httpPact/index.spec.js +75 -125
- package/src/httpPact/index.spec.js.map +1 -1
- package/src/httpPact/tracing.js +20 -28
- package/src/httpPact/tracing.js.map +1 -1
- package/src/index.js +1 -1
- package/src/index.js.map +1 -1
- package/src/messageConsumerPact.d.ts +3 -3
- package/src/messageConsumerPact.js +50 -51
- package/src/messageConsumerPact.js.map +1 -1
- package/src/messageConsumerPact.spec.js +50 -49
- package/src/messageConsumerPact.spec.js.map +1 -1
- package/src/messageProviderPact.d.ts +3 -3
- package/src/messageProviderPact.js +68 -85
- package/src/messageProviderPact.js.map +1 -1
- package/src/messageProviderPact.spec.js +75 -66
- package/src/messageProviderPact.spec.js.map +1 -1
- package/src/pact.integration.spec.js +250 -268
- package/src/pact.integration.spec.js.map +1 -1
- package/src/v3/display.d.ts +1 -1
- package/src/v3/display.js +44 -58
- package/src/v3/display.js.map +1 -1
- package/src/v3/ffi.d.ts +2 -2
- package/src/v3/ffi.js +18 -16
- package/src/v3/ffi.js.map +1 -1
- package/src/v3/ffi.spec.d.ts +1 -0
- package/src/v3/ffi.spec.js +50 -0
- package/src/v3/ffi.spec.js.map +1 -0
- package/src/v3/graphql/graphQL.d.ts +4 -4
- package/src/v3/graphql/graphQL.js +50 -75
- package/src/v3/graphql/graphQL.js.map +1 -1
- package/src/v3/matchers.d.ts +2 -2
- package/src/v3/matchers.js +112 -147
- package/src/v3/matchers.js.map +1 -1
- package/src/v3/matchers.spec.js +168 -187
- package/src/v3/matchers.spec.js.map +1 -1
- package/src/v3/pact.d.ts +2 -2
- package/src/v3/pact.js +103 -151
- package/src/v3/pact.js.map +1 -1
- package/src/v3/types.d.ts +1 -1
- package/src/v3/xml/xmlBuilder.d.ts +1 -3
- package/src/v3/xml/xmlBuilder.js +7 -9
- package/src/v3/xml/xmlBuilder.js.map +1 -1
- package/src/v3/xml/xmlElement.d.ts +2 -2
- package/src/v3/xml/xmlElement.js +24 -41
- package/src/v3/xml/xmlElement.js.map +1 -1
- package/src/v3/xml/xmlElement.spec.js +23 -25
- package/src/v3/xml/xmlElement.spec.js.map +1 -1
- package/src/v3/xml/xmlNode.js +2 -5
- package/src/v3/xml/xmlNode.js.map +1 -1
- package/src/v3/xml/xmlText.d.ts +1 -1
- package/src/v3/xml/xmlText.js +9 -25
- package/src/v3/xml/xmlText.js.map +1 -1
- package/src/v4/graphql/graphQLInteractionWithRequest.d.ts +4 -4
- package/src/v4/graphql/graphQLInteractionWithRequest.js +21 -17
- package/src/v4/graphql/graphQLInteractionWithRequest.js.map +1 -1
- package/src/v4/graphql/graphQLRequestBuilder.d.ts +3 -3
- package/src/v4/graphql/graphQLRequestBuilder.js +18 -20
- package/src/v4/graphql/graphQLRequestBuilder.js.map +1 -1
- package/src/v4/graphql/index.d.ts +6 -6
- package/src/v4/graphql/index.js +21 -17
- package/src/v4/graphql/index.js.map +1 -1
- package/src/v4/graphql/types.d.ts +5 -5
- package/src/v4/http/index.d.ts +2 -2
- package/src/v4/http/index.js +48 -93
- package/src/v4/http/index.js.map +1 -1
- package/src/v4/http/interactionWithCompleteRequest.d.ts +4 -7
- package/src/v4/http/interactionWithCompleteRequest.js +6 -10
- package/src/v4/http/interactionWithCompleteRequest.js.map +1 -1
- package/src/v4/http/interactionWithPlugin.d.ts +3 -3
- package/src/v4/http/interactionWithPlugin.js +14 -11
- package/src/v4/http/interactionWithPlugin.js.map +1 -1
- package/src/v4/http/interactionWithPluginRequest.d.ts +2 -2
- package/src/v4/http/interactionWithPluginRequest.js +11 -8
- package/src/v4/http/interactionWithPluginRequest.js.map +1 -1
- package/src/v4/http/interactionWithPluginResponse.d.ts +2 -2
- package/src/v4/http/interactionWithPluginResponse.js +10 -48
- package/src/v4/http/interactionWithPluginResponse.js.map +1 -1
- package/src/v4/http/interactionWithRequest.d.ts +2 -2
- package/src/v4/http/interactionWithRequest.js +11 -8
- package/src/v4/http/interactionWithRequest.js.map +1 -1
- package/src/v4/http/interactionWithResponse.d.ts +2 -2
- package/src/v4/http/interactionWithResponse.js +10 -48
- package/src/v4/http/interactionWithResponse.js.map +1 -1
- package/src/v4/http/requestBuilder.d.ts +3 -3
- package/src/v4/http/requestBuilder.js +32 -34
- package/src/v4/http/requestBuilder.js.map +1 -1
- package/src/v4/http/requestWithPluginBuilder.d.ts +2 -2
- package/src/v4/http/requestWithPluginBuilder.js +26 -46
- package/src/v4/http/requestWithPluginBuilder.js.map +1 -1
- package/src/v4/http/responseBuilder.d.ts +3 -3
- package/src/v4/http/responseBuilder.js +24 -25
- package/src/v4/http/responseBuilder.js.map +1 -1
- package/src/v4/http/responseWithPluginBuilder.d.ts +1 -1
- package/src/v4/http/responseWithPluginBuilder.js +5 -25
- package/src/v4/http/responseWithPluginBuilder.js.map +1 -1
- package/src/v4/http/types.d.ts +3 -2
- package/src/v4/http/unconfiguredInteraction.d.ts +6 -5
- package/src/v4/http/unconfiguredInteraction.js +31 -26
- package/src/v4/http/unconfiguredInteraction.js.map +1 -1
- package/src/v4/index.d.ts +4 -4
- package/src/v4/index.js +31 -35
- package/src/v4/index.js.map +1 -1
- package/src/v4/message/asynchronousMessage.d.ts +7 -6
- package/src/v4/message/asynchronousMessage.js +157 -190
- package/src/v4/message/asynchronousMessage.js.map +1 -1
- package/src/v4/message/index.d.ts +7 -6
- package/src/v4/message/index.js +188 -217
- package/src/v4/message/index.js.map +1 -1
- package/src/v4/message/types.d.ts +5 -3
- package/src/v4/types.d.ts +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,20 @@
|
|
|
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
|
+
## [16.4.0](https://github.com/pact-foundation/pact-js/compare/v16.3.1...v16.4.0) (2026-05-04)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* add the addInteractionReference function to V4 DSL classes to support external references ([#1762](https://github.com/pact-foundation/pact-js/issues/1762)) ([a65fe91](https://github.com/pact-foundation/pact-js/commit/a65fe918ec7224adbfe5b336e8864774a42cefe6))
|
|
11
|
+
|
|
12
|
+
## [16.3.1](https://github.com/pact-foundation/pact-js/compare/v16.3.0...v16.3.1) (2026-04-29)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Fixes and Improvements
|
|
16
|
+
|
|
17
|
+
* extract content type from matchers ([5913a8e](https://github.com/pact-foundation/pact-js/commit/5913a8eb2a0c1520bd4e2f46be7a738d14782ab0))
|
|
18
|
+
|
|
5
19
|
## [16.3.0](https://github.com/pact-foundation/pact-js/compare/v16.2.0...v16.3.0) (2026-03-11)
|
|
6
20
|
|
|
7
21
|
|
|
@@ -56,7 +70,7 @@ All notable changes to this project will be documented in this file. See [commit
|
|
|
56
70
|
|
|
57
71
|
* **deps:** update dependency ramda to ^0.32.0 ([#1578](https://github.com/pact-foundation/pact-js/issues/1578)) ([efb267f](https://github.com/pact-foundation/pact-js/commit/efb267fb41ae006b192ba602a224fd6565972e60))
|
|
58
72
|
* Pact-JS Verifier Proxy Cannot Handle Root Path ([#1582](https://github.com/pact-foundation/pact-js/issues/1582)) ([983f5b3](https://github.com/pact-foundation/pact-js/commit/983f5b3db96454ea0c0be72f7f2cc5bef14d4669)), closes [#1581](https://github.com/pact-foundation/pact-js/issues/1581)
|
|
59
|
-
* use
|
|
73
|
+
* use `/{*splat}` for express proxy routes to match root and wildcard subpaths ([cf95657](https://github.com/pact-foundation/pact-js/commit/cf95657294aaab9bf8500f29d5419c22c9b7fe60))
|
|
60
74
|
|
|
61
75
|
## [16.0.0](https://github.com/pact-foundation/pact-js/compare/v15.0.1...v16.0.0) (2025-10-07)
|
|
62
76
|
|
|
@@ -1707,14 +1721,13 @@ different state phases.
|
|
|
1707
1721
|
|
|
1708
1722
|
### Fixes and Improvements
|
|
1709
1723
|
|
|
1710
|
-
<<<<<<< HEAD
|
|
1711
1724
|
* **pact-node:** bump dependency on pact-node ([a200414](https://github.com/pact-foundation/pact-js/commit/a2004143782be418b59a8266834c6aa8e6d2a1ef))
|
|
1712
1725
|
|
|
1713
1726
|
### [9.15.1](https://github.com/pact-foundation/pact-js/compare/v10.0.0-beta.31...v9.15.1) (2021-02-23)
|
|
1714
1727
|
* Bump pact-node version to get vulnerability fixes ([bc0e7f0](https://github.com/pact-foundation/pact-js/commit/bc0e7f019ef8585d4fc5c980575e0ec0a72f1b65))
|
|
1715
1728
|
|
|
1716
1729
|
### [9.15.3](https://github.com/pact-foundation/pact-js/compare/v9.15.2...v9.15.3) (2021-03-10)
|
|
1717
|
-
|
|
1730
|
+
|
|
1718
1731
|
* package.json & package-lock.json to reduce vulnerabilities ([aa8036c](https://github.com/pact-foundation/pact-js/commit/aa8036c2dd424d351d2afab003c1e539e2bc6e85))
|
|
1719
1732
|
|
|
1720
1733
|
## [9.15.0](https://github.com/pact-foundation/pact-js/compare/v10.0.0-beta.29...v9.15.0) (2021-02-02)
|
package/CONTRIBUTING.md
CHANGED
|
@@ -73,9 +73,9 @@ modified or new examples, refactorings, new tests, etc. We usually use one of `c
|
|
|
73
73
|
|
|
74
74
|
## Code style and formatting
|
|
75
75
|
|
|
76
|
-
We use [
|
|
76
|
+
We use [Biome](https://biomejs.dev/) for both formatting and linting.
|
|
77
77
|
|
|
78
|
-
The recommended approach is to configure
|
|
78
|
+
The recommended approach is to install the [Biome VS Code extension](https://marketplace.visualstudio.com/items?itemName=biomejs.biome) and configure it to format on save 👌. If not, don't worry, our lint step will catch it.
|
|
79
79
|
|
|
80
80
|
## Pull requests
|
|
81
81
|
|
package/README.md
CHANGED
|
@@ -246,7 +246,9 @@ It's best to run Pact verification tests as part of your unit testing suite, so
|
|
|
246
246
|
|
|
247
247
|
## Compatibility
|
|
248
248
|
|
|
249
|
-
<details
|
|
249
|
+
<details>
|
|
250
|
+
|
|
251
|
+
<summary>Specification Compatibility</summary>
|
|
250
252
|
|
|
251
253
|
| Version | Stable | [Spec] Compatibility | Install |
|
|
252
254
|
| ------- | ------ | -------------------- | ------------------ |
|
|
@@ -258,7 +260,9 @@ _\*_ v3 support is limited to the subset of functionality required to enable lan
|
|
|
258
260
|
|
|
259
261
|
</details>
|
|
260
262
|
|
|
261
|
-
<details
|
|
263
|
+
<details>
|
|
264
|
+
|
|
265
|
+
<summary>Supported Platforms</summary>
|
|
262
266
|
|
|
263
267
|
| OS | Architecture | Supported | Pact-JS Version |
|
|
264
268
|
| ------------- | ------------ | --------- | ---------------- |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pact-foundation/pact",
|
|
3
|
-
"version": "16.
|
|
3
|
+
"version": "16.4.0",
|
|
4
4
|
"description": "Pact for all things Javascript",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"types": "./src/index.d.ts",
|
|
@@ -10,14 +10,16 @@
|
|
|
10
10
|
"predist": "npm run clean",
|
|
11
11
|
"dist": "tsc && copyfiles package.json ./dist",
|
|
12
12
|
"install-plugins": "./scripts/install-plugins",
|
|
13
|
-
"
|
|
14
|
-
"lint": "
|
|
15
|
-
"lint
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"format
|
|
13
|
+
"lint:biome": "biome lint",
|
|
14
|
+
"lint:tsc": "tsc --noEmit",
|
|
15
|
+
"lint": "npm run lint:biome && npm run lint:tsc",
|
|
16
|
+
"lint:fix:biome": "biome lint --write",
|
|
17
|
+
"lint:fix": "npm run lint:fix:biome",
|
|
18
|
+
"format": "biome format",
|
|
19
|
+
"format:fix": "biome format --write",
|
|
20
|
+
"check": "npm run format && npm run lint",
|
|
21
|
+
"check:fix": "npm run format:fix && npm run lint:fix",
|
|
19
22
|
"release": "commit-and-tag-version",
|
|
20
|
-
"check": "npm run format:check && npm run lint && npm run test",
|
|
21
23
|
"test": "mocha",
|
|
22
24
|
"coverage": "nyc npm run test",
|
|
23
25
|
"pretest": "npm run install-plugins",
|
|
@@ -103,7 +105,7 @@
|
|
|
103
105
|
]
|
|
104
106
|
},
|
|
105
107
|
"dependencies": {
|
|
106
|
-
"@pact-foundation/pact-core": "^19.
|
|
108
|
+
"@pact-foundation/pact-core": "^19.2.0",
|
|
107
109
|
"axios": "^1.12.2",
|
|
108
110
|
"body-parser": "^2.2.0",
|
|
109
111
|
"chalk": "4.1.2",
|
|
@@ -122,8 +124,9 @@
|
|
|
122
124
|
"devDependencies": {
|
|
123
125
|
"@babel/cli": "7.28.6",
|
|
124
126
|
"@babel/core": "7.29.0",
|
|
125
|
-
"@babel/preset-env": "7.29.
|
|
126
|
-
"@
|
|
127
|
+
"@babel/preset-env": "7.29.3",
|
|
128
|
+
"@biomejs/biome": "2.4.13",
|
|
129
|
+
"@tsconfig/node20": "20.1.9",
|
|
127
130
|
"@types/chai": "5.2.3",
|
|
128
131
|
"@types/chai-as-promised": "8.0.2",
|
|
129
132
|
"@types/express": "4.17.25",
|
|
@@ -131,35 +134,29 @@
|
|
|
131
134
|
"@types/lodash": "4.17.24",
|
|
132
135
|
"@types/mocha": "10.0.10",
|
|
133
136
|
"@types/nock": "11.1.0",
|
|
134
|
-
"@types/node": "24.12.
|
|
137
|
+
"@types/node": "24.12.2",
|
|
135
138
|
"@types/ramda": "0.31.1",
|
|
136
|
-
"@types/sinon": "21.0.
|
|
139
|
+
"@types/sinon": "21.0.1",
|
|
137
140
|
"@types/sinon-chai": "4.0.0",
|
|
138
141
|
"@types/stack-utils": "2.0.3",
|
|
139
|
-
"@typescript-eslint/eslint-plugin": "5.62.0",
|
|
140
|
-
"@typescript-eslint/parser": "5.62.0",
|
|
141
142
|
"chai": "6.2.2",
|
|
142
143
|
"chai-as-promised": "8.0.2",
|
|
143
|
-
"commit-and-tag-version": "12.
|
|
144
|
+
"commit-and-tag-version": "12.7.1",
|
|
144
145
|
"copyfiles": "2.4.1",
|
|
145
|
-
"eslint": "8.57.1",
|
|
146
|
-
"eslint-config-airbnb-base": "15.0.0",
|
|
147
|
-
"eslint-config-airbnb-typescript": "17.1.0",
|
|
148
|
-
"eslint-config-prettier": "10.1.8",
|
|
149
|
-
"eslint-import-resolver-typescript": "4.4.2",
|
|
150
|
-
"eslint-plugin-chai-friendly": "1.1.0",
|
|
151
|
-
"eslint-plugin-import": "2.32.0",
|
|
152
|
-
"eslint-plugin-mocha": "10.5.0",
|
|
153
146
|
"mocha": "11.7.5",
|
|
154
|
-
"nock": "14.0.
|
|
147
|
+
"nock": "14.0.14",
|
|
155
148
|
"nyc": "18.0.0",
|
|
156
|
-
"prettier": "3.6.2",
|
|
157
149
|
"proxyquire": "2.1.3",
|
|
158
150
|
"rimraf": "6.1.3",
|
|
159
|
-
"sinon": "21.
|
|
151
|
+
"sinon": "21.1.2",
|
|
160
152
|
"sinon-chai": "4.0.1",
|
|
161
153
|
"source-map-support": "0.5.21",
|
|
162
154
|
"tsx": "4.21.0",
|
|
163
|
-
"typescript": "
|
|
155
|
+
"typescript": "6.0.3"
|
|
156
|
+
},
|
|
157
|
+
"pnpm": {
|
|
158
|
+
"onlyBuiltDependencies": [
|
|
159
|
+
"@pact-foundation/pact-core"
|
|
160
|
+
]
|
|
164
161
|
}
|
|
165
162
|
}
|
|
@@ -1,27 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
3
|
exports.ConfigurationError = void 0;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
function ConfigurationError() {
|
|
22
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
23
|
-
}
|
|
24
|
-
return ConfigurationError;
|
|
25
|
-
}(Error));
|
|
4
|
+
class ConfigurationError extends Error {
|
|
5
|
+
}
|
|
26
6
|
exports.ConfigurationError = ConfigurationError;
|
|
27
7
|
//# sourceMappingURL=configurationError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configurationError.js","sourceRoot":"","sources":["../../../../src/common/graphQL/configurationError.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configurationError.js","sourceRoot":"","sources":["../../../../src/common/graphQL/configurationError.ts"],"names":[],"mappings":";;;AAAA,MAAa,kBAAmB,SAAQ,KAAK;CAAG;AAAhD,gDAAgD"}
|
|
@@ -5,10 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.escapeGraphQlQuery = exports.escapeRegexChars = exports.escapeSpace = void 0;
|
|
7
7
|
exports.validateQuery = validateQuery;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
const graphql_1 = require("graphql");
|
|
9
|
+
const graphql_tag_1 = __importDefault(require("graphql-tag"));
|
|
10
|
+
const graphQLQueryError_1 = require("./graphQLQueryError");
|
|
11
|
+
const configurationError_1 = require("./configurationError");
|
|
12
12
|
/**
|
|
13
13
|
* Accepts a raw or pre-parsed query, validating in the former case, and
|
|
14
14
|
* returns a normalized raw query.
|
|
@@ -17,10 +17,10 @@ var configurationError_1 = require("./configurationError");
|
|
|
17
17
|
*/
|
|
18
18
|
function validateQuery(query, type) {
|
|
19
19
|
if (!query) {
|
|
20
|
-
throw new configurationError_1.ConfigurationError(
|
|
20
|
+
throw new configurationError_1.ConfigurationError(`You must provide a GraphQL ${type}.`);
|
|
21
21
|
}
|
|
22
22
|
if (typeof query !== 'string') {
|
|
23
|
-
if (
|
|
23
|
+
if (query?.kind === 'Document') {
|
|
24
24
|
// Already parsed, store in string form
|
|
25
25
|
return (0, graphql_1.print)(query);
|
|
26
26
|
}
|
|
@@ -32,19 +32,16 @@ function validateQuery(query, type) {
|
|
|
32
32
|
(0, graphql_tag_1.default)(query);
|
|
33
33
|
}
|
|
34
34
|
catch (e) {
|
|
35
|
-
|
|
35
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
36
|
+
throw new graphQLQueryError_1.GraphQLQueryError(`GraphQL ${type} is invalid: ${error.message}`);
|
|
36
37
|
}
|
|
37
38
|
return query;
|
|
38
39
|
}
|
|
39
40
|
}
|
|
40
|
-
|
|
41
|
+
const escapeSpace = (s) => s.replace(/\s+/g, '\\s*');
|
|
41
42
|
exports.escapeSpace = escapeSpace;
|
|
42
|
-
|
|
43
|
-
return s.replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&');
|
|
44
|
-
};
|
|
43
|
+
const escapeRegexChars = (s) => s.replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&');
|
|
45
44
|
exports.escapeRegexChars = escapeRegexChars;
|
|
46
|
-
|
|
47
|
-
return (0, exports.escapeSpace)((0, exports.escapeRegexChars)(s));
|
|
48
|
-
};
|
|
45
|
+
const escapeGraphQlQuery = (s) => (0, exports.escapeSpace)((0, exports.escapeRegexChars)(s));
|
|
49
46
|
exports.escapeGraphQlQuery = escapeGraphQlQuery;
|
|
50
47
|
//# sourceMappingURL=graphQL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphQL.js","sourceRoot":"","sources":["../../../../src/common/graphQL/graphQL.ts"],"names":[],"mappings":";;;;;;AAgBA,
|
|
1
|
+
{"version":3,"file":"graphQL.js","sourceRoot":"","sources":["../../../../src/common/graphQL/graphQL.ts"],"names":[],"mappings":";;;;;;AAgBA,sCA6BC;AA7CD,qCAA8C;AAC9C,8DAA8B;AAC9B,2DAAwD;AACxD,6DAA0D;AAO1D;;;;;GAKG;AACH,SAAgB,aAAa,CAC3B,KAAuB,EACvB,IAAmB;IAEnB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,uCAAkB,CAAC,8BAA8B,IAAI,GAAG,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,uCAAuC;YACvC,OAAO,IAAA,eAAK,EAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,uCAAkB,CAC1B,uDAAuD,CACxD,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,yBAAyB;QACzB,IAAI,CAAC;YACH,IAAA,qBAAG,EAAC,KAAK,CAAC,CAAC;QACb,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,MAAM,IAAI,qCAAiB,CACzB,WAAW,IAAI,gBAAgB,KAAK,CAAC,OAAO,EAAE,CAC/C,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAEM,MAAM,WAAW,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAA/D,QAAA,WAAW,eAAoD;AAErE,MAAM,gBAAgB,GAAG,CAAC,CAAS,EAAU,EAAE,CACpD,CAAC,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AADhC,QAAA,gBAAgB,oBACgB;AAEtC,MAAM,kBAAkB,GAAG,CAAC,CAAS,EAAU,EAAE,CACtD,IAAA,mBAAW,EAAC,IAAA,wBAAgB,EAAC,CAAC,CAAC,CAAC,CAAC;AADtB,QAAA,kBAAkB,sBACI"}
|
|
@@ -1,27 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
3
|
exports.GraphQLQueryError = void 0;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
function GraphQLQueryError() {
|
|
22
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
23
|
-
}
|
|
24
|
-
return GraphQLQueryError;
|
|
25
|
-
}(Error));
|
|
4
|
+
class GraphQLQueryError extends Error {
|
|
5
|
+
}
|
|
26
6
|
exports.GraphQLQueryError = GraphQLQueryError;
|
|
27
7
|
//# sourceMappingURL=graphQLQueryError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphQLQueryError.js","sourceRoot":"","sources":["../../../../src/common/graphQL/graphQLQueryError.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graphQLQueryError.js","sourceRoot":"","sources":["../../../../src/common/graphQL/graphQLQueryError.ts"],"names":[],"mappings":";;;AAAA,MAAa,iBAAkB,SAAQ,KAAK;CAAG;AAA/C,8CAA+C"}
|
package/src/common/logger.js
CHANGED
|
@@ -17,16 +17,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
const logger_1 = __importDefault(require("@pact-foundation/pact-core/src/logger"));
|
|
21
|
+
const package_json_1 = require("../../package.json");
|
|
22
22
|
__exportStar(require("@pact-foundation/pact-core/src/logger"), exports);
|
|
23
|
-
|
|
23
|
+
const context = `pact@${package_json_1.version}`;
|
|
24
24
|
exports.default = {
|
|
25
|
-
pactCrash:
|
|
26
|
-
error:
|
|
27
|
-
warn:
|
|
28
|
-
info:
|
|
29
|
-
debug:
|
|
30
|
-
trace:
|
|
25
|
+
pactCrash: (message) => logger_1.default.pactCrash(message, context),
|
|
26
|
+
error: (message) => logger_1.default.error(message, context),
|
|
27
|
+
warn: (message) => logger_1.default.warn(message, context),
|
|
28
|
+
info: (message) => logger_1.default.info(message, context),
|
|
29
|
+
debug: (message) => logger_1.default.debug(message, context),
|
|
30
|
+
trace: (message) => logger_1.default.trace(message, context),
|
|
31
31
|
};
|
|
32
32
|
//# sourceMappingURL=logger.js.map
|
package/src/common/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/common/logger.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/common/logger.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,mFAA2D;AAE3D,qDAA6C;AAE7C,wEAAsD;AAEtD,MAAM,OAAO,GAAG,QAAQ,sBAAO,EAAE,CAAC;AAElC,kBAAe;IACb,SAAS,EAAE,CAAC,OAAe,EAAQ,EAAE,CAAC,gBAAM,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IACxE,KAAK,EAAE,CAAC,OAAe,EAAQ,EAAE,CAAC,gBAAM,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;IAChE,IAAI,EAAE,CAAC,OAAe,EAAQ,EAAE,CAAC,gBAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;IAC9D,IAAI,EAAE,CAAC,OAAe,EAAQ,EAAE,CAAC,gBAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;IAC9D,KAAK,EAAE,CAAC,OAAe,EAAQ,EAAE,CAAC,gBAAM,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;IAChE,KAAK,EAAE,CAAC,OAAe,EAAQ,EAAE,CAAC,gBAAM,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;CACjE,CAAC"}
|
|
@@ -6,12 +6,12 @@ exports.convertRulesToFFI = exports.validateRules = exports.convertMatcherToFFI
|
|
|
6
6
|
* @param matcher The matcher to convert
|
|
7
7
|
* @returns The matcher in FFI format
|
|
8
8
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
const convertMatcherToFFI = (matcher) => {
|
|
10
|
+
const result = {};
|
|
11
11
|
if (matcher['pact:matcher:type']) {
|
|
12
12
|
result.match = matcher['pact:matcher:type'];
|
|
13
13
|
}
|
|
14
|
-
Object.keys(matcher).forEach(
|
|
14
|
+
Object.keys(matcher).forEach((key) => {
|
|
15
15
|
if (key !== 'pact:matcher:type' && key !== 'pact:generator:type') {
|
|
16
16
|
result[key] = matcher[key];
|
|
17
17
|
}
|
|
@@ -24,30 +24,30 @@ exports.convertMatcherToFFI = convertMatcherToFFI;
|
|
|
24
24
|
* @param rules The rules to validate
|
|
25
25
|
* @throws Error if rules is not a valid Rules object
|
|
26
26
|
*/
|
|
27
|
-
|
|
27
|
+
const validateRules = (rules) => {
|
|
28
28
|
if (!rules || typeof rules !== 'object' || Array.isArray(rules)) {
|
|
29
29
|
throw new Error('rules must be an object');
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
ruleKeys.forEach(
|
|
31
|
+
const validParts = ['path', 'body', 'header', 'query', 'status'];
|
|
32
|
+
const ruleKeys = Object.keys(rules);
|
|
33
|
+
ruleKeys.forEach((key) => {
|
|
34
34
|
if (!validParts.includes(key)) {
|
|
35
|
-
throw new Error(
|
|
35
|
+
throw new Error(`Invalid part "${key}" in rules. Valid parts are: ${validParts.join(', ')}`);
|
|
36
36
|
}
|
|
37
|
-
|
|
37
|
+
const partRules = rules[key];
|
|
38
38
|
if (!partRules)
|
|
39
39
|
return;
|
|
40
|
-
|
|
41
|
-
rulesArray.forEach(
|
|
40
|
+
const rulesArray = Array.isArray(partRules) ? partRules : [partRules];
|
|
41
|
+
rulesArray.forEach((rule, index) => {
|
|
42
42
|
if (!rule || typeof rule !== 'object') {
|
|
43
|
-
throw new Error(
|
|
43
|
+
throw new Error(`Rule at ${key}[${index}] must be an object`);
|
|
44
44
|
}
|
|
45
|
-
|
|
45
|
+
const ruleObj = rule;
|
|
46
46
|
if (!('rules' in ruleObj) || !Array.isArray(ruleObj.rules)) {
|
|
47
|
-
throw new Error(
|
|
47
|
+
throw new Error(`Rule at ${key}[${index}] must have a "rule" property that is an array`);
|
|
48
48
|
}
|
|
49
49
|
if ('path' in ruleObj && typeof ruleObj.path !== 'string') {
|
|
50
|
-
throw new Error(
|
|
50
|
+
throw new Error(`Rule at ${key}[${index}] has a "path" property that is not a string`);
|
|
51
51
|
}
|
|
52
52
|
});
|
|
53
53
|
});
|
|
@@ -58,15 +58,15 @@ exports.validateRules = validateRules;
|
|
|
58
58
|
* @param rules Rules in the user-friendly format
|
|
59
59
|
* @returns Rules in FFI format
|
|
60
60
|
*/
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
Object.keys(rules).forEach(
|
|
64
|
-
|
|
61
|
+
const convertRulesToFFI = (rules) => {
|
|
62
|
+
const ffiRules = {};
|
|
63
|
+
Object.keys(rules).forEach((part) => {
|
|
64
|
+
const partRules = rules[part];
|
|
65
65
|
if (!partRules)
|
|
66
66
|
return;
|
|
67
|
-
|
|
67
|
+
const rulesArray = Array.isArray(partRules) ? partRules : [partRules];
|
|
68
68
|
ffiRules[part] = {};
|
|
69
|
-
rulesArray.forEach(
|
|
69
|
+
rulesArray.forEach((rule) => {
|
|
70
70
|
if (rule.path) {
|
|
71
71
|
ffiRules[part][rule.path] = {
|
|
72
72
|
matchers: rule.rules.map(exports.convertMatcherToFFI),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matchingRules.js","sourceRoot":"","sources":["../../../src/common/matchingRules.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACI,
|
|
1
|
+
{"version":3,"file":"matchingRules.js","sourceRoot":"","sources":["../../../src/common/matchingRules.ts"],"names":[],"mappings":"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"}
|
package/src/common/net.js
CHANGED
|
@@ -9,52 +9,46 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
9
9
|
};
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.freePort = exports.isPortAvailable = exports.portCheck = exports.localAddresses = void 0;
|
|
12
|
-
|
|
12
|
+
const node_net_1 = __importDefault(require("node:net"));
|
|
13
13
|
exports.localAddresses = ['127.0.0.1', 'localhost', '0.0.0.0', '::1'];
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
reject(new Error("Port ".concat(port, " is unavailable on address ").concat(host)));
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
reject(e);
|
|
25
|
-
}
|
|
26
|
-
})
|
|
27
|
-
.on('listening', function () {
|
|
28
|
-
server.once('close', function () { return resolve(); }).close();
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
exports.portCheck = portCheck;
|
|
33
|
-
var isPortAvailable = function (port, host) {
|
|
34
|
-
return Promise.allSettled(exports.localAddresses.map(function (localHost) { return (0, exports.portCheck)(port, localHost); })).then(function (settledPortChecks) {
|
|
35
|
-
// if every port check failed, then fail the `isPortAvailable` check
|
|
36
|
-
if (settledPortChecks.every(function (result) { return result.status === 'rejected'; })) {
|
|
37
|
-
throw new Error("Cannot open port ".concat(port, " on ipv4 or ipv6 interfaces"));
|
|
14
|
+
const portCheck = (port, host) => new Promise((resolve, reject) => {
|
|
15
|
+
const server = node_net_1.default
|
|
16
|
+
.createServer()
|
|
17
|
+
.listen({ port, host, exclusive: true })
|
|
18
|
+
.on('error', (e) => {
|
|
19
|
+
if (e.code === 'EADDRINUSE') {
|
|
20
|
+
reject(new Error(`Port ${port} is unavailable on address ${host}`));
|
|
38
21
|
}
|
|
39
|
-
|
|
40
|
-
|
|
22
|
+
else {
|
|
23
|
+
reject(e);
|
|
24
|
+
}
|
|
25
|
+
})
|
|
26
|
+
.on('listening', () => {
|
|
27
|
+
server.once('close', () => resolve()).close();
|
|
41
28
|
});
|
|
42
|
-
};
|
|
29
|
+
});
|
|
30
|
+
exports.portCheck = portCheck;
|
|
31
|
+
const isPortAvailable = (port, host) => Promise.allSettled(exports.localAddresses.map((localHost) => (0, exports.portCheck)(port, localHost))).then((settledPortChecks) => {
|
|
32
|
+
// if every port check failed, then fail the `isPortAvailable` check
|
|
33
|
+
if (settledPortChecks.every((result) => result.status === 'rejected')) {
|
|
34
|
+
throw new Error(`Cannot open port ${port} on ipv4 or ipv6 interfaces`);
|
|
35
|
+
}
|
|
36
|
+
// the local addresses passed - now check the host that the user has specified
|
|
37
|
+
return (0, exports.portCheck)(port, host);
|
|
38
|
+
});
|
|
43
39
|
exports.isPortAvailable = isPortAvailable;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
s.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
});
|
|
40
|
+
const freePort = () => new Promise((res) => {
|
|
41
|
+
const s = node_net_1.default.createServer();
|
|
42
|
+
s.listen(0, () => {
|
|
43
|
+
const addr = s.address();
|
|
44
|
+
if (addr !== null && typeof addr !== 'string') {
|
|
45
|
+
const { port } = addr;
|
|
46
|
+
s.close(() => res(port));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
throw Error('unable to find a free port');
|
|
50
|
+
}
|
|
57
51
|
});
|
|
58
|
-
};
|
|
52
|
+
});
|
|
59
53
|
exports.freePort = freePort;
|
|
60
54
|
//# sourceMappingURL=net.js.map
|
package/src/common/net.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"net.js","sourceRoot":"","sources":["../../../src/common/net.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"net.js","sourceRoot":"","sources":["../../../src/common/net.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,wDAA2B;AAEd,QAAA,cAAc,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAEpE,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,IAAY,EAAiB,EAAE,CACrE,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,MAAM,MAAM,GAAG,kBAAG;SACf,YAAY,EAAE;SACd,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SACvC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAwB,EAAE,EAAE;QACxC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,8BAA8B,IAAI,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;SACD,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;QACpB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAfQ,QAAA,SAAS,aAejB;AAEE,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,IAAY,EAAiB,EAAE,CAC3E,OAAO,CAAC,UAAU,CAChB,sBAAc,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAA,iBAAS,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAC9D,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,EAAE;IAC3B,oEAAoE;IACpE,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,6BAA6B,CAAC,CAAC;IACzE,CAAC;IAED,8EAA8E;IAC9E,OAAO,IAAA,iBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAXQ,QAAA,eAAe,mBAWvB;AAEE,MAAM,QAAQ,GAAG,GAAoB,EAAE,CAC5C,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;IAClB,MAAM,CAAC,GAAG,kBAAG,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE;QACf,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;YACtB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAZQ,QAAA,QAAQ,YAYhB"}
|