keycloakify 4.7.6 → 4.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +45 -11
- package/bin/build-keycloak-theme/build-keycloak-theme.d.ts +1 -0
- package/bin/build-keycloak-theme/build-keycloak-theme.js +13 -8
- 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 +2 -0
- package/bin/create-keycloak-theme-email-directory.js +94 -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 +13 -6
- 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 +36 -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,20 @@
|
|
1
|
+
### **4.8.2** (2022-04-20)
|
2
|
+
|
3
|
+
- Tell pepoles they can test with different keycloak version
|
4
|
+
|
5
|
+
### **4.8.1** (2022-04-20)
|
6
|
+
|
7
|
+
- Add missing shebang
|
8
|
+
- Add video demo for npx download-builtin-keycloak-theme
|
9
|
+
|
10
|
+
## **4.8.0** (2022-04-20)
|
11
|
+
|
12
|
+
- Document email template customization feature #9
|
13
|
+
- Add mention of download-builtin-keycloak-theme
|
14
|
+
- Let the choice of kc version be auto in GH Action
|
15
|
+
- Only test on node v15 and v14 (bellow is no longer supported (rmSync)
|
16
|
+
- Feature email customization #9
|
17
|
+
|
1
18
|
### **4.7.6** (2022-04-12)
|
2
19
|
|
3
20
|
- Fix bugs with language switch #85
|
package/README.md
CHANGED
@@ -25,7 +25,7 @@
|
|
25
25
|
</a>
|
26
26
|
</p>
|
27
27
|
|
28
|
-
> New with v4.
|
28
|
+
> New with v4.8.0: [Email template customization.](#email-template-customization)
|
29
29
|
|
30
30
|
<p align="center">
|
31
31
|
<i>Ultimately this build tool generates a Keycloak theme</i>
|
@@ -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,16 @@ 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.8.0](#v480)
|
93
|
+
- [v4.7.4](#v474)
|
94
|
+
- [v4.7.2](#v472)
|
95
|
+
- [v4.7.0](#v470)
|
96
|
+
- [v4.6.0](#v460)
|
97
|
+
- [v4.5.3](#v453)
|
98
|
+
- [v4.3.0](#v430)
|
90
99
|
- [v4](#v4)
|
91
100
|
- [v3](#v3)
|
92
101
|
- [v2.5](#v25)
|
@@ -94,7 +103,7 @@ If you already have a Keycloak custom theme, it can be easily ported to Keycloak
|
|
94
103
|
|
95
104
|
# Requirements
|
96
105
|
|
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
|
106
|
+
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
107
|
|
99
108
|
Tested with the following Keycloak versions:
|
100
109
|
|
@@ -102,6 +111,7 @@ Tested with the following Keycloak versions:
|
|
102
111
|
- [12.0.4](https://hub.docker.com/layers/jboss/keycloak/12.0.4/images/sha256-67e0c88e69bd0c7aef972c40bdeb558a974013a28b3668ca790ed63a04d70584?context=explore)
|
103
112
|
- [15.0.2](https://hub.docker.com/layers/jboss/keycloak/15.0.2/images/sha256-d8ed1ee5df42a178c341f924377da75db49eab08ea9f058ff39a8ed7ee05ec93?context=explore)
|
104
113
|
- [16.1.0](https://hub.docker.com/layers/jboss/keycloak/16.1.0/images/sha256-6ecb9492224c6cfbb55d43f64a5ab634145d8cc1eba14eae8c37e3afde89546e?context=explore)
|
114
|
+
- 17.0.1
|
105
115
|
|
106
116
|
This tool will be maintained to stay compatible with Keycloak v11 and up, however, the default pages you will get
|
107
117
|
(before you customize it) will always be the ones of Keycloak v11.
|
@@ -111,20 +121,20 @@ It assumes there is a `build/` directory at the root of your react project direc
|
|
111
121
|
and a `build/static/` directory generated by webpack.
|
112
122
|
For more information see [this issue](https://github.com/InseeFrLab/keycloakify/issues/5#issuecomment-832296432)
|
113
123
|
|
114
|
-
**All this is defaults with [`create-react-app`](https://create-react-app.dev)** (tested with 4.0.3)
|
124
|
+
**All this is defaults with [`create-react-app`](https://create-react-app.dev)** (tested with 5.0.0, 4.0.3)
|
115
125
|
|
116
126
|
- `mvn` ([Maven](https://maven.apache.org/)), `rm`, `mkdir`, `curl`, `unzip` are assumed to be available.
|
117
127
|
- `docker` must be up and running when running `start_keycloak_testing_container.sh` (Instructions provided after running `yarn keycloak`).
|
118
128
|
|
119
129
|
## My framework doesn’t seem to be supported, what can I do?
|
120
130
|
|
121
|
-
Currently Keycloakify is only compatible with
|
131
|
+
Currently Keycloakify is only compatible with SPA React apps.
|
122
132
|
It doesn’t mean that you can't use Keycloakify if you are using Next.js, Express or any other
|
123
|
-
framework that involves
|
133
|
+
framework that involves a server but your Keycloak theme will need to be a standalone project.
|
124
134
|
Find specific instructions about how to get started [**here**](https://github.com/garronej/keycloakify-demo-app#keycloak-theme-only).
|
125
135
|
|
126
136
|
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.
|
137
|
+
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
138
|
|
129
139
|
# How to use
|
130
140
|
|
@@ -301,6 +311,19 @@ performance boost if you jump through those hoops:
|
|
301
311
|
|
302
312
|
Checkout a complete setup [here](https://github.com/garronej/keycloakify-demo-app#about-keycloakify)
|
303
313
|
|
314
|
+
# Email template customization.
|
315
|
+
|
316
|
+
_Introduced in [v4.8.0](https://github.com/InseeFrLab/keycloakify/releases/tag/v4.8.0)_
|
317
|
+
|
318
|
+
It is now possible to customize the emails sent to your users to confirm their email address ect.
|
319
|
+
Just run `npx create-keycloak-theme-email-directory`, it will create a `keycloak_theme_email` directory
|
320
|
+
at the root of your project.
|
321
|
+
This directory should be tracked by Git (`yarn add -A`)
|
322
|
+
You can start hacking the default template.
|
323
|
+
When `npx build-keycloak-theme` (`yarn keycloak`) is run. If the directory `keycloak_theme_email` exists
|
324
|
+
at the root of your project, it will be bundled into your `.jar` file and you will be able to select
|
325
|
+
it [in the Keycloak administration pages](https://user-images.githubusercontent.com/6702424/164299589-75f8008b-b24e-4836-ad6b-72149bb55621.png).
|
326
|
+
|
304
327
|
# User profile and frontend form validation
|
305
328
|
|
306
329
|
<p align="center">
|
@@ -356,7 +379,7 @@ the building and publishing of the theme (the .jar file).
|
|
356
379
|
|
357
380
|
## `process.env.PUBLIC_URL` not supported.
|
358
381
|
|
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).
|
382
|
+
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
383
|
(This isn't recommended anyway).
|
361
384
|
|
362
385
|
## `@font-face` importing fonts from the `src/` dir
|
@@ -466,6 +489,13 @@ You can reproduce [this approach](https://github.com/garronej/keycloakify-demo-a
|
|
466
489
|
( don't forget to [evaluate the code](https://github.com/garronej/keycloakify-demo-app/blob/0a6d349dba89a5702f98ba48bca6c76ac7265e1f/src/index.tsx#L15) ).
|
467
490
|
This approach is a bit hacky as it doesn't provide type safety but it works.
|
468
491
|
|
492
|
+
# Downloading builtin theme resource files
|
493
|
+
|
494
|
+
Running `npx download-builtin-keycloak-theme` will let you download the themes that comes by default with
|
495
|
+
a Keycloak version of your choosing.
|
496
|
+
|
497
|
+
[Video demo](https://user-images.githubusercontent.com/6702424/164304458-934b0e1d-9de7-4bb4-8a1c-e06a70b1636a.mov)
|
498
|
+
|
469
499
|
# Email domain whitelist
|
470
500
|
|
471
501
|
NOTE: This have been kind of deprecated by [user attribute](#user-profile-and-frontend-form-validation) you could
|
@@ -476,22 +506,26 @@ and `kcRegisterContext["authorizedMailDomains"]` to validate on.
|
|
476
506
|
|
477
507
|
# Changelog highlights
|
478
508
|
|
479
|
-
|
509
|
+
## v4.8.0
|
510
|
+
|
511
|
+
[Email template customization.](#email-template-customization)
|
512
|
+
|
513
|
+
## v4.7.4
|
480
514
|
|
481
515
|
**M1 Mac** support (for testing locally with a dockerized Keycloak).
|
482
516
|
|
483
|
-
|
517
|
+
## v4.7.2
|
484
518
|
|
485
519
|
> WARNING: This is broken.
|
486
520
|
> Testing with local Keycloak container working with M1 Mac. Thanks to [@eduardosanzb](https://github.com/InseeFrLab/keycloakify/issues/43#issuecomment-975699658).
|
487
521
|
> Be aware: When running M1s you are testing with Keycloak v15 else the local container spun will be a Keycloak v16.1.0.
|
488
522
|
|
489
|
-
|
523
|
+
## v4.7.0
|
490
524
|
|
491
525
|
Register with user profile enabled: Out of the box `options` validator support.
|
492
526
|
[Example](https://user-images.githubusercontent.com/6702424/158911163-81e6bbe8-feb0-4dc8-abff-de199d7a678e.mov)
|
493
527
|
|
494
|
-
|
528
|
+
## v4.6.0
|
495
529
|
|
496
530
|
`tss-react` and `powerhooks` are no longer peer dependencies of `keycloakify`.
|
497
531
|
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,21 +84,23 @@ 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,
|
95
97
|
});
|
98
|
+
//We want, however to test in a container running the latest Keycloak version
|
99
|
+
var containerKeycloakVersion = "18.0.0";
|
96
100
|
(0, generateStartKeycloakTestingContainer_1.generateStartKeycloakTestingContainer)({
|
97
101
|
keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath,
|
98
102
|
themeName: themeName,
|
99
|
-
|
100
|
-
"keycloakVersion": "17.0.1",
|
103
|
+
"keycloakVersion": containerKeycloakVersion,
|
101
104
|
});
|
102
105
|
console.log([
|
103
106
|
"",
|
@@ -132,10 +135,12 @@ function main() {
|
|
132
135
|
" value: -Dkeycloak.profile=preview",
|
133
136
|
"",
|
134
137
|
"",
|
135
|
-
"To test your theme locally
|
138
|
+
"To test your theme locally you can spin up a Keycloak " + containerKeycloakVersion + " container image with the theme pre loaded by running:",
|
136
139
|
"",
|
137
140
|
"\uD83D\uDC49 $ ./" + (0, path_1.relative)(reactProjectDirPath, (0, path_1.join)(exports.keycloakThemeBuildingDirPath, generateStartKeycloakTestingContainer_1.generateStartKeycloakTestingContainer.basename)) + " \uD83D\uDC48",
|
138
141
|
"",
|
142
|
+
"Test with different Keycloak versions by editing the .sh file. see available versions here: https://quay.io/repository/keycloak/keycloak?tab=tags",
|
143
|
+
"",
|
139
144
|
"Once your container is up and running: ",
|
140
145
|
"- Log into the admin console 👉 http://localhost:8080/admin username: admin, password: admin 👈",
|
141
146
|
'- Create a realm named "myrealm"',
|
@@ -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,94 @@
|
|
1
|
+
#!/usr/bin/env node
|
2
|
+
"use strict";
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
4
|
+
if (k2 === undefined) k2 = k;
|
5
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
6
|
+
}) : (function(o, m, k, k2) {
|
7
|
+
if (k2 === undefined) k2 = k;
|
8
|
+
o[k2] = m[k];
|
9
|
+
}));
|
10
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
11
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
12
|
+
}) : function(o, v) {
|
13
|
+
o["default"] = v;
|
14
|
+
});
|
15
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
16
|
+
if (mod && mod.__esModule) return mod;
|
17
|
+
var result = {};
|
18
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
19
|
+
__setModuleDefault(result, mod);
|
20
|
+
return result;
|
21
|
+
};
|
22
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
23
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
24
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
25
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
26
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
27
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
28
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
29
|
+
});
|
30
|
+
};
|
31
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
32
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
33
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
34
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
35
|
+
function step(op) {
|
36
|
+
if (f) throw new TypeError("Generator is already executing.");
|
37
|
+
while (_) try {
|
38
|
+
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;
|
39
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
40
|
+
switch (op[0]) {
|
41
|
+
case 0: case 1: t = op; break;
|
42
|
+
case 4: _.label++; return { value: op[1], done: false };
|
43
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
44
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
45
|
+
default:
|
46
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
47
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
48
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
49
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
50
|
+
if (t[2]) _.ops.pop();
|
51
|
+
_.trys.pop(); continue;
|
52
|
+
}
|
53
|
+
op = body.call(thisArg, _);
|
54
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
55
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
56
|
+
}
|
57
|
+
};
|
58
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
59
|
+
var download_builtin_keycloak_theme_1 = require("./download-builtin-keycloak-theme");
|
60
|
+
var build_keycloak_theme_1 = require("./build-keycloak-theme");
|
61
|
+
var path_1 = require("path");
|
62
|
+
var transformCodebase_1 = require("./tools/transformCodebase");
|
63
|
+
var promptKeycloakVersion_1 = require("./promptKeycloakVersion");
|
64
|
+
var fs = __importStar(require("fs"));
|
65
|
+
if (require.main === module) {
|
66
|
+
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
67
|
+
var keycloakVersion, builtinKeycloakThemeTmpDirPath;
|
68
|
+
return __generator(this, function (_a) {
|
69
|
+
switch (_a.label) {
|
70
|
+
case 0:
|
71
|
+
if (fs.existsSync(build_keycloak_theme_1.keycloakThemeEmailDirPath)) {
|
72
|
+
console.log("There is already a ./" + (0, path_1.basename)(build_keycloak_theme_1.keycloakThemeEmailDirPath) + " directory in your project. Aborting.");
|
73
|
+
process.exit(-1);
|
74
|
+
}
|
75
|
+
return [4 /*yield*/, (0, promptKeycloakVersion_1.promptKeycloakVersion)()];
|
76
|
+
case 1:
|
77
|
+
keycloakVersion = (_a.sent()).keycloakVersion;
|
78
|
+
builtinKeycloakThemeTmpDirPath = (0, path_1.join)(build_keycloak_theme_1.keycloakThemeEmailDirPath, "..", "tmp_xIdP3_builtin_keycloak_theme");
|
79
|
+
(0, download_builtin_keycloak_theme_1.downloadBuiltinKeycloakTheme)({
|
80
|
+
keycloakVersion: keycloakVersion,
|
81
|
+
"destDirPath": builtinKeycloakThemeTmpDirPath,
|
82
|
+
});
|
83
|
+
(0, transformCodebase_1.transformCodebase)({
|
84
|
+
"srcDirPath": (0, path_1.join)(builtinKeycloakThemeTmpDirPath, "base", "email"),
|
85
|
+
"destDirPath": build_keycloak_theme_1.keycloakThemeEmailDirPath,
|
86
|
+
});
|
87
|
+
console.log("./" + (0, path_1.basename)(build_keycloak_theme_1.keycloakThemeEmailDirPath) + " ready to be customized");
|
88
|
+
fs.rmSync(builtinKeycloakThemeTmpDirPath, { "recursive": true, "force": true });
|
89
|
+
return [2 /*return*/];
|
90
|
+
}
|
91
|
+
});
|
92
|
+
}); })();
|
93
|
+
}
|
94
|
+
//# 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,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"}
|