keycloakify 4.7.6 → 4.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/README.md +37 -10
- package/bin/build-keycloak-theme/build-keycloak-theme.d.ts +1 -0
- package/bin/build-keycloak-theme/build-keycloak-theme.js +7 -5
- package/bin/build-keycloak-theme/build-keycloak-theme.js.map +1 -1
- package/bin/build-keycloak-theme/generateJavaStackFiles.d.ts +1 -0
- package/bin/build-keycloak-theme/generateJavaStackFiles.js +27 -2
- package/bin/build-keycloak-theme/generateJavaStackFiles.js.map +1 -1
- package/bin/build-keycloak-theme/generateKeycloakThemeResources.d.ts +4 -1
- package/bin/build-keycloak-theme/generateKeycloakThemeResources.js +18 -1
- package/bin/build-keycloak-theme/generateKeycloakThemeResources.js.map +1 -1
- package/bin/create-keycloak-theme-email-directory.d.ts +1 -0
- package/bin/create-keycloak-theme-email-directory.js +93 -0
- package/bin/create-keycloak-theme-email-directory.js.map +1 -0
- package/bin/download-builtin-keycloak-theme.js +54 -13
- package/bin/download-builtin-keycloak-theme.js.map +1 -1
- package/bin/promptKeycloakVersion.d.ts +3 -0
- package/bin/promptKeycloakVersion.js +91 -0
- package/bin/promptKeycloakVersion.js.map +1 -0
- package/bin/tools/NpmModuleVersion.d.ts +22 -0
- package/bin/tools/NpmModuleVersion.js +103 -0
- package/bin/tools/NpmModuleVersion.js.map +1 -0
- package/bin/tools/createOctokit.d.ts +5 -0
- package/bin/tools/createOctokit.js +21 -0
- package/bin/tools/createOctokit.js.map +1 -0
- package/bin/tools/octokit-addons/getLatestsSemVersionedTag.d.ts +15 -0
- package/bin/tools/octokit-addons/getLatestsSemVersionedTag.js +112 -0
- package/bin/tools/octokit-addons/getLatestsSemVersionedTag.js.map +1 -0
- package/bin/tools/octokit-addons/listTags.d.ts +13 -0
- package/bin/tools/octokit-addons/listTags.js +154 -0
- package/bin/tools/octokit-addons/listTags.js.map +1 -0
- package/lib/i18n/KcLanguageTag.d.ts +1 -1
- package/lib/i18n/useKcLanguageTag.d.ts +1 -1
- package/package.json +31 -4
- package/src/bin/build-keycloak-theme/build-keycloak-theme.ts +6 -3
- package/src/bin/build-keycloak-theme/generateJavaStackFiles.ts +9 -3
- package/src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts +27 -1
- package/src/bin/create-keycloak-theme-email-directory.ts +34 -0
- package/src/bin/download-builtin-keycloak-theme.ts +10 -15
- package/src/bin/promptKeycloakVersion.ts +44 -0
- package/src/bin/tools/NpmModuleVersion.ts +73 -0
- package/src/bin/tools/createOctokit.ts +7 -0
- package/src/bin/tools/octokit-addons/getLatestsSemVersionedTag.ts +40 -0
- package/src/bin/tools/octokit-addons/listTags.ts +49 -0
package/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## **4.8.0** (2022-04-20)
|
2
|
+
|
3
|
+
- Document email template customization feature #9
|
4
|
+
- Add mention of download-builtin-keycloak-theme
|
5
|
+
- Let the choice of kc version be auto in GH Action
|
6
|
+
- Only test on node v15 and v14 (bellow is no longer supported (rmSync)
|
7
|
+
- Feature email customization #9
|
8
|
+
|
1
9
|
### **4.7.6** (2022-04-12)
|
2
10
|
|
3
11
|
- Fix bugs with language switch #85
|
package/README.md
CHANGED
@@ -72,6 +72,7 @@ If you already have a Keycloak custom theme, it can be easily ported to Keycloak
|
|
72
72
|
- [Advanced pages configuration](#advanced-pages-configuration)
|
73
73
|
- [Hot reload](#hot-reload)
|
74
74
|
- [Enable loading in a blink of an eye of login pages ⚡ (--external-assets)](#enable-loading-in-a-blink-of-an-eye-of-login-pages----external-assets)
|
75
|
+
- [Email template customization.](#email-template-customization)
|
75
76
|
- [User profile and frontend form validation](#user-profile-and-frontend-form-validation)
|
76
77
|
- [Support for Terms and conditions](#support-for-terms-and-conditions)
|
77
78
|
- [Some pages still have the default theme. Why?](#some-pages-still-have-the-default-theme-why)
|
@@ -85,8 +86,15 @@ If you already have a Keycloak custom theme, it can be easily ported to Keycloak
|
|
85
86
|
- [Kickstart video](#kickstart-video)
|
86
87
|
- [FTL errors related to `ftl_object_to_js_code_declaring_an_object` in Keycloak logs.](#ftl-errors-related-to-ftl_object_to_js_code_declaring_an_object-in-keycloak-logs)
|
87
88
|
- [Adding custom message (to `i18n/useKcMessage.tsx`)](#adding-custom-message-to-i18nusekcmessagetsx)
|
89
|
+
- [Downloading builtin theme resource files](#downloading-builtin-theme-resource-files)
|
88
90
|
- [Email domain whitelist](#email-domain-whitelist)
|
89
91
|
- [Changelog highlights](#changelog-highlights)
|
92
|
+
- [v4.7.4](#v474)
|
93
|
+
- [v4.7.2](#v472)
|
94
|
+
- [v4.7.0](#v470)
|
95
|
+
- [v4.6.0](#v460)
|
96
|
+
- [v4.5.3](#v453)
|
97
|
+
- [v4.3.0](#v430)
|
90
98
|
- [v4](#v4)
|
91
99
|
- [v3](#v3)
|
92
100
|
- [v2.5](#v25)
|
@@ -94,7 +102,7 @@ If you already have a Keycloak custom theme, it can be easily ported to Keycloak
|
|
94
102
|
|
95
103
|
# Requirements
|
96
104
|
|
97
|
-
On Windows OS you'll have to use [WSL](https://docs.microsoft.com/en-us/windows/wsl/install-win10). More info [here](https://github.com/InseeFrLab/keycloakify/issues/54
|
105
|
+
On Windows OS you'll have to use [WSL](https://docs.microsoft.com/en-us/windows/wsl/install-win10). More info [here](https://github.com/InseeFrLab/keycloakify/issues/54#issuecomment-984834217)
|
98
106
|
|
99
107
|
Tested with the following Keycloak versions:
|
100
108
|
|
@@ -102,6 +110,7 @@ Tested with the following Keycloak versions:
|
|
102
110
|
- [12.0.4](https://hub.docker.com/layers/jboss/keycloak/12.0.4/images/sha256-67e0c88e69bd0c7aef972c40bdeb558a974013a28b3668ca790ed63a04d70584?context=explore)
|
103
111
|
- [15.0.2](https://hub.docker.com/layers/jboss/keycloak/15.0.2/images/sha256-d8ed1ee5df42a178c341f924377da75db49eab08ea9f058ff39a8ed7ee05ec93?context=explore)
|
104
112
|
- [16.1.0](https://hub.docker.com/layers/jboss/keycloak/16.1.0/images/sha256-6ecb9492224c6cfbb55d43f64a5ab634145d8cc1eba14eae8c37e3afde89546e?context=explore)
|
113
|
+
- 17.0.1
|
105
114
|
|
106
115
|
This tool will be maintained to stay compatible with Keycloak v11 and up, however, the default pages you will get
|
107
116
|
(before you customize it) will always be the ones of Keycloak v11.
|
@@ -111,20 +120,20 @@ It assumes there is a `build/` directory at the root of your react project direc
|
|
111
120
|
and a `build/static/` directory generated by webpack.
|
112
121
|
For more information see [this issue](https://github.com/InseeFrLab/keycloakify/issues/5#issuecomment-832296432)
|
113
122
|
|
114
|
-
**All this is defaults with [`create-react-app`](https://create-react-app.dev)** (tested with 4.0.3)
|
123
|
+
**All this is defaults with [`create-react-app`](https://create-react-app.dev)** (tested with 5.0.0, 4.0.3)
|
115
124
|
|
116
125
|
- `mvn` ([Maven](https://maven.apache.org/)), `rm`, `mkdir`, `curl`, `unzip` are assumed to be available.
|
117
126
|
- `docker` must be up and running when running `start_keycloak_testing_container.sh` (Instructions provided after running `yarn keycloak`).
|
118
127
|
|
119
128
|
## My framework doesn’t seem to be supported, what can I do?
|
120
129
|
|
121
|
-
Currently Keycloakify is only compatible with
|
130
|
+
Currently Keycloakify is only compatible with SPA React apps.
|
122
131
|
It doesn’t mean that you can't use Keycloakify if you are using Next.js, Express or any other
|
123
|
-
framework that involves
|
132
|
+
framework that involves a server but your Keycloak theme will need to be a standalone project.
|
124
133
|
Find specific instructions about how to get started [**here**](https://github.com/garronej/keycloakify-demo-app#keycloak-theme-only).
|
125
134
|
|
126
135
|
To share your styles between your main app and your login pages you will need to externalize your design system by making it a
|
127
|
-
separate module. Checkout [ts_ci](https://github.com/garronej/ts_ci), it can help with that.
|
136
|
+
separate module. Checkout [ts_ci](https://github.com/garronej/ts_ci), it can help with that (example with [our design system](https://github.com/InseeFrLab/onyxia-ui)).
|
128
137
|
|
129
138
|
# How to use
|
130
139
|
|
@@ -301,6 +310,19 @@ performance boost if you jump through those hoops:
|
|
301
310
|
|
302
311
|
Checkout a complete setup [here](https://github.com/garronej/keycloakify-demo-app#about-keycloakify)
|
303
312
|
|
313
|
+
# Email template customization.
|
314
|
+
|
315
|
+
_Introduced in [v4.8.0](https://github.com/InseeFrLab/keycloakify/releases/tag/v4.8.0)_
|
316
|
+
|
317
|
+
It is now possible to customize the emails sent to your users to confirm their email address ect.
|
318
|
+
Just run `npx create-keycloak-theme-email-directory`, it will create a `keycloak_theme_email` directory
|
319
|
+
at the root of your project.
|
320
|
+
This directory should be tracked by Git (`yarn add -A`)
|
321
|
+
You can start hacking the default template.
|
322
|
+
When `npx build-keycloak-theme` (`yarn keycloak`) is run. If the directory `keycloak_theme_email` exists
|
323
|
+
at the root of your project, it will be bundled into your `.jar` file and you will be able to select
|
324
|
+
it [in the Keycloak administration pages](https://user-images.githubusercontent.com/6702424/164299589-75f8008b-b24e-4836-ad6b-72149bb55621.png).
|
325
|
+
|
304
326
|
# User profile and frontend form validation
|
305
327
|
|
306
328
|
<p align="center">
|
@@ -356,7 +378,7 @@ the building and publishing of the theme (the .jar file).
|
|
356
378
|
|
357
379
|
## `process.env.PUBLIC_URL` not supported.
|
358
380
|
|
359
|
-
You won't be able to [import things from your public directory **in your JavaScript code**](https://create-react-app.dev/docs/using-the-public-folder/#adding-assets-outside-of-the-module-system).
|
381
|
+
You won't be able to [import things from your public directory **in your JavaScript code** (it's supported in `public/index.html`)](https://create-react-app.dev/docs/using-the-public-folder/#adding-assets-outside-of-the-module-system).
|
360
382
|
(This isn't recommended anyway).
|
361
383
|
|
362
384
|
## `@font-face` importing fonts from the `src/` dir
|
@@ -466,6 +488,11 @@ You can reproduce [this approach](https://github.com/garronej/keycloakify-demo-a
|
|
466
488
|
( don't forget to [evaluate the code](https://github.com/garronej/keycloakify-demo-app/blob/0a6d349dba89a5702f98ba48bca6c76ac7265e1f/src/index.tsx#L15) ).
|
467
489
|
This approach is a bit hacky as it doesn't provide type safety but it works.
|
468
490
|
|
491
|
+
# Downloading builtin theme resource files
|
492
|
+
|
493
|
+
Running `npx download-builtin-keycloak-theme` will let you download the themes that comes by default with
|
494
|
+
a Keycloak version of your choosing.
|
495
|
+
|
469
496
|
# Email domain whitelist
|
470
497
|
|
471
498
|
NOTE: This have been kind of deprecated by [user attribute](#user-profile-and-frontend-form-validation) you could
|
@@ -476,22 +503,22 @@ and `kcRegisterContext["authorizedMailDomains"]` to validate on.
|
|
476
503
|
|
477
504
|
# Changelog highlights
|
478
505
|
|
479
|
-
|
506
|
+
## v4.7.4
|
480
507
|
|
481
508
|
**M1 Mac** support (for testing locally with a dockerized Keycloak).
|
482
509
|
|
483
|
-
|
510
|
+
## v4.7.2
|
484
511
|
|
485
512
|
> WARNING: This is broken.
|
486
513
|
> Testing with local Keycloak container working with M1 Mac. Thanks to [@eduardosanzb](https://github.com/InseeFrLab/keycloakify/issues/43#issuecomment-975699658).
|
487
514
|
> Be aware: When running M1s you are testing with Keycloak v15 else the local container spun will be a Keycloak v16.1.0.
|
488
515
|
|
489
|
-
|
516
|
+
## v4.7.0
|
490
517
|
|
491
518
|
Register with user profile enabled: Out of the box `options` validator support.
|
492
519
|
[Example](https://user-images.githubusercontent.com/6702424/158911163-81e6bbe8-feb0-4dc8-abff-de199d7a678e.mov)
|
493
520
|
|
494
|
-
|
521
|
+
## v4.6.0
|
495
522
|
|
496
523
|
`tss-react` and `powerhooks` are no longer peer dependencies of `keycloakify`.
|
497
524
|
After updating Keycloakify you can remove `tss-react` and `powerhooks` from your dependencies if you don't use them explicitly.
|
@@ -31,7 +31,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
31
31
|
};
|
32
32
|
var _a;
|
33
33
|
Object.defineProperty(exports, "__esModule", { value: true });
|
34
|
-
exports.main = exports.keycloakThemeBuildingDirPath = void 0;
|
34
|
+
exports.main = exports.keycloakThemeEmailDirPath = exports.keycloakThemeBuildingDirPath = void 0;
|
35
35
|
var generateKeycloakThemeResources_1 = require("./generateKeycloakThemeResources");
|
36
36
|
var generateJavaStackFiles_1 = require("./generateJavaStackFiles");
|
37
37
|
var path_1 = require("path");
|
@@ -43,6 +43,7 @@ var reactProjectDirPath = process.cwd();
|
|
43
43
|
var doUseExternalAssets = ((_a = process.argv[2]) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === "--external-assets";
|
44
44
|
var parsedPackageJson = require((0, path_1.join)(reactProjectDirPath, "package.json"));
|
45
45
|
exports.keycloakThemeBuildingDirPath = (0, path_1.join)(reactProjectDirPath, "build_keycloak");
|
46
|
+
exports.keycloakThemeEmailDirPath = (0, path_1.join)(exports.keycloakThemeBuildingDirPath, "..", "keycloak_theme_email");
|
46
47
|
function sanitizeThemeName(name) {
|
47
48
|
return name
|
48
49
|
.replace(/^@(.*)/, "$1")
|
@@ -55,7 +56,7 @@ function main() {
|
|
55
56
|
var extraPagesId = (_b = (_a = parsedPackageJson["keycloakify"]) === null || _a === void 0 ? void 0 : _a["extraPages"]) !== null && _b !== void 0 ? _b : [];
|
56
57
|
var extraThemeProperties = (_d = (_c = parsedPackageJson["keycloakify"]) === null || _c === void 0 ? void 0 : _c["extraThemeProperties"]) !== null && _d !== void 0 ? _d : [];
|
57
58
|
var themeName = sanitizeThemeName(parsedPackageJson.name);
|
58
|
-
(0, generateKeycloakThemeResources_1.generateKeycloakThemeResources)(__assign(__assign({ keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath, "reactAppBuildDirPath": (0, path_1.join)(reactProjectDirPath, "build"), themeName: themeName }, (function () {
|
59
|
+
var doBundleEmailTemplate = (0, generateKeycloakThemeResources_1.generateKeycloakThemeResources)(__assign(__assign({ keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath, keycloakThemeEmailDirPath: exports.keycloakThemeEmailDirPath, "reactAppBuildDirPath": (0, path_1.join)(reactProjectDirPath, "build"), themeName: themeName }, (function () {
|
59
60
|
var url = (function () {
|
60
61
|
var homepage = parsedPackageJson.homepage;
|
61
62
|
if (homepage !== undefined) {
|
@@ -83,12 +84,13 @@ function main() {
|
|
83
84
|
//We have to leave it at that otherwise we break our default theme.
|
84
85
|
//Problem is that we can't guarantee that the the old resources
|
85
86
|
//will still be available on the newer keycloak version.
|
86
|
-
"keycloakVersion": "11.0.3" }));
|
87
|
+
"keycloakVersion": "11.0.3" })).doBundleEmailTemplate;
|
87
88
|
var jarFilePath = (0, generateJavaStackFiles_1.generateJavaStackFiles)({
|
88
|
-
version: parsedPackageJson.version,
|
89
|
+
"version": parsedPackageJson.version,
|
89
90
|
themeName: themeName,
|
90
|
-
homepage: parsedPackageJson.homepage,
|
91
|
+
"homepage": parsedPackageJson.homepage,
|
91
92
|
keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath,
|
93
|
+
doBundleEmailTemplate: doBundleEmailTemplate,
|
92
94
|
}).jarFilePath;
|
93
95
|
child_process.execSync("mvn package", {
|
94
96
|
"cwd": exports.keycloakThemeBuildingDirPath,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"build-keycloak-theme.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/build-keycloak-theme.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mFAAkF;AAClF,mEAAkE;AAClE,6BAA4F;AAC5F,2DAA+C;AAC/C,iGAAgG;AAChG,2BAA0B;AAC1B,qCAAyB;AAQzB,IAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAE1C,IAAM,mBAAmB,GAAG,CAAA,MAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,0CAAE,WAAW,EAAE,MAAK,mBAAmB,CAAC;AAEnF,IAAM,iBAAiB,GAAsB,OAAO,CAAC,IAAA,WAAQ,EAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC,CAAC;AAEvF,QAAA,4BAA4B,GAAG,IAAA,WAAQ,EAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"build-keycloak-theme.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/build-keycloak-theme.ts"],"names":[],"mappings":"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"}
|
@@ -18,13 +18,38 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
18
18
|
__setModuleDefault(result, mod);
|
19
19
|
return result;
|
20
20
|
};
|
21
|
+
var __read = (this && this.__read) || function (o, n) {
|
22
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
23
|
+
if (!m) return o;
|
24
|
+
var i = m.call(o), r, ar = [], e;
|
25
|
+
try {
|
26
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
27
|
+
}
|
28
|
+
catch (error) { e = { error: error }; }
|
29
|
+
finally {
|
30
|
+
try {
|
31
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
32
|
+
}
|
33
|
+
finally { if (e) throw e.error; }
|
34
|
+
}
|
35
|
+
return ar;
|
36
|
+
};
|
37
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
38
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
39
|
+
if (ar || !(i in from)) {
|
40
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
41
|
+
ar[i] = from[i];
|
42
|
+
}
|
43
|
+
}
|
44
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
45
|
+
};
|
21
46
|
Object.defineProperty(exports, "__esModule", { value: true });
|
22
47
|
exports.generateJavaStackFiles = void 0;
|
23
48
|
var url = __importStar(require("url"));
|
24
49
|
var fs = __importStar(require("fs"));
|
25
50
|
var path_1 = require("path");
|
26
51
|
function generateJavaStackFiles(params) {
|
27
|
-
var themeName = params.themeName, version = params.version, homepage = params.homepage, keycloakThemeBuildingDirPath = params.keycloakThemeBuildingDirPath;
|
52
|
+
var themeName = params.themeName, version = params.version, homepage = params.homepage, keycloakThemeBuildingDirPath = params.keycloakThemeBuildingDirPath, doBundleEmailTemplate = params.doBundleEmailTemplate;
|
28
53
|
{
|
29
54
|
var pomFileCode = (function generatePomFileCode() {
|
30
55
|
var groupId = (function () {
|
@@ -64,7 +89,7 @@ function generateJavaStackFiles(params) {
|
|
64
89
|
"themes": [
|
65
90
|
{
|
66
91
|
"name": themeName,
|
67
|
-
"types": ["login"],
|
92
|
+
"types": __spreadArray(["login"], __read((doBundleEmailTemplate ? ["email"] : [])), false),
|
68
93
|
},
|
69
94
|
],
|
70
95
|
}, null, 2), "utf8"));
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generateJavaStackFiles.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/generateJavaStackFiles.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"generateJavaStackFiles.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/generateJavaStackFiles.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAA2B;AAC3B,qCAAyB;AACzB,6BAAgE;AAEhE,SAAgB,sBAAsB,CAAC,MAMtC;IAGW,IAAA,SAAS,GAA6E,MAAM,UAAnF,EAAE,OAAO,GAAoE,MAAM,QAA1E,EAAE,QAAQ,GAA0D,MAAM,SAAhE,EAAE,4BAA4B,GAA4B,MAAM,6BAAlC,EAAE,qBAAqB,GAAK,MAAM,sBAAX,CAAY;IAErG;QACY,IAAA,WAAW,GAAK,CAAC,SAAS,mBAAmB;YAGjD,IAAM,OAAO,GAAG,CAAC;;gBACb,IAAM,eAAe,GAAG,qDAAmD,SAAW,CAAC;gBAEvF,OAAO,CACH,CAAC,CAAC,QAAQ;oBACN,CAAC,CAAC,eAAe;oBACjB,CAAC,CAAC,MAAA,MAAA,MAAA,GAAG;yBACE,KAAK,CAAC,QAAQ,CAAC;yBACf,IAAI,0CAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,0CAC5B,KAAK,CAAC,GAAG,EACV,OAAO,GACP,IAAI,CAAC,GAAG,CAAC,mCAAI,eAAe,CAAC,GAAG,WAAW,CACzD,CAAC;YACN,CAAC,CAAC,EAAE,CAAC;YAEL,IAAM,UAAU,GAAM,SAAS,oBAAiB,CAAC;YAEjD,IAAM,WAAW,GAAG;gBAChB,yBAAuB;gBACvB,sDAAoD;gBACpD,2DAAwD;gBACxD,sGAAmG;gBACnG,sCAAqC;gBACrC,gBAAa,OAAO,eAAY;gBAChC,mBAAgB,UAAU,kBAAe;gBACzC,gBAAa,OAAO,eAAY;gBAChC,aAAU,UAAU,YAAS;gBAC7B,mBAAkB;gBAClB,YAAY;aACf,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,OAAO,EAAE,WAAW,aAAA,EAAE,CAAC;QAC3B,CAAC,CAAC,EAAE,YAnCe,CAmCd;QAEL,EAAE,CAAC,aAAa,CAAC,IAAA,WAAQ,EAAC,4BAA4B,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;KACzG;IAED;QACI,IAAM,qBAAqB,GAAG,IAAA,WAAQ,EAAC,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC;QAErI,IAAI;YACA,EAAE,CAAC,SAAS,CAAC,IAAA,cAAW,EAAC,qBAAqB,CAAC,CAAC,CAAC;SACpD;QAAC,WAAM,GAAE;QAEV,EAAE,CAAC,aAAa,CACZ,qBAAqB,EACrB,MAAM,CAAC,IAAI,CACP,IAAI,CAAC,SAAS,CACV;YACI,QAAQ,EAAE;gBACN;oBACI,MAAM,EAAE,SAAS;oBACjB,OAAO,iBAAG,OAAO,UAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAC;iBAClE;aACJ;SACJ,EACD,IAAI,EACJ,CAAC,CACJ,EACD,MAAM,CACT,CACJ,CAAC;KACL;IAED,OAAO;QACH,aAAa,EAAE,IAAA,WAAQ,EAAC,4BAA4B,EAAE,QAAQ,EAAK,SAAS,SAAI,OAAO,SAAM,CAAC;KACjG,CAAC;AACN,CAAC;AAlFD,wDAkFC"}
|
@@ -2,9 +2,12 @@ export declare function generateKeycloakThemeResources(params: {
|
|
2
2
|
themeName: string;
|
3
3
|
reactAppBuildDirPath: string;
|
4
4
|
keycloakThemeBuildingDirPath: string;
|
5
|
+
keycloakThemeEmailDirPath: string;
|
5
6
|
urlPathname: string;
|
6
7
|
urlOrigin: undefined | string;
|
7
8
|
extraPagesId: string[];
|
8
9
|
extraThemeProperties: string[];
|
9
10
|
keycloakVersion: string;
|
10
|
-
}):
|
11
|
+
}): {
|
12
|
+
doBundleEmailTemplate: boolean;
|
13
|
+
};
|
@@ -66,7 +66,7 @@ var child_process = __importStar(require("child_process"));
|
|
66
66
|
var urlResourcesPath_1 = require("../../lib/getKcContext/kcContextMocks/urlResourcesPath");
|
67
67
|
var isInside_1 = require("../tools/isInside");
|
68
68
|
function generateKeycloakThemeResources(params) {
|
69
|
-
var themeName = params.themeName, reactAppBuildDirPath = params.reactAppBuildDirPath, keycloakThemeBuildingDirPath = params.keycloakThemeBuildingDirPath, urlPathname = params.urlPathname, urlOrigin = params.urlOrigin, extraPagesId = params.extraPagesId, extraThemeProperties = params.extraThemeProperties, keycloakVersion = params.keycloakVersion;
|
69
|
+
var themeName = params.themeName, reactAppBuildDirPath = params.reactAppBuildDirPath, keycloakThemeBuildingDirPath = params.keycloakThemeBuildingDirPath, keycloakThemeEmailDirPath = params.keycloakThemeEmailDirPath, urlPathname = params.urlPathname, urlOrigin = params.urlOrigin, extraPagesId = params.extraPagesId, extraThemeProperties = params.extraThemeProperties, keycloakVersion = params.keycloakVersion;
|
70
70
|
var themeDirPath = (0, path_1.join)(keycloakThemeBuildingDirPath, "src", "main", "resources", "theme", themeName, "login");
|
71
71
|
var allCssGlobalsToDefine = {};
|
72
72
|
(0, transformCodebase_1.transformCodebase)({
|
@@ -103,6 +103,22 @@ function generateKeycloakThemeResources(params) {
|
|
103
103
|
return urlOrigin === undefined ? { "modifiedSourceCode": sourceCode } : undefined;
|
104
104
|
},
|
105
105
|
});
|
106
|
+
var doBundleEmailTemplate;
|
107
|
+
email: {
|
108
|
+
if (!fs.existsSync(keycloakThemeEmailDirPath)) {
|
109
|
+
console.log([
|
110
|
+
"Not bundling email template because " + (0, path_1.basename)(keycloakThemeEmailDirPath) + " does not exist",
|
111
|
+
"To start customizing the email template, run: \uD83D\uDC49 npx create-keycloak-theme-email-directory \uD83D\uDC48",
|
112
|
+
].join("\n"));
|
113
|
+
doBundleEmailTemplate = false;
|
114
|
+
break email;
|
115
|
+
}
|
116
|
+
doBundleEmailTemplate = true;
|
117
|
+
(0, transformCodebase_1.transformCodebase)({
|
118
|
+
"srcDirPath": keycloakThemeEmailDirPath,
|
119
|
+
"destDirPath": (0, path_1.join)(themeDirPath, "..", "email"),
|
120
|
+
});
|
121
|
+
}
|
106
122
|
var generateFtlFilesCode = (0, generateFtl_1.generateFtlFilesCodeFactory)({
|
107
123
|
"cssGlobalsToDefine": allCssGlobalsToDefine,
|
108
124
|
"indexHtmlCode": fs.readFileSync((0, path_1.join)(reactAppBuildDirPath, "index.html")).toString("utf8"),
|
@@ -140,6 +156,7 @@ function generateKeycloakThemeResources(params) {
|
|
140
156
|
child_process.execSync("rm -r " + tmpDirPath);
|
141
157
|
}
|
142
158
|
fs.writeFileSync((0, path_1.join)(themeDirPath, "theme.properties"), Buffer.from("parent=keycloak".concat("\n\n", extraThemeProperties.join("\n\n")), "utf8"));
|
159
|
+
return { doBundleEmailTemplate: doBundleEmailTemplate };
|
143
160
|
}
|
144
161
|
exports.generateKeycloakThemeResources = generateKeycloakThemeResources;
|
145
162
|
//# sourceMappingURL=generateKeycloakThemeResources.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generateKeycloakThemeResources.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gEAA+D;AAC/D,qCAAyB;AACzB,6BAAkE;AAClE,qEAAsG;AACtG,6CAAqE;AACrE,sFAAkF;AAClF,2DAA+C;AAC/C,2FAAuI;AACvI,8CAA6C;AAE7C,SAAgB,8BAA8B,CAAC,
|
1
|
+
{"version":3,"file":"generateKeycloakThemeResources.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gEAA+D;AAC/D,qCAAyB;AACzB,6BAAkE;AAClE,qEAAsG;AACtG,6CAAqE;AACrE,sFAAkF;AAClF,2DAA+C;AAC/C,2FAAuI;AACvI,8CAA6C;AAE7C,SAAgB,8BAA8B,CAAC,MAW9C;IAEO,IAAA,SAAS,GAST,MAAM,UATG,EACT,oBAAoB,GAQpB,MAAM,qBARc,EACpB,4BAA4B,GAO5B,MAAM,6BAPsB,EAC5B,yBAAyB,GAMzB,MAAM,0BANmB,EACzB,WAAW,GAKX,MAAM,YALK,EACX,SAAS,GAIT,MAAM,UAJG,EACT,YAAY,GAGZ,MAAM,aAHM,EACZ,oBAAoB,GAEpB,MAAM,qBAFc,EACpB,eAAe,GACf,MAAM,gBADS,CACR;IAEX,IAAM,YAAY,GAAG,IAAA,WAAQ,EAAC,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAErH,IAAI,qBAAqB,GAA2B,EAAE,CAAC;IAEvD,IAAA,qCAAiB,EAAC;QACd,aAAa,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAA,WAAQ,EAAC,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAoB;QAC5G,YAAY,EAAE,oBAAoB;QAClC,qBAAqB,EAAE,UAAC,EAAwB;gBAAtB,QAAQ,cAAA,EAAE,UAAU,gBAAA;YAC1C,6EAA6E;YAC7E,IACI,SAAS,KAAK,SAAS;gBACvB,IAAA,mBAAQ,EAAC;oBACL,SAAS,EAAE,IAAA,WAAQ,EAAC,oBAAoB,EAAE,4CAAyB,CAAC;oBACpE,QAAQ,UAAA;iBACX,CAAC,EACJ;gBACE,OAAO,SAAS,CAAC;aACpB;YAED,IAAI,SAAS,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAChD,IAAA,KAAuC,IAAA,iDAAuB,EAAC;oBACjE,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;iBACzC,CAAC,EAFM,kBAAkB,wBAAA,EAAE,YAAY,kBAEtC,CAAC;gBAEH,qBAAqB,yBACd,qBAAqB,GACrB,kBAAkB,CACxB,CAAC;gBAEF,OAAO;oBACH,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;iBAC1D,CAAC;aACL;YAED,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAClB,IAAA,WAAW,GAAK,IAAA,0DAAgC,EAAC;oBACrD,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACrC,SAAS,WAAA;iBACZ,CAAC,YAHiB,CAGhB;gBAEH,OAAO;oBACH,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;iBACzD,CAAC;aACL;YAED,OAAO,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACtF,CAAC;KACJ,CAAC,CAAC;IAEH,IAAI,qBAA8B,CAAC;IAEnC,KAAK,EAAE;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAE;YAC3C,OAAO,CAAC,GAAG,CACP;gBACI,yCAAuC,IAAA,eAAY,EAAC,yBAAyB,CAAC,oBAAiB;gBAC/F,mHAA+F;aAClG,CAAC,IAAI,CAAC,IAAI,CAAC,CACf,CAAC;YACF,qBAAqB,GAAG,KAAK,CAAC;YAC9B,MAAM,KAAK,CAAC;SACf;QAED,qBAAqB,GAAG,IAAI,CAAC;QAE7B,IAAA,qCAAiB,EAAC;YACd,YAAY,EAAE,yBAAyB;YACvC,aAAa,EAAE,IAAA,WAAQ,EAAC,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC;SACvD,CAAC,CAAC;KACN;IAEO,IAAA,oBAAoB,GAAK,IAAA,yCAA2B,EAAC;QACzD,oBAAoB,EAAE,qBAAqB;QAC3C,eAAe,EAAE,EAAE,CAAC,YAAY,CAAC,IAAA,WAAQ,EAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC/F,WAAW,aAAA;QACX,SAAS,WAAA;KACZ,CAAC,qBAL0B,CAKzB;IAEH,uCAAI,qBAAO,kBAAK,YAAY,UAAE,OAAO,CAAC,UAAA,MAAM;QAChC,IAAA,OAAO,GAAK,oBAAoB,CAAC,EAAE,MAAM,QAAA,EAAE,CAAC,QAArC,CAAsC;QAErD,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAElD,EAAE,CAAC,aAAa,CAAC,IAAA,WAAQ,EAAC,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;IAEH;QACI,IAAM,UAAU,GAAG,IAAA,WAAQ,EAAC,YAAY,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAEnE,IAAA,8DAA4B,EAAC;YACzB,eAAe,iBAAA;YACf,aAAa,EAAE,UAAU;SAC5B,CAAC,CAAC;QAEH,IAAM,qBAAqB,GAAG,IAAA,WAAQ,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAElE,IAAA,qCAAiB,EAAC;YACd,YAAY,EAAE,IAAA,WAAQ,EAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC;YACpE,aAAa,EAAE,qBAAqB;SACvC,CAAC,CAAC;QAEH,IAAM,qBAAqB,GAAG,IAAA,WAAQ,EAAC,oBAAoB,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAE7E,IAAA,qCAAiB,EAAC;YACd,YAAY,EAAE,IAAA,WAAQ,EAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC;YACrE,aAAa,EAAE,IAAA,WAAQ,EAAC,qBAAqB,EAAE,IAAA,eAAY,EAAC,sCAAmB,CAAC,CAAC;SACpF,CAAC,CAAC;QAEH,IAAA,qCAAiB,EAAC;YACd,YAAY,EAAE,qBAAqB;YACnC,aAAa,EAAE,IAAA,WAAQ,EAAC,qBAAqB,EAAE,gCAAa,CAAC;SAChE,CAAC,CAAC;QAEH,IAAM,oCAAoC,GAAG,IAAA,WAAQ,EAAC,qBAAqB,EAAE,4CAAyB,CAAC,CAAC;QAExG,EAAE,CAAC,aAAa,CACZ,IAAA,WAAQ,EAAC,oCAAoC,EAAE,YAAY,CAAC,EAC5D,MAAM,CAAC,IAAI,CACP,CAAC,+CAA+C,EAAE,wEAAwE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CACxI,CACJ,CAAC;QAEF,EAAE,CAAC,aAAa,CAAC,IAAA,WAAQ,EAAC,oCAAoC,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QAEzG,aAAa,CAAC,QAAQ,CAAC,WAAS,UAAY,CAAC,CAAC;KACjD;IAED,EAAE,CAAC,aAAa,CACZ,IAAA,WAAQ,EAAC,YAAY,EAAE,kBAAkB,CAAC,EAC1C,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAC3F,CAAC;IAEF,OAAO,EAAE,qBAAqB,uBAAA,EAAE,CAAC;AACrC,CAAC;AA7JD,wEA6JC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,93 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
5
|
+
}) : (function(o, m, k, k2) {
|
6
|
+
if (k2 === undefined) k2 = k;
|
7
|
+
o[k2] = m[k];
|
8
|
+
}));
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
11
|
+
}) : function(o, v) {
|
12
|
+
o["default"] = v;
|
13
|
+
});
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
15
|
+
if (mod && mod.__esModule) return mod;
|
16
|
+
var result = {};
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
18
|
+
__setModuleDefault(result, mod);
|
19
|
+
return result;
|
20
|
+
};
|
21
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
22
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
23
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
24
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
25
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
26
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
27
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
28
|
+
});
|
29
|
+
};
|
30
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
31
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
32
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
33
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
34
|
+
function step(op) {
|
35
|
+
if (f) throw new TypeError("Generator is already executing.");
|
36
|
+
while (_) try {
|
37
|
+
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;
|
38
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
39
|
+
switch (op[0]) {
|
40
|
+
case 0: case 1: t = op; break;
|
41
|
+
case 4: _.label++; return { value: op[1], done: false };
|
42
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
43
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
44
|
+
default:
|
45
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
46
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
47
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
48
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
49
|
+
if (t[2]) _.ops.pop();
|
50
|
+
_.trys.pop(); continue;
|
51
|
+
}
|
52
|
+
op = body.call(thisArg, _);
|
53
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
54
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
55
|
+
}
|
56
|
+
};
|
57
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
58
|
+
var download_builtin_keycloak_theme_1 = require("./download-builtin-keycloak-theme");
|
59
|
+
var build_keycloak_theme_1 = require("./build-keycloak-theme");
|
60
|
+
var path_1 = require("path");
|
61
|
+
var transformCodebase_1 = require("./tools/transformCodebase");
|
62
|
+
var promptKeycloakVersion_1 = require("./promptKeycloakVersion");
|
63
|
+
var fs = __importStar(require("fs"));
|
64
|
+
if (require.main === module) {
|
65
|
+
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
66
|
+
var keycloakVersion, builtinKeycloakThemeTmpDirPath;
|
67
|
+
return __generator(this, function (_a) {
|
68
|
+
switch (_a.label) {
|
69
|
+
case 0:
|
70
|
+
if (fs.existsSync(build_keycloak_theme_1.keycloakThemeEmailDirPath)) {
|
71
|
+
console.log("There is already a ./" + (0, path_1.basename)(build_keycloak_theme_1.keycloakThemeEmailDirPath) + " directory in your project. Aborting.");
|
72
|
+
process.exit(-1);
|
73
|
+
}
|
74
|
+
return [4 /*yield*/, (0, promptKeycloakVersion_1.promptKeycloakVersion)()];
|
75
|
+
case 1:
|
76
|
+
keycloakVersion = (_a.sent()).keycloakVersion;
|
77
|
+
builtinKeycloakThemeTmpDirPath = (0, path_1.join)(build_keycloak_theme_1.keycloakThemeEmailDirPath, "..", "tmp_xIdP3_builtin_keycloak_theme");
|
78
|
+
(0, download_builtin_keycloak_theme_1.downloadBuiltinKeycloakTheme)({
|
79
|
+
keycloakVersion: keycloakVersion,
|
80
|
+
"destDirPath": builtinKeycloakThemeTmpDirPath,
|
81
|
+
});
|
82
|
+
(0, transformCodebase_1.transformCodebase)({
|
83
|
+
"srcDirPath": (0, path_1.join)(builtinKeycloakThemeTmpDirPath, "base", "email"),
|
84
|
+
"destDirPath": build_keycloak_theme_1.keycloakThemeEmailDirPath,
|
85
|
+
});
|
86
|
+
console.log("./" + (0, path_1.basename)(build_keycloak_theme_1.keycloakThemeEmailDirPath) + " ready to be customized");
|
87
|
+
fs.rmSync(builtinKeycloakThemeTmpDirPath, { "recursive": true, "force": true });
|
88
|
+
return [2 /*return*/];
|
89
|
+
}
|
90
|
+
});
|
91
|
+
}); })();
|
92
|
+
}
|
93
|
+
//# sourceMappingURL=create-keycloak-theme-email-directory.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"create-keycloak-theme-email-directory.js","sourceRoot":"","sources":["../src/bin/create-keycloak-theme-email-directory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qFAAiF;AACjF,+DAAmE;AACnE,6BAAkE;AAClE,+DAA8D;AAC9D,iEAAgE;AAChE,qCAAyB;AAEzB,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;IACzB,CAAC;;;;;oBACG,IAAI,EAAE,CAAC,UAAU,CAAC,gDAAyB,CAAC,EAAE;wBAC1C,OAAO,CAAC,GAAG,CAAC,0BAAwB,IAAA,eAAY,EAAC,gDAAyB,CAAC,0CAAuC,CAAC,CAAC;wBAEpH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;qBACpB;oBAE2B,qBAAM,IAAA,6CAAqB,GAAE,EAAA;;oBAAjD,eAAe,GAAK,CAAA,SAA6B,CAAA,gBAAlC;oBAEjB,8BAA8B,GAAG,IAAA,WAAQ,EAAC,gDAAyB,EAAE,IAAI,EAAE,kCAAkC,CAAC,CAAC;oBAErH,IAAA,8DAA4B,EAAC;wBACzB,eAAe,iBAAA;wBACf,aAAa,EAAE,8BAA8B;qBAChD,CAAC,CAAC;oBAEH,IAAA,qCAAiB,EAAC;wBACd,YAAY,EAAE,IAAA,WAAQ,EAAC,8BAA8B,EAAE,MAAM,EAAE,OAAO,CAAC;wBACvE,aAAa,EAAE,gDAAyB;qBAC3C,CAAC,CAAC;oBAEH,OAAO,CAAC,GAAG,CAAC,OAAK,IAAA,eAAY,EAAC,gDAAyB,CAAC,4BAAyB,CAAC,CAAC;oBAEnF,EAAE,CAAC,MAAM,CAAC,8BAA8B,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;;;;SACnF,CAAC,EAAE,CAAC;CACR"}
|
@@ -1,5 +1,41 @@
|
|
1
1
|
#!/usr/bin/env node
|
2
2
|
"use strict";
|
3
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
4
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
5
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
6
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
7
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
8
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
9
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
10
|
+
});
|
11
|
+
};
|
12
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
13
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
14
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
15
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
16
|
+
function step(op) {
|
17
|
+
if (f) throw new TypeError("Generator is already executing.");
|
18
|
+
while (_) try {
|
19
|
+
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;
|
20
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
21
|
+
switch (op[0]) {
|
22
|
+
case 0: case 1: t = op; break;
|
23
|
+
case 4: _.label++; return { value: op[1], done: false };
|
24
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
25
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
26
|
+
default:
|
27
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
28
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
29
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
30
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
31
|
+
if (t[2]) _.ops.pop();
|
32
|
+
_.trys.pop(); continue;
|
33
|
+
}
|
34
|
+
op = body.call(thisArg, _);
|
35
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
36
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
37
|
+
}
|
38
|
+
};
|
3
39
|
var __values = (this && this.__values) || function(o) {
|
4
40
|
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
5
41
|
if (m) return m.call(o);
|
@@ -16,6 +52,7 @@ exports.downloadBuiltinKeycloakTheme = void 0;
|
|
16
52
|
var build_keycloak_theme_1 = require("./build-keycloak-theme");
|
17
53
|
var path_1 = require("path");
|
18
54
|
var downloadAndUnzip_1 = require("./tools/downloadAndUnzip");
|
55
|
+
var promptKeycloakVersion_1 = require("./promptKeycloakVersion");
|
19
56
|
function downloadBuiltinKeycloakTheme(params) {
|
20
57
|
var e_1, _a;
|
21
58
|
var keycloakVersion = params.keycloakVersion, destDirPath = params.destDirPath;
|
@@ -39,18 +76,22 @@ function downloadBuiltinKeycloakTheme(params) {
|
|
39
76
|
}
|
40
77
|
exports.downloadBuiltinKeycloakTheme = downloadBuiltinKeycloakTheme;
|
41
78
|
if (require.main === module) {
|
42
|
-
|
43
|
-
var keycloakVersion
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
79
|
+
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
80
|
+
var keycloakVersion, destDirPath;
|
81
|
+
return __generator(this, function (_a) {
|
82
|
+
switch (_a.label) {
|
83
|
+
case 0: return [4 /*yield*/, (0, promptKeycloakVersion_1.promptKeycloakVersion)()];
|
84
|
+
case 1:
|
85
|
+
keycloakVersion = (_a.sent()).keycloakVersion;
|
86
|
+
destDirPath = (0, path_1.join)(build_keycloak_theme_1.keycloakThemeBuildingDirPath, "src", "main", "resources", "theme");
|
87
|
+
console.log("Downloading builtins theme of Keycloak " + keycloakVersion + " here " + destDirPath);
|
88
|
+
downloadBuiltinKeycloakTheme({
|
89
|
+
keycloakVersion: keycloakVersion,
|
90
|
+
destDirPath: destDirPath,
|
91
|
+
});
|
92
|
+
return [2 /*return*/];
|
93
|
+
}
|
94
|
+
});
|
95
|
+
}); })();
|
55
96
|
}
|
56
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":"
|
1
|
+
{"version":3,"file":"download-builtin-keycloak-theme.js","sourceRoot":"","sources":["../src/bin/download-builtin-keycloak-theme.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,+DAAsE;AACtE,6BAAwC;AACxC,6DAA4D;AAC5D,iEAAgE;AAEhE,SAAgB,4BAA4B,CAAC,MAAwD;;IACzF,IAAA,eAAe,GAAkB,MAAM,gBAAxB,EAAE,WAAW,GAAK,MAAM,YAAX,CAAY;;QAEhD,KAAkB,IAAA,KAAA,SAAA,CAAC,EAAE,EAAE,YAAY,CAAC,CAAA,gBAAA,4BAAE;YAAjC,IAAM,GAAG,WAAA;YACV,IAAA,mCAAgB,EAAC;gBACb,aAAa,EAAE,WAAW;gBAC1B,KAAK,EAAE,4DAA0D,eAAe,SAAM;gBACtF,6BAA6B,EAAE,cAAY,eAAe,kCAA6B,GAAG,WAAQ;aACrG,CAAC,CAAC;SACN;;;;;;;;;AACL,CAAC;AAVD,oEAUC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;IACzB,CAAC;;;;wBAC+B,qBAAM,IAAA,6CAAqB,GAAE,EAAA;;oBAAjD,eAAe,GAAK,CAAA,SAA6B,CAAA,gBAAlC;oBAEjB,WAAW,GAAG,IAAA,WAAQ,EAAC,mDAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;oBAEhG,OAAO,CAAC,GAAG,CAAC,4CAA0C,eAAe,cAAS,WAAa,CAAC,CAAC;oBAE7F,4BAA4B,CAAC;wBACzB,eAAe,iBAAA;wBACf,WAAW,aAAA;qBACd,CAAC,CAAC;;;;SACN,CAAC,EAAE,CAAC;CACR"}
|