@pact-foundation/pact 15.0.0 → 16.0.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 +37 -0
- package/README.md +1 -2
- package/package.json +38 -34
- package/scripts/ci/release.sh +2 -1
- package/src/common/graphQL/configurationError.d.ts +2 -0
- package/src/common/graphQL/configurationError.js +27 -0
- package/src/common/graphQL/configurationError.js.map +1 -0
- package/src/common/graphQL/graphQL.d.ts +15 -0
- package/src/common/graphQL/graphQL.js +50 -0
- package/src/common/graphQL/graphQL.js.map +1 -0
- package/src/common/graphQL/graphQLQueryError.d.ts +2 -0
- package/src/common/graphQL/graphQLQueryError.js +27 -0
- package/src/common/graphQL/graphQLQueryError.js.map +1 -0
- package/src/common/graphQL/types.d.ts +4 -0
- package/src/common/graphQL/types.js +9 -0
- package/src/common/graphQL/types.js.map +1 -0
- package/src/dsl/graphql.d.ts +1 -3
- package/src/dsl/graphql.js +4 -8
- package/src/dsl/graphql.js.map +1 -1
- package/src/dsl/interaction.d.ts +4 -4
- package/src/dsl/interaction.js.map +1 -1
- package/src/dsl/matchers.d.ts +26 -26
- package/src/dsl/matchers.js +6 -6
- package/src/dsl/matchers.js.map +1 -1
- package/src/dsl/message.d.ts +4 -3
- package/src/dsl/options.d.ts +4 -4
- package/src/dsl/verifier/proxy/messages.js +55 -1
- package/src/dsl/verifier/proxy/messages.js.map +1 -1
- package/src/dsl/verifier/proxy/proxy.js +2 -2
- package/src/dsl/verifier/proxy/proxy.js.map +1 -1
- package/src/httpPact/ffi.js.map +1 -1
- package/src/httpPact/index.d.ts +7 -7
- package/src/httpPact/index.js +1 -1
- package/src/httpPact/index.js.map +1 -1
- package/src/httpPact/index.spec.js.map +1 -1
- package/src/index.d.ts +17 -4
- package/src/index.js +19 -5
- package/src/index.js.map +1 -1
- package/src/messageProviderPact.js +1 -1
- package/src/messageProviderPact.js.map +1 -1
- package/src/pact.integration.spec.js +0 -1
- package/src/pact.integration.spec.js.map +1 -1
- package/src/v3/graphql/graphQL.d.ts +90 -0
- package/src/v3/graphql/graphQL.js +175 -0
- package/src/v3/graphql/graphQL.js.map +1 -0
- package/src/v3/graphql/index.d.ts +4 -0
- package/src/v3/graphql/index.js +21 -0
- package/src/v3/graphql/index.js.map +1 -0
- package/src/v3/index.d.ts +1 -0
- package/src/v3/index.js +1 -0
- package/src/v3/index.js.map +1 -1
- package/src/v3/matchers.js +6 -6
- package/src/v3/matchers.js.map +1 -1
- package/src/v3/matchers.spec.js +33 -14
- package/src/v3/matchers.spec.js.map +1 -1
- package/src/v3/types.d.ts +1 -12
- package/src/v4/graphql/graphQLInteractionWithRequest.d.ts +35 -0
- package/src/v4/graphql/graphQLInteractionWithRequest.js +57 -0
- package/src/v4/graphql/graphQLInteractionWithRequest.js.map +1 -0
- package/src/v4/graphql/graphQLRequestBuilder.d.ts +9 -0
- package/src/v4/graphql/graphQLRequestBuilder.js +42 -0
- package/src/v4/graphql/graphQLRequestBuilder.js.map +1 -0
- package/src/v4/graphql/index.d.ts +19 -0
- package/src/v4/graphql/index.js +47 -0
- package/src/v4/graphql/index.js.map +1 -0
- package/src/v4/graphql/types.d.ts +30 -0
- package/src/v4/graphql/types.js +9 -0
- package/src/v4/graphql/types.js.map +1 -0
- package/src/v4/http/index.d.ts +4 -88
- package/src/v4/http/index.js +3 -271
- package/src/v4/http/index.js.map +1 -1
- package/src/v4/http/interactionWithCompleteRequest.d.ts +10 -0
- package/src/v4/http/interactionWithCompleteRequest.js +19 -0
- package/src/v4/http/interactionWithCompleteRequest.js.map +1 -0
- package/src/v4/http/interactionWithPlugin.d.ts +12 -0
- package/src/v4/http/interactionWithPlugin.js +30 -0
- package/src/v4/http/interactionWithPlugin.js.map +1 -0
- package/src/v4/http/interactionWithPluginRequest.d.ts +10 -0
- package/src/v4/http/interactionWithPluginRequest.js +24 -0
- package/src/v4/http/interactionWithPluginRequest.js.map +1 -0
- package/src/v4/http/interactionWithPluginResponse.d.ts +9 -0
- package/src/v4/http/interactionWithPluginResponse.js +58 -0
- package/src/v4/http/interactionWithPluginResponse.js.map +1 -0
- package/src/v4/http/interactionWithRequest.d.ts +10 -0
- package/src/v4/http/interactionWithRequest.js +24 -0
- package/src/v4/http/interactionWithRequest.js.map +1 -0
- package/src/v4/http/interactionWithResponse.d.ts +9 -0
- package/src/v4/http/interactionWithResponse.js +58 -0
- package/src/v4/http/interactionWithResponse.js.map +1 -0
- package/src/v4/http/requestBuilder.d.ts +13 -0
- package/src/v4/http/requestBuilder.js +60 -0
- package/src/v4/http/requestBuilder.js.map +1 -0
- package/src/v4/http/requestWithPluginBuilder.d.ts +12 -0
- package/src/v4/http/requestWithPluginBuilder.js +56 -0
- package/src/v4/http/requestWithPluginBuilder.js.map +1 -0
- package/src/v4/http/responseBuilder.d.ts +12 -0
- package/src/v4/http/responseBuilder.js +38 -0
- package/src/v4/http/responseBuilder.js.map +1 -0
- package/src/v4/http/responseWithPluginBuilder.d.ts +5 -0
- package/src/v4/http/responseWithPluginBuilder.js +32 -0
- package/src/v4/http/responseWithPluginBuilder.js.map +1 -0
- package/src/v4/http/types.d.ts +4 -3
- package/src/v4/http/unconfiguredInteraction.d.ts +16 -0
- package/src/v4/http/unconfiguredInteraction.js +47 -0
- package/src/v4/http/unconfiguredInteraction.js.map +1 -0
- package/src/v4/index.d.ts +7 -1
- package/src/v4/index.js +40 -3
- package/src/v4/index.js.map +1 -1
- package/src/v4/message/asynchronousMessage.d.ts +68 -0
- package/src/v4/message/asynchronousMessage.js +278 -0
- package/src/v4/message/asynchronousMessage.js.map +1 -0
- package/src/v4/message/index.d.ts +13 -3
- package/src/v4/message/index.js +50 -8
- package/src/v4/message/index.js.map +1 -1
- package/src/v4/message/types.d.ts +37 -5
- package/src/v4/types.d.ts +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,43 @@
|
|
|
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.0.0](https://github.com/pact-foundation/pact-js/compare/v15.0.1...v16.0.0) (2025-10-07)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### ⚠ BREAKING CHANGES
|
|
9
|
+
|
|
10
|
+
* Rename Matchers to MatchersV2 to to avoid type overlap. remove AnyTemplate from V3 types
|
|
11
|
+
* **deps:** min node >=20
|
|
12
|
+
* export PactV4 / MatchersV3 as Pact / Matchers. Pact / Matchers renamaed to PactV2 / MatchersV2
|
|
13
|
+
* **deps:** min node >=20, update express wildcard 5.x splat
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* add GraphQL support to PactV4 ([4fe838c](https://github.com/pact-foundation/pact-js/commit/4fe838cd0a6ef9934d01cc4f2ad8958e1bb00fca))
|
|
18
|
+
* export PactV4 / MatchersV3 as Pact / Matchers. Pact / Matchers renamaed to PactV2 / MatchersV2 ([f1ce98e](https://github.com/pact-foundation/pact-js/commit/f1ce98e68486f85d42d14cbd000b5b1730c251f0))
|
|
19
|
+
* initial scaffolding for async messages ([041fa19](https://github.com/pact-foundation/pact-js/commit/041fa19e3b19f8767f2e5ec59b4b421af1885576))
|
|
20
|
+
* support GraphQL for PactV3 ([6d077f4](https://github.com/pact-foundation/pact-js/commit/6d077f4b5c11489fd940f7181317229c3527d18c)), closes [#1093](https://github.com/pact-foundation/pact-js/issues/1093)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Fixes and Improvements
|
|
24
|
+
|
|
25
|
+
* **deps:** explictly add router package, removed in express 5.x ([f99e01b](https://github.com/pact-foundation/pact-js/commit/f99e01be965f1a10508e2b453c122517154891ad))
|
|
26
|
+
* **deps:** min node >=20 ([228d197](https://github.com/pact-foundation/pact-js/commit/228d197d7c4d8c943853db145eedcc84eca2b225))
|
|
27
|
+
* **deps:** min node >=20, update express wildcard 5.x splat ([ef6d3d2](https://github.com/pact-foundation/pact-js/commit/ef6d3d24a92aa63782b3bb829cf3648508ab3759))
|
|
28
|
+
* **deps:** update dependency axios to v1.12.0 [security] ([#1561](https://github.com/pact-foundation/pact-js/issues/1561)) ([75fad7c](https://github.com/pact-foundation/pact-js/commit/75fad7c2b1bdb7ad38da11341cf0546999d0b912))
|
|
29
|
+
* **deps:** update dependency body-parser to v2 ([#1433](https://github.com/pact-foundation/pact-js/issues/1433)) ([357095a](https://github.com/pact-foundation/pact-js/commit/357095a06dab9ef3e7391bc5a4e811e649f6a577))
|
|
30
|
+
* **deps:** update dependency ramda to ^0.31.0 ([#1507](https://github.com/pact-foundation/pact-js/issues/1507)) ([61c33c0](https://github.com/pact-foundation/pact-js/commit/61c33c0bd572e4413394393c2b25300c174b2a57))
|
|
31
|
+
* examples/e2e/package.json & examples/e2e/package-lock.json to reduce vulnerabilities ([#1472](https://github.com/pact-foundation/pact-js/issues/1472)) ([1732a0f](https://github.com/pact-foundation/pact-js/commit/1732a0f41a570e9d1eeacff1192eb7341cb8b3b7))
|
|
32
|
+
* mock backend to return the example value provided in date and time v3 matchers ([#1405](https://github.com/pact-foundation/pact-js/issues/1405)) ([5f47e5d](https://github.com/pact-foundation/pact-js/commit/5f47e5da3e6de5b1121896e909bdede6d24afb58))
|
|
33
|
+
* Rename Matchers to MatchersV2 to to avoid type overlap. remove AnyTemplate from V3 types ([c2fe8f5](https://github.com/pact-foundation/pact-js/commit/c2fe8f5c7175db133f1ed19c71b43a35846f5a30))
|
|
34
|
+
|
|
35
|
+
## [15.0.1](https://github.com/pact-foundation/pact-js/compare/v15.0.0...v15.0.1) (2025-03-24)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
### Fixes and Improvements
|
|
39
|
+
|
|
40
|
+
* **deps:** add graphql back to dependency block ([#1425](https://github.com/pact-foundation/pact-js/issues/1425)) ([98fa621](https://github.com/pact-foundation/pact-js/commit/98fa6215eb1e2f2efcadaabcc28b6c8859da0067))
|
|
41
|
+
|
|
5
42
|
## [15.0.0](https://github.com/pact-foundation/pact-js/compare/v13.2.0...v15.0.0) (2025-03-24)
|
|
6
43
|
|
|
7
44
|
|
package/README.md
CHANGED
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
[](https://coveralls.io/github/pact-foundation/pact-js?branch=master)
|
|
13
13
|
[](https://codeclimate.com/github/pact-foundation/pact-js)
|
|
14
14
|
[](https://codeclimate.com/github/pact-foundation/pact-js)
|
|
15
|
-
[](https://snyk.io/test/github/pact-foundation/pact-js?targetFile=package.json)
|
|
16
15
|
[](https://github.com/pact-foundation/pact-js/blob/master/LICENSE)
|
|
17
16
|
[](https://slack.pact.io)
|
|
18
17
|
|
|
@@ -91,7 +90,7 @@ Learn the key Pact JS features in 60 minutes: https://github.com/pact-foundation
|
|
|
91
90
|
## Installation
|
|
92
91
|
|
|
93
92
|
```shell
|
|
94
|
-
npm
|
|
93
|
+
npm install --save-dev @pact-foundation/pact
|
|
95
94
|
|
|
96
95
|
# 🚀 now write some tests!
|
|
97
96
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pact-foundation/pact",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "16.0.0",
|
|
4
4
|
"description": "Pact for all things Javascript",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"types": "./src/index.d.ts",
|
|
@@ -10,12 +10,14 @@
|
|
|
10
10
|
"predist": "npm run clean",
|
|
11
11
|
"dist": "tsc && copyfiles package.json ./dist",
|
|
12
12
|
"install-plugins": "./scripts/install-plugins",
|
|
13
|
+
"fix": "npm run format:fix && npm run lint:fix",
|
|
13
14
|
"lint": "eslint --config .eslintrc.json \"{src,test}/**/*.ts\"",
|
|
14
15
|
"lint:fix": "npm run lint -- --fix",
|
|
15
16
|
"format:base": "prettier \"{src,test,examples}/**/*.{ts,js}\"",
|
|
16
17
|
"format:fix": "npm run format:base -- --write",
|
|
17
18
|
"format:check": "npm run format:base -- --check",
|
|
18
19
|
"release": "commit-and-tag-version",
|
|
20
|
+
"check": "npm run format:check && npm run lint && npm run test",
|
|
19
21
|
"test": "mocha",
|
|
20
22
|
"coverage": "nyc npm run test",
|
|
21
23
|
"pretest": "npm run install-plugins",
|
|
@@ -31,7 +33,7 @@
|
|
|
31
33
|
"url": "git+https://github.com/pact-foundation/pact-js.git"
|
|
32
34
|
},
|
|
33
35
|
"engines": {
|
|
34
|
-
"node": ">=
|
|
36
|
+
"node": ">=20"
|
|
35
37
|
},
|
|
36
38
|
"keywords": [
|
|
37
39
|
"pact",
|
|
@@ -101,59 +103,61 @@
|
|
|
101
103
|
]
|
|
102
104
|
},
|
|
103
105
|
"dependencies": {
|
|
104
|
-
"@pact-foundation/pact-core": "^
|
|
105
|
-
"axios": "^1.
|
|
106
|
-
"body-parser": "^
|
|
106
|
+
"@pact-foundation/pact-core": "^17.0.0",
|
|
107
|
+
"axios": "^1.12.2",
|
|
108
|
+
"body-parser": "^2.2.0",
|
|
107
109
|
"chalk": "4.1.2",
|
|
108
|
-
"express": "^
|
|
109
|
-
"graphql
|
|
110
|
+
"express": "^5.1.0",
|
|
111
|
+
"graphql": "^16.11.0",
|
|
112
|
+
"graphql-tag": "^2.12.6",
|
|
110
113
|
"http-proxy": "^1.18.1",
|
|
111
|
-
"https-proxy-agent": "^7.0.
|
|
112
|
-
"js-base64": "^3.
|
|
114
|
+
"https-proxy-agent": "^7.0.6",
|
|
115
|
+
"js-base64": "^3.7.8",
|
|
113
116
|
"lodash": "^4.17.21",
|
|
114
|
-
"ramda": "^0.
|
|
115
|
-
"randexp": "^0.5.3"
|
|
117
|
+
"ramda": "^0.31.3",
|
|
118
|
+
"randexp": "^0.5.3",
|
|
119
|
+
"router": "^2.2.0"
|
|
116
120
|
},
|
|
117
121
|
"devDependencies": {
|
|
118
|
-
"@babel/cli": "7.
|
|
119
|
-
"@babel/core": "7.
|
|
120
|
-
"@babel/preset-env": "7.
|
|
122
|
+
"@babel/cli": "7.28.3",
|
|
123
|
+
"@babel/core": "7.28.4",
|
|
124
|
+
"@babel/preset-env": "7.28.3",
|
|
121
125
|
"@pact-foundation/pact-js-prettier-config": "1.0.0",
|
|
122
|
-
"@types/chai": "5.2.
|
|
126
|
+
"@types/chai": "5.2.2",
|
|
123
127
|
"@types/chai-as-promised": "8.0.2",
|
|
124
|
-
"@types/express": "4.17.
|
|
128
|
+
"@types/express": "4.17.23",
|
|
125
129
|
"@types/http-proxy": "1.17.16",
|
|
126
|
-
"@types/lodash": "4.17.
|
|
130
|
+
"@types/lodash": "4.17.20",
|
|
127
131
|
"@types/mocha": "10.0.10",
|
|
128
132
|
"@types/nock": "11.1.0",
|
|
129
|
-
"@types/node": "22.
|
|
130
|
-
"@types/ramda": "0.
|
|
133
|
+
"@types/node": "22.18.8",
|
|
134
|
+
"@types/ramda": "0.31.1",
|
|
131
135
|
"@types/sinon": "17.0.4",
|
|
132
|
-
"@types/sinon-chai": "
|
|
136
|
+
"@types/sinon-chai": "4.0.0",
|
|
133
137
|
"@typescript-eslint/eslint-plugin": "5.62.0",
|
|
134
138
|
"@typescript-eslint/parser": "5.62.0",
|
|
135
|
-
"chai": "
|
|
136
|
-
"chai-as-promised": "8.0.
|
|
137
|
-
"commit-and-tag-version": "12.
|
|
139
|
+
"chai": "6.2.0",
|
|
140
|
+
"chai-as-promised": "8.0.2",
|
|
141
|
+
"commit-and-tag-version": "12.6.0",
|
|
138
142
|
"copyfiles": "2.4.1",
|
|
139
143
|
"eslint": "8.57.1",
|
|
140
144
|
"eslint-config-airbnb-base": "15.0.0",
|
|
141
145
|
"eslint-config-airbnb-typescript": "17.1.0",
|
|
142
|
-
"eslint-config-prettier": "10.1.
|
|
143
|
-
"eslint-import-resolver-typescript": "4.
|
|
144
|
-
"eslint-plugin-chai-friendly": "1.0
|
|
145
|
-
"eslint-plugin-import": "2.
|
|
146
|
+
"eslint-config-prettier": "10.1.8",
|
|
147
|
+
"eslint-import-resolver-typescript": "4.4.2",
|
|
148
|
+
"eslint-plugin-chai-friendly": "1.1.0",
|
|
149
|
+
"eslint-plugin-import": "2.32.0",
|
|
146
150
|
"eslint-plugin-mocha": "10.5.0",
|
|
147
|
-
"mocha": "11.
|
|
148
|
-
"nock": "14.0.
|
|
151
|
+
"mocha": "11.7.4",
|
|
152
|
+
"nock": "14.0.10",
|
|
149
153
|
"nyc": "17.1.0",
|
|
150
|
-
"prettier": "3.
|
|
154
|
+
"prettier": "3.6.2",
|
|
151
155
|
"proxyquire": "2.1.3",
|
|
152
156
|
"rimraf": "6.0.1",
|
|
153
|
-
"sinon": "
|
|
154
|
-
"sinon-chai": "4.0.
|
|
157
|
+
"sinon": "21.0.0",
|
|
158
|
+
"sinon-chai": "4.0.1",
|
|
155
159
|
"source-map-support": "0.5.21",
|
|
156
|
-
"tsx": "4.
|
|
157
|
-
"typescript": "5.
|
|
160
|
+
"tsx": "4.20.6",
|
|
161
|
+
"typescript": "5.9.3"
|
|
158
162
|
}
|
|
159
163
|
}
|
package/scripts/ci/release.sh
CHANGED
|
@@ -30,9 +30,10 @@ RELEASE_NOTES="${RELEASE_NOTES//$'\r'/'%0D'}"
|
|
|
30
30
|
echo "::set-output name=notes::$RELEASE_NOTES"
|
|
31
31
|
|
|
32
32
|
npm ci
|
|
33
|
-
"$SCRIPT_DIR"/build-and-test.sh
|
|
34
33
|
|
|
34
|
+
# run release first prior to test, so dist folder has the right version
|
|
35
35
|
npm run release
|
|
36
|
+
"$SCRIPT_DIR"/build-and-test.sh
|
|
36
37
|
|
|
37
38
|
# Emit version to next step
|
|
38
39
|
VERSION="$("$SCRIPT_DIR/lib/get-version.sh")"
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.ConfigurationError = void 0;
|
|
19
|
+
var ConfigurationError = /** @class */ (function (_super) {
|
|
20
|
+
__extends(ConfigurationError, _super);
|
|
21
|
+
function ConfigurationError() {
|
|
22
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
23
|
+
}
|
|
24
|
+
return ConfigurationError;
|
|
25
|
+
}(Error));
|
|
26
|
+
exports.ConfigurationError = ConfigurationError;
|
|
27
|
+
//# sourceMappingURL=configurationError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configurationError.js","sourceRoot":"","sources":["../../../../src/common/graphQL/configurationError.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;IAAwC,sCAAK;IAA7C;;IAA+C,CAAC;IAAD,yBAAC;AAAD,CAAC,AAAhD,CAAwC,KAAK,GAAG;AAAnC,gDAAkB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ASTNode } from 'graphql';
|
|
2
|
+
import { OperationType } from './types';
|
|
3
|
+
export interface GraphQLVariables {
|
|
4
|
+
[name: string]: unknown;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Accepts a raw or pre-parsed query, validating in the former case, and
|
|
8
|
+
* returns a normalized raw query.
|
|
9
|
+
* @param query {string|ASTNode} the query to validate
|
|
10
|
+
* @param type the operation type
|
|
11
|
+
*/
|
|
12
|
+
export declare function validateQuery(query: string | ASTNode, type: OperationType): string;
|
|
13
|
+
export declare const escapeSpace: (s: string) => string;
|
|
14
|
+
export declare const escapeRegexChars: (s: string) => string;
|
|
15
|
+
export declare const escapeGraphQlQuery: (s: string) => string;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.escapeGraphQlQuery = exports.escapeRegexChars = exports.escapeSpace = void 0;
|
|
7
|
+
exports.validateQuery = validateQuery;
|
|
8
|
+
var graphql_1 = require("graphql");
|
|
9
|
+
var graphql_tag_1 = __importDefault(require("graphql-tag"));
|
|
10
|
+
var graphQLQueryError_1 = require("./graphQLQueryError");
|
|
11
|
+
var configurationError_1 = require("./configurationError");
|
|
12
|
+
/**
|
|
13
|
+
* Accepts a raw or pre-parsed query, validating in the former case, and
|
|
14
|
+
* returns a normalized raw query.
|
|
15
|
+
* @param query {string|ASTNode} the query to validate
|
|
16
|
+
* @param type the operation type
|
|
17
|
+
*/
|
|
18
|
+
function validateQuery(query, type) {
|
|
19
|
+
if (!query) {
|
|
20
|
+
throw new configurationError_1.ConfigurationError("You must provide a GraphQL ".concat(type, "."));
|
|
21
|
+
}
|
|
22
|
+
if (typeof query !== 'string') {
|
|
23
|
+
if ((query === null || query === void 0 ? void 0 : query.kind) === 'Document') {
|
|
24
|
+
// Already parsed, store in string form
|
|
25
|
+
return (0, graphql_1.print)(query);
|
|
26
|
+
}
|
|
27
|
+
throw new configurationError_1.ConfigurationError('You must provide a either a string or parsed GraphQL.');
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
// String, so validate it
|
|
31
|
+
try {
|
|
32
|
+
(0, graphql_tag_1.default)(query);
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
throw new graphQLQueryError_1.GraphQLQueryError("GraphQL ".concat(type, " is invalid: ").concat(e.message));
|
|
36
|
+
}
|
|
37
|
+
return query;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
var escapeSpace = function (s) { return s.replace(/\s+/g, '\\s*'); };
|
|
41
|
+
exports.escapeSpace = escapeSpace;
|
|
42
|
+
var escapeRegexChars = function (s) {
|
|
43
|
+
return s.replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&');
|
|
44
|
+
};
|
|
45
|
+
exports.escapeRegexChars = escapeRegexChars;
|
|
46
|
+
var escapeGraphQlQuery = function (s) {
|
|
47
|
+
return (0, exports.escapeSpace)((0, exports.escapeRegexChars)(s));
|
|
48
|
+
};
|
|
49
|
+
exports.escapeGraphQlQuery = escapeGraphQlQuery;
|
|
50
|
+
//# sourceMappingURL=graphQL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphQL.js","sourceRoot":"","sources":["../../../../src/common/graphQL/graphQL.ts"],"names":[],"mappings":";;;;;;AAgBA,sCA0BC;AA1CD,mCAAyC;AACzC,4DAA8B;AAC9B,yDAAwD;AACxD,2DAA0D;AAO1D;;;;;GAKG;AACH,SAAgB,aAAa,CAC3B,KAAuB,EACvB,IAAmB;IAEnB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,uCAAkB,CAAC,qCAA8B,IAAI,MAAG,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,MAAK,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,IAAI,qCAAiB,CAAC,kBAAW,IAAI,0BAAgB,CAAC,CAAC,OAAO,CAAE,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAEM,IAAM,WAAW,GAAG,UAAC,CAAS,IAAa,OAAA,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAzB,CAAyB,CAAC;AAA/D,QAAA,WAAW,eAAoD;AAErE,IAAM,gBAAgB,GAAG,UAAC,CAAS;IACxC,OAAA,CAAC,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC;AAA1C,CAA0C,CAAC;AADhC,QAAA,gBAAgB,oBACgB;AAEtC,IAAM,kBAAkB,GAAG,UAAC,CAAS;IAC1C,OAAA,IAAA,mBAAW,EAAC,IAAA,wBAAgB,EAAC,CAAC,CAAC,CAAC;AAAhC,CAAgC,CAAC;AADtB,QAAA,kBAAkB,sBACI"}
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.GraphQLQueryError = void 0;
|
|
19
|
+
var GraphQLQueryError = /** @class */ (function (_super) {
|
|
20
|
+
__extends(GraphQLQueryError, _super);
|
|
21
|
+
function GraphQLQueryError() {
|
|
22
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
23
|
+
}
|
|
24
|
+
return GraphQLQueryError;
|
|
25
|
+
}(Error));
|
|
26
|
+
exports.GraphQLQueryError = GraphQLQueryError;
|
|
27
|
+
//# sourceMappingURL=graphQLQueryError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphQLQueryError.js","sourceRoot":"","sources":["../../../../src/common/graphQL/graphQLQueryError.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;IAAuC,qCAAK;IAA5C;;IAA8C,CAAC;IAAD,wBAAC;AAAD,CAAC,AAA/C,CAAuC,KAAK,GAAG;AAAlC,8CAAiB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OperationType = void 0;
|
|
4
|
+
var OperationType;
|
|
5
|
+
(function (OperationType) {
|
|
6
|
+
OperationType["Mutation"] = "Mutation";
|
|
7
|
+
OperationType["Query"] = "Query";
|
|
8
|
+
})(OperationType || (exports.OperationType = OperationType = {}));
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/common/graphQL/types.ts"],"names":[],"mappings":";;;AAAA,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,gCAAe,CAAA;AACjB,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB"}
|
package/src/dsl/graphql.d.ts
CHANGED
package/src/dsl/graphql.js
CHANGED
|
@@ -26,16 +26,12 @@ exports.GraphQLInteraction = void 0;
|
|
|
26
26
|
*/
|
|
27
27
|
var lodash_1 = require("lodash");
|
|
28
28
|
var ramda_1 = require("ramda");
|
|
29
|
-
var graphql_tag_1 = __importDefault(require("graphql-tag"));
|
|
30
29
|
var interaction_1 = require("./interaction");
|
|
31
30
|
var matchers_1 = require("./matchers");
|
|
32
31
|
var graphQLQueryError_1 = __importDefault(require("../errors/graphQLQueryError"));
|
|
33
32
|
var configurationError_1 = __importDefault(require("../errors/configurationError"));
|
|
34
|
-
var
|
|
35
|
-
var
|
|
36
|
-
return s.replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&');
|
|
37
|
-
};
|
|
38
|
-
var escapeGraphQlQuery = function (s) { return escapeSpace(escapeRegexChars(s)); };
|
|
33
|
+
var graphQL_1 = require("../common/graphQL/graphQL");
|
|
34
|
+
var types_1 = require("../common/graphQL/types");
|
|
39
35
|
/**
|
|
40
36
|
* GraphQL interface
|
|
41
37
|
*/
|
|
@@ -115,7 +111,7 @@ var GraphQLInteraction = /** @class */ (function (_super) {
|
|
|
115
111
|
operationName: this.operation,
|
|
116
112
|
query: (0, matchers_1.regex)({
|
|
117
113
|
generate: this.query,
|
|
118
|
-
matcher: escapeGraphQlQuery(this.query),
|
|
114
|
+
matcher: (0, graphQL_1.escapeGraphQlQuery)(this.query),
|
|
119
115
|
}),
|
|
120
116
|
variables: this.variables,
|
|
121
117
|
}),
|
|
@@ -129,7 +125,7 @@ var GraphQLInteraction = /** @class */ (function (_super) {
|
|
|
129
125
|
throw new configurationError_1.default("You must provide a GraphQL ".concat(type, "."));
|
|
130
126
|
}
|
|
131
127
|
try {
|
|
132
|
-
(0,
|
|
128
|
+
(0, graphQL_1.validateQuery)(query, type === 'query' ? types_1.OperationType.Query : types_1.OperationType.Mutation);
|
|
133
129
|
}
|
|
134
130
|
catch (e) {
|
|
135
131
|
throw new graphQLQueryError_1.default("GraphQL ".concat(type, " is invalid: ").concat(e.message));
|
package/src/dsl/graphql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../../src/dsl/graphql.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;GAIG;AACH,iCAAoD;AACpD,+BAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../../../src/dsl/graphql.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;GAIG;AACH,iCAAoD;AACpD,+BAA+B;AAC/B,6CAAsE;AACtE,uCAAmC;AACnC,kFAA4D;AAC5D,oFAA8D;AAC9D,qDAImC;AACnC,iDAAwD;AAExD;;GAEG;AACH;IAAwC,sCAAW;IAAnD;;QACY,eAAS,GAAmB,SAAS,CAAC;QAEtC,eAAS,GAAsB,SAAS,CAAC;;IAkHrD,CAAC;IA9GC;;OAEG;IACI,0CAAa,GAApB,UAAqB,SAAwB;QAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,0CAAa,GAApB,UAAqB,SAA2B;QAC9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACI,sCAAS,GAAhB,UAAiB,KAAa;QAC5B,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,yCAAY,GAAnB,UAAoB,QAAgB;QAClC,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACI,iCAAI,GAAX;QACE,gBAAK,CAAC,IAAI,WAAE,CAAC;QAEb,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,4BAAkB,CAAC,mCAAmC,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,2BAAiB,CACzB,+CAA+C,CAChD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAA,eAAM,EACzB;YACE,IAAI,EAAE,IAAA,cAAM,EAAC,oBAAW,EAAE;gBACxB,aAAa,EAAE,IAAI,CAAC,SAAS;gBAC7B,KAAK,EAAE,IAAA,gBAAK,EAAC;oBACX,QAAQ,EAAE,IAAI,CAAC,KAAK;oBACpB,OAAO,EAAE,IAAA,4BAAkB,EAAC,IAAI,CAAC,KAAK,CAAC;iBACxC,CAAC;gBACF,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;YACF,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,MAAM,EAAE,MAAM;SACf,EACD,IAAI,CAAC,KAAK,CAAC,OAAO,CACnB,CAAC;QAEF,OAAO,IAAI,CAAC,KAAiC,CAAC;IAChD,CAAC;IAEO,4CAAe,GAAvB,UAAwB,KAAa,EAAE,IAAY;QACjD,IAAI,IAAA,cAAK,EAAC,KAAK,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,4BAAkB,CAAC,qCAA8B,IAAI,MAAG,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC;YACH,IAAA,uBAAa,EACX,KAAK,EACL,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,qBAAa,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAa,CAAC,QAAQ,CAChE,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,2BAAiB,CAAC,kBAAW,IAAI,0BAAgB,CAAC,CAAC,OAAO,CAAE,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,OAAO,IAAI,CAAC;IACd,CAAC;IACH,yBAAC;AAAD,CAAC,AArHD,CAAwC,yBAAW,GAqHlD;AArHY,gDAAkB"}
|
package/src/dsl/interaction.d.ts
CHANGED
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
* @module Interaction
|
|
4
4
|
*/
|
|
5
5
|
import { HTTPMethods, HTTPMethod } from '../common/request';
|
|
6
|
-
import {
|
|
6
|
+
import { MatcherV2, AnyTemplate } from './matchers';
|
|
7
7
|
interface QueryObject {
|
|
8
|
-
[name: string]: string |
|
|
8
|
+
[name: string]: string | MatcherV2<string> | string[];
|
|
9
9
|
}
|
|
10
10
|
export type Query = string | QueryObject;
|
|
11
11
|
export type Headers = {
|
|
12
|
-
[header: string]: string |
|
|
12
|
+
[header: string]: string | MatcherV2<string> | (MatcherV2<string> | string)[];
|
|
13
13
|
};
|
|
14
14
|
export interface RequestOptions {
|
|
15
15
|
method: HTTPMethods | HTTPMethod;
|
|
16
|
-
path: string |
|
|
16
|
+
path: string | MatcherV2<string>;
|
|
17
17
|
query?: Query;
|
|
18
18
|
headers?: Headers;
|
|
19
19
|
body?: AnyTemplate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../../src/dsl/interaction.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,iCAAqC;AACrC,+BAA+B;AAC/B,6CAA4D;AAC5D,
|
|
1
|
+
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../../src/dsl/interaction.ts"],"names":[],"mappings":"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"}
|
package/src/dsl/matchers.d.ts
CHANGED
|
@@ -14,18 +14,18 @@ export declare const UUID_V4_FORMAT = "^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12
|
|
|
14
14
|
export declare const IPV4_FORMAT = "^(\\d{1,3}\\.)+\\d{1,3}$";
|
|
15
15
|
export declare const IPV6_FORMAT = "^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$";
|
|
16
16
|
export declare const HEX_FORMAT = "^[0-9a-fA-F]+$";
|
|
17
|
-
export interface
|
|
17
|
+
export interface MatcherV2<T> {
|
|
18
18
|
value?: T;
|
|
19
19
|
'pact:matcher:type': string;
|
|
20
20
|
getValue(): T;
|
|
21
21
|
}
|
|
22
|
-
export interface ArrayMatcher<T> extends
|
|
22
|
+
export interface ArrayMatcher<T> extends MatcherV2<T> {
|
|
23
23
|
'pact:matcher:type': string;
|
|
24
24
|
min?: number;
|
|
25
25
|
max?: number;
|
|
26
26
|
}
|
|
27
|
-
export declare function isMatcher(x: unknown): x is
|
|
28
|
-
export type AnyTemplate = AnyJson |
|
|
27
|
+
export declare function isMatcher(x: unknown): x is MatcherV2<AnyTemplate>;
|
|
28
|
+
export type AnyTemplate = AnyJson | MatcherV2<AnyTemplate> | ArrayMatcher<AnyTemplate> | TemplateMap | ArrayTemplate;
|
|
29
29
|
export type InterfaceToTemplate<O> = {
|
|
30
30
|
[K in keyof O]: AnyTemplate;
|
|
31
31
|
};
|
|
@@ -53,8 +53,8 @@ export declare function eachLike<T>(template: T, opts?: {
|
|
|
53
53
|
* The somethingLike matcher
|
|
54
54
|
* @param {any} value - the value to be somethingLike
|
|
55
55
|
*/
|
|
56
|
-
export declare function somethingLike<T>(value: T):
|
|
57
|
-
export interface RegexMatcher<T> extends
|
|
56
|
+
export declare function somethingLike<T>(value: T): MatcherV2<T>;
|
|
57
|
+
export interface RegexMatcher<T> extends MatcherV2<T> {
|
|
58
58
|
regex: string;
|
|
59
59
|
}
|
|
60
60
|
/**
|
|
@@ -71,72 +71,72 @@ export declare function term(opts: {
|
|
|
71
71
|
* Email address matcher.
|
|
72
72
|
* @param {string} address - a email address to use as an example
|
|
73
73
|
*/
|
|
74
|
-
export declare function email(address?: string):
|
|
74
|
+
export declare function email(address?: string): MatcherV2<string>;
|
|
75
75
|
/**
|
|
76
76
|
* UUID v4 matcher.
|
|
77
77
|
* @param {string} id - a UUID to use as an example.
|
|
78
78
|
*/
|
|
79
|
-
export declare function uuid(id?: string):
|
|
79
|
+
export declare function uuid(id?: string): MatcherV2<string>;
|
|
80
80
|
/**
|
|
81
81
|
* IPv4 matcher.
|
|
82
82
|
* @param {string} ip - an IPv4 address to use as an example. Defaults to `127.0.0.13`
|
|
83
83
|
*/
|
|
84
|
-
export declare function ipv4Address(ip?: string):
|
|
84
|
+
export declare function ipv4Address(ip?: string): MatcherV2<string>;
|
|
85
85
|
/**
|
|
86
86
|
* IPv6 matcher.
|
|
87
87
|
* @param {string} ip - an IPv6 address to use as an example. Defaults to '::ffff:192.0.2.128'
|
|
88
88
|
*/
|
|
89
|
-
export declare function ipv6Address(ip?: string):
|
|
89
|
+
export declare function ipv6Address(ip?: string): MatcherV2<string>;
|
|
90
90
|
/**
|
|
91
91
|
* ISO8601 DateTime matcher.
|
|
92
92
|
* @param {string} date - an ISO8601 Date and Time string
|
|
93
93
|
* e.g. 2015-08-06T16:53:10+01:00 are valid
|
|
94
94
|
*/
|
|
95
|
-
export declare function iso8601DateTime(date?: string):
|
|
95
|
+
export declare function iso8601DateTime(date?: string): MatcherV2<string>;
|
|
96
96
|
/**
|
|
97
97
|
* ISO8601 DateTime matcher with required millisecond precision
|
|
98
98
|
* @param {string} date - an ISO8601 Date and Time string, e.g. 2015-08-06T16:53:10.123+01:00
|
|
99
99
|
*/
|
|
100
|
-
export declare function iso8601DateTimeWithMillis(date?: string):
|
|
100
|
+
export declare function iso8601DateTimeWithMillis(date?: string): MatcherV2<string>;
|
|
101
101
|
/**
|
|
102
102
|
* ISO8601 Date matcher.
|
|
103
103
|
* @param {string} date - a basic yyyy-MM-dd date string e.g. 2000-09-31
|
|
104
104
|
*/
|
|
105
|
-
export declare function iso8601Date(date?: string):
|
|
105
|
+
export declare function iso8601Date(date?: string): MatcherV2<string>;
|
|
106
106
|
/**
|
|
107
|
-
* ISO8601 Time
|
|
107
|
+
* ISO8601 Time MatcherV2, matches a pattern of the format "'T'HH:mm:ss".
|
|
108
108
|
* @param {string} date - a ISO8601 formatted time string e.g. T22:44:30.652Z
|
|
109
109
|
*/
|
|
110
|
-
export declare function iso8601Time(time?: string):
|
|
110
|
+
export declare function iso8601Time(time?: string): MatcherV2<string>;
|
|
111
111
|
/**
|
|
112
112
|
* RFC1123 Timestamp matcher "DAY, DD MON YYY hh:mm:ss"
|
|
113
113
|
*
|
|
114
114
|
* @param {string} date - an RFC1123 Date and Time string, e.g. Mon, 31 Oct 2016 15:21:41 -0400
|
|
115
115
|
*/
|
|
116
|
-
export declare function rfc1123Timestamp(timestamp?: string):
|
|
116
|
+
export declare function rfc1123Timestamp(timestamp?: string): MatcherV2<string>;
|
|
117
117
|
/**
|
|
118
|
-
* Hexadecimal
|
|
118
|
+
* Hexadecimal MatcherV2.
|
|
119
119
|
* @param {string} hex - a hex value.
|
|
120
120
|
*/
|
|
121
|
-
export declare function hexadecimal(hex?: string):
|
|
121
|
+
export declare function hexadecimal(hex?: string): MatcherV2<string>;
|
|
122
122
|
/**
|
|
123
|
-
* Decimal
|
|
123
|
+
* Decimal MatcherV2.
|
|
124
124
|
* @param {float} float - a decimal value.
|
|
125
125
|
*/
|
|
126
|
-
export declare function decimal(float?: number):
|
|
126
|
+
export declare function decimal(float?: number): MatcherV2<number>;
|
|
127
127
|
/**
|
|
128
|
-
* Integer
|
|
128
|
+
* Integer MatcherV2.
|
|
129
129
|
* @param {integer} int - an int value.
|
|
130
130
|
*/
|
|
131
|
-
export declare function integer(int?: number):
|
|
131
|
+
export declare function integer(int?: number): MatcherV2<number>;
|
|
132
132
|
/**
|
|
133
|
-
* Boolean
|
|
133
|
+
* Boolean MatcherV2.
|
|
134
134
|
*/
|
|
135
|
-
export declare function boolean(value?: boolean):
|
|
135
|
+
export declare function boolean(value?: boolean): MatcherV2<boolean>;
|
|
136
136
|
/**
|
|
137
|
-
* String
|
|
137
|
+
* String MatcherV2.
|
|
138
138
|
*/
|
|
139
|
-
export declare function string(value?: string):
|
|
139
|
+
export declare function string(value?: string): MatcherV2<string>;
|
|
140
140
|
export { somethingLike as like };
|
|
141
141
|
export { term as regex };
|
|
142
142
|
export declare function extractPayload(value: AnyTemplate): AnyJson;
|