@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.
Files changed (116) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +1 -2
  3. package/package.json +38 -34
  4. package/scripts/ci/release.sh +2 -1
  5. package/src/common/graphQL/configurationError.d.ts +2 -0
  6. package/src/common/graphQL/configurationError.js +27 -0
  7. package/src/common/graphQL/configurationError.js.map +1 -0
  8. package/src/common/graphQL/graphQL.d.ts +15 -0
  9. package/src/common/graphQL/graphQL.js +50 -0
  10. package/src/common/graphQL/graphQL.js.map +1 -0
  11. package/src/common/graphQL/graphQLQueryError.d.ts +2 -0
  12. package/src/common/graphQL/graphQLQueryError.js +27 -0
  13. package/src/common/graphQL/graphQLQueryError.js.map +1 -0
  14. package/src/common/graphQL/types.d.ts +4 -0
  15. package/src/common/graphQL/types.js +9 -0
  16. package/src/common/graphQL/types.js.map +1 -0
  17. package/src/dsl/graphql.d.ts +1 -3
  18. package/src/dsl/graphql.js +4 -8
  19. package/src/dsl/graphql.js.map +1 -1
  20. package/src/dsl/interaction.d.ts +4 -4
  21. package/src/dsl/interaction.js.map +1 -1
  22. package/src/dsl/matchers.d.ts +26 -26
  23. package/src/dsl/matchers.js +6 -6
  24. package/src/dsl/matchers.js.map +1 -1
  25. package/src/dsl/message.d.ts +4 -3
  26. package/src/dsl/options.d.ts +4 -4
  27. package/src/dsl/verifier/proxy/messages.js +55 -1
  28. package/src/dsl/verifier/proxy/messages.js.map +1 -1
  29. package/src/dsl/verifier/proxy/proxy.js +2 -2
  30. package/src/dsl/verifier/proxy/proxy.js.map +1 -1
  31. package/src/httpPact/ffi.js.map +1 -1
  32. package/src/httpPact/index.d.ts +7 -7
  33. package/src/httpPact/index.js +1 -1
  34. package/src/httpPact/index.js.map +1 -1
  35. package/src/httpPact/index.spec.js.map +1 -1
  36. package/src/index.d.ts +17 -4
  37. package/src/index.js +19 -5
  38. package/src/index.js.map +1 -1
  39. package/src/messageProviderPact.js +1 -1
  40. package/src/messageProviderPact.js.map +1 -1
  41. package/src/pact.integration.spec.js +0 -1
  42. package/src/pact.integration.spec.js.map +1 -1
  43. package/src/v3/graphql/graphQL.d.ts +90 -0
  44. package/src/v3/graphql/graphQL.js +175 -0
  45. package/src/v3/graphql/graphQL.js.map +1 -0
  46. package/src/v3/graphql/index.d.ts +4 -0
  47. package/src/v3/graphql/index.js +21 -0
  48. package/src/v3/graphql/index.js.map +1 -0
  49. package/src/v3/index.d.ts +1 -0
  50. package/src/v3/index.js +1 -0
  51. package/src/v3/index.js.map +1 -1
  52. package/src/v3/matchers.js +6 -6
  53. package/src/v3/matchers.js.map +1 -1
  54. package/src/v3/matchers.spec.js +33 -14
  55. package/src/v3/matchers.spec.js.map +1 -1
  56. package/src/v3/types.d.ts +1 -12
  57. package/src/v4/graphql/graphQLInteractionWithRequest.d.ts +35 -0
  58. package/src/v4/graphql/graphQLInteractionWithRequest.js +57 -0
  59. package/src/v4/graphql/graphQLInteractionWithRequest.js.map +1 -0
  60. package/src/v4/graphql/graphQLRequestBuilder.d.ts +9 -0
  61. package/src/v4/graphql/graphQLRequestBuilder.js +42 -0
  62. package/src/v4/graphql/graphQLRequestBuilder.js.map +1 -0
  63. package/src/v4/graphql/index.d.ts +19 -0
  64. package/src/v4/graphql/index.js +47 -0
  65. package/src/v4/graphql/index.js.map +1 -0
  66. package/src/v4/graphql/types.d.ts +30 -0
  67. package/src/v4/graphql/types.js +9 -0
  68. package/src/v4/graphql/types.js.map +1 -0
  69. package/src/v4/http/index.d.ts +4 -88
  70. package/src/v4/http/index.js +3 -271
  71. package/src/v4/http/index.js.map +1 -1
  72. package/src/v4/http/interactionWithCompleteRequest.d.ts +10 -0
  73. package/src/v4/http/interactionWithCompleteRequest.js +19 -0
  74. package/src/v4/http/interactionWithCompleteRequest.js.map +1 -0
  75. package/src/v4/http/interactionWithPlugin.d.ts +12 -0
  76. package/src/v4/http/interactionWithPlugin.js +30 -0
  77. package/src/v4/http/interactionWithPlugin.js.map +1 -0
  78. package/src/v4/http/interactionWithPluginRequest.d.ts +10 -0
  79. package/src/v4/http/interactionWithPluginRequest.js +24 -0
  80. package/src/v4/http/interactionWithPluginRequest.js.map +1 -0
  81. package/src/v4/http/interactionWithPluginResponse.d.ts +9 -0
  82. package/src/v4/http/interactionWithPluginResponse.js +58 -0
  83. package/src/v4/http/interactionWithPluginResponse.js.map +1 -0
  84. package/src/v4/http/interactionWithRequest.d.ts +10 -0
  85. package/src/v4/http/interactionWithRequest.js +24 -0
  86. package/src/v4/http/interactionWithRequest.js.map +1 -0
  87. package/src/v4/http/interactionWithResponse.d.ts +9 -0
  88. package/src/v4/http/interactionWithResponse.js +58 -0
  89. package/src/v4/http/interactionWithResponse.js.map +1 -0
  90. package/src/v4/http/requestBuilder.d.ts +13 -0
  91. package/src/v4/http/requestBuilder.js +60 -0
  92. package/src/v4/http/requestBuilder.js.map +1 -0
  93. package/src/v4/http/requestWithPluginBuilder.d.ts +12 -0
  94. package/src/v4/http/requestWithPluginBuilder.js +56 -0
  95. package/src/v4/http/requestWithPluginBuilder.js.map +1 -0
  96. package/src/v4/http/responseBuilder.d.ts +12 -0
  97. package/src/v4/http/responseBuilder.js +38 -0
  98. package/src/v4/http/responseBuilder.js.map +1 -0
  99. package/src/v4/http/responseWithPluginBuilder.d.ts +5 -0
  100. package/src/v4/http/responseWithPluginBuilder.js +32 -0
  101. package/src/v4/http/responseWithPluginBuilder.js.map +1 -0
  102. package/src/v4/http/types.d.ts +4 -3
  103. package/src/v4/http/unconfiguredInteraction.d.ts +16 -0
  104. package/src/v4/http/unconfiguredInteraction.js +47 -0
  105. package/src/v4/http/unconfiguredInteraction.js.map +1 -0
  106. package/src/v4/index.d.ts +7 -1
  107. package/src/v4/index.js +40 -3
  108. package/src/v4/index.js.map +1 -1
  109. package/src/v4/message/asynchronousMessage.d.ts +68 -0
  110. package/src/v4/message/asynchronousMessage.js +278 -0
  111. package/src/v4/message/asynchronousMessage.js.map +1 -0
  112. package/src/v4/message/index.d.ts +13 -3
  113. package/src/v4/message/index.js +50 -8
  114. package/src/v4/message/index.js.map +1 -1
  115. package/src/v4/message/types.d.ts +37 -5
  116. package/src/v4/types.d.ts +4 -1
@@ -1,5 +1,5 @@
1
1
  import { JsonMap } from '../../common/jsonTypes';
2
- import { Path, SpecificationVersion, TemplateHeaders, TemplateQuery, V3MockServer, V3ProviderState, V3Request, V3Response } from '../../v3';
2
+ import { Matcher, Path, SpecificationVersion, TemplateHeaders, TemplateQuery, V3MockServer, V3ProviderState, V3Request, V3Response } from '../../v3';
3
3
  export type V4ProviderState = V3ProviderState;
4
4
  export type V4MockServer = V3MockServer;
5
5
  export type V4Request = V3Request;
@@ -38,17 +38,18 @@ export interface PactV4Options {
38
38
  */
39
39
  host?: string;
40
40
  }
41
+ export type TemplateHeaderArrayValue = string[] | Matcher<string>[];
41
42
  export interface V4UnconfiguredInteraction {
42
43
  given(state: string, parameters?: JsonMap): V4UnconfiguredInteraction;
43
44
  uponReceiving(description: string): V4UnconfiguredInteraction;
44
45
  withCompleteRequest(request: V4Request): V4InteractionWithCompleteRequest;
45
- withRequest(method: string, path: Path, builder?: V4RequestBuilderFunc): V4InteractionwithRequest;
46
+ withRequest(method: string, path: Path, builder?: V4RequestBuilderFunc): V4InteractionWithRequest;
46
47
  usingPlugin(config: PluginConfig): V4InteractionWithPlugin;
47
48
  }
48
49
  export interface V4InteractionWithCompleteRequest {
49
50
  withCompleteResponse(response: V4Response): V4InteractionWithResponse;
50
51
  }
51
- export interface V4InteractionwithRequest {
52
+ export interface V4InteractionWithRequest {
52
53
  willRespondWith(status: number, builder?: V4ResponseBuilderFunc): V4InteractionWithResponse;
53
54
  }
54
55
  export type V4RequestBuilderFunc = (builder: V4RequestBuilder) => void;
@@ -0,0 +1,16 @@
1
+ import { ConsumerPact, ConsumerInteraction } from '@pact-foundation/pact-core';
2
+ import { JsonMap } from '../../common/jsonTypes';
3
+ import { Path } from '../../v3';
4
+ import { V4UnconfiguredInteraction, PactV4Options, V4Request, V4InteractionWithCompleteRequest, V4RequestBuilderFunc, V4InteractionWithRequest, PluginConfig, V4InteractionWithPlugin } from './types';
5
+ export declare class UnconfiguredInteraction implements V4UnconfiguredInteraction {
6
+ protected pact: ConsumerPact;
7
+ protected interaction: ConsumerInteraction;
8
+ protected opts: PactV4Options;
9
+ protected cleanupFn: () => void;
10
+ constructor(pact: ConsumerPact, interaction: ConsumerInteraction, opts: PactV4Options, cleanupFn: () => void);
11
+ uponReceiving(description: string): V4UnconfiguredInteraction;
12
+ given(state: string, parameters?: JsonMap): V4UnconfiguredInteraction;
13
+ withCompleteRequest(request: V4Request): V4InteractionWithCompleteRequest;
14
+ withRequest(method: string, path: Path, builder?: V4RequestBuilderFunc): V4InteractionWithRequest;
15
+ usingPlugin(config: PluginConfig): V4InteractionWithPlugin;
16
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UnconfiguredInteraction = void 0;
4
+ var interactionWithPlugin_1 = require("./interactionWithPlugin");
5
+ var requestBuilder_1 = require("./requestBuilder");
6
+ var interactionWithRequest_1 = require("./interactionWithRequest");
7
+ var matchers_1 = require("../../v3/matchers");
8
+ var UnconfiguredInteraction = /** @class */ (function () {
9
+ // tslint:disable:no-empty-function
10
+ function UnconfiguredInteraction(pact, interaction, opts, cleanupFn) {
11
+ this.pact = pact;
12
+ this.interaction = interaction;
13
+ this.opts = opts;
14
+ this.cleanupFn = cleanupFn;
15
+ }
16
+ UnconfiguredInteraction.prototype.uponReceiving = function (description) {
17
+ this.interaction.uponReceiving(description);
18
+ return this;
19
+ };
20
+ UnconfiguredInteraction.prototype.given = function (state, parameters) {
21
+ if (parameters) {
22
+ this.interaction.givenWithParams(state, JSON.stringify(parameters));
23
+ }
24
+ else {
25
+ this.interaction.given(state);
26
+ }
27
+ return this;
28
+ };
29
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
30
+ UnconfiguredInteraction.prototype.withCompleteRequest = function (request) {
31
+ throw new Error('withCompleteRequest is not implemented');
32
+ };
33
+ UnconfiguredInteraction.prototype.withRequest = function (method, path, builder) {
34
+ this.interaction.withRequest(method, (0, matchers_1.matcherValueOrString)(path));
35
+ if (builder) {
36
+ builder(new requestBuilder_1.RequestBuilder(this.interaction));
37
+ }
38
+ return new interactionWithRequest_1.InteractionWithRequest(this.pact, this.interaction, this.opts, this.cleanupFn);
39
+ };
40
+ UnconfiguredInteraction.prototype.usingPlugin = function (config) {
41
+ this.pact.addPlugin(config.plugin, config.version);
42
+ return new interactionWithPlugin_1.InteractionWithPlugin(this.pact, this.interaction, this.opts, this.cleanupFn);
43
+ };
44
+ return UnconfiguredInteraction;
45
+ }());
46
+ exports.UnconfiguredInteraction = UnconfiguredInteraction;
47
+ //# sourceMappingURL=unconfiguredInteraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unconfiguredInteraction.js","sourceRoot":"","sources":["../../../../src/v4/http/unconfiguredInteraction.ts"],"names":[],"mappings":";;;AACA,iEAAgE;AAChE,mDAAkD;AAClD,mEAAkE;AAGlE,8CAAyD;AAYzD;IACE,mCAAmC;IACnC,iCACY,IAAkB,EAClB,WAAgC,EAChC,IAAmB,EACnB,SAAqB;QAHrB,SAAI,GAAJ,IAAI,CAAc;QAClB,gBAAW,GAAX,WAAW,CAAqB;QAChC,SAAI,GAAJ,IAAI,CAAe;QACnB,cAAS,GAAT,SAAS,CAAY;IAC9B,CAAC;IAEJ,+CAAa,GAAb,UAAc,WAAmB;QAC/B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAE5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uCAAK,GAAL,UAAM,KAAa,EAAE,UAAoB;QACvC,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6DAA6D;IAC7D,qDAAmB,GAAnB,UAAoB,OAAkB;QACpC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IAED,6CAAW,GAAX,UACE,MAAc,EACd,IAAU,EACV,OAA8B;QAE9B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,IAAA,+BAAoB,EAAC,IAAI,CAAC,CAAC,CAAC;QAEjE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,+BAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,+CAAsB,CAC/B,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,6CAAW,GAAX,UAAY,MAAoB;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnD,OAAO,IAAI,6CAAqB,CAC9B,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IACH,8BAAC;AAAD,CAAC,AA1DD,IA0DC;AA1DY,0DAAuB"}
package/src/v4/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { PactV4Options, V4UnconfiguredInteraction } from './http/types';
2
2
  import { V4ConsumerPact } from './types';
3
- import { V4UnconfiguredSynchronousMessage } from './message/types';
3
+ import { V4UnconfiguredAsynchronousMessage, V4UnconfiguredSynchronousMessage } from './message/types';
4
+ import { V4UnconfiguredGraphQLInteraction } from './graphql/types';
4
5
  export declare class PactV4 implements V4ConsumerPact {
5
6
  private opts;
6
7
  private pact;
@@ -8,4 +9,9 @@ export declare class PactV4 implements V4ConsumerPact {
8
9
  setup(): void;
9
10
  addInteraction(): V4UnconfiguredInteraction;
10
11
  addSynchronousInteraction(description: string): V4UnconfiguredSynchronousMessage;
12
+ addAsynchronousInteraction(): V4UnconfiguredAsynchronousMessage;
13
+ addGraphQLInteraction(): V4UnconfiguredGraphQLInteraction;
11
14
  }
15
+ export { PactV4 as Pact, PactV4Options as PactOptions };
16
+ export * from './graphql';
17
+ export * from './message/index';
package/src/v4/index.js CHANGED
@@ -1,11 +1,27 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PactV4 = void 0;
17
+ exports.Pact = exports.PactV4 = void 0;
4
18
  var pact_core_1 = require("@pact-foundation/pact-core");
5
- var http_1 = require("./http");
19
+ var unconfiguredInteraction_1 = require("./http/unconfiguredInteraction");
6
20
  var package_json_1 = require("../../package.json");
7
21
  var message_1 = require("./message");
8
22
  var v3_1 = require("../v3");
23
+ var graphql_1 = require("./graphql");
24
+ var asynchronousMessage_1 = require("./message/asynchronousMessage");
9
25
  var PactV4 = /** @class */ (function () {
10
26
  function PactV4(opts) {
11
27
  this.opts = opts;
@@ -18,7 +34,7 @@ var PactV4 = /** @class */ (function () {
18
34
  };
19
35
  PactV4.prototype.addInteraction = function () {
20
36
  var _this = this;
21
- return new http_1.UnconfiguredInteraction(this.pact, this.pact.newInteraction(''), this.opts, function () {
37
+ return new unconfiguredInteraction_1.UnconfiguredInteraction(this.pact, this.pact.newInteraction(''), this.opts, function () {
22
38
  // This function needs to be called if the PactV4 object is to be re-used (commonly expected by users)
23
39
  // Because of the type-state model used here, it's a bit awkward as we need to thread this through
24
40
  // to children, ultimately to be called on the "executeTest" stage.
@@ -34,7 +50,28 @@ var PactV4 = /** @class */ (function () {
34
50
  _this.setup();
35
51
  });
36
52
  };
53
+ PactV4.prototype.addAsynchronousInteraction = function () {
54
+ var _this = this;
55
+ return new asynchronousMessage_1.UnconfiguredAsynchronousMessage(this.pact, this.pact.newAsynchronousMessage(''), this.opts, function () {
56
+ // This function needs to be called if the PactV4 object is to be re-used (commonly expected by users)
57
+ // Because of the type-state model used here, it's a bit awkward as we need to thread this through
58
+ // to children, ultimately to be called on the "executeTest" stage.
59
+ _this.setup();
60
+ });
61
+ };
62
+ PactV4.prototype.addGraphQLInteraction = function () {
63
+ var _this = this;
64
+ return new graphql_1.UnconfiguredGraphQLInteraction(this.pact, this.pact.newInteraction(''), this.opts, function () {
65
+ // This function needs to be called if the PactV4 object is to be re-used (commonly expected by users)
66
+ // Because of the type-state model used here, it's a bit awkward as we need to thread this through
67
+ // to children, ultimately to be called on the "executeTest" stage.
68
+ _this.setup();
69
+ });
70
+ };
37
71
  return PactV4;
38
72
  }());
39
73
  exports.PactV4 = PactV4;
74
+ exports.Pact = PactV4;
75
+ __exportStar(require("./graphql"), exports);
76
+ __exportStar(require("./message/index"), exports);
40
77
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/v4/index.ts"],"names":[],"mappings":";;;AAAA,wDAA4E;AAC5E,+BAAiD;AAGjD,mDAAmE;AAEnE,qCAA2D;AAC3D,4BAA6C;AAE7C;IAGE,gBAAoB,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;QACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,sBAAkB,CAAC,CAAC;IAClE,CAAC;IAED,sBAAK,GAAL;;QACE,IAAI,CAAC,IAAI,GAAG,IAAA,4BAAgB,EAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAClB,MAAA,IAAI,CAAC,IAAI,CAAC,IAAI,mCAAI,yBAAoB,CAAC,wBAAwB,EAC/D,MAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,mCAAI,MAAM,CAC7B,CAAC;IACJ,CAAC;IAED,+BAAc,GAAd;QAAA,iBAYC;QAXC,OAAO,IAAI,8BAAuB,CAChC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAC5B,IAAI,CAAC,IAAI,EACT;YACE,sGAAsG;YACtG,kGAAkG;YAClG,mEAAmE;YACnE,KAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CACF,CAAC;IACJ,CAAC;IAED,0CAAyB,GAAzB,UACE,WAAmB;QADrB,iBAcC;QAXC,OAAO,IAAI,wCAA8B,CACvC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAC5C,IAAI,CAAC,IAAI,EACT;YACE,sGAAsG;YACtG,kGAAkG;YAClG,mEAAmE;YACnE,KAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CACF,CAAC;IACJ,CAAC;IACH,aAAC;AAAD,CAAC,AA9CD,IA8CC;AA9CY,wBAAM"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/v4/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wDAA4E;AAC5E,0EAAyE;AAGzE,mDAAmE;AAKnE,qCAA2D;AAC3D,4BAA6C;AAE7C,qCAA2D;AAC3D,qEAAgF;AAEhF;IAGE,gBAAoB,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;QACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,sBAAkB,CAAC,CAAC;IAClE,CAAC;IAED,sBAAK,GAAL;;QACE,IAAI,CAAC,IAAI,GAAG,IAAA,4BAAgB,EAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAClB,MAAA,IAAI,CAAC,IAAI,CAAC,IAAI,mCAAI,yBAAoB,CAAC,wBAAwB,EAC/D,MAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,mCAAI,MAAM,CAC7B,CAAC;IACJ,CAAC;IAED,+BAAc,GAAd;QAAA,iBAYC;QAXC,OAAO,IAAI,iDAAuB,CAChC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAC5B,IAAI,CAAC,IAAI,EACT;YACE,sGAAsG;YACtG,kGAAkG;YAClG,mEAAmE;YACnE,KAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CACF,CAAC;IACJ,CAAC;IAED,0CAAyB,GAAzB,UACE,WAAmB;QADrB,iBAcC;QAXC,OAAO,IAAI,wCAA8B,CACvC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAC5C,IAAI,CAAC,IAAI,EACT;YACE,sGAAsG;YACtG,kGAAkG;YAClG,mEAAmE;YACnE,KAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CACF,CAAC;IACJ,CAAC;IAED,2CAA0B,GAA1B;QAAA,iBAYC;QAXC,OAAO,IAAI,qDAA+B,CACxC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,EACpC,IAAI,CAAC,IAAI,EACT;YACE,sGAAsG;YACtG,kGAAkG;YAClG,mEAAmE;YACnE,KAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CACF,CAAC;IACJ,CAAC;IAED,sCAAqB,GAArB;QAAA,iBAYC;QAXC,OAAO,IAAI,wCAA8B,CACvC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAC5B,IAAI,CAAC,IAAI,EACT;YACE,sGAAsG;YACtG,kGAAkG;YAClG,mEAAmE;YACnE,KAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CACF,CAAC;IACJ,CAAC;IACH,aAAC;AAAD,CAAC,AA1ED,IA0EC;AA1EY,wBAAM;AA4EA,sBAAI;AACvB,4CAA0B;AAC1B,kDAAgC"}
@@ -0,0 +1,68 @@
1
+ import { Metadata } from '../../dsl/message';
2
+ import { AnyJson, JsonMap } from '../../common/jsonTypes';
3
+ import { PluginConfig, AsynchronousMessage, TransportConfig, V4AsynchronousMessageWithPlugin, V4AsynchronousMessageWithPluginContents, V4AsynchronousMessageWithTransport, V4UnconfiguredAsynchronousMessage, V4AsynchronousMessageWithContent, V4AsynchronousMessageBuilderFunc, V4AsynchronousMessageBuilder } from './types';
4
+ import { AsynchronousMessage as PactCoreAsynchronousMessage, ConsumerPact } from '@pact-foundation/pact-core';
5
+ import { PactV4Options } from '../http/types';
6
+ type Message = {
7
+ requestIsBinary: boolean;
8
+ interaction: PactCoreAsynchronousMessage;
9
+ };
10
+ export declare class UnconfiguredAsynchronousMessage implements V4UnconfiguredAsynchronousMessage {
11
+ protected pact: ConsumerPact;
12
+ protected interaction: PactCoreAsynchronousMessage;
13
+ protected opts: PactV4Options;
14
+ protected cleanupFn: () => void;
15
+ protected message: Message;
16
+ constructor(pact: ConsumerPact, interaction: PactCoreAsynchronousMessage, opts: PactV4Options, cleanupFn: () => void);
17
+ expectsToReceive(description: string, builder: V4AsynchronousMessageBuilderFunc): AsynchronousMessageWithContent;
18
+ given(state: string, parameters?: JsonMap): V4UnconfiguredAsynchronousMessage;
19
+ usingPlugin(config: PluginConfig): V4AsynchronousMessageWithPlugin;
20
+ }
21
+ export declare class AsynchronousMessageWithPlugin implements V4AsynchronousMessageWithPlugin {
22
+ protected pact: ConsumerPact;
23
+ protected message: Message;
24
+ protected opts: PactV4Options;
25
+ protected cleanupFn: () => void;
26
+ constructor(pact: ConsumerPact, message: Message, opts: PactV4Options, cleanupFn: () => void);
27
+ expectsToReceive(description: string): V4AsynchronousMessageWithPlugin;
28
+ usingPlugin(config: PluginConfig): V4AsynchronousMessageWithPlugin;
29
+ withPluginContents(contents: string, contentType: string): V4AsynchronousMessageWithPluginContents;
30
+ }
31
+ export declare class AsynchronousMessageBuilder implements V4AsynchronousMessageBuilder {
32
+ protected pact: ConsumerPact;
33
+ protected message: Message;
34
+ protected opts: PactV4Options;
35
+ constructor(pact: ConsumerPact, message: Message, opts: PactV4Options);
36
+ withMetadata(metadata: Metadata): V4AsynchronousMessageBuilder;
37
+ withContent(contentType: string, body: Buffer): V4AsynchronousMessageBuilder;
38
+ withJSONContent(content: unknown): V4AsynchronousMessageBuilder;
39
+ }
40
+ export declare class AsynchronousMessageWithContent implements V4AsynchronousMessageWithContent {
41
+ protected pact: ConsumerPact;
42
+ protected message: Message;
43
+ protected opts: PactV4Options;
44
+ protected cleanupFn: () => void;
45
+ constructor(pact: ConsumerPact, message: Message, opts: PactV4Options, cleanupFn: () => void);
46
+ executeTest<T>(integrationTest: (m: AsynchronousMessage) => Promise<T>): Promise<T | undefined>;
47
+ }
48
+ export declare class AsynchronousMessageWithPluginContents implements V4AsynchronousMessageWithPluginContents {
49
+ protected pact: ConsumerPact;
50
+ protected message: Message;
51
+ protected opts: PactV4Options;
52
+ protected cleanupFn: () => void;
53
+ constructor(pact: ConsumerPact, message: Message, opts: PactV4Options, cleanupFn: () => void);
54
+ executeTest<T>(integrationTest: (m: AsynchronousMessage) => Promise<T>): Promise<T | undefined>;
55
+ startTransport(transport: string, address: string, // IP Address or hostname
56
+ config?: AnyJson): V4AsynchronousMessageWithTransport;
57
+ }
58
+ export declare class AsynchronousMessageWithTransport implements V4AsynchronousMessageWithTransport {
59
+ protected pact: ConsumerPact;
60
+ protected message: Message;
61
+ protected opts: PactV4Options;
62
+ protected port: number;
63
+ protected address: string;
64
+ protected cleanupFn: () => void;
65
+ constructor(pact: ConsumerPact, message: Message, opts: PactV4Options, port: number, address: string, cleanupFn: () => void);
66
+ executeTest<T>(integrationTest: (tc: TransportConfig, m: AsynchronousMessage) => Promise<T>): Promise<T | undefined>;
67
+ }
68
+ export {};
@@ -0,0 +1,278 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
13
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.AsynchronousMessageWithTransport = exports.AsynchronousMessageWithPluginContents = exports.AsynchronousMessageWithContent = exports.AsynchronousMessageBuilder = exports.AsynchronousMessageWithPlugin = exports.UnconfiguredAsynchronousMessage = void 0;
43
+ var ramda_1 = require("ramda");
44
+ var configurationError_1 = __importDefault(require("../../errors/configurationError"));
45
+ var display_1 = require("../../v3/display");
46
+ var logger_1 = __importDefault(require("../../common/logger"));
47
+ var defaultPactDir = './pacts';
48
+ var UnconfiguredAsynchronousMessage = /** @class */ (function () {
49
+ function UnconfiguredAsynchronousMessage(pact, interaction, opts, cleanupFn) {
50
+ this.pact = pact;
51
+ this.interaction = interaction;
52
+ this.opts = opts;
53
+ this.cleanupFn = cleanupFn;
54
+ this.message = {
55
+ requestIsBinary: false,
56
+ interaction: this.interaction,
57
+ };
58
+ }
59
+ UnconfiguredAsynchronousMessage.prototype.expectsToReceive = function (description, builder) {
60
+ this.interaction.expectsToReceive(description);
61
+ builder(new AsynchronousMessageBuilder(this.pact, this.message, this.opts));
62
+ return new AsynchronousMessageWithContent(this.pact, this.message, this.opts, this.cleanupFn);
63
+ };
64
+ UnconfiguredAsynchronousMessage.prototype.given = function (state, parameters) {
65
+ if (parameters) {
66
+ this.message.interaction.givenWithParams(state, JSON.stringify(parameters));
67
+ }
68
+ else {
69
+ this.message.interaction.given(state);
70
+ }
71
+ return this;
72
+ };
73
+ UnconfiguredAsynchronousMessage.prototype.usingPlugin = function (config) {
74
+ this.pact.addPlugin(config.plugin, config.version);
75
+ return new AsynchronousMessageWithPlugin(this.pact, this.message, this.opts, this.cleanupFn);
76
+ };
77
+ return UnconfiguredAsynchronousMessage;
78
+ }());
79
+ exports.UnconfiguredAsynchronousMessage = UnconfiguredAsynchronousMessage;
80
+ var AsynchronousMessageWithPlugin = /** @class */ (function () {
81
+ function AsynchronousMessageWithPlugin(pact, message, opts, cleanupFn) {
82
+ this.pact = pact;
83
+ this.message = message;
84
+ this.opts = opts;
85
+ this.cleanupFn = cleanupFn;
86
+ }
87
+ AsynchronousMessageWithPlugin.prototype.expectsToReceive = function (description) {
88
+ this.message.interaction.expectsToReceive(description);
89
+ return this;
90
+ };
91
+ AsynchronousMessageWithPlugin.prototype.usingPlugin = function (config) {
92
+ this.pact.addPlugin(config.plugin, config.version);
93
+ return this;
94
+ };
95
+ AsynchronousMessageWithPlugin.prototype.withPluginContents = function (contents, contentType) {
96
+ this.message.interaction.withPluginRequestInteractionContents(contentType, contents);
97
+ return new AsynchronousMessageWithPluginContents(this.pact, this.message, this.opts, this.cleanupFn);
98
+ };
99
+ return AsynchronousMessageWithPlugin;
100
+ }());
101
+ exports.AsynchronousMessageWithPlugin = AsynchronousMessageWithPlugin;
102
+ var AsynchronousMessageBuilder = /** @class */ (function () {
103
+ function AsynchronousMessageBuilder(pact, message, opts) {
104
+ this.pact = pact;
105
+ this.message = message;
106
+ this.opts = opts;
107
+ }
108
+ AsynchronousMessageBuilder.prototype.withMetadata = function (metadata) {
109
+ var _this = this;
110
+ if ((0, ramda_1.isEmpty)(metadata)) {
111
+ throw new configurationError_1.default('You must provide valid metadata for the Message, or none at all');
112
+ }
113
+ (0, ramda_1.forEachObjIndexed)(function (v, k) {
114
+ _this.message.interaction.withMetadata("".concat(k), JSON.stringify(v));
115
+ }, metadata);
116
+ return this;
117
+ };
118
+ AsynchronousMessageBuilder.prototype.withContent = function (contentType, body) {
119
+ this.message.interaction.withBinaryContents(body, contentType);
120
+ this.message.requestIsBinary = true;
121
+ return this;
122
+ };
123
+ AsynchronousMessageBuilder.prototype.withJSONContent = function (content) {
124
+ if ((0, ramda_1.isEmpty)(content)) {
125
+ throw new configurationError_1.default('You must provide a valid JSON document or primitive for the Message.');
126
+ }
127
+ this.message.interaction.withContents(JSON.stringify(content), 'application/json');
128
+ return this;
129
+ };
130
+ return AsynchronousMessageBuilder;
131
+ }());
132
+ exports.AsynchronousMessageBuilder = AsynchronousMessageBuilder;
133
+ var AsynchronousMessageWithContent = /** @class */ (function () {
134
+ function AsynchronousMessageWithContent(pact, message, opts, cleanupFn) {
135
+ this.pact = pact;
136
+ this.message = message;
137
+ this.opts = opts;
138
+ this.cleanupFn = cleanupFn;
139
+ }
140
+ AsynchronousMessageWithContent.prototype.executeTest = function (integrationTest) {
141
+ return executeNonTransportTest(this.pact, this.opts, this.message, integrationTest, this.cleanupFn);
142
+ };
143
+ return AsynchronousMessageWithContent;
144
+ }());
145
+ exports.AsynchronousMessageWithContent = AsynchronousMessageWithContent;
146
+ var AsynchronousMessageWithPluginContents = /** @class */ (function () {
147
+ function AsynchronousMessageWithPluginContents(pact, message, opts, cleanupFn) {
148
+ this.pact = pact;
149
+ this.message = message;
150
+ this.opts = opts;
151
+ this.cleanupFn = cleanupFn;
152
+ }
153
+ AsynchronousMessageWithPluginContents.prototype.executeTest = function (integrationTest) {
154
+ return executeNonTransportTest(this.pact, this.opts, this.message, integrationTest, this.cleanupFn);
155
+ };
156
+ AsynchronousMessageWithPluginContents.prototype.startTransport = function (transport, address, // IP Address or hostname
157
+ config) {
158
+ var port = this.pact.pactffiCreateMockServerForTransport(address, transport, config ? JSON.stringify(config) : '');
159
+ return new AsynchronousMessageWithTransport(this.pact, this.message, this.opts, port, address, this.cleanupFn);
160
+ };
161
+ return AsynchronousMessageWithPluginContents;
162
+ }());
163
+ exports.AsynchronousMessageWithPluginContents = AsynchronousMessageWithPluginContents;
164
+ var AsynchronousMessageWithTransport = /** @class */ (function () {
165
+ function AsynchronousMessageWithTransport(pact, message, opts, port, address, cleanupFn) {
166
+ this.pact = pact;
167
+ this.message = message;
168
+ this.opts = opts;
169
+ this.port = port;
170
+ this.address = address;
171
+ this.cleanupFn = cleanupFn;
172
+ }
173
+ // TODO: this is basically the same as the HTTP variant, except only with a different test function wrapper
174
+ // extract these into smaller, testable chunks and re-use them
175
+ AsynchronousMessageWithTransport.prototype.executeTest = function (integrationTest) {
176
+ return __awaiter(this, void 0, void 0, function () {
177
+ var val, error, e_1, matchingResults, errors, success, errorMessage;
178
+ return __generator(this, function (_a) {
179
+ switch (_a.label) {
180
+ case 0:
181
+ _a.trys.push([0, 2, , 3]);
182
+ return [4 /*yield*/, integrationTest({ port: this.port, address: this.address }, {})];
183
+ case 1:
184
+ // TODO: need to pull this body from the plugin interaction
185
+ val = _a.sent();
186
+ return [3 /*break*/, 3];
187
+ case 2:
188
+ e_1 = _a.sent();
189
+ error = e_1;
190
+ return [3 /*break*/, 3];
191
+ case 3:
192
+ matchingResults = this.pact.mockServerMismatches(this.port);
193
+ errors = (0, display_1.filterMissingFeatureFlag)(matchingResults);
194
+ success = this.pact.mockServerMatchedSuccessfully(this.port);
195
+ // Scenario: Pact validation failed
196
+ if (!success && errors.length > 0) {
197
+ errorMessage = 'Test failed for the following reasons:';
198
+ errorMessage += "\n\n ".concat((0, display_1.generateMockServerError)(matchingResults, '\t'));
199
+ cleanup(false, this.pact, this.opts, this.cleanupFn, this.port, true);
200
+ // If the tests throws an error, we need to rethrow the error, but print out
201
+ // any additional mock server errors to help the user understand what happened
202
+ // (The proximate cause here is often the HTTP 500 from the mock server,
203
+ // where the HTTP client then throws)
204
+ if (error) {
205
+ logger_1.default.error(errorMessage);
206
+ throw error;
207
+ }
208
+ // Test didn't throw, so we need to ensure the test fails
209
+ return [2 /*return*/, Promise.reject(new Error(errorMessage))];
210
+ }
211
+ // Scenario: test threw an error, but Pact validation was OK (error in client or test)
212
+ if (error) {
213
+ cleanup(false, this.pact, this.opts, this.cleanupFn, this.port, true);
214
+ throw error;
215
+ }
216
+ // Scenario: Pact validation passed, test didn't throw - return the callback value
217
+ cleanup(true, this.pact, this.opts, this.cleanupFn, this.port, true);
218
+ return [2 /*return*/, val];
219
+ }
220
+ });
221
+ });
222
+ };
223
+ return AsynchronousMessageWithTransport;
224
+ }());
225
+ exports.AsynchronousMessageWithTransport = AsynchronousMessageWithTransport;
226
+ var cleanup = function (success, pact, opts, cleanupFn, port, transport) {
227
+ if (transport === void 0) { transport = false; }
228
+ if (success) {
229
+ if (transport && port) {
230
+ pact.writePactFileForPluginServer(port, opts.dir || defaultPactDir, true);
231
+ }
232
+ else {
233
+ pact.writePactFile(opts.dir || defaultPactDir);
234
+ }
235
+ }
236
+ if (port) {
237
+ pact.cleanupMockServer(port);
238
+ }
239
+ pact.cleanupPlugins();
240
+ cleanupFn();
241
+ };
242
+ var executeNonTransportTest = function (pact, opts, message, integrationTest, cleanupFn) { return __awaiter(void 0, void 0, void 0, function () {
243
+ var val, error, rawInteraction, _a, content, contentType, encoded, m, e_2;
244
+ return __generator(this, function (_b) {
245
+ switch (_b.label) {
246
+ case 0:
247
+ _b.trys.push([0, 2, , 3]);
248
+ rawInteraction = JSON.parse(message.interaction.reifyMessage());
249
+ _a = rawInteraction.contents, content = _a.content, contentType = _a.contentType, encoded = _a.encoded;
250
+ m = {
251
+ contents: {
252
+ content: !message.requestIsBinary
253
+ ? content
254
+ : Buffer.from(content, 'base64'),
255
+ },
256
+ metadata: rawInteraction.metadata,
257
+ };
258
+ return [4 /*yield*/, integrationTest(m)];
259
+ case 1:
260
+ val = _b.sent();
261
+ return [3 /*break*/, 3];
262
+ case 2:
263
+ e_2 = _b.sent();
264
+ error = e_2;
265
+ return [3 /*break*/, 3];
266
+ case 3:
267
+ // Scenario: test threw an error, but Pact validation was OK (error in client or test)
268
+ if (error) {
269
+ cleanup(false, pact, opts, cleanupFn);
270
+ throw error;
271
+ }
272
+ // Scenario: Pact validation passed, test didn't throw - return the callback value
273
+ cleanup(true, pact, opts, cleanupFn);
274
+ return [2 /*return*/, val];
275
+ }
276
+ });
277
+ }); };
278
+ //# sourceMappingURL=asynchronousMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asynchronousMessage.js","sourceRoot":"","sources":["../../../../src/v4/message/asynchronousMessage.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Metadata } from '../../dsl/message';
2
2
  import { AnyJson, JsonMap } from '../../common/jsonTypes';
3
- import { PluginConfig, SynchronousMessage, TransportConfig, V4MessagePluginRequestBuilderFunc, V4MessagePluginResponseBuilderFunc, V4SynchronousMessageWithPlugin, V4SynchronousMessageWithPluginContents, V4SynchronousMessageWithRequest, V4SynchronousMessageWithRequestBuilder, V4SynchronousMessageWithResponse, V4SynchronousMessageWithResponseBuilder, V4SynchronousMessageWithTransport, V4UnconfiguredSynchronousMessage } from './types';
3
+ import { PluginConfig, SynchronousMessage, AsynchronousMessage as ConcreteMessage, TransportConfig, V4MessageRequestBuilderFunc, V4MessageResponseBuilderFunc, V4SynchronousMessageWithPlugin, V4SynchronousMessageWithPluginContents, V4SynchronousMessageWithRequest, V4SynchronousMessageWithRequestBuilder, V4SynchronousMessageWithResponse, V4SynchronousMessageWithResponseBuilder, V4SynchronousMessageWithTransport, V4UnconfiguredSynchronousMessage } from './types';
4
4
  import { SynchronousMessage as PactCoreSynchronousMessage, ConsumerPact } from '@pact-foundation/pact-core';
5
5
  import { PactV4Options } from '../http/types';
6
6
  export declare class UnconfiguredSynchronousMessage implements V4UnconfiguredSynchronousMessage {
@@ -11,7 +11,7 @@ export declare class UnconfiguredSynchronousMessage implements V4UnconfiguredSyn
11
11
  constructor(pact: ConsumerPact, interaction: PactCoreSynchronousMessage, opts: PactV4Options, cleanupFn: () => void);
12
12
  given(state: string, parameters?: JsonMap): V4UnconfiguredSynchronousMessage;
13
13
  usingPlugin(config: PluginConfig): V4SynchronousMessageWithPlugin;
14
- withRequest(r: V4MessagePluginRequestBuilderFunc): V4SynchronousMessageWithRequest;
14
+ withRequest(builder: V4MessageRequestBuilderFunc): V4SynchronousMessageWithRequest;
15
15
  }
16
16
  export declare class SynchronousMessageWithPlugin implements V4SynchronousMessageWithPlugin {
17
17
  protected pact: ConsumerPact;
@@ -36,7 +36,7 @@ export declare class SynchronousMessageWithRequest implements V4SynchronousMessa
36
36
  protected opts: PactV4Options;
37
37
  protected cleanupFn: () => void;
38
38
  constructor(pact: ConsumerPact, interaction: PactCoreSynchronousMessage, opts: PactV4Options, cleanupFn: () => void);
39
- withResponse(builder: V4MessagePluginResponseBuilderFunc): V4SynchronousMessageWithResponse;
39
+ withResponse(builder: V4MessageResponseBuilderFunc): V4SynchronousMessageWithResponse;
40
40
  }
41
41
  export declare class SynchronousMessageWithResponseBuilder implements V4SynchronousMessageWithResponseBuilder {
42
42
  protected pact: ConsumerPact;
@@ -75,3 +75,13 @@ export declare class SynchronousMessageWithResponse implements V4SynchronousMess
75
75
  constructor(pact: ConsumerPact, interaction: PactCoreSynchronousMessage, opts: PactV4Options, cleanupFn: () => void);
76
76
  executeTest<T>(integrationTest: (m: SynchronousMessage) => Promise<T>): Promise<T | undefined>;
77
77
  }
78
+ /**
79
+ * A Message Consumer is a function that will receive a message
80
+ * from a given Message Provider. It is given the full Message
81
+ * context during verification.
82
+ *
83
+ * @module Message
84
+ */
85
+ export type V4MessageConsumer = (m: ConcreteMessage) => Promise<unknown>;
86
+ export declare function v4SynchronousBodyHandler<R>(handler: (body: AnyJson | Buffer) => R): V4MessageConsumer;
87
+ export declare function v4AsynchronousBodyHandler<R>(handler: (body: AnyJson | Buffer) => Promise<R>): V4MessageConsumer;