@pact-foundation/pact 16.3.1 → 16.5.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 +23 -0
- package/CONTRIBUTING.md +2 -2
- package/README.md +22 -12
- package/package.json +26 -47
- package/scripts/ci/build-and-test.sh +0 -3
- package/scripts/install-plugins.js +104 -0
- package/src/common/graphQL/configurationError.js +2 -22
- package/src/common/graphQL/configurationError.js.map +1 -1
- package/src/common/graphQL/graphQL.d.ts +2 -2
- package/src/common/graphQL/graphQL.js +11 -14
- package/src/common/graphQL/graphQL.js.map +1 -1
- package/src/common/graphQL/graphQLQueryError.js +2 -22
- package/src/common/graphQL/graphQLQueryError.js.map +1 -1
- package/src/common/logger.js +9 -9
- package/src/common/logger.js.map +1 -1
- package/src/common/matchingRules.d.ts +7 -1
- package/src/common/matchingRules.js +42 -22
- package/src/common/matchingRules.js.map +1 -1
- package/src/common/net.js +36 -42
- package/src/common/net.js.map +1 -1
- package/src/common/net.spec.js +39 -87
- package/src/common/net.spec.js.map +1 -1
- package/src/common/request.js +33 -82
- package/src/common/request.js.map +1 -1
- package/src/common/request.spec.js +29 -73
- package/src/common/request.spec.js.map +1 -1
- package/src/common/spec.js +3 -4
- package/src/common/spec.js.map +1 -1
- package/src/dsl/apolloGraphql.js +7 -25
- package/src/dsl/apolloGraphql.js.map +1 -1
- package/src/dsl/apolloGraphql.spec.js +21 -58
- package/src/dsl/apolloGraphql.spec.js.map +1 -1
- package/src/dsl/graphql.d.ts +2 -2
- package/src/dsl/graphql.js +29 -48
- package/src/dsl/graphql.js.map +1 -1
- package/src/dsl/graphql.spec.js +92 -117
- package/src/dsl/graphql.spec.js.map +1 -1
- package/src/dsl/interaction.d.ts +2 -2
- package/src/dsl/interaction.js +41 -48
- package/src/dsl/interaction.js.map +1 -1
- package/src/dsl/interaction.spec.js +109 -132
- package/src/dsl/interaction.spec.js.map +1 -1
- package/src/dsl/matchers.d.ts +2 -3
- package/src/dsl/matchers.js +19 -31
- package/src/dsl/matchers.js.map +1 -1
- package/src/dsl/matchers.spec.js +279 -289
- package/src/dsl/matchers.spec.js.map +1 -1
- package/src/dsl/message.d.ts +3 -3
- package/src/dsl/options.d.ts +3 -3
- package/src/dsl/verifier/proxy/hooks.d.ts +2 -2
- package/src/dsl/verifier/proxy/hooks.js +42 -112
- package/src/dsl/verifier/proxy/hooks.js.map +1 -1
- package/src/dsl/verifier/proxy/hooks.spec.js +86 -199
- package/src/dsl/verifier/proxy/hooks.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/messages.d.ts +2 -2
- package/src/dsl/verifier/proxy/messages.js +88 -106
- package/src/dsl/verifier/proxy/messages.js.map +1 -1
- package/src/dsl/verifier/proxy/parseBody.d.ts +1 -1
- package/src/dsl/verifier/proxy/parseBody.js +3 -3
- package/src/dsl/verifier/proxy/parseBody.js.map +1 -1
- package/src/dsl/verifier/proxy/parseBody.spec.js +35 -113
- package/src/dsl/verifier/proxy/parseBody.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/proxy.d.ts +2 -2
- package/src/dsl/verifier/proxy/proxy.js +22 -26
- package/src/dsl/verifier/proxy/proxy.js.map +1 -1
- package/src/dsl/verifier/proxy/proxy.spec.js +11 -53
- package/src/dsl/verifier/proxy/proxy.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/proxyRequest.d.ts +3 -3
- package/src/dsl/verifier/proxy/proxyRequest.js +7 -7
- package/src/dsl/verifier/proxy/proxyRequest.js.map +1 -1
- package/src/dsl/verifier/proxy/proxyRequest.spec.js +54 -104
- package/src/dsl/verifier/proxy/proxyRequest.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/setupStates.d.ts +3 -3
- package/src/dsl/verifier/proxy/stateHandler/setupStates.js +14 -18
- package/src/dsl/verifier/proxy/stateHandler/setupStates.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/setupStates.spec.js +76 -193
- package/src/dsl/verifier/proxy/stateHandler/setupStates.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.d.ts +2 -2
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.js +23 -72
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js +37 -122
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/tracer.d.ts +1 -1
- package/src/dsl/verifier/proxy/tracer.js +42 -35
- package/src/dsl/verifier/proxy/tracer.js.map +1 -1
- package/src/dsl/verifier/proxy/types.d.ts +5 -5
- package/src/dsl/verifier/types.d.ts +3 -3
- package/src/dsl/verifier/verifier.d.ts +5 -1
- package/src/dsl/verifier/verifier.js +53 -60
- package/src/dsl/verifier/verifier.js.map +1 -1
- package/src/dsl/verifier/verifier.spec.js +84 -151
- package/src/dsl/verifier/verifier.spec.js.map +1 -1
- package/src/errors/configurationError.js +2 -22
- package/src/errors/configurationError.js.map +1 -1
- package/src/errors/graphQLQueryError.js +2 -22
- package/src/errors/graphQLQueryError.js.map +1 -1
- package/src/errors/matcherError.js +2 -22
- package/src/errors/matcherError.js.map +1 -1
- package/src/errors/verificationError.js +2 -22
- package/src/errors/verificationError.js.map +1 -1
- package/src/httpPact/ffi.d.ts +2 -2
- package/src/httpPact/ffi.js +28 -29
- package/src/httpPact/ffi.js.map +1 -1
- package/src/httpPact/ffi.spec.js +40 -83
- package/src/httpPact/ffi.spec.js.map +1 -1
- package/src/httpPact/index.d.ts +3 -3
- package/src/httpPact/index.js +92 -149
- package/src/httpPact/index.js.map +1 -1
- package/src/httpPact/index.spec.js +102 -195
- package/src/httpPact/index.spec.js.map +1 -1
- package/src/httpPact/tracing.js +20 -28
- package/src/httpPact/tracing.js.map +1 -1
- package/src/index.d.ts +25 -25
- package/src/index.js +29 -29
- package/src/index.js.map +1 -1
- package/src/messageConsumerPact.d.ts +5 -5
- package/src/messageConsumerPact.js +59 -53
- package/src/messageConsumerPact.js.map +1 -1
- package/src/messageConsumerPact.spec.js +55 -97
- package/src/messageConsumerPact.spec.js.map +1 -1
- package/src/messageProviderPact.d.ts +3 -3
- package/src/messageProviderPact.js +68 -85
- package/src/messageProviderPact.js.map +1 -1
- package/src/messageProviderPact.spec.js +96 -123
- package/src/messageProviderPact.spec.js.map +1 -1
- package/src/pact.integration.spec.js +242 -351
- package/src/pact.integration.spec.js.map +1 -1
- package/src/v3/display.d.ts +1 -1
- package/src/v3/display.js +44 -58
- package/src/v3/display.js.map +1 -1
- package/src/v3/ffi.js +20 -16
- package/src/v3/ffi.js.map +1 -1
- package/src/v3/ffi.spec.js +7 -42
- package/src/v3/ffi.spec.js.map +1 -1
- package/src/v3/graphql/graphQL.d.ts +4 -4
- package/src/v3/graphql/graphQL.js +50 -75
- package/src/v3/graphql/graphQL.js.map +1 -1
- package/src/v3/graphql/index.d.ts +1 -1
- package/src/v3/graphql/index.js +1 -1
- package/src/v3/graphql/index.js.map +1 -1
- package/src/v3/index.d.ts +4 -12
- package/src/v3/index.js +4 -12
- package/src/v3/index.js.map +1 -1
- package/src/v3/matchers.d.ts +15 -3
- package/src/v3/matchers.js +131 -148
- package/src/v3/matchers.js.map +1 -1
- package/src/v3/matchers.spec.js +281 -232
- package/src/v3/matchers.spec.js.map +1 -1
- package/src/v3/pact.d.ts +2 -2
- package/src/v3/pact.js +108 -151
- package/src/v3/pact.js.map +1 -1
- package/src/v3/pact.spec.js +94 -0
- package/src/v3/pact.spec.js.map +1 -0
- package/src/v3/types.d.ts +19 -3
- package/src/v3/types.js +22 -1
- package/src/v3/types.js.map +1 -1
- package/src/v4/graphql/graphQLInteractionWithRequest.d.ts +4 -4
- package/src/v4/graphql/graphQLInteractionWithRequest.js +21 -17
- package/src/v4/graphql/graphQLInteractionWithRequest.js.map +1 -1
- package/src/v4/graphql/graphQLRequestBuilder.d.ts +3 -3
- package/src/v4/graphql/graphQLRequestBuilder.js +18 -20
- package/src/v4/graphql/graphQLRequestBuilder.js.map +1 -1
- package/src/v4/graphql/index.d.ts +6 -6
- package/src/v4/graphql/index.js +21 -17
- package/src/v4/graphql/index.js.map +1 -1
- package/src/v4/graphql/types.d.ts +5 -5
- package/src/v4/http/index.d.ts +2 -2
- package/src/v4/http/index.js +53 -93
- package/src/v4/http/index.js.map +1 -1
- package/src/v4/http/index.spec.d.ts +1 -0
- package/src/v4/http/index.spec.js +73 -0
- package/src/v4/http/index.spec.js.map +1 -0
- package/src/v4/http/interactionWithCompleteRequest.d.ts +4 -7
- package/src/v4/http/interactionWithCompleteRequest.js +6 -10
- package/src/v4/http/interactionWithCompleteRequest.js.map +1 -1
- package/src/v4/http/interactionWithPlugin.d.ts +3 -3
- package/src/v4/http/interactionWithPlugin.js +14 -11
- package/src/v4/http/interactionWithPlugin.js.map +1 -1
- package/src/v4/http/interactionWithPluginRequest.d.ts +4 -3
- package/src/v4/http/interactionWithPluginRequest.js +17 -9
- package/src/v4/http/interactionWithPluginRequest.js.map +1 -1
- package/src/v4/http/interactionWithPluginResponse.d.ts +2 -2
- package/src/v4/http/interactionWithPluginResponse.js +10 -48
- package/src/v4/http/interactionWithPluginResponse.js.map +1 -1
- package/src/v4/http/interactionWithRequest.d.ts +4 -3
- package/src/v4/http/interactionWithRequest.js +17 -9
- package/src/v4/http/interactionWithRequest.js.map +1 -1
- package/src/v4/http/interactionWithRequest.spec.d.ts +1 -0
- package/src/v4/http/interactionWithRequest.spec.js +82 -0
- package/src/v4/http/interactionWithRequest.spec.js.map +1 -0
- package/src/v4/http/interactionWithResponse.d.ts +2 -2
- package/src/v4/http/interactionWithResponse.js +10 -48
- package/src/v4/http/interactionWithResponse.js.map +1 -1
- package/src/v4/http/requestBuilder.d.ts +4 -3
- package/src/v4/http/requestBuilder.js +36 -34
- package/src/v4/http/requestBuilder.js.map +1 -1
- package/src/v4/http/requestBuilder.spec.d.ts +1 -0
- package/src/v4/http/requestBuilder.spec.js +42 -0
- package/src/v4/http/requestBuilder.spec.js.map +1 -0
- package/src/v4/http/requestWithPluginBuilder.d.ts +3 -2
- package/src/v4/http/requestWithPluginBuilder.js +30 -46
- package/src/v4/http/requestWithPluginBuilder.js.map +1 -1
- package/src/v4/http/requestWithPluginBuilder.spec.d.ts +1 -0
- package/src/v4/http/requestWithPluginBuilder.spec.js +34 -0
- package/src/v4/http/requestWithPluginBuilder.spec.js.map +1 -0
- package/src/v4/http/responseBuilder.d.ts +4 -3
- package/src/v4/http/responseBuilder.js +28 -25
- package/src/v4/http/responseBuilder.js.map +1 -1
- package/src/v4/http/responseBuilder.spec.d.ts +1 -0
- package/src/v4/http/responseBuilder.spec.js +42 -0
- package/src/v4/http/responseBuilder.spec.js.map +1 -0
- package/src/v4/http/responseWithPluginBuilder.d.ts +1 -1
- package/src/v4/http/responseWithPluginBuilder.js +5 -25
- package/src/v4/http/responseWithPluginBuilder.js.map +1 -1
- package/src/v4/http/responseWithPluginBuilder.spec.d.ts +1 -0
- package/src/v4/http/responseWithPluginBuilder.spec.js +34 -0
- package/src/v4/http/responseWithPluginBuilder.spec.js.map +1 -0
- package/src/v4/http/types.d.ts +13 -4
- package/src/v4/http/unconfiguredInteraction.d.ts +6 -5
- package/src/v4/http/unconfiguredInteraction.js +31 -26
- package/src/v4/http/unconfiguredInteraction.js.map +1 -1
- package/src/v4/index.d.ts +6 -5
- package/src/v4/index.js +32 -35
- package/src/v4/index.js.map +1 -1
- package/src/v4/message/asynchronousMessage.d.ts +7 -6
- package/src/v4/message/asynchronousMessage.js +157 -190
- package/src/v4/message/asynchronousMessage.js.map +1 -1
- package/src/v4/message/index.d.ts +7 -6
- package/src/v4/message/index.js +188 -217
- package/src/v4/message/index.js.map +1 -1
- package/src/v4/message/types.d.ts +5 -3
- package/src/v4/types.d.ts +3 -3
- package/src/xml/index.d.ts +4 -0
- package/src/xml/index.js +21 -0
- package/src/xml/index.js.map +1 -0
- package/src/{v3/xml → xml}/xmlBuilder.d.ts +1 -3
- package/src/{v3/xml → xml}/xmlBuilder.js +7 -9
- package/src/xml/xmlBuilder.js.map +1 -0
- package/src/{v3/xml → xml}/xmlElement.d.ts +2 -2
- package/src/xml/xmlElement.js +73 -0
- package/src/xml/xmlElement.js.map +1 -0
- package/src/xml/xmlElement.spec.d.ts +1 -0
- package/src/xml/xmlElement.spec.js +107 -0
- package/src/xml/xmlElement.spec.js.map +1 -0
- package/src/xml/xmlNode.js +7 -0
- package/src/xml/xmlNode.js.map +1 -0
- package/src/{v3/xml → xml}/xmlText.d.ts +1 -1
- package/src/xml/xmlText.js +15 -0
- package/src/xml/xmlText.js.map +1 -0
- package/scripts/install-plugins +0 -106
- package/src/v3/xml/xmlBuilder.js.map +0 -1
- package/src/v3/xml/xmlElement.js +0 -90
- package/src/v3/xml/xmlElement.js.map +0 -1
- package/src/v3/xml/xmlElement.spec.js +0 -113
- package/src/v3/xml/xmlElement.spec.js.map +0 -1
- package/src/v3/xml/xmlNode.js +0 -10
- package/src/v3/xml/xmlNode.js.map +0 -1
- package/src/v3/xml/xmlText.js +0 -31
- package/src/v3/xml/xmlText.js.map +0 -1
- /package/src/v3/{xml/xmlElement.spec.d.ts → pact.spec.d.ts} +0 -0
- /package/src/{v3/xml → xml}/xmlNode.d.ts +0 -0
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.convertRulesToFFI = exports.validateRules = exports.convertMatcherToFFI = void 0;
|
|
3
|
+
exports.convertRulesToFFI = exports.validateRules = exports.convertStatusMatcherToFFI = exports.convertMatcherToFFI = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* Converts a matcher to the FFI format expected by pact-core
|
|
6
6
|
* @param matcher The matcher to convert
|
|
7
7
|
* @returns The matcher in FFI format
|
|
8
8
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
const convertMatcherToFFI = (matcher) => {
|
|
10
|
+
const result = {};
|
|
11
11
|
if (matcher['pact:matcher:type']) {
|
|
12
12
|
result.match = matcher['pact:matcher:type'];
|
|
13
13
|
}
|
|
14
|
-
Object.keys(matcher).forEach(
|
|
14
|
+
Object.keys(matcher).forEach((key) => {
|
|
15
15
|
if (key !== 'pact:matcher:type' && key !== 'pact:generator:type') {
|
|
16
16
|
result[key] = matcher[key];
|
|
17
17
|
}
|
|
@@ -19,35 +19,55 @@ var convertMatcherToFFI = function (matcher) {
|
|
|
19
19
|
return result;
|
|
20
20
|
};
|
|
21
21
|
exports.convertMatcherToFFI = convertMatcherToFFI;
|
|
22
|
+
/**
|
|
23
|
+
* Converts a StatusCodeMatcher to the FFI matching rules format expected by pact-core
|
|
24
|
+
* @param matcher The status code matcher
|
|
25
|
+
* @returns The matching rules in FFI format
|
|
26
|
+
*/
|
|
27
|
+
const convertStatusMatcherToFFI = (matcher) => {
|
|
28
|
+
return {
|
|
29
|
+
status: {
|
|
30
|
+
$: {
|
|
31
|
+
matchers: [
|
|
32
|
+
{
|
|
33
|
+
match: 'statusCode',
|
|
34
|
+
status: matcher.status,
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
exports.convertStatusMatcherToFFI = convertStatusMatcherToFFI;
|
|
22
42
|
/**
|
|
23
43
|
* Validates that the rules parameter is of type Rules
|
|
24
44
|
* @param rules The rules to validate
|
|
25
45
|
* @throws Error if rules is not a valid Rules object
|
|
26
46
|
*/
|
|
27
|
-
|
|
47
|
+
const validateRules = (rules) => {
|
|
28
48
|
if (!rules || typeof rules !== 'object' || Array.isArray(rules)) {
|
|
29
49
|
throw new Error('rules must be an object');
|
|
30
50
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
ruleKeys.forEach(
|
|
51
|
+
const validParts = ['path', 'body', 'header', 'query', 'status'];
|
|
52
|
+
const ruleKeys = Object.keys(rules);
|
|
53
|
+
ruleKeys.forEach((key) => {
|
|
34
54
|
if (!validParts.includes(key)) {
|
|
35
|
-
throw new Error(
|
|
55
|
+
throw new Error(`Invalid part "${key}" in rules. Valid parts are: ${validParts.join(', ')}`);
|
|
36
56
|
}
|
|
37
|
-
|
|
57
|
+
const partRules = rules[key];
|
|
38
58
|
if (!partRules)
|
|
39
59
|
return;
|
|
40
|
-
|
|
41
|
-
rulesArray.forEach(
|
|
60
|
+
const rulesArray = Array.isArray(partRules) ? partRules : [partRules];
|
|
61
|
+
rulesArray.forEach((rule, index) => {
|
|
42
62
|
if (!rule || typeof rule !== 'object') {
|
|
43
|
-
throw new Error(
|
|
63
|
+
throw new Error(`Rule at ${key}[${index}] must be an object`);
|
|
44
64
|
}
|
|
45
|
-
|
|
65
|
+
const ruleObj = rule;
|
|
46
66
|
if (!('rules' in ruleObj) || !Array.isArray(ruleObj.rules)) {
|
|
47
|
-
throw new Error(
|
|
67
|
+
throw new Error(`Rule at ${key}[${index}] must have a "rule" property that is an array`);
|
|
48
68
|
}
|
|
49
69
|
if ('path' in ruleObj && typeof ruleObj.path !== 'string') {
|
|
50
|
-
throw new Error(
|
|
70
|
+
throw new Error(`Rule at ${key}[${index}] has a "path" property that is not a string`);
|
|
51
71
|
}
|
|
52
72
|
});
|
|
53
73
|
});
|
|
@@ -58,15 +78,15 @@ exports.validateRules = validateRules;
|
|
|
58
78
|
* @param rules Rules in the user-friendly format
|
|
59
79
|
* @returns Rules in FFI format
|
|
60
80
|
*/
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
Object.keys(rules).forEach(
|
|
64
|
-
|
|
81
|
+
const convertRulesToFFI = (rules) => {
|
|
82
|
+
const ffiRules = {};
|
|
83
|
+
Object.keys(rules).forEach((part) => {
|
|
84
|
+
const partRules = rules[part];
|
|
65
85
|
if (!partRules)
|
|
66
86
|
return;
|
|
67
|
-
|
|
87
|
+
const rulesArray = Array.isArray(partRules) ? partRules : [partRules];
|
|
68
88
|
ffiRules[part] = {};
|
|
69
|
-
rulesArray.forEach(
|
|
89
|
+
rulesArray.forEach((rule) => {
|
|
70
90
|
if (rule.path) {
|
|
71
91
|
ffiRules[part][rule.path] = {
|
|
72
92
|
matchers: rule.rules.map(exports.convertMatcherToFFI),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matchingRules.js","sourceRoot":"","sources":["../../../src/common/matchingRules.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACI,
|
|
1
|
+
{"version":3,"file":"matchingRules.js","sourceRoot":"","sources":["../../../src/common/matchingRules.ts"],"names":[],"mappings":"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"}
|
package/src/common/net.js
CHANGED
|
@@ -9,52 +9,46 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
9
9
|
};
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.freePort = exports.isPortAvailable = exports.portCheck = exports.localAddresses = void 0;
|
|
12
|
-
|
|
12
|
+
const node_net_1 = __importDefault(require("node:net"));
|
|
13
13
|
exports.localAddresses = ['127.0.0.1', 'localhost', '0.0.0.0', '::1'];
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
reject(new Error("Port ".concat(port, " is unavailable on address ").concat(host)));
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
reject(e);
|
|
25
|
-
}
|
|
26
|
-
})
|
|
27
|
-
.on('listening', function () {
|
|
28
|
-
server.once('close', function () { return resolve(); }).close();
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
exports.portCheck = portCheck;
|
|
33
|
-
var isPortAvailable = function (port, host) {
|
|
34
|
-
return Promise.allSettled(exports.localAddresses.map(function (localHost) { return (0, exports.portCheck)(port, localHost); })).then(function (settledPortChecks) {
|
|
35
|
-
// if every port check failed, then fail the `isPortAvailable` check
|
|
36
|
-
if (settledPortChecks.every(function (result) { return result.status === 'rejected'; })) {
|
|
37
|
-
throw new Error("Cannot open port ".concat(port, " on ipv4 or ipv6 interfaces"));
|
|
14
|
+
const portCheck = (port, host) => new Promise((resolve, reject) => {
|
|
15
|
+
const server = node_net_1.default
|
|
16
|
+
.createServer()
|
|
17
|
+
.listen({ port, host, exclusive: true })
|
|
18
|
+
.on('error', (e) => {
|
|
19
|
+
if (e.code === 'EADDRINUSE') {
|
|
20
|
+
reject(new Error(`Port ${port} is unavailable on address ${host}`));
|
|
38
21
|
}
|
|
39
|
-
|
|
40
|
-
|
|
22
|
+
else {
|
|
23
|
+
reject(e);
|
|
24
|
+
}
|
|
25
|
+
})
|
|
26
|
+
.on('listening', () => {
|
|
27
|
+
server.once('close', () => resolve()).close();
|
|
41
28
|
});
|
|
42
|
-
};
|
|
29
|
+
});
|
|
30
|
+
exports.portCheck = portCheck;
|
|
31
|
+
const isPortAvailable = (port, host) => Promise.allSettled(exports.localAddresses.map((localHost) => (0, exports.portCheck)(port, localHost))).then((settledPortChecks) => {
|
|
32
|
+
// if every port check failed, then fail the `isPortAvailable` check
|
|
33
|
+
if (settledPortChecks.every((result) => result.status === 'rejected')) {
|
|
34
|
+
throw new Error(`Cannot open port ${port} on ipv4 or ipv6 interfaces`);
|
|
35
|
+
}
|
|
36
|
+
// the local addresses passed - now check the host that the user has specified
|
|
37
|
+
return (0, exports.portCheck)(port, host);
|
|
38
|
+
});
|
|
43
39
|
exports.isPortAvailable = isPortAvailable;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
s.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
});
|
|
40
|
+
const freePort = () => new Promise((res) => {
|
|
41
|
+
const s = node_net_1.default.createServer();
|
|
42
|
+
s.listen(0, () => {
|
|
43
|
+
const addr = s.address();
|
|
44
|
+
if (addr !== null && typeof addr !== 'string') {
|
|
45
|
+
const { port } = addr;
|
|
46
|
+
s.close(() => res(port));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
throw Error('unable to find a free port');
|
|
50
|
+
}
|
|
57
51
|
});
|
|
58
|
-
};
|
|
52
|
+
});
|
|
59
53
|
exports.freePort = freePort;
|
|
60
54
|
//# sourceMappingURL=net.js.map
|
package/src/common/net.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"net.js","sourceRoot":"","sources":["../../../src/common/net.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"net.js","sourceRoot":"","sources":["../../../src/common/net.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAEH,wDAA2B;AAEd,QAAA,cAAc,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAEpE,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,IAAY,EAAiB,EAAE,CACrE,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,MAAM,MAAM,GAAG,kBAAG;SACf,YAAY,EAAE;SACd,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SACvC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAwB,EAAE,EAAE;QACxC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,8BAA8B,IAAI,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,CAAC,CAAC,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;SACD,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;QACpB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAfQ,QAAA,SAAS,aAejB;AAEE,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,IAAY,EAAiB,EAAE,CAC3E,OAAO,CAAC,UAAU,CAChB,sBAAc,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAA,iBAAS,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAC9D,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,EAAE;IAC3B,oEAAoE;IACpE,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,6BAA6B,CAAC,CAAC;IACzE,CAAC;IAED,8EAA8E;IAC9E,OAAO,IAAA,iBAAS,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAXQ,QAAA,eAAe,mBAWvB;AAEE,MAAM,QAAQ,GAAG,GAAoB,EAAE,CAC5C,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;IAClB,MAAM,CAAC,GAAG,kBAAG,CAAC,YAAY,EAAE,CAAC;IAC7B,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE;QACf,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;YACtB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAZQ,QAAA,QAAQ,YAYhB"}
|
package/src/common/net.spec.js
CHANGED
|
@@ -1,104 +1,56 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
4
|
};
|
|
38
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
describe('Net', function () {
|
|
47
|
-
var port = 4567;
|
|
48
|
-
var defaultHost = '0.0.0.0';
|
|
49
|
-
var specialPort = -1;
|
|
6
|
+
const node_net_1 = __importDefault(require("node:net"));
|
|
7
|
+
const logger_1 = __importDefault(require("./logger"));
|
|
8
|
+
const net_1 = require("./net");
|
|
9
|
+
describe('Net', () => {
|
|
10
|
+
const port = 4567;
|
|
11
|
+
const defaultHost = '0.0.0.0';
|
|
12
|
+
const specialPort = -1;
|
|
50
13
|
// Utility function to create a server on a given port and return a Promise
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
server.listen({ port: p, host: host, exclusive: true }, function () {
|
|
58
|
-
logger_1.default.info("test server is up on ".concat(host, ":").concat(p));
|
|
59
|
-
});
|
|
14
|
+
const createServer = (p, host = defaultHost) => new Promise((resolve, reject) => {
|
|
15
|
+
const server = node_net_1.default.createServer();
|
|
16
|
+
server.on('error', (err) => reject(err));
|
|
17
|
+
server.on('listening', () => resolve(server));
|
|
18
|
+
server.listen({ port: p, host, exclusive: true }, () => {
|
|
19
|
+
logger_1.default.info(`test server is up on ${host}:${p}`);
|
|
60
20
|
});
|
|
61
|
-
};
|
|
62
|
-
describe('#isPortAvailable',
|
|
63
|
-
|
|
64
|
-
it('returns a rejected promise',
|
|
65
|
-
|
|
66
|
-
.rejected;
|
|
21
|
+
});
|
|
22
|
+
describe('#isPortAvailable', () => {
|
|
23
|
+
describe('when the port is not allowed to be bound', () => {
|
|
24
|
+
it('returns a rejected promise', async () => {
|
|
25
|
+
await expect((0, net_1.isPortAvailable)(specialPort, defaultHost)).rejects.toBeDefined();
|
|
67
26
|
});
|
|
68
27
|
});
|
|
69
|
-
|
|
70
|
-
it('returns a fulfilled promise',
|
|
71
|
-
|
|
28
|
+
describe('when the port is available', () => {
|
|
29
|
+
it('returns a fulfilled promise', async () => {
|
|
30
|
+
await (0, net_1.isPortAvailable)(port, defaultHost);
|
|
72
31
|
});
|
|
73
32
|
});
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
// close the servers used in this test as to not conflict with other tests
|
|
84
|
-
afterEach(function (done) {
|
|
85
|
-
closeFn(done);
|
|
33
|
+
describe('when the port is unavailable', () => {
|
|
34
|
+
it('returns a rejected promise', async () => {
|
|
35
|
+
const server = await createServer(port);
|
|
36
|
+
try {
|
|
37
|
+
await expect((0, net_1.isPortAvailable)(port, defaultHost)).rejects.toBeDefined();
|
|
38
|
+
}
|
|
39
|
+
finally {
|
|
40
|
+
await new Promise((resolve) => server?.close(() => resolve()));
|
|
41
|
+
}
|
|
86
42
|
});
|
|
87
43
|
});
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return createServer(port, '::1').then(function (server) {
|
|
93
|
-
closeFn = server.close.bind(server);
|
|
44
|
+
describe('when a single host is unavailable', () => {
|
|
45
|
+
it('returns a fulfilled promise', async () => {
|
|
46
|
+
const server = await createServer(port, '::1');
|
|
47
|
+
try {
|
|
94
48
|
// this should work as the `127.0.0.1` is NOT `::1`
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
afterEach(function (done) {
|
|
101
|
-
closeFn(done);
|
|
49
|
+
await (0, net_1.isPortAvailable)(port, '127.0.0.1');
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
await new Promise((resolve) => server?.close(() => resolve()));
|
|
53
|
+
}
|
|
102
54
|
});
|
|
103
55
|
});
|
|
104
56
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"net.spec.js","sourceRoot":"","sources":["../../../src/common/net.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"net.spec.js","sourceRoot":"","sources":["../../../src/common/net.spec.ts"],"names":[],"mappings":"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"}
|
package/src/common/request.js
CHANGED
|
@@ -1,49 +1,13 @@
|
|
|
1
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
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
4
|
};
|
|
41
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
6
|
exports.Request = exports.HTTPMethods = void 0;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
7
|
+
const node_https_1 = __importDefault(require("node:https"));
|
|
8
|
+
const axios_1 = __importDefault(require("axios"));
|
|
9
|
+
const ramda_1 = require("ramda");
|
|
10
|
+
const logger_1 = __importDefault(require("./logger"));
|
|
47
11
|
var HTTPMethods;
|
|
48
12
|
(function (HTTPMethods) {
|
|
49
13
|
HTTPMethods["GET"] = "GET";
|
|
@@ -62,48 +26,35 @@ var HTTPMethods;
|
|
|
62
26
|
HTTPMethods["UNLOCK"] = "UNLOCK";
|
|
63
27
|
HTTPMethods["REPORT"] = "REPORT";
|
|
64
28
|
})(HTTPMethods || (exports.HTTPMethods = HTTPMethods = {}));
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
keepAlive: true,
|
|
83
|
-
rejectUnauthorized: false,
|
|
84
|
-
}),
|
|
85
|
-
method: method,
|
|
86
|
-
timeout: 10000,
|
|
87
|
-
url: url,
|
|
88
|
-
maxBodyLength: Infinity,
|
|
89
|
-
})];
|
|
90
|
-
case 1:
|
|
91
|
-
res = _a.sent();
|
|
92
|
-
if (res.status >= 200 && res.status < 400) {
|
|
93
|
-
return [2 /*return*/, res.data];
|
|
94
|
-
}
|
|
95
|
-
return [4 /*yield*/, Promise.reject(res.data)];
|
|
96
|
-
case 2: return [2 /*return*/, _a.sent()];
|
|
97
|
-
case 3:
|
|
98
|
-
e_1 = _a.sent();
|
|
99
|
-
logger_1.default.error("error making http request: ".concat(e_1.message));
|
|
100
|
-
return [2 /*return*/, Promise.reject((0, ramda_1.pathOr)(e_1.message, ['response', 'data'], e_1))];
|
|
101
|
-
case 4: return [2 /*return*/];
|
|
102
|
-
}
|
|
29
|
+
class Request {
|
|
30
|
+
async send(method, url, body) {
|
|
31
|
+
try {
|
|
32
|
+
const res = await (0, axios_1.default)(url, {
|
|
33
|
+
data: body,
|
|
34
|
+
headers: {
|
|
35
|
+
'Content-Type': 'application/json',
|
|
36
|
+
'X-Pact-Mock-Service': 'true',
|
|
37
|
+
},
|
|
38
|
+
httpsAgent: new node_https_1.default.Agent({
|
|
39
|
+
keepAlive: true,
|
|
40
|
+
rejectUnauthorized: false,
|
|
41
|
+
}),
|
|
42
|
+
method,
|
|
43
|
+
timeout: 10000,
|
|
44
|
+
url,
|
|
45
|
+
maxBodyLength: Infinity,
|
|
103
46
|
});
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
47
|
+
if (res.status >= 200 && res.status < 400) {
|
|
48
|
+
return res.data;
|
|
49
|
+
}
|
|
50
|
+
return await Promise.reject(res.data);
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
54
|
+
logger_1.default.error(`error making http request: ${error.message}`);
|
|
55
|
+
return Promise.reject((0, ramda_1.pathOr)(error.message, ['response', 'data'], e));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
108
59
|
exports.Request = Request;
|
|
109
60
|
//# sourceMappingURL=request.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/common/request.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/common/request.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA+B;AAC/B,kDAA0B;AAC1B,iCAA+B;AAC/B,sDAA8B;AAE9B,IAAY,WAgBX;AAhBD,WAAY,WAAW;IACrB,0BAAW,CAAA;IACX,4BAAa,CAAA;IACb,0BAAW,CAAA;IACX,8BAAe,CAAA;IACf,gCAAiB,CAAA;IACjB,4BAAa,CAAA;IACb,kCAAmB,CAAA;IACnB,4BAAa,CAAA;IACb,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,4BAAa,CAAA;IACb,oCAAqB,CAAA;IACrB,sCAAuB,CAAA;IACvB,gCAAiB,CAAA;IACjB,gCAAiB,CAAA;AACnB,CAAC,EAhBW,WAAW,2BAAX,WAAW,QAgBtB;AAmBD,MAAa,OAAO;IACX,KAAK,CAAC,IAAI,CACf,MAAkB,EAClB,GAAW,EACX,IAAa;QAEb,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAA,eAAK,EAAC,GAAG,EAAE;gBAC3B,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,qBAAqB,EAAE,MAAM;iBAC9B;gBACD,UAAU,EAAE,IAAI,oBAAK,CAAC,KAAK,CAAC;oBAC1B,SAAS,EAAE,IAAI;oBACf,kBAAkB,EAAE,KAAK;iBAC1B,CAAC;gBACF,MAAM;gBACN,OAAO,EAAE,KAAK;gBACd,GAAG;gBACH,aAAa,EAAE,QAAQ;aACxB,CAAC,CAAC;YAEH,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC1C,OAAO,GAAG,CAAC,IAAI,CAAC;YAClB,CAAC;YACD,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,gBAAM,CAAC,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5D,OAAO,OAAO,CAAC,MAAM,CACnB,IAAA,cAAM,EACJ,KAAK,CAAC,OAAO,EACb,CAAC,UAAU,EAAE,MAAM,CAAC,EACpB,CAA4B,CAC7B,CACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAvCD,0BAuCC"}
|