@cdktn/commons 0.22.0-pre.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/README.md +3 -0
- package/ambient.d.ts +14 -0
- package/eslint.config.mjs +77 -0
- package/jest.config.js +19 -0
- package/package.json +76 -0
- package/src/checkpoint.d.ts +19 -0
- package/src/checkpoint.d.ts.map +1 -0
- package/src/checkpoint.js +176 -0
- package/src/config.d.ts +61 -0
- package/src/config.d.ts.map +1 -0
- package/src/config.js +267 -0
- package/src/config.test.d.ts +2 -0
- package/src/config.test.d.ts.map +1 -0
- package/src/config.test.js +680 -0
- package/src/construct-maker-target.d.ts +57 -0
- package/src/construct-maker-target.d.ts.map +1 -0
- package/src/construct-maker-target.js +129 -0
- package/src/construct-maker-target.test.d.ts +6 -0
- package/src/construct-maker-target.test.d.ts.map +1 -0
- package/src/construct-maker-target.test.js +72 -0
- package/src/debug.d.ts +13 -0
- package/src/debug.d.ts.map +1 -0
- package/src/debug.js +379 -0
- package/src/environment.d.ts +4 -0
- package/src/environment.d.ts.map +1 -0
- package/src/environment.js +15 -0
- package/src/errors.d.ts +10 -0
- package/src/errors.d.ts.map +1 -0
- package/src/errors.js +75 -0
- package/src/gradle.d.ts +19 -0
- package/src/gradle.d.ts.map +1 -0
- package/src/gradle.js +160 -0
- package/src/index.d.ts +15 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +33 -0
- package/src/logging.d.ts +17 -0
- package/src/logging.d.ts.map +1 -0
- package/src/logging.js +117 -0
- package/src/module-schema.d.ts +17 -0
- package/src/module-schema.d.ts.map +1 -0
- package/src/module-schema.js +3 -0
- package/src/provider-schema.d.ts +99 -0
- package/src/provider-schema.d.ts.map +1 -0
- package/src/provider-schema.js +21 -0
- package/src/terraform-module.d.ts +2 -0
- package/src/terraform-module.d.ts.map +1 -0
- package/src/terraform-module.js +23 -0
- package/src/terraform-module.test.d.ts +6 -0
- package/src/terraform-module.test.d.ts.map +1 -0
- package/src/terraform-module.test.js +31 -0
- package/src/terraform.d.ts +3 -0
- package/src/terraform.d.ts.map +1 -0
- package/src/terraform.js +12 -0
- package/src/util.d.ts +39 -0
- package/src/util.d.ts.map +1 -0
- package/src/util.js +262 -0
- package/src/version.d.ts +2 -0
- package/src/version.d.ts.map +1 -0
- package/src/version.js +11 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terraform.d.ts","sourceRoot":"","sources":["terraform.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB,QACkB,CAAC;AACnD,eAAO,MAAM,gBAAgB,cAQ1B,CAAC"}
|
package/src/terraform.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.terraformVersion = exports.terraformBinaryName = void 0;
|
|
4
|
+
// Copyright (c) HashiCorp, Inc
|
|
5
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
6
|
+
const errors_1 = require("./errors");
|
|
7
|
+
const util_1 = require("./util");
|
|
8
|
+
exports.terraformBinaryName = process.env.TERRAFORM_BINARY_NAME || "terraform";
|
|
9
|
+
exports.terraformVersion = (0, util_1.exec)(exports.terraformBinaryName, ["version", "-json"], {})
|
|
10
|
+
.then((versionString) => JSON.parse(versionString).terraform_version)
|
|
11
|
+
.catch((err) => errors_1.Errors.Usage(`Unknown: Error loading terraform version ${err}`, err));
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGVycmFmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMscUNBQWtDO0FBQ2xDLGlDQUE4QjtBQUVqQixRQUFBLG1CQUFtQixHQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixJQUFJLFdBQVcsQ0FBQztBQUN0QyxRQUFBLGdCQUFnQixHQUFHLElBQUEsV0FBSSxFQUNsQywyQkFBbUIsRUFDbkIsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEVBQ3BCLEVBQUUsQ0FDSDtLQUNFLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztLQUNwRSxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNiLGVBQU0sQ0FBQyxLQUFLLENBQUMsNENBQTRDLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUNyRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IEVycm9ycyB9IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gXCIuL3V0aWxcIjtcblxuZXhwb3J0IGNvbnN0IHRlcnJhZm9ybUJpbmFyeU5hbWUgPVxuICBwcm9jZXNzLmVudi5URVJSQUZPUk1fQklOQVJZX05BTUUgfHwgXCJ0ZXJyYWZvcm1cIjtcbmV4cG9ydCBjb25zdCB0ZXJyYWZvcm1WZXJzaW9uID0gZXhlYyhcbiAgdGVycmFmb3JtQmluYXJ5TmFtZSxcbiAgW1widmVyc2lvblwiLCBcIi1qc29uXCJdLFxuICB7fSxcbilcbiAgLnRoZW4oKHZlcnNpb25TdHJpbmcpID0+IEpTT04ucGFyc2UodmVyc2lvblN0cmluZykudGVycmFmb3JtX3ZlcnNpb24pXG4gIC5jYXRjaCgoZXJyKSA9PlxuICAgIEVycm9ycy5Vc2FnZShgVW5rbm93bjogRXJyb3IgbG9hZGluZyB0ZXJyYWZvcm0gdmVyc2lvbiAke2Vycn1gLCBlcnIpLFxuICApO1xuIl19
|
package/src/util.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/// <reference types="ambient" />
|
|
2
|
+
/// <reference types="node/child_process" />
|
|
3
|
+
import { SpawnOptions } from "child_process";
|
|
4
|
+
import { IManifest } from "cdktn";
|
|
5
|
+
export declare function shell(program: string, args?: string[], options?: SpawnOptions & {
|
|
6
|
+
noColor?: boolean;
|
|
7
|
+
}): Promise<string>;
|
|
8
|
+
export declare function withTempDir(dirname: string, closure: () => Promise<void>): Promise<void>;
|
|
9
|
+
export declare function mkdtemp(closure: (dir: string) => Promise<void>): Promise<void>;
|
|
10
|
+
export declare const exec: (command: string, args: string[], options: SpawnOptions & {
|
|
11
|
+
noColor?: boolean;
|
|
12
|
+
}, stdout?: (chunk: string) => any, stderr?: (chunk: string | Uint8Array) => any, sendToStderr?: boolean) => Promise<string>;
|
|
13
|
+
export declare function readCDKTFVersion(outputDir: string): Promise<string>;
|
|
14
|
+
export declare function readCDKTFManifest(): Promise<IManifest>;
|
|
15
|
+
/**
|
|
16
|
+
* Downcase the first character in a string.
|
|
17
|
+
*
|
|
18
|
+
* @param str the string to be processed.
|
|
19
|
+
*/
|
|
20
|
+
export declare function downcaseFirst(str: string): string;
|
|
21
|
+
export declare class HttpError extends Error {
|
|
22
|
+
statusCode?: number | undefined;
|
|
23
|
+
constructor(message?: string, statusCode?: number | undefined);
|
|
24
|
+
}
|
|
25
|
+
export declare function downloadFile(url: string, targetFilename: string): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Awaits a promise and makes sure it's error (if any) is only thrown after all other promises are settled
|
|
28
|
+
* if the promise does not throw an error, the other promises won't be awaited
|
|
29
|
+
* @param p promise to await
|
|
30
|
+
* @param promises promises to await to be all settled if p failed before throwing error that p failed with
|
|
31
|
+
*/
|
|
32
|
+
export declare function ensureAllSettledBeforeThrowing(p: Promise<any>, promises: (Promise<any> | undefined)[]): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* returns true if --no-color is passed as CLI flag or the env var FORCE_COLOR is set to "0"
|
|
35
|
+
* Used for cases where we can't pass down the noColor flag (e.g. when collecting debug information from the environment)
|
|
36
|
+
* This is the same behavior as the `chalk` lib we use for coloring output
|
|
37
|
+
*/
|
|
38
|
+
export declare function hasNoColorFlagOrEnv(): boolean;
|
|
39
|
+
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["util.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAO7C,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAI5C,wBAAsB,KAAK,CACzB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,MAAM,EAAO,EACnB,OAAO,GAAE,YAAY,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,mBAsCnD;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,iBAa7B;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,iBAOpE;AAED,eAAO,MAAM,IAAI,YACN,MAAM,QACT,MAAM,EAAE,WACL,YAAY,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,WACpC,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,WACtB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,KAAK,GAAG,6BAE3C,QAAQ,MAAM,CA8DhB,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASzE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,SAAS,CAAC,CAI5D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED,qBAAa,SAAU,SAAQ,KAAK;IAGzB,UAAU,CAAC;gBADlB,OAAO,CAAC,EAAE,MAAM,EACT,UAAU,CAAC,oBAAQ;CAM7B;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAClD,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,EACf,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,EAAE,iBAUvC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C"}
|
package/src/util.js
ADDED
|
@@ -0,0 +1,262 @@
|
|
|
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 (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.hasNoColorFlagOrEnv = exports.ensureAllSettledBeforeThrowing = exports.downloadFile = exports.HttpError = exports.downcaseFirst = exports.readCDKTFManifest = exports.readCDKTFVersion = exports.exec = exports.mkdtemp = exports.withTempDir = exports.shell = void 0;
|
|
30
|
+
const cross_spawn_1 = require("cross-spawn");
|
|
31
|
+
const fs = __importStar(require("fs-extra"));
|
|
32
|
+
const follow_redirects_1 = require("follow-redirects");
|
|
33
|
+
const os = __importStar(require("os"));
|
|
34
|
+
const path = __importStar(require("path"));
|
|
35
|
+
const logging_1 = require("./logging");
|
|
36
|
+
const cdktn_1 = require("cdktn");
|
|
37
|
+
const config = __importStar(require("./config"));
|
|
38
|
+
const strip_ansi_1 = __importDefault(require("strip-ansi"));
|
|
39
|
+
async function shell(program, args = [], options = {}) {
|
|
40
|
+
const stderr = new Array();
|
|
41
|
+
const stdout = new Array();
|
|
42
|
+
try {
|
|
43
|
+
return await (0, exports.exec)(program, args, options, (chunk) => {
|
|
44
|
+
const sanitizedChunk = options.noColor
|
|
45
|
+
? (0, strip_ansi_1.default)(chunk.toLocaleString())
|
|
46
|
+
: chunk.toLocaleString();
|
|
47
|
+
stdout.push(sanitizedChunk);
|
|
48
|
+
console.log(sanitizedChunk);
|
|
49
|
+
}, (chunk) => {
|
|
50
|
+
const sanitizedChunk = options.noColor
|
|
51
|
+
? (0, strip_ansi_1.default)(chunk.toLocaleString())
|
|
52
|
+
: chunk.toLocaleString();
|
|
53
|
+
stderr.push(sanitizedChunk);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
if (stderr.length > 0) {
|
|
58
|
+
e.stderr = stderr.map((chunk) => chunk.toString()).join("");
|
|
59
|
+
if (options.noColor) {
|
|
60
|
+
e.stderr = (0, strip_ansi_1.default)(e.stderr);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (stdout.length > 0) {
|
|
64
|
+
e.stdout = stdout.join("");
|
|
65
|
+
if (options.noColor) {
|
|
66
|
+
e.stdout = (0, strip_ansi_1.default)(e.stdout);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
throw e;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.shell = shell;
|
|
73
|
+
async function withTempDir(dirname, closure) {
|
|
74
|
+
const prevdir = process.cwd();
|
|
75
|
+
const parent = await fs.mkdtemp(path.join(os.tmpdir(), "cdktf."));
|
|
76
|
+
const workdir = path.join(parent, dirname);
|
|
77
|
+
await fs.mkdirp(workdir);
|
|
78
|
+
try {
|
|
79
|
+
process.chdir(workdir);
|
|
80
|
+
await closure();
|
|
81
|
+
}
|
|
82
|
+
finally {
|
|
83
|
+
process.chdir(prevdir);
|
|
84
|
+
await fs.remove(parent);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.withTempDir = withTempDir;
|
|
88
|
+
async function mkdtemp(closure) {
|
|
89
|
+
const workdir = await fs.mkdtemp(path.join(os.tmpdir(), "cdktf."));
|
|
90
|
+
try {
|
|
91
|
+
await closure(workdir);
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
await fs.remove(workdir);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.mkdtemp = mkdtemp;
|
|
98
|
+
const exec = async (command, args, options, stdout, stderr, sendToStderr = true) => {
|
|
99
|
+
// if options.noColor is not set, checking the flags & environment if it should be set
|
|
100
|
+
// This is required for collectDebugInformation() which does not have knowledge about flags
|
|
101
|
+
if (typeof options.noColor !== "boolean" && hasNoColorFlagOrEnv()) {
|
|
102
|
+
options.noColor = true;
|
|
103
|
+
}
|
|
104
|
+
return new Promise((ok, ko) => {
|
|
105
|
+
var _a, _b, _c, _d;
|
|
106
|
+
const child = (0, cross_spawn_1.spawn)(command, args, options);
|
|
107
|
+
const out = new Array();
|
|
108
|
+
const err = new Array();
|
|
109
|
+
if (stdout !== undefined) {
|
|
110
|
+
(_a = child.stdout) === null || _a === void 0 ? void 0 : _a.on("data", (chunk) => {
|
|
111
|
+
const sanitizedChunk = options.noColor
|
|
112
|
+
? (0, strip_ansi_1.default)(chunk.toLocaleString())
|
|
113
|
+
: chunk.toLocaleString();
|
|
114
|
+
(0, logging_1.processLoggerDebug)(sanitizedChunk);
|
|
115
|
+
out.push(sanitizedChunk);
|
|
116
|
+
stdout(sanitizedChunk);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
(_b = child.stdout) === null || _b === void 0 ? void 0 : _b.on("data", (chunk) => {
|
|
121
|
+
const sanitizedChunk = options.noColor
|
|
122
|
+
? (0, strip_ansi_1.default)(chunk.toLocaleString())
|
|
123
|
+
: chunk.toLocaleString();
|
|
124
|
+
(0, logging_1.processLoggerDebug)(sanitizedChunk);
|
|
125
|
+
out.push(sanitizedChunk);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
if (stderr !== undefined) {
|
|
129
|
+
(_c = child.stderr) === null || _c === void 0 ? void 0 : _c.on("data", (chunk) => {
|
|
130
|
+
const sanitizedChunk = options.noColor
|
|
131
|
+
? (0, strip_ansi_1.default)(chunk.toLocaleString())
|
|
132
|
+
: chunk.toLocaleString();
|
|
133
|
+
(0, logging_1.processLoggerError)(sanitizedChunk);
|
|
134
|
+
if (sendToStderr) {
|
|
135
|
+
stderr(sanitizedChunk);
|
|
136
|
+
}
|
|
137
|
+
err.push(sanitizedChunk);
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
(_d = child.stderr) === null || _d === void 0 ? void 0 : _d.on("data", (chunk) => {
|
|
142
|
+
const sanitizedChunk = options.noColor
|
|
143
|
+
? (0, strip_ansi_1.default)(chunk.toLocaleString())
|
|
144
|
+
: chunk.toLocaleString();
|
|
145
|
+
(0, logging_1.processLoggerError)(sanitizedChunk);
|
|
146
|
+
if (sendToStderr) {
|
|
147
|
+
process.stderr.write(sanitizedChunk);
|
|
148
|
+
}
|
|
149
|
+
err.push(sanitizedChunk);
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
child.once("error", (err) => ko(err));
|
|
153
|
+
child.once("close", (code) => {
|
|
154
|
+
if (code !== 0) {
|
|
155
|
+
const error = new Error(`non-zero exit code ${code}`);
|
|
156
|
+
error.stderr = err.map((chunk) => chunk.toString()).join("");
|
|
157
|
+
return ko(error);
|
|
158
|
+
}
|
|
159
|
+
return ok(out.join(""));
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
};
|
|
163
|
+
exports.exec = exec;
|
|
164
|
+
async function readCDKTFVersion(outputDir) {
|
|
165
|
+
const outputFile = path.join(outputDir, "cdk.tf.json");
|
|
166
|
+
if (fs.existsSync(outputFile)) {
|
|
167
|
+
const outputJSON = fs.readFileSync(outputFile, "utf8");
|
|
168
|
+
const data = JSON.parse(outputJSON);
|
|
169
|
+
return data["//"].metadata.version;
|
|
170
|
+
}
|
|
171
|
+
return "";
|
|
172
|
+
}
|
|
173
|
+
exports.readCDKTFVersion = readCDKTFVersion;
|
|
174
|
+
async function readCDKTFManifest() {
|
|
175
|
+
const { output } = config.readConfigSync();
|
|
176
|
+
const json = await fs.readFile(path.join(output, cdktn_1.Manifest.fileName));
|
|
177
|
+
return JSON.parse(json.toString());
|
|
178
|
+
}
|
|
179
|
+
exports.readCDKTFManifest = readCDKTFManifest;
|
|
180
|
+
/**
|
|
181
|
+
* Downcase the first character in a string.
|
|
182
|
+
*
|
|
183
|
+
* @param str the string to be processed.
|
|
184
|
+
*/
|
|
185
|
+
function downcaseFirst(str) {
|
|
186
|
+
if (str === "") {
|
|
187
|
+
return str;
|
|
188
|
+
}
|
|
189
|
+
return `${str[0].toLocaleLowerCase()}${str.slice(1)}`;
|
|
190
|
+
}
|
|
191
|
+
exports.downcaseFirst = downcaseFirst;
|
|
192
|
+
class HttpError extends Error {
|
|
193
|
+
constructor(message, statusCode) {
|
|
194
|
+
super(message); // 'Error' breaks prototype chain here
|
|
195
|
+
this.statusCode = statusCode;
|
|
196
|
+
Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain
|
|
197
|
+
// see: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
exports.HttpError = HttpError;
|
|
201
|
+
async function downloadFile(url, targetFilename) {
|
|
202
|
+
// if the type is inferred to be "http|https" calling .get() is not possible
|
|
203
|
+
// because the options parameter (which we don't use anyway) for get is
|
|
204
|
+
// not compatible between http and https -> so we treat it as http
|
|
205
|
+
const client = (url.startsWith("http://") ? follow_redirects_1.http : follow_redirects_1.https);
|
|
206
|
+
const file = fs.createWriteStream(targetFilename);
|
|
207
|
+
return new Promise((ok, ko) => {
|
|
208
|
+
const request = client.get(url, (response) => {
|
|
209
|
+
if (response.statusCode !== 200) {
|
|
210
|
+
ko(new HttpError(`Failed to get '${url}' (${response.statusCode})`, response.statusCode));
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
response.pipe(file);
|
|
214
|
+
});
|
|
215
|
+
file.on("finish", () => ok());
|
|
216
|
+
request.on("error", (err) => {
|
|
217
|
+
fs.unlink(targetFilename, () => ko(err));
|
|
218
|
+
});
|
|
219
|
+
file.on("error", (err) => {
|
|
220
|
+
fs.unlink(targetFilename, () => ko(err));
|
|
221
|
+
});
|
|
222
|
+
request.end();
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
exports.downloadFile = downloadFile;
|
|
226
|
+
/**
|
|
227
|
+
* Awaits a promise and makes sure it's error (if any) is only thrown after all other promises are settled
|
|
228
|
+
* if the promise does not throw an error, the other promises won't be awaited
|
|
229
|
+
* @param p promise to await
|
|
230
|
+
* @param promises promises to await to be all settled if p failed before throwing error that p failed with
|
|
231
|
+
*/
|
|
232
|
+
async function ensureAllSettledBeforeThrowing(p, promises) {
|
|
233
|
+
try {
|
|
234
|
+
await p;
|
|
235
|
+
}
|
|
236
|
+
catch (e) {
|
|
237
|
+
// if an error happened, we still need to wait for all other promises that
|
|
238
|
+
// are currently in progress to complete to allow them to properly wrap up
|
|
239
|
+
await Promise.allSettled(promises);
|
|
240
|
+
throw e;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
exports.ensureAllSettledBeforeThrowing = ensureAllSettledBeforeThrowing;
|
|
244
|
+
/**
|
|
245
|
+
* returns true if --no-color is passed as CLI flag or the env var FORCE_COLOR is set to "0"
|
|
246
|
+
* Used for cases where we can't pass down the noColor flag (e.g. when collecting debug information from the environment)
|
|
247
|
+
* This is the same behavior as the `chalk` lib we use for coloring output
|
|
248
|
+
*/
|
|
249
|
+
function hasNoColorFlagOrEnv() {
|
|
250
|
+
return hasFlag("no-color") || process.env.FORCE_COLOR === "0";
|
|
251
|
+
}
|
|
252
|
+
exports.hasNoColorFlagOrEnv = hasNoColorFlagOrEnv;
|
|
253
|
+
// From: https://github.com/sindresorhus/has-flag/blob/main/index.js
|
|
254
|
+
// as used in https://github.com/chalk/chalk
|
|
255
|
+
function hasFlag(flag) {
|
|
256
|
+
const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
|
|
257
|
+
const position = process.argv.indexOf(prefix + flag);
|
|
258
|
+
const terminatorPosition = process.argv.indexOf("--");
|
|
259
|
+
return (position !== -1 &&
|
|
260
|
+
(terminatorPosition === -1 || position < terminatorPosition));
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSw2Q0FBb0M7QUFDcEMsNkNBQStCO0FBQy9CLHVEQUErQztBQUMvQyx1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLHVDQUFtRTtBQUNuRSxpQ0FBNEM7QUFDNUMsaURBQW1DO0FBQ25DLDREQUFtQztBQUU1QixLQUFLLFVBQVUsS0FBSyxDQUN6QixPQUFlLEVBQ2YsT0FBaUIsRUFBRSxFQUNuQixVQUFnRCxFQUFFO0lBRWxELE1BQU0sTUFBTSxHQUFHLElBQUksS0FBSyxFQUF1QixDQUFDO0lBQ2hELE1BQU0sTUFBTSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7SUFDbkMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxNQUFNLElBQUEsWUFBSSxFQUNmLE9BQU8sRUFDUCxJQUFJLEVBQ0osT0FBTyxFQUNQLENBQUMsS0FBYSxFQUFFLEVBQUU7WUFDaEIsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU87Z0JBQ3BDLENBQUMsQ0FBQyxJQUFBLG9CQUFTLEVBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNuQyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDNUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM5QixDQUFDLEVBQ0QsQ0FBQyxLQUEwQixFQUFFLEVBQUU7WUFDN0IsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU87Z0JBQ3BDLENBQUMsQ0FBQyxJQUFBLG9CQUFTLEVBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNuQyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FB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c0M7SUFFdEMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxDQUFDLENBQUM7SUFDVixDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLDBFQUEwRTtRQUMxRSwwRUFBMEU7UUFDMUUsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxDQUFDO0lBQ1YsQ0FBQztBQUNILENBQUM7QUFaRCx3RUFZQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixtQkFBbUI7SUFDakMsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEtBQUssR0FBRyxDQUFDO0FBQ2hFLENBQUM7QUFGRCxrREFFQztBQUVELG9FQUFvRTtBQUNwRSw0Q0FBNEM7QUFDNUMsU0FBUyxPQUFPLENBQUMsSUFBWTtJQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMxRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDckQsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxPQUFPLENBQ0wsUUFBUSxLQUFLLENBQUMsQ0FBQztRQUNmLENBQUMsa0JBQWtCLEtBQUssQ0FBQyxDQUFDLElBQUksUUFBUSxHQUFHLGtCQUFrQixDQUFDLENBQzdELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IFNwYXduT3B0aW9ucyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyBzcGF3biB9IGZyb20gXCJjcm9zcy1zcGF3blwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgeyBodHRwcywgaHR0cCB9IGZyb20gXCJmb2xsb3ctcmVkaXJlY3RzXCI7XG5pbXBvcnQgKiBhcyBvcyBmcm9tIFwib3NcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IHByb2Nlc3NMb2dnZXJFcnJvciwgcHJvY2Vzc0xvZ2dlckRlYnVnIH0gZnJvbSBcIi4vbG9nZ2luZ1wiO1xuaW1wb3J0IHsgSU1hbmlmZXN0LCBNYW5pZmVzdCB9IGZyb20gXCJjZGt0blwiO1xuaW1wb3J0ICogYXMgY29uZmlnIGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHN0cmlwQW5zaSBmcm9tIFwic3RyaXAtYW5zaVwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2hlbGwoXG4gIHByb2dyYW06IHN0cmluZyxcbiAgYXJnczogc3RyaW5nW10gPSBbXSxcbiAgb3B0aW9uczogU3Bhd25PcHRpb25zICYgeyBub0NvbG9yPzogYm9vbGVhbiB9ID0ge30sXG4pIHtcbiAgY29uc3Qgc3RkZXJyID0gbmV3IEFycmF5PHN0cmluZyB8IFVpbnQ4QXJyYXk+KCk7XG4gIGNvbnN0IHN0ZG91dCA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGV4ZWMoXG4gICAgICBwcm9ncmFtLFxuICAgICAgYXJncyxcbiAgICAgIG9wdGlvbnMsXG4gICAgICAoY2h1bms6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBzYW5pdGl6ZWRDaHVuayA9IG9wdGlvbnMubm9Db2xvclxuICAgICAgICAgID8gc3RyaXBBbnNpKGNodW5rLnRvTG9jYWxlU3RyaW5nKCkpXG4gICAgICAgICAgOiBjaHVuay50b0xvY2FsZVN0cmluZygpO1xuICAgICAgICBzdGRvdXQucHVzaChzYW5pdGl6ZWRDaHVuayk7XG4gICAgICAgIGNvbnNvbGUubG9nKHNhbml0aXplZENodW5rKTtcbiAgICAgIH0sXG4gICAgICAoY2h1bms6IHN0cmluZyB8IFVpbnQ4QXJyYXkpID0+IHtcbiAgICAgICAgY29uc3Qgc2FuaXRpemVkQ2h1bmsgPSBvcHRpb25zLm5vQ29sb3JcbiAgICAgICAgICA/IHN0cmlwQW5zaShjaHVuay50b0xvY2FsZVN0cmluZygpKVxuICAgICAgICAgIDogY2h1bmsudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgICAgc3RkZXJyLnB1c2goc2FuaXRpemVkQ2h1bmspO1xuICAgICAgfSxcbiAgICApO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBpZiAoc3RkZXJyLmxlbmd0aCA+IDApIHtcbiAgICAgIGUuc3RkZXJyID0gc3RkZXJyLm1hcCgoY2h1bmspID0+IGNodW5rLnRvU3RyaW5nKCkpLmpvaW4oXCJcIik7XG4gICAgICBpZiAob3B0aW9ucy5ub0NvbG9yKSB7XG4gICAgICAgIGUuc3RkZXJyID0gc3RyaXBBbnNpKGUuc3RkZXJyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0ZG91dC5sZW5ndGggPiAwKSB7XG4gICAgICBlLnN0ZG91dCA9IHN0ZG91dC5qb2luKFwiXCIpO1xuICAgICAgaWYgKG9wdGlvbnMubm9Db2xvcikge1xuICAgICAgICBlLnN0ZG91dCA9IHN0cmlwQW5zaShlLnN0ZG91dCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdpdGhUZW1wRGlyKFxuICBkaXJuYW1lOiBzdHJpbmcsXG4gIGNsb3N1cmU6ICgpID0+IFByb21pc2U8dm9pZD4sXG4pIHtcbiAgY29uc3QgcHJldmRpciA9IHByb2Nlc3MuY3dkKCk7XG4gIGNvbnN0IHBhcmVudCA9IGF3YWl0IGZzLm1rZHRlbXAocGF0aC5qb2luKG9zLnRtcGRpcigpLCBcImNka3RmLlwiKSk7XG4gIGNvbnN0IHdvcmtkaXIgPSBwYXRoLmpvaW4ocGFyZW50LCBkaXJuYW1lKTtcbiAgYXdhaXQgZnMubWtkaXJwKHdvcmtkaXIpO1xuICB0cnkge1xuICAgIHByb2Nlc3MuY2hkaXIod29ya2Rpcik7XG4gICAgYXdhaXQgY2xvc3VyZSgpO1xuICB9IGZpbmFsbHkge1xuICAgIHByb2Nlc3MuY2hkaXIocHJldmRpcik7XG4gICAgYXdhaXQgZnMucmVtb3ZlKHBhcmVudCk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1rZHRlbXAoY2xvc3VyZTogKGRpcjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gIGNvbnN0IHdvcmtkaXIgPSBhd2FpdCBmcy5ta2R0ZW1wKHBhdGguam9pbihvcy50bXBkaXIoKSwgXCJjZGt0Zi5cIikpO1xuICB0cnkge1xuICAgIGF3YWl0IGNsb3N1cmUod29ya2Rpcik7XG4gIH0gZmluYWxseSB7XG4gICAgYXdhaXQgZnMucmVtb3ZlKHdvcmtkaXIpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBleGVjID0gYXN5bmMgKFxuICBjb21tYW5kOiBzdHJpbmcsXG4gIGFyZ3M6IHN0cmluZ1tdLFxuICBvcHRpb25zOiBTcGF3bk9wdGlvbnMgJiB7IG5vQ29sb3I/OiBib29sZWFuIH0sXG4gIHN0ZG91dD86IChjaHVuazogc3RyaW5nKSA9PiBhbnksXG4gIHN0ZGVycj86IChjaHVuazogc3RyaW5nIHwgVWludDhBcnJheSkgPT4gYW55LFxuICBzZW5kVG9TdGRlcnIgPSB0cnVlLFxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgLy8gaWYgb3B0aW9ucy5ub0NvbG9yIGlzIG5vdCBzZXQsIGNoZWNraW5nIHRoZSBmbGFncyAmIGVudmlyb25tZW50IGlmIGl0IHNob3VsZCBiZSBzZXRcbiAgLy8gVGhpcyBpcyByZXF1aXJlZCBmb3IgY29sbGVjdERlYnVnSW5mb3JtYXRpb24oKSB3aGljaCBkb2VzIG5vdCBoYXZlIGtub3dsZWRnZSBhYm91dCBmbGFnc1xuICBpZiAodHlwZW9mIG9wdGlvbnMubm9Db2xvciAhPT0gXCJib29sZWFuXCIgJiYgaGFzTm9Db2xvckZsYWdPckVudigpKSB7XG4gICAgb3B0aW9ucy5ub0NvbG9yID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZSgob2ssIGtvKSA9PiB7XG4gICAgY29uc3QgY2hpbGQgPSBzcGF3bihjb21tYW5kLCBhcmdzLCBvcHRpb25zKTtcbiAgICBjb25zdCBvdXQgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIGNvbnN0IGVyciA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gICAgaWYgKHN0ZG91dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjaGlsZC5zdGRvdXQ/Lm9uKFwiZGF0YVwiLCAoY2h1bms6IEJ1ZmZlcikgPT4ge1xuICAgICAgICBjb25zdCBzYW5pdGl6ZWRDaHVuayA9IG9wdGlvbnMubm9Db2xvclxuICAgICAgICAgID8gc3RyaXBBbnNpKGNodW5rLnRvTG9jYWxlU3RyaW5nKCkpXG4gICAgICAgICAgOiBjaHVuay50b0xvY2FsZVN0cmluZygpO1xuICAgICAgICBwcm9jZXNzTG9nZ2VyRGVidWcoc2FuaXRpemVkQ2h1bmspO1xuICAgICAgICBvdXQucHVzaChzYW5pdGl6ZWRDaHVuayk7XG4gICAgICAgIHN0ZG91dChzYW5pdGl6ZWRDaHVuayk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2hpbGQuc3Rkb3V0Py5vbihcImRhdGFcIiwgKGNodW5rOiBCdWZmZXIpID0+IHtcbiAgICAgICAgY29uc3Qgc2FuaXRpemVkQ2h1bmsgPSBvcHRpb25zLm5vQ29sb3JcbiAgICAgICAgICA/IHN0cmlwQW5zaShjaHVuay50b0xvY2FsZVN0cmluZygpKVxuICAgICAgICAgIDogY2h1bmsudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgICAgcHJvY2Vzc0xvZ2dlckRlYnVnKHNhbml0aXplZENodW5rKTtcbiAgICAgICAgb3V0LnB1c2goc2FuaXRpemVkQ2h1bmspO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChzdGRlcnIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2hpbGQuc3RkZXJyPy5vbihcImRhdGFcIiwgKGNodW5rOiBzdHJpbmcgfCBVaW50OEFycmF5KSA9PiB7XG4gICAgICAgIGNvbnN0IHNhbml0aXplZENodW5rID0gb3B0aW9ucy5ub0NvbG9yXG4gICAgICAgICAgPyBzdHJpcEFuc2koY2h1bmsudG9Mb2NhbGVTdHJpbmcoKSlcbiAgICAgICAgICA6IGNodW5rLnRvTG9jYWxlU3RyaW5nKCk7XG4gICAgICAgIHByb2Nlc3NMb2dnZXJFcnJvcihzYW5pdGl6ZWRDaHVuayk7XG4gICAgICAgIGlmIChzZW5kVG9TdGRlcnIpIHtcbiAgICAgICAgICBzdGRlcnIoc2FuaXRpemVkQ2h1bmspO1xuICAgICAgICB9XG4gICAgICAgIGVyci5wdXNoKHNhbml0aXplZENodW5rKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGlsZC5zdGRlcnI/Lm9uKFwiZGF0YVwiLCAoY2h1bms6IHN0cmluZyB8IFVpbnQ4QXJyYXkpID0+IHtcbiAgICAgICAgY29uc3Qgc2FuaXRpemVkQ2h1bmsgPSBvcHRpb25zLm5vQ29sb3JcbiAgICAgICAgICA/IHN0cmlwQW5zaShjaHVuay50b0xvY2FsZVN0cmluZygpKVxuICAgICAgICAgIDogY2h1bmsudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICAgICAgcHJvY2Vzc0xvZ2dlckVycm9yKHNhbml0aXplZENodW5rKTtcbiAgICAgICAgaWYgKHNlbmRUb1N0ZGVycikge1xuICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKHNhbml0aXplZENodW5rKTtcbiAgICAgICAgfVxuICAgICAgICBlcnIucHVzaChzYW5pdGl6ZWRDaHVuayk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgY2hpbGQub25jZShcImVycm9yXCIsIChlcnI6IGFueSkgPT4ga28oZXJyKSk7XG4gICAgY2hpbGQub25jZShcImNsb3NlXCIsIChjb2RlOiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChjb2RlICE9PSAwKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKGBub24temVybyBleGl0IGNvZGUgJHtjb2RlfWApO1xuICAgICAgICAoZXJyb3IgYXMgYW55KS5zdGRlcnIgPSBlcnIubWFwKChjaHVuaykgPT4gY2h1bmsudG9TdHJpbmcoKSkuam9pbihcIlwiKTtcbiAgICAgICAgcmV0dXJuIGtvKGVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvayhvdXQuam9pbihcIlwiKSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDREtURlZlcnNpb24ob3V0cHV0RGlyOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBvdXRwdXRGaWxlID0gcGF0aC5qb2luKG91dHB1dERpciwgXCJjZGsudGYuanNvblwiKTtcbiAgaWYgKGZzLmV4aXN0c1N5bmMob3V0cHV0RmlsZSkpIHtcbiAgICBjb25zdCBvdXRwdXRKU09OID0gZnMucmVhZEZpbGVTeW5jKG91dHB1dEZpbGUsIFwidXRmOFwiKTtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShvdXRwdXRKU09OKTtcbiAgICByZXR1cm4gZGF0YVtcIi8vXCJdLm1ldGFkYXRhLnZlcnNpb247XG4gIH1cblxuICByZXR1cm4gXCJcIjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDREtURk1hbmlmZXN0KCk6IFByb21pc2U8SU1hbmlmZXN0PiB7XG4gIGNvbnN0IHsgb3V0cHV0IH0gPSBjb25maWcucmVhZENvbmZpZ1N5bmMoKTtcbiAgY29uc3QganNvbiA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGguam9pbihvdXRwdXQsIE1hbmlmZXN0LmZpbGVOYW1lKSk7XG4gIHJldHVybiBKU09OLnBhcnNlKGpzb24udG9TdHJpbmcoKSkgYXMgSU1hbmlmZXN0O1xufVxuXG4vKipcbiAqIERvd25jYXNlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHN0ciB0aGUgc3RyaW5nIHRvIGJlIHByb2Nlc3NlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRvd25jYXNlRmlyc3Qoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoc3RyID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICByZXR1cm4gYCR7c3RyWzBdLnRvTG9jYWxlTG93ZXJDYXNlKCl9JHtzdHIuc2xpY2UoMSl9YDtcbn1cblxuZXhwb3J0IGNsYXNzIEh0dHBFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICBwdWJsaWMgc3RhdHVzQ29kZT86IG51bWJlcixcbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7IC8vICdFcnJvcicgYnJlYWtzIHByb3RvdHlwZSBjaGFpbiBoZXJlXG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIG5ldy50YXJnZXQucHJvdG90eXBlKTsgLy8gcmVzdG9yZSBwcm90b3R5cGUgY2hhaW5cbiAgICAvLyBzZWU6IGh0dHBzOi8vd3d3LnR5cGVzY3JpcHRsYW5nLm9yZy9kb2NzL2hhbmRib29rL3JlbGVhc2Utbm90ZXMvdHlwZXNjcmlwdC0yLTIuaHRtbCNzdXBwb3J0LWZvci1uZXd0YXJnZXRcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG93bmxvYWRGaWxlKFxuICB1cmw6IHN0cmluZyxcbiAgdGFyZ2V0RmlsZW5hbWU6IHN0cmluZyxcbik6IFByb21pc2U8dm9pZD4ge1xuICAvLyBpZiB0aGUgdHlwZSBpcyBpbmZlcnJlZCB0byBiZSBcImh0dHB8aHR0cHNcIiBjYWxsaW5nIC5nZXQoKSBpcyBub3QgcG9zc2libGVcbiAgLy8gYmVjYXVzZSB0aGUgb3B0aW9ucyBwYXJhbWV0ZXIgKHdoaWNoIHdlIGRvbid0IHVzZSBhbnl3YXkpIGZvciBnZXQgaXNcbiAgLy8gbm90IGNvbXBhdGlibGUgYmV0d2VlbiBodHRwIGFuZCBodHRwcyAtPiBzbyB3ZSB0cmVhdCBpdCBhcyBodHRwXG4gIGNvbnN0IGNsaWVudCA9ICh1cmwuc3RhcnRzV2l0aChcImh0dHA6Ly9cIikgPyBodHRwIDogaHR0cHMpIGFzIHR5cGVvZiBodHRwO1xuICBjb25zdCBmaWxlID0gZnMuY3JlYXRlV3JpdGVTdHJlYW0odGFyZ2V0RmlsZW5hbWUpO1xuICByZXR1cm4gbmV3IFByb21pc2UoKG9rLCBrbykgPT4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSBjbGllbnQuZ2V0KHVybCwgKHJlc3BvbnNlKSA9PiB7XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSAhPT0gMjAwKSB7XG4gICAgICAgIGtvKFxuICAgICAgICAgIG5ldyBIdHRwRXJyb3IoXG4gICAgICAgICAgICBgRmFpbGVkIHRvIGdldCAnJHt1cmx9JyAoJHtyZXNwb25zZS5zdGF0dXNDb2RlfSlgLFxuICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzQ29kZSxcbiAgICAgICAgICApLFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXNwb25zZS5waXBlKGZpbGUpO1xuICAgIH0pO1xuXG4gICAgZmlsZS5vbihcImZpbmlzaFwiLCAoKSA9PiBvaygpKTtcblxuICAgIHJlcXVlc3Qub24oXCJlcnJvclwiLCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgZnMudW5saW5rKHRhcmdldEZpbGVuYW1lLCAoKSA9PiBrbyhlcnIpKTtcbiAgICB9KTtcblxuICAgIGZpbGUub24oXCJlcnJvclwiLCAoZXJyKSA9PiB7XG4gICAgICBmcy51bmxpbmsodGFyZ2V0RmlsZW5hbWUsICgpID0+IGtvKGVycikpO1xuICAgIH0pO1xuXG4gICAgcmVxdWVzdC5lbmQoKTtcbiAgfSk7XG59XG5cbi8qKlxuICogQXdhaXRzIGEgcHJvbWlzZSBhbmQgbWFrZXMgc3VyZSBpdCdzIGVycm9yIChpZiBhbnkpIGlzIG9ubHkgdGhyb3duIGFmdGVyIGFsbCBvdGhlciBwcm9taXNlcyBhcmUgc2V0dGxlZFxuICogaWYgdGhlIHByb21pc2UgZG9lcyBub3QgdGhyb3cgYW4gZXJyb3IsIHRoZSBvdGhlciBwcm9taXNlcyB3b24ndCBiZSBhd2FpdGVkXG4gKiBAcGFyYW0gcCBwcm9taXNlIHRvIGF3YWl0XG4gKiBAcGFyYW0gcHJvbWlzZXMgcHJvbWlzZXMgdG8gYXdhaXQgdG8gYmUgYWxsIHNldHRsZWQgaWYgcCBmYWlsZWQgYmVmb3JlIHRocm93aW5nIGVycm9yIHRoYXQgcCBmYWlsZWQgd2l0aFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5zdXJlQWxsU2V0dGxlZEJlZm9yZVRocm93aW5nKFxuICBwOiBQcm9taXNlPGFueT4sXG4gIHByb21pc2VzOiAoUHJvbWlzZTxhbnk+IHwgdW5kZWZpbmVkKVtdLFxuKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgcDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGlmIGFuIGVycm9yIGhhcHBlbmVkLCB3ZSBzdGlsbCBuZWVkIHRvIHdhaXQgZm9yIGFsbCBvdGhlciBwcm9taXNlcyB0aGF0XG4gICAgLy8gYXJlIGN1cnJlbnRseSBpbiBwcm9ncmVzcyB0byBjb21wbGV0ZSB0byBhbGxvdyB0aGVtIHRvIHByb3Blcmx5IHdyYXAgdXBcbiAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQocHJvbWlzZXMpO1xuICAgIHRocm93IGU7XG4gIH1cbn1cblxuLyoqXG4gKiByZXR1cm5zIHRydWUgaWYgLS1uby1jb2xvciBpcyBwYXNzZWQgYXMgQ0xJIGZsYWcgb3IgdGhlIGVudiB2YXIgRk9SQ0VfQ09MT1IgaXMgc2V0IHRvIFwiMFwiXG4gKiBVc2VkIGZvciBjYXNlcyB3aGVyZSB3ZSBjYW4ndCBwYXNzIGRvd24gdGhlIG5vQ29sb3IgZmxhZyAoZS5nLiB3aGVuIGNvbGxlY3RpbmcgZGVidWcgaW5mb3JtYXRpb24gZnJvbSB0aGUgZW52aXJvbm1lbnQpXG4gKiBUaGlzIGlzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIHRoZSBgY2hhbGtgIGxpYiB3ZSB1c2UgZm9yIGNvbG9yaW5nIG91dHB1dFxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzTm9Db2xvckZsYWdPckVudigpOiBib29sZWFuIHtcbiAgcmV0dXJuIGhhc0ZsYWcoXCJuby1jb2xvclwiKSB8fCBwcm9jZXNzLmVudi5GT1JDRV9DT0xPUiA9PT0gXCIwXCI7XG59XG5cbi8vIEZyb206IGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvaGFzLWZsYWcvYmxvYi9tYWluL2luZGV4LmpzXG4vLyBhcyB1c2VkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9jaGFsay9jaGFsa1xuZnVuY3Rpb24gaGFzRmxhZyhmbGFnOiBzdHJpbmcpIHtcbiAgY29uc3QgcHJlZml4ID0gZmxhZy5zdGFydHNXaXRoKFwiLVwiKSA/IFwiXCIgOiBmbGFnLmxlbmd0aCA9PT0gMSA/IFwiLVwiIDogXCItLVwiO1xuICBjb25zdCBwb3NpdGlvbiA9IHByb2Nlc3MuYXJndi5pbmRleE9mKHByZWZpeCArIGZsYWcpO1xuICBjb25zdCB0ZXJtaW5hdG9yUG9zaXRpb24gPSBwcm9jZXNzLmFyZ3YuaW5kZXhPZihcIi0tXCIpO1xuICByZXR1cm4gKFxuICAgIHBvc2l0aW9uICE9PSAtMSAmJlxuICAgICh0ZXJtaW5hdG9yUG9zaXRpb24gPT09IC0xIHx8IHBvc2l0aW9uIDwgdGVybWluYXRvclBvc2l0aW9uKVxuICApO1xufVxuIl19
|
package/src/version.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,QAAuB,CAAC"}
|
package/src/version.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DISPLAY_VERSION = void 0;
|
|
4
|
+
// Copyright (c) HashiCorp, Inc
|
|
5
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
6
|
+
exports.DISPLAY_VERSION = `${versionNumber()}`;
|
|
7
|
+
function versionNumber() {
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
9
|
+
return require("../package.json").version.replace(/\+[0-9a-f]+$/, "");
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUN0QixRQUFBLGVBQWUsR0FBRyxHQUFHLGFBQWEsRUFBRSxFQUFFLENBQUM7QUFFcEQsU0FBUyxhQUFhO0lBQ3BCLGlFQUFpRTtJQUNqRSxPQUFPLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuZXhwb3J0IGNvbnN0IERJU1BMQVlfVkVSU0lPTiA9IGAke3ZlcnNpb25OdW1iZXIoKX1gO1xuXG5mdW5jdGlvbiB2ZXJzaW9uTnVtYmVyKCk6IHN0cmluZyB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIHJldHVybiByZXF1aXJlKFwiLi4vcGFja2FnZS5qc29uXCIpLnZlcnNpb24ucmVwbGFjZSgvXFwrWzAtOWEtZl0rJC8sIFwiXCIpO1xufVxuIl19
|