@pact-foundation/pact-core 13.4.1-beta.14 → 13.4.1-beta.15

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 (121) hide show
  1. package/bin/pact-broker.d.ts +2 -0
  2. package/bin/pact-broker.js +10 -0
  3. package/bin/pact-broker.js.map +1 -0
  4. package/bin/pact-message.d.ts +2 -0
  5. package/bin/pact-message.js +10 -0
  6. package/bin/pact-message.js.map +1 -0
  7. package/bin/pact-mock-service.d.ts +2 -0
  8. package/bin/pact-mock-service.js +8 -0
  9. package/bin/pact-mock-service.js.map +1 -0
  10. package/bin/pact-provider-verifier.d.ts +2 -0
  11. package/bin/pact-provider-verifier.js +10 -0
  12. package/bin/pact-provider-verifier.js.map +1 -0
  13. package/bin/pact-stub-service.d.ts +2 -0
  14. package/bin/pact-stub-service.js +10 -0
  15. package/bin/pact-stub-service.js.map +1 -0
  16. package/bin/pact.d.ts +2 -0
  17. package/bin/pact.js +10 -0
  18. package/bin/pact.js.map +1 -0
  19. package/ffi/libpact_ffi.so.gz +0 -0
  20. package/ffi/pact.h +171 -177
  21. package/package.json +2 -2
  22. package/src/can-deploy.d.ts +49 -0
  23. package/src/can-deploy.js +148 -0
  24. package/src/can-deploy.js.map +1 -0
  25. package/src/consumer/__testoutput__/foo-consumer-bar-provider.json +2 -2
  26. package/src/consumer/checkErrors.d.ts +7 -0
  27. package/src/consumer/checkErrors.js +41 -0
  28. package/src/consumer/checkErrors.js.map +1 -0
  29. package/src/consumer/index.d.ts +4 -0
  30. package/src/consumer/index.js +145 -0
  31. package/src/consumer/index.js.map +1 -0
  32. package/src/consumer/types.d.ts +109 -0
  33. package/src/consumer/types.js +3 -0
  34. package/src/consumer/types.js.map +1 -0
  35. package/src/ffi/index.d.ts +7 -0
  36. package/src/ffi/index.js +32 -0
  37. package/src/ffi/index.js.map +1 -0
  38. package/src/ffi/internals/index.d.ts +2 -0
  39. package/src/ffi/internals/index.js +41 -0
  40. package/src/ffi/internals/index.js.map +1 -0
  41. package/src/ffi/types.d.ts +81 -0
  42. package/src/ffi/types.js +50 -0
  43. package/src/ffi/types.js.map +1 -0
  44. package/src/index.d.ts +11 -0
  45. package/src/index.js +25 -0
  46. package/src/index.js.map +1 -0
  47. package/src/logger/crashMessage.d.ts +1 -0
  48. package/src/logger/crashMessage.js +6 -0
  49. package/src/logger/crashMessage.js.map +1 -0
  50. package/src/logger/index.d.ts +16 -0
  51. package/src/logger/index.js +63 -0
  52. package/src/logger/index.js.map +1 -0
  53. package/src/logger/pino.d.ts +3 -0
  54. package/src/logger/pino.js +14 -0
  55. package/src/logger/pino.js.map +1 -0
  56. package/src/logger/types.d.ts +9 -0
  57. package/src/logger/types.js +3 -0
  58. package/src/logger/types.js.map +1 -0
  59. package/src/message.d.ts +16 -0
  60. package/src/message.js +96 -0
  61. package/src/message.js.map +1 -0
  62. package/src/pact-environment.d.ts +6 -0
  63. package/src/pact-environment.js +23 -0
  64. package/src/pact-environment.js.map +1 -0
  65. package/src/pact-standalone.d.ts +18 -0
  66. package/src/pact-standalone.js +44 -0
  67. package/src/pact-standalone.js.map +1 -0
  68. package/src/pact.d.ts +27 -0
  69. package/src/pact.js +120 -0
  70. package/src/pact.js.map +1 -0
  71. package/src/publisher.d.ts +20 -0
  72. package/src/publisher.js +99 -0
  73. package/src/publisher.js.map +1 -0
  74. package/src/server.d.ts +25 -0
  75. package/src/server.js +96 -0
  76. package/src/server.js.map +1 -0
  77. package/src/service.d.ts +46 -0
  78. package/src/service.js +252 -0
  79. package/src/service.js.map +1 -0
  80. package/src/spawn/arguments.d.ts +20 -0
  81. package/src/spawn/arguments.js +48 -0
  82. package/src/spawn/arguments.js.map +1 -0
  83. package/src/spawn/index.d.ts +2 -0
  84. package/src/spawn/index.js +17 -0
  85. package/src/spawn/index.js.map +1 -0
  86. package/src/spawn/spawn.d.ts +12 -0
  87. package/src/spawn/spawn.js +78 -0
  88. package/src/spawn/spawn.js.map +1 -0
  89. package/src/stub.d.ts +20 -0
  90. package/src/stub.js +51 -0
  91. package/src/stub.js.map +1 -0
  92. package/src/verifier/argumentMapper/arguments.d.ts +5 -0
  93. package/src/verifier/argumentMapper/arguments.js +103 -0
  94. package/src/verifier/argumentMapper/arguments.js.map +1 -0
  95. package/src/verifier/argumentMapper/index.d.ts +1 -0
  96. package/src/verifier/argumentMapper/index.js +63 -0
  97. package/src/verifier/argumentMapper/index.js.map +1 -0
  98. package/src/verifier/argumentMapper/types.d.ts +1 -0
  99. package/src/verifier/argumentMapper/types.js +3 -0
  100. package/src/verifier/argumentMapper/types.js.map +1 -0
  101. package/src/verifier/filesystem/index.d.ts +2 -0
  102. package/src/verifier/filesystem/index.js +24 -0
  103. package/src/verifier/filesystem/index.js.map +1 -0
  104. package/src/verifier/filesystem/types.d.ts +1 -0
  105. package/src/verifier/filesystem/types.js +3 -0
  106. package/src/verifier/filesystem/types.js.map +1 -0
  107. package/src/verifier/index.d.ts +8 -0
  108. package/src/verifier/index.js +31 -0
  109. package/src/verifier/index.js.map +1 -0
  110. package/src/verifier/nativeVerifier.d.ts +2 -0
  111. package/src/verifier/nativeVerifier.js +152 -0
  112. package/src/verifier/nativeVerifier.js.map +1 -0
  113. package/src/verifier/types.d.ts +54 -0
  114. package/src/verifier/types.js +3 -0
  115. package/src/verifier/types.js.map +1 -0
  116. package/src/verifier/validateOptions.d.ts +2 -0
  117. package/src/verifier/validateOptions.js +132 -0
  118. package/src/verifier/validateOptions.js.map +1 -0
  119. package/standalone/install.d.ts +32 -0
  120. package/standalone/install.js +96 -0
  121. package/standalone/install.js.map +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pact-foundation/pact-core",
3
- "version": "13.4.1-beta.14",
3
+ "version": "13.4.1-beta.15",
4
4
  "description": "Core of @pact-foundation/pact. You almost certainly don't want to depend on this directly.",
5
5
  "main": "src/index.js",
6
6
  "homepage": "https://github.com/pact-foundation/pact-js-core#readme",
@@ -121,7 +121,7 @@
121
121
  "build": "tsc",
122
122
  "prerelease": "npm run snyk-protect",
123
123
  "release": "standard-version",
124
- "test": "cross-env LOGLEVEL=debug PACT_DO_NOT_TRACK=true mocha \"{src,test,bin,standalone}/**/*.spec.ts\" && jest",
124
+ "test": "cross-env LOGLEVEL=debug mocha \"{src,test,bin,standalone}/**/*.spec.ts\" && jest",
125
125
  "snyk-protect": "snyk protect",
126
126
  "format:base": "prettier --parser typescript",
127
127
  "format:check": "npm run format:base -- --list-different \"{src,standalone,bin,test}/**/*.{ts,tsx}\"",
@@ -0,0 +1,49 @@
1
+ export declare class CannotDeployError extends Error {
2
+ output: CanDeployResponse | string;
3
+ constructor(output: CanDeployResponse | string);
4
+ }
5
+ export declare class CanDeploy {
6
+ static convertForSpawnBinary(options: CanDeployOptions): CanDeployOptions[];
7
+ readonly options: CanDeployOptions;
8
+ private readonly __argMapping;
9
+ constructor(options: CanDeployOptions);
10
+ canDeploy(): Promise<CanDeployResponse | string>;
11
+ }
12
+ declare const _default: (options: CanDeployOptions) => CanDeploy;
13
+ export default _default;
14
+ export interface CanDeployPacticipant {
15
+ name: string;
16
+ version?: string;
17
+ latest?: string | boolean;
18
+ }
19
+ export interface CanDeployOptions {
20
+ pacticipants: CanDeployPacticipant[];
21
+ pactBroker: string;
22
+ pactBrokerToken?: string;
23
+ pactBrokerUsername?: string;
24
+ pactBrokerPassword?: string;
25
+ output?: 'json' | 'table';
26
+ verbose?: boolean;
27
+ to?: string;
28
+ retryWhileUnknown?: number;
29
+ retryInterval?: number;
30
+ timeout?: number;
31
+ }
32
+ export interface CanDeployResponse {
33
+ summary: {
34
+ deployable: boolean;
35
+ reason: string;
36
+ unknown: number;
37
+ };
38
+ matrix: Array<{
39
+ consumer: CanDeployPacticipant;
40
+ provider: CanDeployPacticipant;
41
+ verificationResult: {
42
+ verifiedAt: string;
43
+ success: boolean;
44
+ };
45
+ pact: {
46
+ createdAt: string;
47
+ };
48
+ }>;
49
+ }
@@ -0,0 +1,148 @@
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
+ var __spreadArray = (this && this.__spreadArray) || function (to, from) {
18
+ for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
19
+ to[j] = from[i];
20
+ return to;
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.CanDeploy = exports.CannotDeployError = void 0;
24
+ var logger_1 = require("./logger");
25
+ var spawn_1 = require("./spawn");
26
+ var pact_standalone_1 = require("./pact-standalone");
27
+ var promise_timeout_1 = require("promise-timeout");
28
+ var spawn_2 = require("./spawn");
29
+ var _ = require("underscore");
30
+ var checkTypes = require("check-types");
31
+ var CannotDeployError = (function (_super) {
32
+ __extends(CannotDeployError, _super);
33
+ function CannotDeployError(output) {
34
+ var _this = _super.call(this, 'can-i-deploy result: it is not safe to deploy') || this;
35
+ _this.name = 'CannotDeployError';
36
+ _this.output = output;
37
+ return _this;
38
+ }
39
+ return CannotDeployError;
40
+ }(Error));
41
+ exports.CannotDeployError = CannotDeployError;
42
+ var CanDeploy = (function () {
43
+ function CanDeploy(options) {
44
+ this.__argMapping = {
45
+ name: '--pacticipant',
46
+ version: '--version',
47
+ latest: '--latest',
48
+ to: '--to',
49
+ pactBroker: '--broker-base-url',
50
+ pactBrokerToken: '--broker-token',
51
+ pactBrokerUsername: '--broker-username',
52
+ pactBrokerPassword: '--broker-password',
53
+ output: '--output',
54
+ verbose: '--verbose',
55
+ retryWhileUnknown: '--retry-while-unknown',
56
+ retryInterval: '--retry-interval',
57
+ };
58
+ options = options || {};
59
+ options.timeout = options.timeout || 60000;
60
+ if (!options.output) {
61
+ options.output = 'json';
62
+ }
63
+ checkTypes.assert.nonEmptyArray(options.pacticipants, 'Must provide at least one pacticipant');
64
+ checkTypes.assert.nonEmptyString(options.pactBroker, 'Must provide the pactBroker argument');
65
+ options.pactBrokerToken !== undefined &&
66
+ checkTypes.assert.nonEmptyString(options.pactBrokerToken);
67
+ options.pactBrokerUsername !== undefined &&
68
+ checkTypes.assert.string(options.pactBrokerUsername);
69
+ options.pactBrokerPassword !== undefined &&
70
+ checkTypes.assert.string(options.pactBrokerPassword);
71
+ if (options.verbose === undefined && logger_1.verboseIsImplied()) {
72
+ options.verbose = true;
73
+ }
74
+ if ((options.pactBrokerUsername && !options.pactBrokerPassword) ||
75
+ (options.pactBrokerPassword && !options.pactBrokerUsername)) {
76
+ throw new Error('Must provide both Pact Broker username and password. None needed if authentication on Broker is disabled.');
77
+ }
78
+ this.options = options;
79
+ }
80
+ CanDeploy.convertForSpawnBinary = function (options) {
81
+ return _.flatten([_.omit(options, 'pacticipants')].concat(options.pacticipants.map(function (_a) {
82
+ var name = _a.name, latest = _a.latest, version = _a.version;
83
+ return [
84
+ { name: name },
85
+ version
86
+ ? { version: version }
87
+ : {
88
+ latest: latest === true ? spawn_2.PACT_NODE_NO_VALUE : latest,
89
+ },
90
+ ];
91
+ })));
92
+ };
93
+ CanDeploy.prototype.canDeploy = function () {
94
+ var _this = this;
95
+ logger_1.default.info("Asking broker at " + this.options.pactBroker + " if it is possible to deploy");
96
+ var canDeployPromise = new Promise(function (resolve, reject) {
97
+ var instance = spawn_1.default.spawnBinary(pact_standalone_1.default.brokerFullPath, __spreadArray([
98
+ { cliVerb: 'can-i-deploy' }
99
+ ], CanDeploy.convertForSpawnBinary(_this.options)), _this.__argMapping);
100
+ var output = [];
101
+ instance.stdout.on('data', function (l) { return output.push(l); });
102
+ instance.stderr.on('data', function (l) { return output.push(l); });
103
+ instance.once('close', function (code) {
104
+ var result = output.join('\n');
105
+ if (_this.options.output === 'json') {
106
+ try {
107
+ var startIndex = output.findIndex(function (l) {
108
+ return l.toString().startsWith('{');
109
+ });
110
+ if (startIndex === -1) {
111
+ logger_1.default.error("can-i-deploy produced no json output:\n" + result);
112
+ return reject(new Error(result));
113
+ }
114
+ if (startIndex !== 0) {
115
+ logger_1.default.warn("can-i-deploy produced additional output: \n" + output.slice(0, startIndex));
116
+ }
117
+ var jsonPart = output.slice(startIndex).join('\n');
118
+ var parsed = JSON.parse(jsonPart);
119
+ if (code === 0 && parsed.summary.deployable) {
120
+ return resolve(parsed);
121
+ }
122
+ return reject(new CannotDeployError(parsed));
123
+ }
124
+ catch (e) {
125
+ logger_1.default.error("can-i-deploy produced non-json output:\n" + result);
126
+ return reject(new Error(result));
127
+ }
128
+ }
129
+ if (code === 0) {
130
+ logger_1.default.info(result);
131
+ return resolve(result);
132
+ }
133
+ logger_1.default.error("can-i-deploy did not return success message:\n" + result);
134
+ return reject(new CannotDeployError(result));
135
+ });
136
+ });
137
+ return promise_timeout_1.timeout(canDeployPromise, this.options.timeout).catch(function (err) {
138
+ if (err instanceof promise_timeout_1.TimeoutError) {
139
+ throw new Error("Timeout waiting for publication process to complete");
140
+ }
141
+ throw err;
142
+ });
143
+ };
144
+ return CanDeploy;
145
+ }());
146
+ exports.CanDeploy = CanDeploy;
147
+ exports.default = (function (options) { return new CanDeploy(options); });
148
+ //# sourceMappingURL=can-deploy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"can-deploy.js","sourceRoot":"","sources":["can-deploy.ts"],"names":[],"mappings":"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"}
@@ -158,9 +158,9 @@
158
158
  }
159
159
  ],
160
160
  "request": {
161
- "body": "--HAccnP0ZKLch6X32\r\nContent-Disposition: form-data; name=\"my_file\"; filename=\"monkeypatch.rb\"\r\nContent-Type: application/octet-stream\r\n\r\ndef Filelock(lockname, options = {}, &block)\n puts \"Opening file without filelock\"\n File.open(lockname, File::RDWR|File::CREAT, 0644) do |file|\n Timeout::timeout(options.fetch(:timeout, 60), Filelock::ExecTimeout) { yield file }\n end\nend\n\r\n--HAccnP0ZKLch6X32--\r\n",
161
+ "body": "--IEjqZmKewwP67TvL\r\nContent-Disposition: form-data; name=\"my_file\"; filename=\"monkeypatch.rb\"\r\nContent-Type: application/octet-stream\r\n\r\ndef Filelock(lockname, options = {}, &block)\n puts \"Opening file without filelock\"\n File.open(lockname, File::RDWR|File::CREAT, 0644) do |file|\n Timeout::timeout(options.fetch(:timeout, 60), Filelock::ExecTimeout) { yield file }\n end\nend\n\r\n--IEjqZmKewwP67TvL--\r\n",
162
162
  "headers": {
163
- "Content-Type": "multipart/form-data; boundary=HAccnP0ZKLch6X32",
163
+ "Content-Type": "multipart/form-data; boundary=IEjqZmKewwP67TvL",
164
164
  "x-special-header": "header"
165
165
  },
166
166
  "matchingRules": {
@@ -0,0 +1,7 @@
1
+ export declare const wrapWithCheck: <F extends (...args: never[]) => boolean>(f: BooleanFunction<F>, contextMessage: string) => (...args: Parameters<F>) => boolean;
2
+ declare type BooleanFunction<T> = T extends (...args: infer A) => boolean ? (...args: A) => boolean : never;
3
+ declare type BooleanFunctions<T> = {
4
+ [key in keyof T]: BooleanFunction<T[key]>;
5
+ };
6
+ export declare const wrapAllWithCheck: <T extends BooleanFunctions<T>>(o: T) => BooleanFunctions<T>;
7
+ export {};
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.wrapAllWithCheck = exports.wrapWithCheck = void 0;
15
+ var logger_1 = require("../logger");
16
+ var wrapWithCheck = function (f, contextMessage) {
17
+ return function () {
18
+ var args = [];
19
+ for (var _i = 0; _i < arguments.length; _i++) {
20
+ args[_i] = arguments[_i];
21
+ }
22
+ var result = f.apply(void 0, args);
23
+ if (!result) {
24
+ logger_1.default.pactCrash("The pact consumer core returned false at '" + contextMessage + "'. This\nshould only happen if the core methods were invoked out of order");
25
+ }
26
+ return result;
27
+ };
28
+ };
29
+ exports.wrapWithCheck = wrapWithCheck;
30
+ var wrapAllWithCheck = function (o) {
31
+ return Object.keys(o)
32
+ .map(function (key) {
33
+ var _a;
34
+ return (_a = {},
35
+ _a[key] = exports.wrapWithCheck(o[key], key),
36
+ _a);
37
+ })
38
+ .reduce(function (acc, curr) { return (__assign(__assign({}, acc), curr)); }, {});
39
+ };
40
+ exports.wrapAllWithCheck = wrapAllWithCheck;
41
+ //# sourceMappingURL=checkErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkErrors.js","sourceRoot":"","sources":["checkErrors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oCAA+B;AAExB,IAAM,aAAa,GACxB,UACE,CAAqB,EACrB,cAAsB;IAExB,OAAA;QAAC,cAAsB;aAAtB,UAAsB,EAAtB,qBAAsB,EAAtB,IAAsB;YAAtB,yBAAsB;;QACrB,IAAM,MAAM,GAAG,CAAC,eAAI,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,EAAE;YACX,gBAAM,CAAC,SAAS,CACd,+CAA6C,cAAc,8EAA2E,CACvI,CAAC;SACH;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;AARD,CAQC,CAAC;AAbS,QAAA,aAAa,iBAatB;AAUG,IAAM,gBAAgB,GAAG,UAC9B,CAAI;IAEJ,OAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;SACX,GAAG,CAAC,UAAC,GAAW;;QAAK,OAAA;YACpB,GAAC,GAAG,IAAG,qBAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;eACjC;IAFoB,CAEpB,CAAC;SACF,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,uBAAM,GAAG,GAAK,IAAI,EAAG,EAArB,CAAqB,EAAE,EAAE,CAAM;AAJxD,CAIwD,CAAC;AAP9C,QAAA,gBAAgB,oBAO8B"}
@@ -0,0 +1,4 @@
1
+ import { FfiSpecificationVersion } from '../ffi/types';
2
+ import { ConsumerPact } from './types';
3
+ export declare const makeConsumerPact: (consumer: string, provider: string, version?: FfiSpecificationVersion, logLevel?: import("..").LogLevel) => ConsumerPact;
4
+ export * from './types';
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
21
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.makeConsumerPact = void 0;
25
+ var types_1 = require("../ffi/types");
26
+ var logger_1 = require("../logger");
27
+ var checkErrors_1 = require("./checkErrors");
28
+ var ffi_1 = require("../ffi");
29
+ var makeConsumerPact = function (consumer, provider, version, logLevel) {
30
+ if (version === void 0) { version = 3; }
31
+ if (logLevel === void 0) { logLevel = logger_1.getLogLevel(); }
32
+ var ffi = ffi_1.getFfiLib(logLevel);
33
+ if (logLevel) {
34
+ logger_1.setLogLevel(logLevel);
35
+ }
36
+ var pactPtr = ffi.pactffiNewPact(consumer, provider);
37
+ if (!ffi.pactffiWithSpecification(pactPtr, version)) {
38
+ throw new Error("Unable to set core spec version. The pact FfiSpecificationVersion '" + version + "' may be invalid (note this is not the same as the pact spec version)");
39
+ }
40
+ return {
41
+ createMockServer: function (address, requestedPort, tls) {
42
+ if (tls === void 0) { tls = false; }
43
+ var port = ffi.pactffiCreateMockServerForPact(pactPtr, address + ":" + (requestedPort ? requestedPort : 0), tls);
44
+ var error = Object.keys(types_1.CREATE_MOCK_SERVER_ERRORS).find(function (key) { return types_1.CREATE_MOCK_SERVER_ERRORS[key] === port; });
45
+ if (error) {
46
+ if (error === 'ADDRESS_NOT_VALID') {
47
+ logger_1.logErrorAndThrow("Unable to start mock server at '" + address + "'. Is the address and port valid?");
48
+ }
49
+ if (error === 'TLS_CONFIG') {
50
+ logger_1.logErrorAndThrow("Unable to create TLS configuration with self-signed certificate");
51
+ }
52
+ logger_1.logCrashAndThrow("The pact core couldn't create the mock server because of an error described by '" + error + "'");
53
+ }
54
+ if (port <= 0) {
55
+ logger_1.logCrashAndThrow("The pact core returned an unhandled error code '" + port + "'");
56
+ }
57
+ return port;
58
+ },
59
+ mockServerMatchedSuccessfully: function (port) {
60
+ return ffi.pactffiMockServerMatched(port);
61
+ },
62
+ mockServerMismatches: function (port) {
63
+ var results = JSON.parse(ffi.pactffiMockServerMismatches(port));
64
+ return results.map(function (result) { return (__assign(__assign({}, result), ('mismatches' in result
65
+ ? {
66
+ mismatches: result.mismatches.map(function (m) {
67
+ return typeof m === 'string' ? JSON.parse(m) : m;
68
+ }),
69
+ }
70
+ : {}))); });
71
+ },
72
+ cleanupMockServer: function (port) {
73
+ return checkErrors_1.wrapWithCheck(function (port) { return ffi.pactffiCleanupMockServer(port); }, 'cleanupMockServer')(port);
74
+ },
75
+ writePactFile: function (port, dir, merge) {
76
+ if (merge === void 0) { merge = true; }
77
+ var result = ffi.pactffiWritePactFile(port, dir, !merge);
78
+ switch (result) {
79
+ case types_1.FfiWritePactResponse.SUCCESS:
80
+ return;
81
+ case types_1.FfiWritePactResponse.UNABLE_TO_WRITE_PACT_FILE:
82
+ logger_1.logErrorAndThrow('The pact core was unable to write the pact file');
83
+ case types_1.FfiWritePactResponse.GENERAL_PANIC:
84
+ logger_1.logCrashAndThrow('The pact core panicked while writing the pact file');
85
+ case types_1.FfiWritePactResponse.MOCK_SERVER_NOT_FOUND:
86
+ logger_1.logCrashAndThrow('The pact core was asked to write a pact file from a mock server that appears not to exist');
87
+ default:
88
+ logger_1.logCrashAndThrow("The pact core returned an unknown error code (" + result + ") instead of writing the pact");
89
+ }
90
+ },
91
+ addMetadata: function (namespace, name, value) {
92
+ return ffi.pactffiWithPactMetadata(pactPtr, namespace, name, value);
93
+ },
94
+ newInteraction: function (description) {
95
+ var interactionPtr = ffi.pactffiNewInteraction(pactPtr, description);
96
+ return checkErrors_1.wrapAllWithCheck({
97
+ uponReceiving: function (description) {
98
+ return ffi.pactffiUponReceiving(interactionPtr, description);
99
+ },
100
+ given: function (state) {
101
+ return ffi.pactffiGiven(interactionPtr, state);
102
+ },
103
+ givenWithParam: function (state, name, value) {
104
+ return ffi.pactffiGivenWithParam(interactionPtr, state, name, value);
105
+ },
106
+ withRequest: function (method, path) {
107
+ return ffi.pactffiWithRequest(interactionPtr, method, path);
108
+ },
109
+ withQuery: function (name, index, value) {
110
+ return ffi.pactffiWithQueryParameter(interactionPtr, name, index, value);
111
+ },
112
+ withRequestHeader: function (name, index, value) {
113
+ return ffi.pactffiWithHeader(interactionPtr, types_1.INTERACTION_PART_REQUEST, name, index, value);
114
+ },
115
+ withRequestBody: function (body, contentType) {
116
+ return ffi.pactffiWithBody(interactionPtr, types_1.INTERACTION_PART_REQUEST, contentType, body);
117
+ },
118
+ withRequestBinaryBody: function (body, contentType) {
119
+ return ffi.pactffiWithBinaryFile(interactionPtr, types_1.INTERACTION_PART_REQUEST, contentType, body, body.length);
120
+ },
121
+ withRequestMultipartBody: function (contentType, filename, mimePartName) {
122
+ return (ffi.pactffiWithMultipartFile(interactionPtr, types_1.INTERACTION_PART_REQUEST, contentType, filename, mimePartName) === undefined);
123
+ },
124
+ withResponseHeader: function (name, index, value) {
125
+ return ffi.pactffiWithHeader(interactionPtr, types_1.INTERACTION_PART_RESPONSE, name, index, value);
126
+ },
127
+ withResponseBody: function (body, contentType) {
128
+ return ffi.pactffiWithBody(interactionPtr, types_1.INTERACTION_PART_RESPONSE, contentType, body);
129
+ },
130
+ withResponseBinaryBody: function (body, contentType) {
131
+ return ffi.pactffiWithBinaryFile(interactionPtr, types_1.INTERACTION_PART_RESPONSE, contentType, body, body.length);
132
+ },
133
+ withResponseMultipartBody: function (contentType, filename, mimePartName) {
134
+ return (ffi.pactffiWithMultipartFile(interactionPtr, types_1.INTERACTION_PART_RESPONSE, contentType, filename, mimePartName) === undefined);
135
+ },
136
+ withStatus: function (status) {
137
+ return ffi.pactffiResponseStatus(interactionPtr, status);
138
+ },
139
+ });
140
+ },
141
+ };
142
+ };
143
+ exports.makeConsumerPact = makeConsumerPact;
144
+ __exportStar(require("./types"), exports);
145
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ /// <reference types="node" />
2
+ export declare type MatchingResult = MatchingResultSuccess | MatchingResultRequestMismatch | MatchingResultRequestNotFound | MatchingResultMissingRequest;
3
+ export declare type MatchingResultSuccess = {
4
+ type: 'request-match';
5
+ };
6
+ export declare type MatchingResultRequestMismatch = {
7
+ type: 'request-mismatch';
8
+ method: string;
9
+ path: string;
10
+ mismatches: Mismatch[];
11
+ };
12
+ export declare type MatchingResultRequestNotFound = {
13
+ type: 'request-not-found';
14
+ method: string;
15
+ path: string;
16
+ request: RequestMismatch;
17
+ };
18
+ export declare type MatchingResultMissingRequest = {
19
+ type: 'missing-request';
20
+ method: string;
21
+ path: string;
22
+ request: RequestMismatch;
23
+ };
24
+ export declare type Mismatch = MethodMismatch | PathMismatch | StatusMismatch | QueryMismatch | HeaderMismatch | BodyTypeMismatch | BodyMismatch | MetadataMismatch;
25
+ export declare type MethodMismatch = {
26
+ type: 'MethodMismatch';
27
+ expected: string;
28
+ actual: string;
29
+ };
30
+ export declare type PathMismatch = {
31
+ type: 'PathMismatch';
32
+ expected: string;
33
+ actual: string;
34
+ mismatch: string;
35
+ };
36
+ export declare type StatusMismatch = {
37
+ type: 'StatusMismatch';
38
+ expected: string;
39
+ actual: string;
40
+ mismatch: string;
41
+ };
42
+ export declare type QueryMismatch = {
43
+ type: 'QueryMismatch';
44
+ parameter: string;
45
+ expected: string;
46
+ actual: string;
47
+ mismatch: string;
48
+ };
49
+ export declare type HeaderMismatch = {
50
+ type: 'HeaderMismatch';
51
+ key: string;
52
+ expected: string;
53
+ actual: string;
54
+ mismatch: string;
55
+ };
56
+ export declare type BodyTypeMismatch = {
57
+ type: 'BodyTypeMismatch';
58
+ expected: string;
59
+ actual: string;
60
+ mismatch: string;
61
+ expectedBody?: string;
62
+ actualBody?: string;
63
+ };
64
+ export declare type BodyMismatch = {
65
+ type: 'BodyMismatch';
66
+ path: string;
67
+ expected?: string;
68
+ actual?: string;
69
+ mismatch: string;
70
+ };
71
+ export declare type MetadataMismatch = {
72
+ type: 'MetadataMismatch';
73
+ key: string;
74
+ expected: string;
75
+ actual: string;
76
+ mismatch: string;
77
+ };
78
+ export declare type RequestMismatch = {
79
+ method?: string;
80
+ path?: string;
81
+ headers?: Record<string, Array<string>>;
82
+ query?: Record<string, Array<string>>;
83
+ body?: string;
84
+ };
85
+ export declare type ConsumerInteraction = {
86
+ uponReceiving: (description: string) => boolean;
87
+ given: (state: string) => boolean;
88
+ givenWithParam: (state: string, name: string, value: string) => boolean;
89
+ withRequest: (method: string, path: string) => boolean;
90
+ withQuery: (name: string, index: number, value: string) => boolean;
91
+ withStatus: (status: number) => boolean;
92
+ withRequestHeader: (name: string, index: number, value: string) => boolean;
93
+ withRequestBody: (body: string, contentType: string) => boolean;
94
+ withRequestBinaryBody: (body: Buffer, contentType: string) => boolean;
95
+ withRequestMultipartBody: (contentType: string, filename: string, mimePartName: string) => boolean;
96
+ withResponseHeader: (name: string, index: number, value: string) => boolean;
97
+ withResponseBody: (body: string, contentType: string) => boolean;
98
+ withResponseBinaryBody: (body: Buffer, contentType: string) => boolean;
99
+ withResponseMultipartBody: (contentType: string, filename: string, mimePartName: string) => boolean;
100
+ };
101
+ export declare type ConsumerPact = {
102
+ newInteraction: (description: string) => ConsumerInteraction;
103
+ createMockServer: (address: string, port?: number, tls?: boolean) => number;
104
+ mockServerMismatches: (port: number) => MatchingResult[];
105
+ cleanupMockServer: (port: number) => boolean;
106
+ writePactFile: (port: number, dir: string, merge?: boolean) => void;
107
+ mockServerMatchedSuccessfully: (port: number) => boolean;
108
+ addMetadata: (namespace: string, name: string, value: string) => boolean;
109
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { LogLevel } from '../logger/types';
2
+ import { Ffi } from './types';
3
+ declare const ffiLib: Ffi;
4
+ export declare const PACT_FFI_VERSION = "0.2.2";
5
+ declare let ffi: typeof ffiLib;
6
+ export declare const getFfiLib: (logLevel?: LogLevel) => typeof ffi;
7
+ export {};
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFfiLib = exports.PACT_FFI_VERSION = void 0;
4
+ var logger_1 = require("../logger");
5
+ var bindings = require("bindings");
6
+ var ffiLib = bindings('pact.node');
7
+ exports.PACT_FFI_VERSION = '0.2.2';
8
+ var ffi;
9
+ var ffiLogLevel;
10
+ var initialiseFfi = function (logLevel) {
11
+ logger_1.default.debug("Initalising native core at log level '" + logLevel + "'");
12
+ ffiLogLevel = logLevel;
13
+ ffiLib.pactffiInitWithLogLevel(logLevel);
14
+ return ffiLib;
15
+ };
16
+ var getFfiLib = function (logLevel) {
17
+ if (logLevel === void 0) { logLevel = logger_1.DEFAULT_LOG_LEVEL; }
18
+ if (!ffi) {
19
+ logger_1.default.trace('Initiliasing ffi for the first time');
20
+ ffi = initialiseFfi(logLevel);
21
+ }
22
+ else {
23
+ logger_1.default.trace('Ffi has already been initialised, no need to repeat it');
24
+ if (logLevel !== ffiLogLevel) {
25
+ logger_1.default.warn("The pact native core has already been initialised at log level '" + ffiLogLevel + "'");
26
+ logger_1.default.warn("The new requested log level '" + logLevel + "' will be ignored");
27
+ }
28
+ }
29
+ return ffi;
30
+ };
31
+ exports.getFfiLib = getFfiLib;
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,oCAAsD;AAGtD,mCAAsC;AAEtC,IAAM,MAAM,GAAQ,QAAQ,CAAC,WAAW,CAAC,CAAC;AAE7B,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAExC,IAAI,GAAkB,CAAC;AACvB,IAAI,WAAqB,CAAC;AAE1B,IAAM,aAAa,GAAG,UAAC,QAAkB;IACvC,gBAAM,CAAC,KAAK,CAAC,2CAAyC,QAAQ,MAAG,CAAC,CAAC;IACnE,WAAW,GAAG,QAAQ,CAAC;IACvB,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAEzC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEK,IAAM,SAAS,GAAG,UACvB,QAAsC;IAAtC,yBAAA,EAAA,WAAqB,0BAAiB;IAEtC,IAAI,CAAC,GAAG,EAAE;QACR,gBAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACpD,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;KAC/B;SAAM;QACL,gBAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACvE,IAAI,QAAQ,KAAK,WAAW,EAAE;YAC5B,gBAAM,CAAC,IAAI,CACT,qEAAmE,WAAW,MAAG,CAClF,CAAC;YACF,gBAAM,CAAC,IAAI,CAAC,kCAAgC,QAAQ,sBAAmB,CAAC,CAAC;SAC1E;KACF;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAhBW,QAAA,SAAS,aAgBpB"}
@@ -0,0 +1,2 @@
1
+ /// <reference types="node" />
2
+ export declare const libName: (library: string, version: string, processArch?: string, processPlatform?: NodeJS.Platform) => string;