@pact-foundation/pact-core 13.6.2 → 13.7.2
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 +21 -0
- package/CONTRIBUTING.md +5 -0
- package/README.md +4 -4
- package/bin/pact-broker.js +6 -3
- package/bin/pact-broker.js.map +1 -1
- package/bin/pact-message.js +6 -3
- package/bin/pact-message.js.map +1 -1
- package/bin/pact-mock-service.js +6 -3
- package/bin/pact-mock-service.js.map +1 -1
- package/bin/pact-provider-verifier.js +6 -3
- package/bin/pact-provider-verifier.js.map +1 -1
- package/bin/pact-stub-service.js +6 -3
- package/bin/pact-stub-service.js.map +1 -1
- package/bin/pact.js +6 -3
- package/bin/pact.js.map +1 -1
- package/bin/pactflow.d.ts +2 -0
- package/bin/pactflow.js +13 -0
- package/bin/pactflow.js.map +1 -0
- package/build/Makefile +1 -1
- package/package.json +5 -5
- package/src/can-deploy.js +71 -78
- package/src/can-deploy.js.map +1 -1
- package/src/consumer/checkErrors.js +14 -33
- package/src/consumer/checkErrors.js.map +1 -1
- package/src/consumer/index.js +72 -94
- package/src/consumer/index.js.map +1 -1
- package/src/ffi/index.js +29 -11
- package/src/ffi/index.js.map +1 -1
- package/src/ffi/internals/index.js +14 -16
- package/src/ffi/internals/index.js.map +1 -1
- package/src/index.js +4 -1
- package/src/index.js.map +1 -1
- package/src/logger/crashMessage.js +18 -1
- package/src/logger/crashMessage.js.map +1 -1
- package/src/logger/index.js +19 -42
- package/src/logger/index.js.map +1 -1
- package/src/logger/pino.js +7 -9
- package/src/logger/pino.js.map +1 -1
- package/src/message.js +25 -35
- package/src/message.js.map +1 -1
- package/src/pact-environment.js +26 -15
- package/src/pact-environment.js.map +1 -1
- package/src/pact-standalone.d.ts +2 -0
- package/src/pact-standalone.js +39 -14
- package/src/pact-standalone.js.map +1 -1
- package/src/pact.js +83 -67
- package/src/pact.js.map +1 -1
- package/src/publisher.js +52 -32
- package/src/publisher.js.map +1 -1
- package/src/server.js +18 -35
- package/src/server.js.map +1 -1
- package/src/service.js +115 -126
- package/src/service.js.map +1 -1
- package/src/spawn/arguments.js +17 -25
- package/src/spawn/arguments.js.map +1 -1
- package/src/spawn/index.js +4 -1
- package/src/spawn/index.js.map +1 -1
- package/src/spawn/spawn.js +50 -45
- package/src/spawn/spawn.js.map +1 -1
- package/src/stub.js +14 -30
- package/src/stub.js.map +1 -1
- package/src/verifier/argumentMapper/arguments.js +27 -36
- package/src/verifier/argumentMapper/arguments.js.map +1 -1
- package/src/verifier/argumentMapper/index.js +50 -54
- package/src/verifier/argumentMapper/index.js.map +1 -1
- package/src/verifier/filesystem/index.js +5 -5
- package/src/verifier/filesystem/index.js.map +1 -1
- package/src/verifier/index.js +16 -21
- package/src/verifier/index.js.map +1 -1
- package/src/verifier/nativeVerifier.js +56 -35
- package/src/verifier/nativeVerifier.js.map +1 -1
- package/src/verifier/validateOptions.js +13 -21
- package/src/verifier/validateOptions.js.map +1 -1
- package/standalone/install.d.ts +0 -19
- package/standalone/install.js +16 -55
- package/standalone/install.js.map +1 -1
- package/tsconfig.json +1 -2
|
@@ -1,59 +1,80 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
2
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
22
|
exports.verify = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return obj.map(
|
|
23
|
+
const logger_1 = __importStar(require("../logger"));
|
|
24
|
+
const ffi_1 = require("../ffi");
|
|
25
|
+
const types_1 = require("../ffi/types");
|
|
26
|
+
const url_1 = require("url");
|
|
27
|
+
const pkg = require('../../package.json');
|
|
28
|
+
const fs = require("fs");
|
|
29
|
+
const objArrayToStringArray = (obj) => {
|
|
30
|
+
return obj.map((o) => JSON.stringify(o));
|
|
12
31
|
};
|
|
13
|
-
|
|
14
|
-
|
|
32
|
+
const verify = (opts) => {
|
|
33
|
+
const ffi = ffi_1.getFfiLib(opts.logLevel);
|
|
15
34
|
if (opts.logLevel) {
|
|
16
35
|
logger_1.setLogLevel(opts.logLevel);
|
|
17
36
|
}
|
|
18
|
-
|
|
19
|
-
|
|
37
|
+
const handle = ffi.pactffiVerifierNewForApplication(pkg.name.split('/')[1], pkg.version);
|
|
38
|
+
const uri = new url_1.URL(opts.providerBaseUrl);
|
|
20
39
|
ffi.pactffiVerifierSetProviderInfo(handle, opts.provider || '', uri.protocol.split(':')[0], uri.hostname, parseInt(uri.port, 10), uri.pathname);
|
|
21
40
|
if (opts.providerStatesSetupUrl) {
|
|
22
41
|
ffi.pactffiVerifierSetProviderState(handle, opts.providerStatesSetupUrl, opts.providerStatesSetupTeardown || true, opts.providerStatesSetupBody || true);
|
|
23
42
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
43
|
+
if (opts.customProviderHeaders) {
|
|
44
|
+
Object.entries(opts.customProviderHeaders).forEach(([key, value]) => {
|
|
45
|
+
ffi.pactffiVerifierAddCustomHeader(handle, key, value);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
const filterDescription = process.env.PACT_DESCRIPTION || '';
|
|
49
|
+
const filterState = process.env.PACT_PROVIDER_STATE || '';
|
|
50
|
+
const filterNoState = process.env.PACT_PROVIDER_NO_STATE ? true : false;
|
|
30
51
|
ffi.pactffiVerifierSetFilterInfo(handle, filterDescription, filterState, filterNoState);
|
|
31
52
|
if (opts.pactUrls) {
|
|
32
|
-
opts.pactUrls.forEach(
|
|
33
|
-
logger_1.default.debug(
|
|
53
|
+
opts.pactUrls.forEach((file) => {
|
|
54
|
+
logger_1.default.debug(`checking source type of given pactUrl: ${file}`);
|
|
34
55
|
try {
|
|
35
|
-
|
|
56
|
+
const u = new url_1.URL(file);
|
|
36
57
|
if (u.hostname) {
|
|
37
|
-
logger_1.default.debug(
|
|
58
|
+
logger_1.default.debug(`adding ${file} as a Url source`);
|
|
38
59
|
ffi.pactffiVerifierUrlSource(handle, file, opts.pactBrokerUsername || '', opts.pactBrokerPassword || '', opts.pactBrokerToken || '');
|
|
39
60
|
}
|
|
40
61
|
}
|
|
41
|
-
catch
|
|
42
|
-
logger_1.default.debug(file
|
|
62
|
+
catch {
|
|
63
|
+
logger_1.default.debug(`${file} is not a URI`);
|
|
43
64
|
}
|
|
44
65
|
try {
|
|
45
|
-
|
|
66
|
+
const f = fs.lstatSync(file);
|
|
46
67
|
if (f.isDirectory()) {
|
|
47
|
-
logger_1.default.debug(
|
|
68
|
+
logger_1.default.debug(`adding ${file} as Directory source`);
|
|
48
69
|
ffi.pactffiVerifierAddDirectorySource(handle, file);
|
|
49
70
|
}
|
|
50
71
|
else if (f.isFile() || f.isSymbolicLink()) {
|
|
51
|
-
logger_1.default.debug(
|
|
72
|
+
logger_1.default.debug(`adding ${file} as File source`);
|
|
52
73
|
ffi.pactffiVerifierAddFileSource(handle, file);
|
|
53
74
|
}
|
|
54
75
|
}
|
|
55
|
-
catch
|
|
56
|
-
logger_1.default.debug(file
|
|
76
|
+
catch {
|
|
77
|
+
logger_1.default.debug(`${file} is not a file`);
|
|
57
78
|
}
|
|
58
79
|
});
|
|
59
80
|
}
|
|
@@ -68,17 +89,17 @@ var verify = function (opts) {
|
|
|
68
89
|
opts.providerVersionTags) {
|
|
69
90
|
ffi.pactffiVerifierSetPublishOptions(handle, opts.providerVersion || '', opts.buildUrl || '', opts.providerVersionTags || [], opts.providerBranch || '');
|
|
70
91
|
}
|
|
71
|
-
|
|
92
|
+
const brokerUrl = opts.pactBrokerUrl || process.env.PACT_BROKER_BASE_URL;
|
|
72
93
|
if (brokerUrl && opts.provider) {
|
|
73
94
|
ffi.pactffiVerifierBrokerSourceWithSelectors(handle, brokerUrl, opts.pactBrokerUsername || process.env.PACT_BROKER_USERNAME || '', opts.pactBrokerPassword || process.env.PACT_BROKER_PASSWORD || '', opts.pactBrokerToken || process.env.PACT_BROKER_TOKEN || '', opts.enablePending || false, opts.includeWipPactsSince || '', opts.providerVersionTags || [], opts.providerBranch || '', opts.consumerVersionSelectors
|
|
74
95
|
? objArrayToStringArray(opts.consumerVersionSelectors)
|
|
75
96
|
: [], opts.consumerVersionTags || []);
|
|
76
97
|
}
|
|
77
|
-
return new Promise(
|
|
78
|
-
ffi.pactffiVerifierExecute(handle,
|
|
79
|
-
logger_1.default.debug(
|
|
98
|
+
return new Promise((resolve, reject) => {
|
|
99
|
+
ffi.pactffiVerifierExecute(handle, (err, res) => {
|
|
100
|
+
logger_1.default.debug(`shutting down verifier with handle ${handle}`);
|
|
80
101
|
ffi.pactffiVerifierShutdown(handle);
|
|
81
|
-
logger_1.default.debug(
|
|
102
|
+
logger_1.default.debug(`response from verifier: ${err}, ${res}`);
|
|
82
103
|
if (err) {
|
|
83
104
|
if (typeof err === 'string') {
|
|
84
105
|
logger_1.default.error(err);
|
|
@@ -93,7 +114,7 @@ var verify = function (opts) {
|
|
|
93
114
|
switch (res) {
|
|
94
115
|
case types_1.VERIFY_PROVIDER_RESPONSE.VERIFICATION_SUCCESSFUL:
|
|
95
116
|
logger_1.default.info('Verification successful');
|
|
96
|
-
resolve(
|
|
117
|
+
resolve(`finished: ${res}`);
|
|
97
118
|
break;
|
|
98
119
|
case types_1.VERIFY_PROVIDER_RESPONSE.VERIFICATION_FAILED:
|
|
99
120
|
logger_1.default.error('Verification unsuccessful');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeVerifier.js","sourceRoot":"","sources":["nativeVerifier.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nativeVerifier.js","sourceRoot":"","sources":["nativeVerifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
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);
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
4
|
};
|
|
13
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
6
|
exports.validateOptions = void 0;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
7
|
+
const checkTypes = require("check-types");
|
|
8
|
+
const logger_1 = __importDefault(require("../logger"));
|
|
9
|
+
const LogLevels = ['debug', 'error', 'info', 'trace', 'warn'];
|
|
10
|
+
const validateOptions = (o) => {
|
|
11
|
+
const options = { ...o };
|
|
20
12
|
if (options.logLevel) {
|
|
21
13
|
if (LogLevels.includes(options.logLevel.toLowerCase())) {
|
|
22
14
|
options.logLevel = options.logLevel.toLowerCase();
|
|
23
15
|
}
|
|
24
16
|
else {
|
|
25
|
-
throw new Error(
|
|
17
|
+
throw new Error(`The logLevel '${options.logLevel}' is not a valid logLevel. The valid options are: ${LogLevels.join(', ')}`);
|
|
26
18
|
}
|
|
27
19
|
}
|
|
28
20
|
if (options.providerVersionTags) {
|
|
@@ -49,7 +41,7 @@ var validateOptions = function (o) {
|
|
|
49
41
|
}
|
|
50
42
|
if (options.consumerVersionSelectors &&
|
|
51
43
|
Array.isArray(options.consumerVersionSelectors)) {
|
|
52
|
-
|
|
44
|
+
const PROPS = [
|
|
53
45
|
'tag',
|
|
54
46
|
'latest',
|
|
55
47
|
'consumer',
|
|
@@ -62,16 +54,16 @@ var validateOptions = function (o) {
|
|
|
62
54
|
'mainBranch',
|
|
63
55
|
'matchingBranch',
|
|
64
56
|
];
|
|
65
|
-
options.consumerVersionSelectors.forEach(
|
|
57
|
+
options.consumerVersionSelectors.forEach((selector) => {
|
|
66
58
|
if (selector.tag === 'latest') {
|
|
67
59
|
logger_1.default.warn("Using the tag 'latest' is not recommended and probably does not do what you intended.");
|
|
68
60
|
logger_1.default.warn(' See https://docs.pact.io/pact_broker/tags/#latest-pacts');
|
|
69
61
|
logger_1.default.warn(' If you need to specify latest, try:');
|
|
70
62
|
logger_1.default.warn(' consumerVersionSelectors: [{ lastest: true }]');
|
|
71
63
|
}
|
|
72
|
-
Object.keys(selector).forEach(
|
|
73
|
-
if (!
|
|
74
|
-
throw new Error(
|
|
64
|
+
Object.keys(selector).forEach((key) => {
|
|
65
|
+
if (!PROPS.includes(key)) {
|
|
66
|
+
throw new Error(`The property '${key}' is not a valid property of ConsumerVersionSelector. Allowed properties are ${PROPS.join(', ')})`);
|
|
75
67
|
}
|
|
76
68
|
});
|
|
77
69
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateOptions.js","sourceRoot":"","sources":["validateOptions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validateOptions.js","sourceRoot":"","sources":["validateOptions.ts"],"names":[],"mappings":"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"}
|
package/standalone/install.d.ts
CHANGED
|
@@ -1,32 +1,13 @@
|
|
|
1
1
|
export declare const PACT_STANDALONE_VERSION = "1.89.02-rc1";
|
|
2
2
|
export declare function createConfig(location?: string): Config;
|
|
3
3
|
export declare function getBinaryEntry(platform?: string, arch?: string): BinaryEntry;
|
|
4
|
-
export interface PackageConfig {
|
|
5
|
-
binaryLocation?: string;
|
|
6
|
-
doNotTrack?: boolean;
|
|
7
|
-
}
|
|
8
4
|
export interface Config {
|
|
9
|
-
doNotTrack: boolean;
|
|
10
5
|
binaries: BinaryEntry[];
|
|
11
6
|
}
|
|
12
|
-
export interface Data {
|
|
13
|
-
binaryDownloadPath: string;
|
|
14
|
-
checksumDownloadPath: string;
|
|
15
|
-
filepath: string;
|
|
16
|
-
checksumFilepath: string;
|
|
17
|
-
platform: string;
|
|
18
|
-
isWindows: boolean;
|
|
19
|
-
arch?: string;
|
|
20
|
-
platformFolderPath?: string;
|
|
21
|
-
binaryInstallSkipped?: boolean;
|
|
22
|
-
binaryAlreadyDownloaded?: boolean;
|
|
23
|
-
binaryAlreadyInstalled?: boolean;
|
|
24
|
-
}
|
|
25
7
|
export interface BinaryEntry {
|
|
26
8
|
platform: string;
|
|
27
9
|
arch?: string;
|
|
28
10
|
binary: string;
|
|
29
11
|
binaryChecksum: string;
|
|
30
|
-
downloadLocation: string;
|
|
31
12
|
folderName: string;
|
|
32
13
|
}
|
package/standalone/install.js
CHANGED
|
@@ -1,88 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getBinaryEntry = exports.createConfig = exports.PACT_STANDALONE_VERSION = void 0;
|
|
4
|
-
|
|
5
|
-
var path = require("path");
|
|
6
|
-
var fs = require("fs");
|
|
4
|
+
const chalk = require("chalk");
|
|
7
5
|
exports.PACT_STANDALONE_VERSION = '1.89.02-rc1';
|
|
8
|
-
var PACT_DEFAULT_LOCATION = "https://github.com/pact-foundation/pact-ruby-standalone/releases/download/v" + exports.PACT_STANDALONE_VERSION + "/";
|
|
9
|
-
var HTTP_REGEX = /^http(s?):\/\//;
|
|
10
6
|
function throwError(msg) {
|
|
11
|
-
throw new Error(chalk.red(
|
|
7
|
+
throw new Error(chalk.red(`Error while locating pact binary: ${msg}`));
|
|
12
8
|
}
|
|
13
|
-
function
|
|
14
|
-
|
|
15
|
-
return undefined;
|
|
16
|
-
}
|
|
17
|
-
return HTTP_REGEX.test(location)
|
|
18
|
-
? location
|
|
19
|
-
: path.resolve(basePath, location);
|
|
20
|
-
}
|
|
21
|
-
function findPackageConfig(location, tries) {
|
|
22
|
-
if (tries === void 0) { tries = 10; }
|
|
23
|
-
if (tries === 0) {
|
|
24
|
-
return {};
|
|
25
|
-
}
|
|
26
|
-
var packagePath = path.resolve(location, 'package.json');
|
|
27
|
-
if (fs.existsSync(packagePath)) {
|
|
28
|
-
var config = require(packagePath).config;
|
|
29
|
-
if (config && (config.pact_binary_location || config.pact_do_not_track)) {
|
|
30
|
-
return {
|
|
31
|
-
binaryLocation: getBinaryLocation(config.pact_binary_location, location),
|
|
32
|
-
doNotTrack: config.pact_do_not_track,
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return findPackageConfig(path.resolve(location, '..'), tries - 1);
|
|
37
|
-
}
|
|
38
|
-
function createConfig(location) {
|
|
39
|
-
if (location === void 0) { location = process.cwd(); }
|
|
40
|
-
var packageConfig = findPackageConfig(location);
|
|
41
|
-
var PACT_BINARY_LOCATION = packageConfig.binaryLocation || PACT_DEFAULT_LOCATION;
|
|
42
|
-
var CHECKSUM_SUFFIX = '.checksum';
|
|
9
|
+
function createConfig(location = process.cwd()) {
|
|
10
|
+
const CHECKSUM_SUFFIX = '.checksum';
|
|
43
11
|
return {
|
|
44
|
-
doNotTrack: packageConfig.doNotTrack ||
|
|
45
|
-
process.env.PACT_DO_NOT_TRACK !== undefined ||
|
|
46
|
-
false,
|
|
47
12
|
binaries: [
|
|
48
13
|
{
|
|
49
14
|
platform: 'win32',
|
|
50
|
-
binary:
|
|
51
|
-
binaryChecksum:
|
|
52
|
-
|
|
53
|
-
folderName: "win32-" + exports.PACT_STANDALONE_VERSION,
|
|
15
|
+
binary: `pact-${exports.PACT_STANDALONE_VERSION}-win32.zip`,
|
|
16
|
+
binaryChecksum: `pact-${exports.PACT_STANDALONE_VERSION}-win32.zip${CHECKSUM_SUFFIX}`,
|
|
17
|
+
folderName: `win32-${exports.PACT_STANDALONE_VERSION}`,
|
|
54
18
|
},
|
|
55
19
|
{
|
|
56
20
|
platform: 'darwin',
|
|
57
|
-
binary:
|
|
58
|
-
binaryChecksum:
|
|
59
|
-
|
|
60
|
-
folderName: "darwin-" + exports.PACT_STANDALONE_VERSION,
|
|
21
|
+
binary: `pact-${exports.PACT_STANDALONE_VERSION}-osx.tar.gz`,
|
|
22
|
+
binaryChecksum: `pact-${exports.PACT_STANDALONE_VERSION}-osx.tar.gz${CHECKSUM_SUFFIX}`,
|
|
23
|
+
folderName: `darwin-${exports.PACT_STANDALONE_VERSION}`,
|
|
61
24
|
},
|
|
62
25
|
{
|
|
63
26
|
platform: 'linux',
|
|
64
27
|
arch: 'x64',
|
|
65
|
-
binary:
|
|
66
|
-
binaryChecksum:
|
|
67
|
-
|
|
68
|
-
folderName: "linux-x64-" + exports.PACT_STANDALONE_VERSION,
|
|
28
|
+
binary: `pact-${exports.PACT_STANDALONE_VERSION}-linux-x86_64.tar.gz`,
|
|
29
|
+
binaryChecksum: `pact-${exports.PACT_STANDALONE_VERSION}-linux-x86_64.tar.gz${CHECKSUM_SUFFIX}`,
|
|
30
|
+
folderName: `linux-x64-${exports.PACT_STANDALONE_VERSION}`,
|
|
69
31
|
},
|
|
70
32
|
],
|
|
71
33
|
};
|
|
72
34
|
}
|
|
73
35
|
exports.createConfig = createConfig;
|
|
74
|
-
|
|
36
|
+
const CONFIG = createConfig();
|
|
75
37
|
function getBinaryEntry(platform, arch) {
|
|
76
38
|
platform = platform || process.platform;
|
|
77
39
|
arch = arch || process.arch;
|
|
78
|
-
for (
|
|
79
|
-
var value = _a[_i];
|
|
40
|
+
for (let value of CONFIG.binaries) {
|
|
80
41
|
if (value.platform === platform &&
|
|
81
42
|
(value.arch ? value.arch === arch : true)) {
|
|
82
43
|
return value;
|
|
83
44
|
}
|
|
84
45
|
}
|
|
85
|
-
throw throwError(
|
|
46
|
+
throw throwError(`Cannot find binary for platform '${platform}' with architecture '${arch}'.`);
|
|
86
47
|
}
|
|
87
48
|
exports.getBinaryEntry = getBinaryEntry;
|
|
88
49
|
//# sourceMappingURL=install.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["install.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["install.ts"],"names":[],"mappings":";;;AAAA,+BAAgC;AAGnB,QAAA,uBAAuB,GAAG,aAAa,CAAC;AAErD,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAgB,YAAY,CAAC,WAAmB,OAAO,CAAC,GAAG,EAAE;IAC3D,MAAM,eAAe,GAAG,WAAW,CAAC;IAEpC,OAAO;QACL,QAAQ,EAAE;YACR;gBACE,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,QAAQ,+BAAuB,YAAY;gBACnD,cAAc,EAAE,QAAQ,+BAAuB,aAAa,eAAe,EAAE;gBAC7E,UAAU,EAAE,SAAS,+BAAuB,EAAE;aAC/C;YACD;gBACE,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,QAAQ,+BAAuB,aAAa;gBACpD,cAAc,EAAE,QAAQ,+BAAuB,cAAc,eAAe,EAAE;gBAC9E,UAAU,EAAE,UAAU,+BAAuB,EAAE;aAChD;YACD;gBACE,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,QAAQ,+BAAuB,sBAAsB;gBAC7D,cAAc,EAAE,QAAQ,+BAAuB,uBAAuB,eAAe,EAAE;gBACvF,UAAU,EAAE,aAAa,+BAAuB,EAAE;aACnD;SACF;KACF,CAAC;AACJ,CAAC;AA1BD,oCA0BC;AAED,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;AAE9B,SAAgB,cAAc,CAAC,QAAiB,EAAE,IAAa;IAC7D,QAAQ,GAAG,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACxC,IAAI,GAAG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAC5B,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE;QACjC,IACE,KAAK,CAAC,QAAQ,KAAK,QAAQ;YAC3B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EACzC;YACA,OAAO,KAAK,CAAC;SACd;KACF;IACD,MAAM,UAAU,CACd,oCAAoC,QAAQ,wBAAwB,IAAI,IAAI,CAC7E,CAAC;AACJ,CAAC;AAdD,wCAcC"}
|