keycloakify 7.2.4 → 7.3.1
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/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +2 -1
- package/bin/keycloakify/generateFtl/generateFtl.d.ts +1 -1
- package/bin/keycloakify/generateFtl/generateFtl.js +2 -1
- package/bin/keycloakify/generateFtl/generateFtl.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 +8 -4
- 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/login/Fallback.js +3 -0
- package/login/Fallback.js.map +1 -1
- package/login/kcContext/KcContext.d.ts +7 -1
- package/login/kcContext/KcContext.js.map +1 -1
- package/login/kcContext/kcContextMocks.js +3 -0
- package/login/kcContext/kcContextMocks.js.map +1 -1
- package/login/pages/UpdateEmail.d.ts +7 -0
- package/login/pages/UpdateEmail.js +15 -0
- package/login/pages/UpdateEmail.js.map +1 -0
- package/package.json +17 -1
- package/src/bin/download-builtin-keycloak-theme.ts +17 -17
- package/src/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl +2 -1
- package/src/bin/keycloakify/generateFtl/generateFtl.ts +2 -1
- package/src/bin/tools/downloadAndUnzip.ts +52 -236
- package/src/bin/tools/jar.ts +15 -23
- 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/src/login/Fallback.tsx +3 -0
- package/src/login/kcContext/KcContext.ts +9 -1
- package/src/login/kcContext/kcContextMocks.ts +7 -0
- package/src/login/pages/UpdateEmail.tsx +88 -0
@@ -46,18 +46,16 @@ var cliOptions_1 = require("./tools/cliOptions");
|
|
46
46
|
var logger_1 = require("./tools/logger");
|
47
47
|
function downloadBuiltinKeycloakTheme(params) {
|
48
48
|
return __awaiter(this, void 0, void 0, function () {
|
49
|
-
var keycloakVersion, destDirPath
|
49
|
+
var keycloakVersion, destDirPath;
|
50
50
|
return __generator(this, function (_a) {
|
51
51
|
switch (_a.label) {
|
52
52
|
case 0:
|
53
|
-
keycloakVersion = params.keycloakVersion, destDirPath = params.destDirPath
|
53
|
+
keycloakVersion = params.keycloakVersion, destDirPath = params.destDirPath;
|
54
54
|
return [4 /*yield*/, Promise.all(["", "-community"].map(function (ext) {
|
55
55
|
return (0, downloadAndUnzip_1.downloadAndUnzip)({
|
56
56
|
"destDirPath": destDirPath,
|
57
57
|
"url": "https://github.com/keycloak/keycloak/archive/refs/tags/".concat(keycloakVersion, ".zip"),
|
58
|
-
"pathOfDirToExtractInArchive": "keycloak-".concat(keycloakVersion, "/themes/src/main/resources").concat(ext, "/theme")
|
59
|
-
"cacheDirPath": (0, path_1.join)(keycloakify_1.keycloakThemeBuildingDirPath, ".cache"),
|
60
|
-
isSilent: isSilent
|
58
|
+
"pathOfDirToExtractInArchive": "keycloak-".concat(keycloakVersion, "/themes/src/main/resources").concat(ext, "/theme")
|
61
59
|
});
|
62
60
|
}))];
|
63
61
|
case 1:
|
@@ -68,8 +66,8 @@ function downloadBuiltinKeycloakTheme(params) {
|
|
68
66
|
});
|
69
67
|
}
|
70
68
|
exports.downloadBuiltinKeycloakTheme = downloadBuiltinKeycloakTheme;
|
71
|
-
|
72
|
-
|
69
|
+
function main() {
|
70
|
+
return __awaiter(this, void 0, void 0, function () {
|
73
71
|
var isSilent, logger, keycloakVersion, destDirPath;
|
74
72
|
return __generator(this, function (_a) {
|
75
73
|
switch (_a.label) {
|
@@ -91,6 +89,9 @@ if (require.main === module) {
|
|
91
89
|
return [2 /*return*/];
|
92
90
|
}
|
93
91
|
});
|
94
|
-
});
|
92
|
+
});
|
93
|
+
}
|
94
|
+
if (require.main === module) {
|
95
|
+
main().catch(function (e) { return console.error(e); });
|
95
96
|
}
|
96
97
|
//# sourceMappingURL=download-builtin-keycloak-theme.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"download-builtin-keycloak-theme.js","sourceRoot":"","sources":["../src/bin/download-builtin-keycloak-theme.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,6CAA6D;AAC7D,6BAAwC;AACxC,6DAA4D;AAC5D,iEAAgE;AAChE,iDAAmD;AACnD,yCAA2C;AAE3C,SAAsB,4BAA4B,CAAC,MAA2E;;;;;;oBAClH,eAAe,
|
1
|
+
{"version":3,"file":"download-builtin-keycloak-theme.js","sourceRoot":"","sources":["../src/bin/download-builtin-keycloak-theme.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,6CAA6D;AAC7D,6BAAwC;AACxC,6DAA4D;AAC5D,iEAAgE;AAChE,iDAAmD;AACnD,yCAA2C;AAE3C,SAAsB,4BAA4B,CAAC,MAA2E;;;;;;oBAClH,eAAe,GAAkB,MAAM,gBAAxB,EAAE,WAAW,GAAK,MAAM,YAAX,CAAY;oBAEhD,qBAAM,OAAO,CAAC,GAAG,CACb,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG;4BACtB,OAAA,IAAA,mCAAgB,EAAC;gCACb,aAAa,EAAE,WAAW;gCAC1B,KAAK,EAAE,iEAA0D,eAAe,SAAM;gCACtF,6BAA6B,EAAE,mBAAY,eAAe,uCAA6B,GAAG,WAAQ;6BACrG,CAAC;wBAJF,CAIE,CACL,CACJ,EAAA;;oBARD,SAQC,CAAC;;;;;CACL;AAZD,oEAYC;AAED,SAAe,IAAI;;;;;;oBACP,QAAQ,GAAK,IAAA,0BAAa,EAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAzC,CAA0C;oBACpD,MAAM,GAAG,IAAA,kBAAS,EAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;oBACX,qBAAM,IAAA,6CAAqB,GAAE,EAAA;;oBAAjD,eAAe,GAAK,CAAA,SAA6B,CAAA,gBAAlC;oBAEjB,WAAW,GAAG,IAAA,WAAQ,EAAC,0CAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;oBAEhG,MAAM,CAAC,GAAG,CAAC,iDAA0C,eAAe,mBAAS,WAAW,CAAE,CAAC,CAAC;oBAE5F,qBAAM,4BAA4B,CAAC;4BAC/B,eAAe,iBAAA;4BACf,WAAW,aAAA;4BACX,QAAQ,UAAA;yBACX,CAAC,EAAA;;oBAJF,SAIE,CAAC;;;;;CACN;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;IACzB,IAAI,EAAE,CAAC,KAAK,CAAC,UAAA,CAAC,IAAI,OAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAhB,CAAgB,CAAC,CAAC;CACvC"}
|
@@ -13,7 +13,8 @@
|
|
13
13
|
"totp", "totpSecret", "SAMLRequest", "SAMLResponse", "relayState", "device_user_code", "code",
|
14
14
|
"password-new", "rememberMe", "login", "authenticationExecution", "cancel-aia", "clientDataJSON",
|
15
15
|
"authenticatorData", "signature", "credentialId", "userHandle", "error", "authn_use_chk", "authenticationExecution",
|
16
|
-
"isSetRetry", "try-again", "attestationObject", "publicKeyCredentialId", "authenticatorLabel"
|
16
|
+
"isSetRetry", "try-again", "attestationObject", "publicKeyCredentialId", "authenticatorLabel",
|
17
|
+
"location", "occupation"
|
17
18
|
]>
|
18
19
|
|
19
20
|
<#attempt>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
export declare const themeTypes: readonly ["login", "account"];
|
2
2
|
export type ThemeType = (typeof themeTypes)[number];
|
3
|
-
export declare const loginThemePageIds: readonly ["login.ftl", "login-username.ftl", "login-password.ftl", "webauthn-authenticate.ftl", "register.ftl", "register-user-profile.ftl", "info.ftl", "error.ftl", "login-reset-password.ftl", "login-verify-email.ftl", "terms.ftl", "login-otp.ftl", "login-update-profile.ftl", "login-update-password.ftl", "login-idp-link-confirm.ftl", "login-idp-link-email.ftl", "login-page-expired.ftl", "login-config-totp.ftl", "logout-confirm.ftl", "update-user-profile.ftl", "idp-review-user-profile.ftl"];
|
3
|
+
export declare const loginThemePageIds: readonly ["login.ftl", "login-username.ftl", "login-password.ftl", "webauthn-authenticate.ftl", "register.ftl", "register-user-profile.ftl", "info.ftl", "error.ftl", "login-reset-password.ftl", "login-verify-email.ftl", "terms.ftl", "login-otp.ftl", "login-update-profile.ftl", "login-update-password.ftl", "login-idp-link-confirm.ftl", "login-idp-link-email.ftl", "login-page-expired.ftl", "login-config-totp.ftl", "logout-confirm.ftl", "update-user-profile.ftl", "idp-review-user-profile.ftl", "update-email.ftl"];
|
4
4
|
export declare const accountThemePageIds: readonly ["password.ftl", "account.ftl"];
|
5
5
|
export type LoginThemePageId = (typeof loginThemePageIds)[number];
|
6
6
|
export type AccountThemePageId = (typeof accountThemePageIds)[number];
|
@@ -86,7 +86,8 @@ exports.loginThemePageIds = [
|
|
86
86
|
"login-config-totp.ftl",
|
87
87
|
"logout-confirm.ftl",
|
88
88
|
"update-user-profile.ftl",
|
89
|
-
"idp-review-user-profile.ftl"
|
89
|
+
"idp-review-user-profile.ftl",
|
90
|
+
"update-email.ftl"
|
90
91
|
];
|
91
92
|
exports.accountThemePageIds = ["password.ftl", "account.ftl"];
|
92
93
|
{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generateFtl.js","sourceRoot":"","sources":["../../../src/bin/keycloakify/generateFtl/generateFtl.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA8B;AAC9B,kGAAiG;AACjG,gFAAsF;AACtF,4FAA2F;AAC3F,qCAAyB;AACzB,6BAAwC;AACxC,+CAA8C;AAC9C,8DAA6D;AAE7D,uCAAsC;AACtC,yCAAwC;AAE3B,QAAA,UAAU,GAAG,CAAC,OAAO,EAAE,SAAS,CAAU,CAAC;AAI3C,QAAA,iBAAiB,GAAG;IAC7B,WAAW;IACX,oBAAoB;IACpB,oBAAoB;IACpB,2BAA2B;IAC3B,cAAc;IACd,2BAA2B;IAC3B,UAAU;IACV,WAAW;IACX,0BAA0B;IAC1B,wBAAwB;IACxB,WAAW;IACX,eAAe;IACf,0BAA0B;IAC1B,2BAA2B;IAC3B,4BAA4B;IAC5B,0BAA0B;IAC1B,wBAAwB;IACxB,uBAAuB;IACvB,oBAAoB;IACpB,yBAAyB;IACzB,6BAA6B;
|
1
|
+
{"version":3,"file":"generateFtl.js","sourceRoot":"","sources":["../../../src/bin/keycloakify/generateFtl/generateFtl.ts"],"names":[],"mappings":"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"}
|
@@ -1,7 +1,5 @@
|
|
1
|
-
export declare function downloadAndUnzip({ url, destDirPath, pathOfDirToExtractInArchive
|
2
|
-
isSilent: boolean;
|
1
|
+
export declare function downloadAndUnzip({ url, destDirPath, pathOfDirToExtractInArchive }: {
|
3
2
|
url: string;
|
4
3
|
destDirPath: string;
|
5
4
|
pathOfDirToExtractInArchive?: string;
|
6
|
-
cacheDirPath: string;
|
7
5
|
}): Promise<void>;
|
@@ -46,45 +46,42 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
46
46
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
47
47
|
}
|
48
48
|
};
|
49
|
-
var
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
}
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
function fulfill(value) { resume("next", value); }
|
65
|
-
function reject(value) { resume("throw", value); }
|
66
|
-
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
49
|
+
var __read = (this && this.__read) || function (o, n) {
|
50
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
51
|
+
if (!m) return o;
|
52
|
+
var i = m.call(o), r, ar = [], e;
|
53
|
+
try {
|
54
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
55
|
+
}
|
56
|
+
catch (error) { e = { error: error }; }
|
57
|
+
finally {
|
58
|
+
try {
|
59
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
60
|
+
}
|
61
|
+
finally { if (e) throw e.error; }
|
62
|
+
}
|
63
|
+
return ar;
|
67
64
|
};
|
68
65
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
69
66
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
70
67
|
};
|
71
68
|
Object.defineProperty(exports, "__esModule", { value: true });
|
72
69
|
exports.downloadAndUnzip = void 0;
|
73
|
-
var
|
74
|
-
var fs_1 = require("fs");
|
75
|
-
var promises_1 = require("fs/promises");
|
76
|
-
var transformCodebase_1 = require("./transformCodebase");
|
70
|
+
var child_process_1 = require("child_process");
|
77
71
|
var crypto_1 = require("crypto");
|
72
|
+
var promises_1 = require("fs/promises");
|
78
73
|
var make_fetch_happen_1 = __importDefault(require("make-fetch-happen"));
|
79
|
-
var
|
80
|
-
var
|
81
|
-
var child_process_1 = require("child_process");
|
74
|
+
var path_1 = require("path");
|
75
|
+
var tsafe_1 = require("tsafe");
|
82
76
|
var util_1 = require("util");
|
77
|
+
var getProjectRoot_1 = require("./getProjectRoot");
|
78
|
+
var transformCodebase_1 = require("./transformCodebase");
|
79
|
+
var unzip_1 = require("./unzip");
|
83
80
|
var exec = (0, util_1.promisify)(child_process_1.exec);
|
84
81
|
function hash(s) {
|
85
82
|
return (0, crypto_1.createHash)("sha256").update(s).digest("hex");
|
86
83
|
}
|
87
|
-
function
|
84
|
+
function exists(path) {
|
88
85
|
return __awaiter(this, void 0, void 0, function () {
|
89
86
|
var error_1;
|
90
87
|
return __generator(this, function (_a) {
|
@@ -92,11 +89,13 @@ function maybeStat(path) {
|
|
92
89
|
case 0:
|
93
90
|
_a.trys.push([0, 2, , 3]);
|
94
91
|
return [4 /*yield*/, (0, promises_1.stat)(path)];
|
95
|
-
case 1:
|
92
|
+
case 1:
|
93
|
+
_a.sent();
|
94
|
+
return [2 /*return*/, true];
|
96
95
|
case 2:
|
97
96
|
error_1 = _a.sent();
|
98
97
|
if (error_1.code === "ENOENT")
|
99
|
-
return [2 /*return*/,
|
98
|
+
return [2 /*return*/, false];
|
100
99
|
throw error_1;
|
101
100
|
case 3: return [2 /*return*/];
|
102
101
|
}
|
@@ -104,21 +103,26 @@ function maybeStat(path) {
|
|
104
103
|
});
|
105
104
|
}
|
106
105
|
/**
|
107
|
-
* Get
|
108
|
-
*
|
109
|
-
* @param key
|
110
|
-
* @returns string or undefined
|
106
|
+
* Get npm configuration as map
|
111
107
|
*/
|
112
|
-
function getNmpConfig(
|
108
|
+
function getNmpConfig() {
|
113
109
|
return __awaiter(this, void 0, void 0, function () {
|
114
|
-
var stdout
|
110
|
+
var stdout;
|
115
111
|
return __generator(this, function (_a) {
|
116
112
|
switch (_a.label) {
|
117
|
-
case 0: return [4 /*yield*/, exec("npm config get "
|
113
|
+
case 0: return [4 /*yield*/, exec("npm config get", { encoding: "utf8" })];
|
118
114
|
case 1:
|
119
115
|
stdout = (_a.sent()).stdout;
|
120
|
-
|
121
|
-
|
116
|
+
return [2 /*return*/, stdout
|
117
|
+
.split("\n")
|
118
|
+
.filter(function (line) { return !line.startsWith(";"); })
|
119
|
+
.map(function (line) { return line.trim(); })
|
120
|
+
.map(function (line) { return line.split("=", 2); })
|
121
|
+
.reduce(function (cfg, _a) {
|
122
|
+
var _b;
|
123
|
+
var _c = __read(_a, 2), key = _c[0], value = _c[1];
|
124
|
+
return (__assign(__assign({}, cfg), (_b = {}, _b[key] = value, _b)));
|
125
|
+
}, {})];
|
122
126
|
}
|
123
127
|
});
|
124
128
|
});
|
@@ -132,354 +136,64 @@ function getNmpConfig(key) {
|
|
132
136
|
function getNpmProxyConfig() {
|
133
137
|
var _a, _b;
|
134
138
|
return __awaiter(this, void 0, void 0, function () {
|
135
|
-
var
|
136
|
-
return __generator(this, function (
|
137
|
-
switch (
|
138
|
-
case 0: return [4 /*yield*/, getNmpConfig(
|
139
|
+
var cfg, proxy, noProxy;
|
140
|
+
return __generator(this, function (_c) {
|
141
|
+
switch (_c.label) {
|
142
|
+
case 0: return [4 /*yield*/, getNmpConfig()];
|
139
143
|
case 1:
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
case 2: return [4 /*yield*/, getNmpConfig("proxy")];
|
144
|
-
case 3:
|
145
|
-
_c = (_e.sent());
|
146
|
-
_e.label = 4;
|
147
|
-
case 4:
|
148
|
-
proxy = _c;
|
149
|
-
return [4 /*yield*/, getNmpConfig("noproxy")];
|
150
|
-
case 5:
|
151
|
-
if (!((_b = (_e.sent())) !== null && _b !== void 0)) return [3 /*break*/, 6];
|
152
|
-
_d = _b;
|
153
|
-
return [3 /*break*/, 8];
|
154
|
-
case 6: return [4 /*yield*/, getNmpConfig("no-proxy")];
|
155
|
-
case 7:
|
156
|
-
_d = (_e.sent());
|
157
|
-
_e.label = 8;
|
158
|
-
case 8:
|
159
|
-
noProxy = _d;
|
144
|
+
cfg = _c.sent();
|
145
|
+
proxy = (_a = cfg["https-proxy"]) !== null && _a !== void 0 ? _a : cfg["proxy"];
|
146
|
+
noProxy = (_b = cfg["noproxy"]) !== null && _b !== void 0 ? _b : cfg["no-proxy"];
|
160
147
|
return [2 /*return*/, { proxy: proxy, noProxy: noProxy }];
|
161
148
|
}
|
162
149
|
});
|
163
150
|
});
|
164
151
|
}
|
165
|
-
/**
|
166
|
-
* Download a file from `url` to `dir`. Will try to avoid downloading existing
|
167
|
-
* files by using the cache directory ~/.keycloakify/cache
|
168
|
-
*
|
169
|
-
* If the target directory does not exist, it will be created.
|
170
|
-
*
|
171
|
-
* If the target file exists, it will be overwritten.
|
172
|
-
*
|
173
|
-
* We use make-fetch-happen's internal file cache here, so we don't need to
|
174
|
-
* worry about redownloading the same file over and over. Unfortunately, that
|
175
|
-
* cache does not have a single file per entry, but bundles and indexes them,
|
176
|
-
* so we still need to write the contents to the target directory (possibly
|
177
|
-
* over and over), cause the current unzip implementation wants random access.
|
178
|
-
*
|
179
|
-
* @param url download url
|
180
|
-
* @param dir target directory
|
181
|
-
* @param filename target filename
|
182
|
-
* @returns promise for the full path of the downloaded file
|
183
|
-
*/
|
184
|
-
function download(url, dir, filename) {
|
185
|
-
var _a;
|
186
|
-
return __awaiter(this, void 0, void 0, function () {
|
187
|
-
var proxyOpts, cacheRoot, cachePath, opts, response, filepath;
|
188
|
-
return __generator(this, function (_b) {
|
189
|
-
switch (_b.label) {
|
190
|
-
case 0: return [4 /*yield*/, getNpmProxyConfig()];
|
191
|
-
case 1:
|
192
|
-
proxyOpts = _b.sent();
|
193
|
-
cacheRoot = (_a = process.env.XDG_CACHE_HOME) !== null && _a !== void 0 ? _a : (0, os_1.homedir)();
|
194
|
-
cachePath = (0, path_1.join)(cacheRoot, ".keycloakify/cache");
|
195
|
-
opts = __assign({ cachePath: cachePath }, proxyOpts);
|
196
|
-
return [4 /*yield*/, (0, make_fetch_happen_1.default)(url, opts)];
|
197
|
-
case 2:
|
198
|
-
response = _b.sent();
|
199
|
-
filepath = (0, path_1.join)(dir, filename);
|
200
|
-
return [4 /*yield*/, (0, promises_1.mkdir)(dir, { recursive: true })];
|
201
|
-
case 3:
|
202
|
-
_b.sent();
|
203
|
-
return [4 /*yield*/, (0, promises_1.writeFile)(filepath, response.body)];
|
204
|
-
case 4:
|
205
|
-
_b.sent();
|
206
|
-
return [2 /*return*/, filepath];
|
207
|
-
}
|
208
|
-
});
|
209
|
-
});
|
210
|
-
}
|
211
|
-
/**
|
212
|
-
* @typedef
|
213
|
-
* @type MultiError = Error & { cause: Error[] }
|
214
|
-
*/
|
215
|
-
/**
|
216
|
-
* Extract the archive `zipFile` into the directory `dir`. If `archiveDir` is given,
|
217
|
-
* only that directory will be extracted, stripping the given path components.
|
218
|
-
*
|
219
|
-
* If dir does not exist, it will be created.
|
220
|
-
*
|
221
|
-
* If any archive file exists, it will be overwritten.
|
222
|
-
*
|
223
|
-
* Will unzip using all available nodejs worker threads.
|
224
|
-
*
|
225
|
-
* Will try to clean up extracted files on failure.
|
226
|
-
*
|
227
|
-
* If unpacking fails, will either throw an regular error, or
|
228
|
-
* possibly an `MultiError`, which contains a `cause` field with
|
229
|
-
* a number of root cause errors.
|
230
|
-
*
|
231
|
-
* Warning this method is not optimized for continuous reading of the zip
|
232
|
-
* archive, but is a trade-off between simplicity and allowing extraction
|
233
|
-
* of a single directory from the archive.
|
234
|
-
*
|
235
|
-
* @param zipFile the file to unzip
|
236
|
-
* @param dir the target directory
|
237
|
-
* @param archiveDir if given, unpack only files from this archive directory
|
238
|
-
* @throws {MultiError} error
|
239
|
-
* @returns Promise for a list of full file paths pointing to actually extracted files
|
240
|
-
*/
|
241
|
-
function unzip(zipFile, dir, archiveDir) {
|
242
|
-
var _a, e_1, _b, _c;
|
243
|
-
return __awaiter(this, void 0, void 0, function () {
|
244
|
-
var promises, _loop_1, _d, _e, _f, e_1_1, results, success, failure, e;
|
245
|
-
var _this = this;
|
246
|
-
return __generator(this, function (_g) {
|
247
|
-
switch (_g.label) {
|
248
|
-
case 0: return [4 /*yield*/, (0, promises_1.mkdir)(dir, { recursive: true })];
|
249
|
-
case 1:
|
250
|
-
_g.sent();
|
251
|
-
promises = [];
|
252
|
-
_g.label = 2;
|
253
|
-
case 2:
|
254
|
-
_g.trys.push([2, 7, 8, 13]);
|
255
|
-
_loop_1 = function () {
|
256
|
-
_c = _f.value;
|
257
|
-
_d = false;
|
258
|
-
try {
|
259
|
-
var record = _c;
|
260
|
-
var recordPath = record.path, createRecordReadStream = record.createReadStream;
|
261
|
-
var filePath = (0, path_1.join)(dir, recordPath);
|
262
|
-
var parent_1 = (0, path_1.dirname)(filePath);
|
263
|
-
if (archiveDir && !recordPath.startsWith(archiveDir))
|
264
|
-
return "continue";
|
265
|
-
promises.push(new Promise(function (resolve, reject) { return __awaiter(_this, void 0, void 0, function () {
|
266
|
-
var input, output;
|
267
|
-
return __generator(this, function (_a) {
|
268
|
-
switch (_a.label) {
|
269
|
-
case 0: return [4 /*yield*/, (0, promises_1.mkdir)(parent_1, { recursive: true })];
|
270
|
-
case 1:
|
271
|
-
_a.sent();
|
272
|
-
input = createRecordReadStream();
|
273
|
-
output = (0, fs_1.createWriteStream)(filePath);
|
274
|
-
output.setMaxListeners(Infinity);
|
275
|
-
output.on("error", function (e) { return reject(Object.assign(e, { filePath: filePath })); });
|
276
|
-
output.on("finish", function () { return resolve(filePath); });
|
277
|
-
input.pipe(output);
|
278
|
-
return [2 /*return*/];
|
279
|
-
}
|
280
|
-
});
|
281
|
-
}); }));
|
282
|
-
}
|
283
|
-
finally {
|
284
|
-
_d = true;
|
285
|
-
}
|
286
|
-
};
|
287
|
-
_d = true, _e = __asyncValues(iterateZipArchive(zipFile));
|
288
|
-
_g.label = 3;
|
289
|
-
case 3: return [4 /*yield*/, _e.next()];
|
290
|
-
case 4:
|
291
|
-
if (!(_f = _g.sent(), _a = _f.done, !_a)) return [3 /*break*/, 6];
|
292
|
-
_loop_1();
|
293
|
-
_g.label = 5;
|
294
|
-
case 5: return [3 /*break*/, 3];
|
295
|
-
case 6: return [3 /*break*/, 13];
|
296
|
-
case 7:
|
297
|
-
e_1_1 = _g.sent();
|
298
|
-
e_1 = { error: e_1_1 };
|
299
|
-
return [3 /*break*/, 13];
|
300
|
-
case 8:
|
301
|
-
_g.trys.push([8, , 11, 12]);
|
302
|
-
if (!(!_d && !_a && (_b = _e.return))) return [3 /*break*/, 10];
|
303
|
-
return [4 /*yield*/, _b.call(_e)];
|
304
|
-
case 9:
|
305
|
-
_g.sent();
|
306
|
-
_g.label = 10;
|
307
|
-
case 10: return [3 /*break*/, 12];
|
308
|
-
case 11:
|
309
|
-
if (e_1) throw e_1.error;
|
310
|
-
return [7 /*endfinally*/];
|
311
|
-
case 12: return [7 /*endfinally*/];
|
312
|
-
case 13: return [4 /*yield*/, Promise.allSettled(promises)];
|
313
|
-
case 14:
|
314
|
-
results = _g.sent();
|
315
|
-
success = results.filter(function (r) { return r.status === "fulfilled"; }).map(function (r) { return r.value; });
|
316
|
-
failure = results.filter(function (r) { return r.status === "rejected"; }).map(function (r) { return r.reason; });
|
317
|
-
if (!failure.length) return [3 /*break*/, 17];
|
318
|
-
return [4 /*yield*/, Promise.all(success.map(function (path) { return (0, promises_1.unlink)(path); }))];
|
319
|
-
case 15:
|
320
|
-
_g.sent();
|
321
|
-
return [4 /*yield*/, Promise.all(failure.map(function (e) { return e && e.path && (0, promises_1.unlink)(e.path); }))];
|
322
|
-
case 16:
|
323
|
-
_g.sent();
|
324
|
-
e = new Error("Failed to extract: " + failure.map(function (e) { return e.message; }).join(";"));
|
325
|
-
e.cause = failure;
|
326
|
-
throw e;
|
327
|
-
case 17: return [2 /*return*/, success];
|
328
|
-
}
|
329
|
-
});
|
330
|
-
});
|
331
|
-
}
|
332
|
-
/**
|
333
|
-
*
|
334
|
-
* @param file file to read
|
335
|
-
* @param start first byte to read
|
336
|
-
* @param end last byte to read
|
337
|
-
* @returns Promise of a buffer of read bytes
|
338
|
-
*/
|
339
|
-
function readFileChunk(file, start, end) {
|
340
|
-
return __awaiter(this, void 0, void 0, function () {
|
341
|
-
var chunks;
|
342
|
-
return __generator(this, function (_a) {
|
343
|
-
chunks = [];
|
344
|
-
return [2 /*return*/, new Promise(function (resolve, reject) {
|
345
|
-
var stream = (0, fs_1.createReadStream)(file, { start: start, end: end });
|
346
|
-
stream.setMaxListeners(Infinity);
|
347
|
-
stream.on("error", function (e) { return reject(e); });
|
348
|
-
stream.on("end", function () { return resolve(Buffer.concat(chunks)); });
|
349
|
-
stream.on("data", function (chunk) { return chunks.push(chunk); });
|
350
|
-
})];
|
351
|
-
});
|
352
|
-
});
|
353
|
-
}
|
354
|
-
/**
|
355
|
-
* Iterate over all records of a zipfile, and yield a ZipRecord.
|
356
|
-
* Use `record.createReadStream()` to actually read the file.
|
357
|
-
*
|
358
|
-
* Warning this method will only work with single-disk zip files.
|
359
|
-
* Warning this method may fail if the zip archive has an crazy amount
|
360
|
-
* of files and the central directory is not fully contained within the
|
361
|
-
* last 65k bytes of the zip file.
|
362
|
-
*
|
363
|
-
* @param zipFile
|
364
|
-
* @returns AsyncGenerator which will yield ZipRecords
|
365
|
-
*/
|
366
|
-
function iterateZipArchive(zipFile) {
|
367
|
-
return __asyncGenerator(this, arguments, function iterateZipArchive_1() {
|
368
|
-
var size, chunkSize, chunk, unread, i, found, nFiles, directorySize, directoryOffset, _loop_2;
|
369
|
-
return __generator(this, function (_a) {
|
370
|
-
switch (_a.label) {
|
371
|
-
case 0: return [4 /*yield*/, __await((0, promises_1.stat)(zipFile))];
|
372
|
-
case 1:
|
373
|
-
size = (_a.sent()).size;
|
374
|
-
chunkSize = 65535 + 22 + 1;
|
375
|
-
return [4 /*yield*/, __await(readFileChunk(zipFile, size - chunkSize, size))];
|
376
|
-
case 2:
|
377
|
-
chunk = _a.sent();
|
378
|
-
unread = size - chunk.length;
|
379
|
-
i = chunk.length - 4;
|
380
|
-
found = false;
|
381
|
-
// Find central directory end header, reading backwards from the end
|
382
|
-
while (!found && i-- > 0)
|
383
|
-
if (chunk[i] === 0x50 && chunk.readUInt32LE(i) === 0x06054b50)
|
384
|
-
found = true;
|
385
|
-
if (!found)
|
386
|
-
throw new Error("Not a zip file");
|
387
|
-
// This method will fail on a multi-disk zip, so bail early.
|
388
|
-
if (chunk.readUInt16LE(i + 4) !== 0)
|
389
|
-
throw new Error("Multi-disk zip not supported");
|
390
|
-
nFiles = chunk.readUint16LE(i + 10);
|
391
|
-
directorySize = chunk.readUint32LE(i + 12);
|
392
|
-
directoryOffset = chunk.readUint32LE(i + 16);
|
393
|
-
if (directoryOffset === 4294967295)
|
394
|
-
throw new Error("zip64 not supported");
|
395
|
-
if (directoryOffset > size)
|
396
|
-
throw new Error("Central directory offset ".concat(directoryOffset, " is outside file"));
|
397
|
-
i = directoryOffset - unread;
|
398
|
-
if (!(i < 0)) return [3 /*break*/, 4];
|
399
|
-
return [4 /*yield*/, __await(readFileChunk(zipFile, directoryOffset, directoryOffset + directorySize))];
|
400
|
-
case 3:
|
401
|
-
chunk = _a.sent();
|
402
|
-
i = 0;
|
403
|
-
_a.label = 4;
|
404
|
-
case 4:
|
405
|
-
_loop_2 = function () {
|
406
|
-
var compressionMethod, compressedFileSize, filenameLength, extraLength, commentLength, start, end, filename, createRecordReadStream;
|
407
|
-
return __generator(this, function (_b) {
|
408
|
-
switch (_b.label) {
|
409
|
-
case 0:
|
410
|
-
// Check for marker bytes
|
411
|
-
if (chunk.readUInt32LE(i) !== 0x02014b50)
|
412
|
-
throw new Error("No central directory record at position " + (unread + i));
|
413
|
-
compressionMethod = { 8: "deflate" }[chunk.readUint16LE(i + 10)];
|
414
|
-
compressedFileSize = chunk.readUint32LE(i + 20);
|
415
|
-
filenameLength = chunk.readUint16LE(i + 28);
|
416
|
-
extraLength = chunk.readUint16LE(i + 30);
|
417
|
-
commentLength = chunk.readUint16LE(i + 32);
|
418
|
-
start = chunk.readUint32LE(i + 42) + 30 + filenameLength + extraLength;
|
419
|
-
end = start + compressedFileSize;
|
420
|
-
filename = chunk.slice(i + 46, i + 46 + filenameLength).toString("utf-8");
|
421
|
-
createRecordReadStream = function () {
|
422
|
-
var input = (0, fs_1.createReadStream)(zipFile, { start: start, end: end });
|
423
|
-
if (compressionMethod === "deflate") {
|
424
|
-
var inflate = (0, zlib_1.createInflateRaw)();
|
425
|
-
input.pipe(inflate);
|
426
|
-
return inflate;
|
427
|
-
}
|
428
|
-
return input;
|
429
|
-
};
|
430
|
-
if (!(end > start)) return [3 /*break*/, 3];
|
431
|
-
return [4 /*yield*/, __await({ path: filename, createReadStream: createRecordReadStream, compressionMethod: compressionMethod })];
|
432
|
-
case 1: return [4 /*yield*/, _b.sent()];
|
433
|
-
case 2:
|
434
|
-
_b.sent();
|
435
|
-
_b.label = 3;
|
436
|
-
case 3:
|
437
|
-
// advance pointer to next central directory entry
|
438
|
-
i += 46 + filenameLength + extraLength + commentLength;
|
439
|
-
return [2 /*return*/];
|
440
|
-
}
|
441
|
-
});
|
442
|
-
};
|
443
|
-
_a.label = 5;
|
444
|
-
case 5:
|
445
|
-
if (!(nFiles-- > 0)) return [3 /*break*/, 7];
|
446
|
-
return [5 /*yield**/, _loop_2()];
|
447
|
-
case 6:
|
448
|
-
_a.sent();
|
449
|
-
return [3 /*break*/, 5];
|
450
|
-
case 7: return [2 /*return*/];
|
451
|
-
}
|
452
|
-
});
|
453
|
-
});
|
454
|
-
}
|
455
152
|
function downloadAndUnzip(_a) {
|
456
|
-
var _b;
|
457
|
-
var url = _a.url, destDirPath = _a.destDirPath, pathOfDirToExtractInArchive = _a.pathOfDirToExtractInArchive
|
153
|
+
var _b, _c;
|
154
|
+
var url = _a.url, destDirPath = _a.destDirPath, pathOfDirToExtractInArchive = _a.pathOfDirToExtractInArchive;
|
458
155
|
return __awaiter(this, void 0, void 0, function () {
|
459
|
-
var downloadHash,
|
460
|
-
return __generator(this, function (
|
461
|
-
switch (
|
156
|
+
var downloadHash, projectRoot, cacheRoot, zipFilePath, extractDirPath, proxyOpts, response;
|
157
|
+
return __generator(this, function (_d) {
|
158
|
+
switch (_d.label) {
|
462
159
|
case 0:
|
463
|
-
downloadHash = hash(JSON.stringify({ url: url
|
464
|
-
|
465
|
-
|
466
|
-
|
160
|
+
downloadHash = hash(JSON.stringify({ url: url })).substring(0, 15);
|
161
|
+
projectRoot = (0, getProjectRoot_1.getProjectRoot)();
|
162
|
+
cacheRoot = (_b = process.env.XDG_CACHE_HOME) !== null && _b !== void 0 ? _b : "".concat(projectRoot, "/node_modules/.cache");
|
163
|
+
zipFilePath = (0, path_1.join)(cacheRoot, "keycloakify", "zip", "_".concat(downloadHash, ".zip"));
|
164
|
+
extractDirPath = (0, path_1.join)(cacheRoot, "keycloakify", "unzip", "_".concat(downloadHash));
|
165
|
+
return [4 /*yield*/, exists(zipFilePath)];
|
467
166
|
case 1:
|
468
|
-
|
469
|
-
return [4 /*yield*/, (
|
167
|
+
if (!!(_d.sent())) return [3 /*break*/, 6];
|
168
|
+
return [4 /*yield*/, getNpmProxyConfig()];
|
470
169
|
case 2:
|
471
|
-
|
472
|
-
return [4 /*yield*/,
|
170
|
+
proxyOpts = _d.sent();
|
171
|
+
return [4 /*yield*/, (0, make_fetch_happen_1.default)(url, proxyOpts)];
|
473
172
|
case 3:
|
474
|
-
|
475
|
-
|
476
|
-
return [4 /*yield*/, unzip(zipFilepath, extractDirPath, pathOfDirToExtractInArchive)];
|
173
|
+
response = _d.sent();
|
174
|
+
return [4 /*yield*/, (0, promises_1.mkdir)((0, path_1.dirname)(zipFilePath), { recursive: true })];
|
477
175
|
case 4:
|
478
|
-
|
479
|
-
|
176
|
+
_d.sent();
|
177
|
+
/**
|
178
|
+
* The correct way to fix this is to upgrade node-fetch beyond 3.2.5
|
179
|
+
* (see https://github.com/node-fetch/node-fetch/issues/1295#issuecomment-1144061991.)
|
180
|
+
* Unfortunately, octokit (a dependency of keycloakify) also uses node-fetch, and
|
181
|
+
* does not support node-fetch 3.x. So we stick around with this band-aid until
|
182
|
+
* octokit upgrades.
|
183
|
+
*/
|
184
|
+
(_c = response.body) === null || _c === void 0 ? void 0 : _c.setMaxListeners(Number.MAX_VALUE);
|
185
|
+
(0, tsafe_1.assert)(typeof response.body !== "undefined" && response.body != null);
|
186
|
+
return [4 /*yield*/, (0, promises_1.writeFile)(zipFilePath, response.body)];
|
480
187
|
case 5:
|
481
|
-
|
482
|
-
|
188
|
+
_d.sent();
|
189
|
+
_d.label = 6;
|
190
|
+
case 6: return [4 /*yield*/, (0, unzip_1.unzip)(zipFilePath, extractDirPath, pathOfDirToExtractInArchive)];
|
191
|
+
case 7:
|
192
|
+
_d.sent();
|
193
|
+
(0, transformCodebase_1.transformCodebase)({
|
194
|
+
"srcDirPath": extractDirPath,
|
195
|
+
"destDirPath": destDirPath
|
196
|
+
});
|
483
197
|
return [2 /*return*/];
|
484
198
|
}
|
485
199
|
});
|