keycloakify 7.3.0 → 7.3.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/bin/download-builtin-keycloak-theme.js +9 -8
- package/bin/download-builtin-keycloak-theme.js.map +1 -1
- package/bin/tools/downloadAndUnzip.d.ts +1 -3
- package/bin/tools/downloadAndUnzip.js +85 -371
- package/bin/tools/downloadAndUnzip.js.map +1 -1
- package/bin/tools/jar.js +9 -5
- package/bin/tools/jar.js.map +1 -1
- package/bin/tools/partitionPromiseSettledResults.d.ts +2 -0
- package/bin/tools/partitionPromiseSettledResults.js +41 -0
- package/bin/tools/partitionPromiseSettledResults.js.map +1 -0
- package/bin/tools/trimIndent.d.ts +9 -0
- package/bin/tools/trimIndent.js +98 -0
- package/bin/tools/trimIndent.js.map +1 -0
- package/bin/tools/unzip.d.ts +30 -0
- package/bin/tools/unzip.js +345 -0
- package/bin/tools/unzip.js.map +1 -0
- package/package.json +13 -1
- package/src/bin/download-builtin-keycloak-theme.ts +17 -17
- package/src/bin/tools/downloadAndUnzip.ts +52 -236
- package/src/bin/tools/jar.ts +16 -24
- package/src/bin/tools/partitionPromiseSettledResults.ts +11 -0
- package/src/bin/tools/trimIndent.ts +51 -0
- package/src/bin/tools/unzip.ts +184 -0
package/bin/tools/jar.js
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
3
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
4
|
+
return cooked;
|
5
|
+
};
|
2
6
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
7
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
8
|
return new (P || (P = Promise))(function (resolve, reject) {
|
@@ -45,8 +49,7 @@ var fs_1 = require("fs");
|
|
45
49
|
var walk_1 = __importDefault(require("./walk"));
|
46
50
|
var zip_1 = __importDefault(require("./zip"));
|
47
51
|
var promises_1 = require("fs/promises");
|
48
|
-
|
49
|
-
var trimIndent = function (s) { return s.replace(/(\n)\s+/g, "$1"); };
|
52
|
+
var trimIndent_1 = __importDefault(require("./trimIndent"));
|
50
53
|
/**
|
51
54
|
* Create a jar archive, using the resources found at `rootPath` (a directory) and write the
|
52
55
|
* archive to `targetPath` (a file). Use `groupId`, `artifactId` and `version` to define
|
@@ -61,11 +64,11 @@ function jar(_a) {
|
|
61
64
|
case 0:
|
62
65
|
manifest = {
|
63
66
|
path: "META-INF/MANIFEST.MF",
|
64
|
-
data: Buffer.from(
|
67
|
+
data: Buffer.from((0, trimIndent_1.default)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n Manifest-Version: 1.0\n Archiver-Version: Plexus Archiver\n Created-By: Keycloakify\n Built-By: unknown\n Build-Jdk: 19.0.0\n "], ["\n Manifest-Version: 1.0\n Archiver-Version: Plexus Archiver\n Created-By: Keycloakify\n Built-By: unknown\n Build-Jdk: 19.0.0\n "]))))
|
65
68
|
};
|
66
69
|
pomProps = {
|
67
70
|
path: "META-INF/maven/".concat(groupId, "/").concat(artifactId, "/pom.properties"),
|
68
|
-
data: Buffer.from(
|
71
|
+
data: Buffer.from((0, trimIndent_1.default)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["# Generated by keycloakify\n # ", "\n artifactId=", "\n groupId=", "\n version=", "\n "], ["# Generated by keycloakify\n # ", "\n artifactId=", "\n groupId=", "\n version=", "\n "])), new Date().toString(), artifactId, groupId, version))
|
69
72
|
};
|
70
73
|
pathToRecord = function () {
|
71
74
|
return new stream_1.Transform({
|
@@ -121,6 +124,7 @@ if (require.main === module) {
|
|
121
124
|
version: (_c = process.env.VERSION) !== null && _c !== void 0 ? _c : "1.0.0"
|
122
125
|
});
|
123
126
|
};
|
124
|
-
main()
|
127
|
+
main();
|
125
128
|
}
|
129
|
+
var templateObject_1, templateObject_2;
|
126
130
|
//# sourceMappingURL=jar.js.map
|
package/bin/tools/jar.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"jar.js","sourceRoot":"","sources":["../../src/bin/tools/jar.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"jar.js","sourceRoot":"","sources":["../../src/bin/tools/jar.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
export type PromiseSettledAndPartitioned<T> = [T[], any[]];
|
2
|
+
export declare function partitionPromiseSettledResults<T>(): readonly [([successes, failures]: PromiseSettledAndPartitioned<T>, item: PromiseSettledResult<T>) => PromiseSettledAndPartitioned<T>, PromiseSettledAndPartitioned<T>];
|
@@ -0,0 +1,41 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __read = (this && this.__read) || function (o, n) {
|
3
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
4
|
+
if (!m) return o;
|
5
|
+
var i = m.call(o), r, ar = [], e;
|
6
|
+
try {
|
7
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
8
|
+
}
|
9
|
+
catch (error) { e = { error: error }; }
|
10
|
+
finally {
|
11
|
+
try {
|
12
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
13
|
+
}
|
14
|
+
finally { if (e) throw e.error; }
|
15
|
+
}
|
16
|
+
return ar;
|
17
|
+
};
|
18
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
19
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
20
|
+
if (ar || !(i in from)) {
|
21
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
22
|
+
ar[i] = from[i];
|
23
|
+
}
|
24
|
+
}
|
25
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
26
|
+
};
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
28
|
+
exports.partitionPromiseSettledResults = void 0;
|
29
|
+
function partitionPromiseSettledResults() {
|
30
|
+
return [
|
31
|
+
function (_a, item) {
|
32
|
+
var _b = __read(_a, 2), successes = _b[0], failures = _b[1];
|
33
|
+
return item.status === "rejected"
|
34
|
+
? [successes, __spreadArray([item.reason], __read(failures), false)]
|
35
|
+
: [__spreadArray([item.value], __read(successes), false), failures];
|
36
|
+
},
|
37
|
+
[[], []]
|
38
|
+
];
|
39
|
+
}
|
40
|
+
exports.partitionPromiseSettledResults = partitionPromiseSettledResults;
|
41
|
+
//# sourceMappingURL=partitionPromiseSettledResults.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"partitionPromiseSettledResults.js","sourceRoot":"","sources":["../../src/bin/tools/partitionPromiseSettledResults.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAgB,8BAA8B;IAC1C,OAAO;QACH,UAAC,EAAsD,EAAE,IAA6B;gBAArF,KAAA,aAAsD,EAArD,SAAS,QAAA,EAAE,QAAQ,QAAA;YACjB,OAAA,IAAI,CAAC,MAAM,KAAK,UAAU;gBACtB,CAAC,CAAE,CAAC,SAAS,iBAAG,IAAI,CAAC,MAAM,UAAK,QAAQ,UAAsC;gBAC9E,CAAC,CAAE,gBAAE,IAAI,CAAC,KAAK,UAAK,SAAS,WAAG,QAAQ,CAAqC;QAFjF,CAEiF;QACrF,CAAC,EAAE,EAAE,EAAE,CAAoC;KACrC,CAAC;AACf,CAAC;AARD,wEAQC"}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
/**
|
2
|
+
* Shift all lines left by the *smallest* indentation level,
|
3
|
+
* and remove initial newline and all trailing spaces.
|
4
|
+
*/
|
5
|
+
declare function trimIndent(strings: TemplateStringsArray, ...args: any[]): string;
|
6
|
+
declare namespace trimIndent {
|
7
|
+
var keepLeadingAndTrailingNewlines: (strings: TemplateStringsArray, ...args: any[]) => string;
|
8
|
+
}
|
9
|
+
export default trimIndent;
|
@@ -0,0 +1,98 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __read = (this && this.__read) || function (o, n) {
|
3
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
4
|
+
if (!m) return o;
|
5
|
+
var i = m.call(o), r, ar = [], e;
|
6
|
+
try {
|
7
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
8
|
+
}
|
9
|
+
catch (error) { e = { error: error }; }
|
10
|
+
finally {
|
11
|
+
try {
|
12
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
13
|
+
}
|
14
|
+
finally { if (e) throw e.error; }
|
15
|
+
}
|
16
|
+
return ar;
|
17
|
+
};
|
18
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
19
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
20
|
+
if (ar || !(i in from)) {
|
21
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
22
|
+
ar[i] = from[i];
|
23
|
+
}
|
24
|
+
}
|
25
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
26
|
+
};
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
28
|
+
/**
|
29
|
+
* Concatenate the string fragments and interpolated values
|
30
|
+
* to get a single string.
|
31
|
+
*/
|
32
|
+
function populateTemplate(strings) {
|
33
|
+
var _a, _b;
|
34
|
+
var args = [];
|
35
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
36
|
+
args[_i - 1] = arguments[_i];
|
37
|
+
}
|
38
|
+
var chunks = [];
|
39
|
+
for (var i = 0; i < strings.length; i++) {
|
40
|
+
var lastStringLineLength = 0;
|
41
|
+
if (strings[i]) {
|
42
|
+
chunks.push(strings[i]);
|
43
|
+
// remember last indent of the string portion
|
44
|
+
lastStringLineLength = (_b = (_a = strings[i].split("\n").at(-1)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
|
45
|
+
}
|
46
|
+
if (args[i]) {
|
47
|
+
// if the interpolation value has newlines, indent the interpolation values
|
48
|
+
// using the last known string indent
|
49
|
+
chunks.push(args[i].replace(/([\r?\n])/g, "$1" + " ".repeat(lastStringLineLength)));
|
50
|
+
}
|
51
|
+
}
|
52
|
+
return chunks.join("");
|
53
|
+
}
|
54
|
+
function trimIndentPrivate(removeEmptyLeadingAndTrailingLines, strings) {
|
55
|
+
var _a, _b;
|
56
|
+
var args = [];
|
57
|
+
for (var _i = 2; _i < arguments.length; _i++) {
|
58
|
+
args[_i - 2] = arguments[_i];
|
59
|
+
}
|
60
|
+
// Remove initial and final newlines
|
61
|
+
var string = populateTemplate.apply(void 0, __spreadArray([strings], __read(args), false));
|
62
|
+
if (removeEmptyLeadingAndTrailingLines)
|
63
|
+
string = string.replace(/^[\r\n]/, "").replace(/[^\S\r\n]*[\r\n]$/, "");
|
64
|
+
var dents = (_b = (_a = string.match(/^([ \t])+/gm)) === null || _a === void 0 ? void 0 : _a.map(function (s) { return s.length; })) !== null && _b !== void 0 ? _b : [];
|
65
|
+
// No dents? no change required
|
66
|
+
if (!dents || dents.length == 0)
|
67
|
+
return string;
|
68
|
+
var minDent = Math.min.apply(Math, __spreadArray([], __read(dents), false));
|
69
|
+
// The min indentation is 0, no change needed
|
70
|
+
if (!minDent)
|
71
|
+
return string;
|
72
|
+
var dedented = string.replace(new RegExp("^".concat(" ".repeat(minDent)), "gm"), "");
|
73
|
+
return dedented;
|
74
|
+
}
|
75
|
+
/**
|
76
|
+
* Shift all lines left by the *smallest* indentation level,
|
77
|
+
* and remove initial newline and all trailing spaces.
|
78
|
+
*/
|
79
|
+
function trimIndent(strings) {
|
80
|
+
var args = [];
|
81
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
82
|
+
args[_i - 1] = arguments[_i];
|
83
|
+
}
|
84
|
+
return trimIndentPrivate.apply(void 0, __spreadArray([true, strings], __read(args), false));
|
85
|
+
}
|
86
|
+
exports.default = trimIndent;
|
87
|
+
/**
|
88
|
+
* Shift all lines left by the *smallest* indentation level,
|
89
|
+
* and _keep_ initial newline and all trailing spaces.
|
90
|
+
*/
|
91
|
+
trimIndent.keepLeadingAndTrailingNewlines = function (strings) {
|
92
|
+
var args = [];
|
93
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
94
|
+
args[_i - 1] = arguments[_i];
|
95
|
+
}
|
96
|
+
return trimIndentPrivate.apply(void 0, __spreadArray([false, strings], __read(args), false));
|
97
|
+
};
|
98
|
+
//# sourceMappingURL=trimIndent.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"trimIndent.js","sourceRoot":"","sources":["../../src/bin/tools/trimIndent.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAA6B;;IAAE,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,6BAAc;;IACnE,IAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,IAAI,oBAAoB,GAAG,CAAC,CAAC;QAC7B,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;YACZ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,6CAA6C;YAC7C,oBAAoB,GAAG,MAAA,MAAA,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,0CAAE,MAAM,mCAAI,CAAC,CAAC;SACrE;QACD,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE;YACT,2EAA2E;YAC3E,qCAAqC;YACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;SACvF;KACJ;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,iBAAiB,CAAC,kCAA2C,EAAE,OAA6B;;IAAE,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,6BAAc;;IACjH,oCAAoC;IACpC,IAAI,MAAM,GAAG,gBAAgB,8BAAC,OAAO,UAAK,IAAI,UAAC,CAAC;IAChD,IAAI,kCAAkC;QAAE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAChH,IAAM,KAAK,GAAG,MAAA,MAAA,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,0CAAE,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,MAAM,EAAR,CAAQ,CAAC,mCAAI,EAAE,CAAC;IACpE,+BAA+B;IAC/B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/C,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,OAAR,IAAI,2BAAQ,KAAK,UAAC,CAAC;IACnC,6CAA6C;IAC7C,IAAI,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC;IAC5B,IAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,WAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACjF,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAwB,UAAU,CAAC,OAA6B;IAAE,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,6BAAc;;IAC5E,OAAO,iBAAiB,8BAAC,IAAI,EAAE,OAAO,UAAK,IAAI,WAAE;AACrD,CAAC;AAFD,6BAEC;AAED;;;GAGG;AACH,UAAU,CAAC,8BAA8B,GAAG,UAAU,OAA6B;IAAE,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,6BAAc;;IAC/F,OAAO,iBAAiB,8BAAC,KAAK,EAAE,OAAO,UAAK,IAAI,WAAE;AACtD,CAAC,CAAC"}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
export type MultiError = Error & {
|
2
|
+
cause: Error[];
|
3
|
+
};
|
4
|
+
/**
|
5
|
+
* Extract the archive `zipFile` into the directory `dir`. If `archiveDir` is given,
|
6
|
+
* only that directory will be extracted, stripping the given path components.
|
7
|
+
*
|
8
|
+
* If dir does not exist, it will be created.
|
9
|
+
*
|
10
|
+
* If any archive file exists, it will be overwritten.
|
11
|
+
*
|
12
|
+
* Will unzip using all available nodejs worker threads.
|
13
|
+
*
|
14
|
+
* Will try to clean up extracted files on failure.
|
15
|
+
*
|
16
|
+
* If unpacking fails, will either throw an regular error, or
|
17
|
+
* possibly an `MultiError`, which contains a `cause` field with
|
18
|
+
* a number of root cause errors.
|
19
|
+
*
|
20
|
+
* Warning this method is not optimized for continuous reading of the zip
|
21
|
+
* archive, but is a trade-off between simplicity and allowing extraction
|
22
|
+
* of a single directory from the archive.
|
23
|
+
*
|
24
|
+
* @param zipFilePath the file to unzip
|
25
|
+
* @param extractDirPath the target directory
|
26
|
+
* @param pathOfDirToExtractInArchive if given, unpack only files from this archive directory
|
27
|
+
* @throws {MultiError} error
|
28
|
+
* @returns Promise for a list of full file paths pointing to actually extracted files
|
29
|
+
*/
|
30
|
+
export declare function unzip(zipFilePath: string, extractDirPath: string, pathOfDirToExtractInArchive?: string): Promise<string[]>;
|
@@ -0,0 +1,345 @@
|
|
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;
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
15
|
+
function step(op) {
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
20
|
+
switch (op[0]) {
|
21
|
+
case 0: case 1: t = op; break;
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
25
|
+
default:
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
30
|
+
if (t[2]) _.ops.pop();
|
31
|
+
_.trys.pop(); continue;
|
32
|
+
}
|
33
|
+
op = body.call(thisArg, _);
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
36
|
+
}
|
37
|
+
};
|
38
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
39
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
40
|
+
var m = o[Symbol.asyncIterator], i;
|
41
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
42
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
43
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
44
|
+
};
|
45
|
+
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
46
|
+
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
47
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
48
|
+
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
49
|
+
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
50
|
+
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
51
|
+
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
52
|
+
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
53
|
+
function fulfill(value) { resume("next", value); }
|
54
|
+
function reject(value) { resume("throw", value); }
|
55
|
+
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
56
|
+
};
|
57
|
+
var __read = (this && this.__read) || function (o, n) {
|
58
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
59
|
+
if (!m) return o;
|
60
|
+
var i = m.call(o), r, ar = [], e;
|
61
|
+
try {
|
62
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
63
|
+
}
|
64
|
+
catch (error) { e = { error: error }; }
|
65
|
+
finally {
|
66
|
+
try {
|
67
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
68
|
+
}
|
69
|
+
finally { if (e) throw e.error; }
|
70
|
+
}
|
71
|
+
return ar;
|
72
|
+
};
|
73
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
74
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
75
|
+
if (ar || !(i in from)) {
|
76
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
77
|
+
ar[i] = from[i];
|
78
|
+
}
|
79
|
+
}
|
80
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
81
|
+
};
|
82
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
83
|
+
exports.unzip = void 0;
|
84
|
+
var fs_1 = require("fs");
|
85
|
+
var promises_1 = require("fs/promises");
|
86
|
+
var path_1 = require("path");
|
87
|
+
var zlib_1 = require("zlib");
|
88
|
+
var partitionPromiseSettledResults_1 = require("./partitionPromiseSettledResults");
|
89
|
+
/**
|
90
|
+
* Extract the archive `zipFile` into the directory `dir`. If `archiveDir` is given,
|
91
|
+
* only that directory will be extracted, stripping the given path components.
|
92
|
+
*
|
93
|
+
* If dir does not exist, it will be created.
|
94
|
+
*
|
95
|
+
* If any archive file exists, it will be overwritten.
|
96
|
+
*
|
97
|
+
* Will unzip using all available nodejs worker threads.
|
98
|
+
*
|
99
|
+
* Will try to clean up extracted files on failure.
|
100
|
+
*
|
101
|
+
* If unpacking fails, will either throw an regular error, or
|
102
|
+
* possibly an `MultiError`, which contains a `cause` field with
|
103
|
+
* a number of root cause errors.
|
104
|
+
*
|
105
|
+
* Warning this method is not optimized for continuous reading of the zip
|
106
|
+
* archive, but is a trade-off between simplicity and allowing extraction
|
107
|
+
* of a single directory from the archive.
|
108
|
+
*
|
109
|
+
* @param zipFilePath the file to unzip
|
110
|
+
* @param extractDirPath the target directory
|
111
|
+
* @param pathOfDirToExtractInArchive if given, unpack only files from this archive directory
|
112
|
+
* @throws {MultiError} error
|
113
|
+
* @returns Promise for a list of full file paths pointing to actually extracted files
|
114
|
+
*/
|
115
|
+
function unzip(zipFilePath, extractDirPath, pathOfDirToExtractInArchive) {
|
116
|
+
var _a, e_1, _b, _c;
|
117
|
+
return __awaiter(this, void 0, void 0, function () {
|
118
|
+
var dirsCreated, _d, _e, promises, _loop_1, _f, _g, _h, e_1_1, _j, success, failure, e;
|
119
|
+
var _k;
|
120
|
+
var _this = this;
|
121
|
+
return __generator(this, function (_l) {
|
122
|
+
switch (_l.label) {
|
123
|
+
case 0:
|
124
|
+
dirsCreated = [];
|
125
|
+
_e = (_d = dirsCreated).push;
|
126
|
+
return [4 /*yield*/, (0, promises_1.mkdir)(extractDirPath, { recursive: true })];
|
127
|
+
case 1:
|
128
|
+
_e.apply(_d, [_l.sent()]);
|
129
|
+
promises = [];
|
130
|
+
_l.label = 2;
|
131
|
+
case 2:
|
132
|
+
_l.trys.push([2, 7, 8, 13]);
|
133
|
+
_loop_1 = function () {
|
134
|
+
_c = _h.value;
|
135
|
+
_f = false;
|
136
|
+
try {
|
137
|
+
var record = _c;
|
138
|
+
var recordPath = record.path, createRecordReadStream = record.createReadStream;
|
139
|
+
if (pathOfDirToExtractInArchive && !recordPath.startsWith(pathOfDirToExtractInArchive)) {
|
140
|
+
return "continue";
|
141
|
+
}
|
142
|
+
var relativePath = pathOfDirToExtractInArchive ? (0, path_1.relative)(pathOfDirToExtractInArchive, recordPath) : recordPath;
|
143
|
+
var filePath = (0, path_1.join)(extractDirPath, relativePath);
|
144
|
+
var parent_1 = (0, path_1.dirname)(filePath);
|
145
|
+
promises.push(new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
146
|
+
var _a, _b, output;
|
147
|
+
return __generator(this, function (_c) {
|
148
|
+
switch (_c.label) {
|
149
|
+
case 0:
|
150
|
+
if (!!dirsCreated.includes(parent_1)) return [3 /*break*/, 2];
|
151
|
+
_b = (_a = dirsCreated).push;
|
152
|
+
return [4 /*yield*/, (0, promises_1.mkdir)(parent_1, { recursive: true })];
|
153
|
+
case 1:
|
154
|
+
_b.apply(_a, [_c.sent()]);
|
155
|
+
_c.label = 2;
|
156
|
+
case 2:
|
157
|
+
output = (0, fs_1.createWriteStream)(filePath);
|
158
|
+
output.on("error", function (e) { return reject(Object.assign(e, { filePath: filePath })); });
|
159
|
+
output.on("finish", function () { return resolve(filePath); });
|
160
|
+
createRecordReadStream().pipe(output);
|
161
|
+
return [2 /*return*/];
|
162
|
+
}
|
163
|
+
});
|
164
|
+
}); }));
|
165
|
+
}
|
166
|
+
finally {
|
167
|
+
_f = true;
|
168
|
+
}
|
169
|
+
};
|
170
|
+
_f = true, _g = __asyncValues(iterateZipArchive(zipFilePath));
|
171
|
+
_l.label = 3;
|
172
|
+
case 3: return [4 /*yield*/, _g.next()];
|
173
|
+
case 4:
|
174
|
+
if (!(_h = _l.sent(), _a = _h.done, !_a)) return [3 /*break*/, 6];
|
175
|
+
_loop_1();
|
176
|
+
_l.label = 5;
|
177
|
+
case 5: return [3 /*break*/, 3];
|
178
|
+
case 6: return [3 /*break*/, 13];
|
179
|
+
case 7:
|
180
|
+
e_1_1 = _l.sent();
|
181
|
+
e_1 = { error: e_1_1 };
|
182
|
+
return [3 /*break*/, 13];
|
183
|
+
case 8:
|
184
|
+
_l.trys.push([8, , 11, 12]);
|
185
|
+
if (!(!_f && !_a && (_b = _g.return))) return [3 /*break*/, 10];
|
186
|
+
return [4 /*yield*/, _b.call(_g)];
|
187
|
+
case 9:
|
188
|
+
_l.sent();
|
189
|
+
_l.label = 10;
|
190
|
+
case 10: return [3 /*break*/, 12];
|
191
|
+
case 11:
|
192
|
+
if (e_1) throw e_1.error;
|
193
|
+
return [7 /*endfinally*/];
|
194
|
+
case 12: return [7 /*endfinally*/];
|
195
|
+
case 13: return [4 /*yield*/, Promise.allSettled(promises)];
|
196
|
+
case 14:
|
197
|
+
_j = __read.apply(void 0, [(_k = (_l.sent())).reduce.apply(_k, __spreadArray([], __read((0, partitionPromiseSettledResults_1.partitionPromiseSettledResults)()), false)), 2]), success = _j[0], failure = _j[1];
|
198
|
+
if (!failure.length) return [3 /*break*/, 17];
|
199
|
+
return [4 /*yield*/, Promise.all(__spreadArray(__spreadArray([], __read(success.map(function (path) { return (0, promises_1.unlink)(path).catch(function (_unused) { return undefined; }); })), false), __read(failure.map(function (e) { return e && e.path && (0, promises_1.unlink)(e.path).catch(function (_unused) { return undefined; }); })), false))];
|
200
|
+
case 15:
|
201
|
+
_l.sent();
|
202
|
+
return [4 /*yield*/, Promise.all(dirsCreated.filter(Boolean).sort(sortByFolderDepth("desc")))];
|
203
|
+
case 16:
|
204
|
+
_l.sent();
|
205
|
+
e = new Error("Failed to extract: " + failure.map(function (e) { return e.message; }).join(";"));
|
206
|
+
e.cause = failure;
|
207
|
+
throw e;
|
208
|
+
case 17: return [2 /*return*/, success];
|
209
|
+
}
|
210
|
+
});
|
211
|
+
});
|
212
|
+
}
|
213
|
+
exports.unzip = unzip;
|
214
|
+
function depth(dir) {
|
215
|
+
var _a, _b;
|
216
|
+
return (_b = (_a = dir.match(/\//g)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
|
217
|
+
}
|
218
|
+
function sortByFolderDepth(order) {
|
219
|
+
var ord = order === "asc" ? 1 : -1;
|
220
|
+
return function (a, b) { return ord * depth(a !== null && a !== void 0 ? a : "") + -ord * depth(b !== null && b !== void 0 ? b : ""); };
|
221
|
+
}
|
222
|
+
/**
|
223
|
+
*
|
224
|
+
* @param file file to read
|
225
|
+
* @param start first byte to read
|
226
|
+
* @param end last byte to read
|
227
|
+
* @returns Promise of a buffer of read bytes
|
228
|
+
*/
|
229
|
+
function readFileChunk(file, start, end) {
|
230
|
+
return __awaiter(this, void 0, void 0, function () {
|
231
|
+
var chunks;
|
232
|
+
return __generator(this, function (_a) {
|
233
|
+
chunks = [];
|
234
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
235
|
+
var stream = (0, fs_1.createReadStream)(file, { start: start, end: end });
|
236
|
+
stream.setMaxListeners(Infinity);
|
237
|
+
stream.on("error", function (e) { return reject(e); });
|
238
|
+
stream.on("end", function () { return resolve(Buffer.concat(chunks)); });
|
239
|
+
stream.on("data", function (chunk) { return chunks.push(chunk); });
|
240
|
+
})];
|
241
|
+
});
|
242
|
+
});
|
243
|
+
}
|
244
|
+
/**
|
245
|
+
* Iterate over all records of a zipfile, and yield a ZipRecord.
|
246
|
+
* Use `record.createReadStream()` to actually read the file.
|
247
|
+
*
|
248
|
+
* Warning this method will only work with single-disk zip files.
|
249
|
+
* Warning this method may fail if the zip archive has an crazy amount
|
250
|
+
* of files and the central directory is not fully contained within the
|
251
|
+
* last 65k bytes of the zip file.
|
252
|
+
*
|
253
|
+
* @param zipFile
|
254
|
+
* @returns AsyncGenerator which will yield ZipRecords
|
255
|
+
*/
|
256
|
+
function iterateZipArchive(zipFile) {
|
257
|
+
return __asyncGenerator(this, arguments, function iterateZipArchive_1() {
|
258
|
+
var size, chunkSize, chunk, unread, i, found, nFiles, directorySize, directoryOffset, _loop_2;
|
259
|
+
return __generator(this, function (_a) {
|
260
|
+
switch (_a.label) {
|
261
|
+
case 0: return [4 /*yield*/, __await((0, promises_1.stat)(zipFile))];
|
262
|
+
case 1:
|
263
|
+
size = (_a.sent()).size;
|
264
|
+
chunkSize = 65535 + 22 + 1;
|
265
|
+
return [4 /*yield*/, __await(readFileChunk(zipFile, size - chunkSize, size))];
|
266
|
+
case 2:
|
267
|
+
chunk = _a.sent();
|
268
|
+
unread = size - chunk.length;
|
269
|
+
i = chunk.length - 4;
|
270
|
+
found = false;
|
271
|
+
// Find central directory end header, reading backwards from the end
|
272
|
+
while (!found && i-- > 0)
|
273
|
+
if (chunk[i] === 0x50 && chunk.readUInt32LE(i) === 0x06054b50)
|
274
|
+
found = true;
|
275
|
+
if (!found)
|
276
|
+
throw new Error("Not a zip file");
|
277
|
+
// This method will fail on a multi-disk zip, so bail early.
|
278
|
+
if (chunk.readUInt16LE(i + 4) !== 0)
|
279
|
+
throw new Error("Multi-disk zip not supported");
|
280
|
+
nFiles = chunk.readUint16LE(i + 10);
|
281
|
+
directorySize = chunk.readUint32LE(i + 12);
|
282
|
+
directoryOffset = chunk.readUint32LE(i + 16);
|
283
|
+
if (directoryOffset === 4294967295)
|
284
|
+
throw new Error("zip64 not supported");
|
285
|
+
if (directoryOffset > size)
|
286
|
+
throw new Error("Central directory offset ".concat(directoryOffset, " is outside file"));
|
287
|
+
i = directoryOffset - unread;
|
288
|
+
if (!(i < 0)) return [3 /*break*/, 4];
|
289
|
+
return [4 /*yield*/, __await(readFileChunk(zipFile, directoryOffset, directoryOffset + directorySize))];
|
290
|
+
case 3:
|
291
|
+
chunk = _a.sent();
|
292
|
+
i = 0;
|
293
|
+
_a.label = 4;
|
294
|
+
case 4:
|
295
|
+
_loop_2 = function () {
|
296
|
+
var compressionMethod, compressedFileSize, filenameLength, extraLength, commentLength, start, end, filename, createRecordReadStream;
|
297
|
+
return __generator(this, function (_b) {
|
298
|
+
switch (_b.label) {
|
299
|
+
case 0:
|
300
|
+
// Check for marker bytes
|
301
|
+
if (chunk.readUInt32LE(i) !== 0x02014b50)
|
302
|
+
throw new Error("No central directory record at position " + (unread + i));
|
303
|
+
compressionMethod = { 8: "deflate" }[chunk.readUint16LE(i + 10)];
|
304
|
+
compressedFileSize = chunk.readUint32LE(i + 20);
|
305
|
+
filenameLength = chunk.readUint16LE(i + 28);
|
306
|
+
extraLength = chunk.readUint16LE(i + 30);
|
307
|
+
commentLength = chunk.readUint16LE(i + 32);
|
308
|
+
start = chunk.readUint32LE(i + 42) + 30 + filenameLength + extraLength;
|
309
|
+
end = start + compressedFileSize;
|
310
|
+
filename = chunk.slice(i + 46, i + 46 + filenameLength).toString("utf-8");
|
311
|
+
createRecordReadStream = function () {
|
312
|
+
var input = (0, fs_1.createReadStream)(zipFile, { start: start, end: end });
|
313
|
+
if (compressionMethod === "deflate") {
|
314
|
+
var inflate = (0, zlib_1.createInflateRaw)();
|
315
|
+
input.pipe(inflate);
|
316
|
+
return inflate;
|
317
|
+
}
|
318
|
+
return input;
|
319
|
+
};
|
320
|
+
if (!(end > start)) return [3 /*break*/, 3];
|
321
|
+
return [4 /*yield*/, __await({ path: filename, createReadStream: createRecordReadStream, compressionMethod: compressionMethod })];
|
322
|
+
case 1: return [4 /*yield*/, _b.sent()];
|
323
|
+
case 2:
|
324
|
+
_b.sent();
|
325
|
+
_b.label = 3;
|
326
|
+
case 3:
|
327
|
+
// advance pointer to next central directory entry
|
328
|
+
i += 46 + filenameLength + extraLength + commentLength;
|
329
|
+
return [2 /*return*/];
|
330
|
+
}
|
331
|
+
});
|
332
|
+
};
|
333
|
+
_a.label = 5;
|
334
|
+
case 5:
|
335
|
+
if (!(nFiles-- > 0)) return [3 /*break*/, 7];
|
336
|
+
return [5 /*yield**/, _loop_2()];
|
337
|
+
case 6:
|
338
|
+
_a.sent();
|
339
|
+
return [3 /*break*/, 5];
|
340
|
+
case 7: return [2 /*return*/];
|
341
|
+
}
|
342
|
+
});
|
343
|
+
});
|
344
|
+
}
|
345
|
+
//# sourceMappingURL=unzip.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"unzip.js","sourceRoot":"","sources":["../../src/bin/tools/unzip.ts"],"names":[],"mappings":"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"}
|