Compare commits

..

1 Commits

Author SHA1 Message Date
3d0fde06d2 Enabling shorter import paths [automatic] 2021-02-21 23:23:02 +00:00
45 changed files with 126 additions and 391 deletions

View File

@ -1,28 +1,3 @@
### **0.0.13** (2021-02-23)
- bump version
### **0.0.12** (2021-02-23)
- update readme
### **0.0.11** (2021-02-23)
- Add documentation
### **0.0.10** (2021-02-23)
- Remove extra closing bracket
### **0.0.9** (2021-02-22)
- fix container startup script
- minor update
### **0.0.8** (2021-02-21)
- Include theme properties
### **0.0.7** (2021-02-21) ### **0.0.7** (2021-02-21)
- fix build - fix build

View File

@ -2,7 +2,7 @@
<img src="https://user-images.githubusercontent.com/6702424/80216211-00ef5280-863e-11ea-81de-59f3a3d4b8e4.png"> <img src="https://user-images.githubusercontent.com/6702424/80216211-00ef5280-863e-11ea-81de-59f3a3d4b8e4.png">
</p> </p>
<p align="center"> <p align="center">
<i>🔏 Keycloak theme generator for Reacts app💅</i> <i>Provides a way to customize Keycloak login and register pages with React</i>
<br> <br>
<br> <br>
<img src="https://github.com/garronej/keycloak-react-theming/workflows/ci/badge.svg?branch=develop"> <img src="https://github.com/garronej/keycloak-react-theming/workflows/ci/badge.svg?branch=develop">
@ -10,87 +10,31 @@
<img src="https://img.shields.io/npm/dw/keycloak-react-theming"> <img src="https://img.shields.io/npm/dw/keycloak-react-theming">
<img src="https://img.shields.io/npm/l/keycloak-react-theming"> <img src="https://img.shields.io/npm/l/keycloak-react-theming">
</p> </p>
<p align="center">
<a href="https://github.com/garronej/keycloak-react-theming">Home</a>
-
<a href="https://github.com/garronej/keycloak-react-theming">Documentation</a>
</p>
# MOTIVATION # REQUIREMENT
## For building the theme:
The problem: - `mvn` must be installed
![keycloak_before](https://user-images.githubusercontent.com/6702424/108838381-dbbbcf80-75d3-11eb-8ae8-db41563ef9db.gif) ## For development, (testing the theme on a docker container ect ):
When we redirected to Keycloak the user suffers from a harsh context switch. - `rm`
The language is set back to default and the theme is different. - `mkdir` )
- `wget`
- `unzip`
Keycloak does offer a way to customize theses pages but it requires a lot of raw HTML/CSS hacking Tested on MacOS
to reproduce the look and feel of a specific app. Not mentioning the maintenance cost of such an endeavour.
Wouldn't it be great if we could just design the login and register pages as if they where part of our app while # USAGE
still letting Keycloak handle the heavy lifting of actually authenticating the users?
Here is `yarn add keycloak-react-theming` for you 🍸 ## Build the theme:
`npx build-keycloak-theme`
![image](https://user-images.githubusercontent.com/6702424/108833938-c9d72e00-75cd-11eb-8263-4334ca79275c.png) ## (Optional/Debug) Download more themes:
![image](https://user-images.githubusercontent.com/6702424/108834054-f68b4580-75cd-11eb-9661-b1a43836c4b0.png)
![image](https://user-images.githubusercontent.com/6702424/108834220-32bea600-75ce-11eb-9e11-7661188beb7c.png)
# How to use `npx download-sample-keycloak-themes`
## Setting up the build tool
Add `keycloak-react-theming` to the dev dependencies of your project `npm install --save-dev keycloak-react-theming` or `yarn add --dev keycloak-react-theming`
then configure your `package.json` build's script to build the keycloak's theme by adding `&& build-keycloak-theme`.
Typically you will get:
`package.json`:
```json
"devDependencies": {
"keycloak-react-theming": "^0.0.10",
[...]
},
"scripts": {
"build": "react-scripts build && build-keycloak-theme",
[...]
},
```
Then build your app with `yarn run build` or `npm run build`, you will be provided with instructions
about how to load the theme into Keycloak.
## Developing your login and register pages in your React app
TODO
# How to implement context persistance
If you want dark mode preference, language and others users preferences your can do so
very easily by using [`powerhooks/useGlobalState`](https://github.com/garronej/powerhooks)
WARNING: `powerhooks` is still a work in progress.
# REQUIREMENTS
This tools assumes you are bundling your app with Webpack (tested with 4.44.2) .
It assumes there is a `build/` directory at the root of your react project directory containing a `index.html` file
and a `static/` directory generated by webpack.
**All this is defaults with [`create-react-app`](https://create-react-app.dev)** (tested with 4.0.3=)
- For building the theme: `mvn` (Maven) must be installed
- For development, (testing the theme in a local container ): `rm`, `mkdir`, `wget`, `unzip` are assumed to be available.
NOTE: This build tool has only be tested on MacOS.
# API Reference
## The build tool
Part of the lib that runs with node, at build time.
- `npx build-keycloak-theme`: Builds the theme, the CWD is assumed to be the root of your react project.
- `npx download-sample-keycloak-themes`: Downloads the keycloak default themes (for development purposes)
## The fronted lib ( imported into your react
Part of the lib that you import in your react project and runs on the browser.
**TODO**

View File

@ -1,4 +1,3 @@
export declare const containerLaunchScriptBasename = "start_keycloak_testing_container.sh";
/** Files for being able to run a hot reload keycloak container */ /** Files for being able to run a hot reload keycloak container */
export declare function generateDebugFiles(params: { export declare function generateDebugFiles(params: {
packageJsonName: string; packageJsonName: string;

View File

@ -19,10 +19,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
return result; return result;
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.generateDebugFiles = exports.containerLaunchScriptBasename = void 0; exports.generateDebugFiles = void 0;
var fs = __importStar(require("fs")); var fs = __importStar(require("fs"));
var path_1 = require("path"); var path_1 = require("path");
exports.containerLaunchScriptBasename = "start_keycloak_testing_container.sh";
/** Files for being able to run a hot reload keycloak container */ /** Files for being able to run a hot reload keycloak container */
function generateDebugFiles(params) { function generateDebugFiles(params) {
var packageJsonName = params.packageJsonName, keycloakThemeBuildingDirPath = params.keycloakThemeBuildingDirPath; var packageJsonName = params.packageJsonName, keycloakThemeBuildingDirPath = params.keycloakThemeBuildingDirPath;
@ -39,7 +38,7 @@ function generateDebugFiles(params) {
].join("\n"), "utf8")); ].join("\n"), "utf8"));
var dockerImage = packageJsonName + "/keycloak-hot-reload"; var dockerImage = packageJsonName + "/keycloak-hot-reload";
var containerName = "keycloak-testing-container"; var containerName = "keycloak-testing-container";
fs.writeFileSync(path_1.join(keycloakThemeBuildingDirPath, exports.containerLaunchScriptBasename), Buffer.from([ fs.writeFileSync(path_1.join(keycloakThemeBuildingDirPath, "start_keycloak_testing_container.sh"), Buffer.from([
"#!/bin/bash", "#!/bin/bash",
"", "",
"docker rm " + containerName + " || true", "docker rm " + containerName + " || true",
@ -51,7 +50,7 @@ function generateDebugFiles(params) {
"\t--name " + containerName + " \\", "\t--name " + containerName + " \\",
" -e KEYCLOAK_USER=admin \\", " -e KEYCLOAK_USER=admin \\",
" -e KEYCLOAK_PASSWORD=admin \\", " -e KEYCLOAK_PASSWORD=admin \\",
"\t-v " + path_1.join(keycloakThemeBuildingDirPath, "src", "main", "resources", "theme", packageJsonName) + ":/opt/jboss/keycloak/themes/" + packageJsonName + ":rw \\", "\t-v " + path_1.join(keycloakThemeBuildingDirPath, "src", "main", "resources", "theme", "onyxia") + ":/opt/jboss/keycloak/themes/onyxia:rw \\",
"\t-it " + dockerImage + ":latest", "\t-it " + dockerImage + ":latest",
"" ""
].join("\n"), "utf8"), { "mode": 493 }); ].join("\n"), "utf8"), { "mode": 493 });

View File

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bin/build-keycloak-theme/generateDebugFiles/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,qCAAyB;AACzB,6BAA0F;AAE7E,QAAA,6BAA6B,GAAG,qCAAqC,CAAC;AAEnF,kEAAkE;AAClE,SAAgB,kBAAkB,CAC9B,MAGC;IAGO,IAAA,eAAe,GAAmC,MAAM,gBAAzC,EAAE,4BAA4B,GAAK,MAAM,6BAAX,CAAY;IAEjE,EAAE,CAAC,aAAa,CACZ,WAAQ,CAAC,4BAA4B,EAAE,YAAY,CAAC,EACpD,MAAM,CAAC,IAAI,CACP;QACI,4BAA4B;QAC5B,EAAE;QACF,WAAW;QACX,EAAE;QACF,WAAW;QACX,EAAE;QACF,iEAAiE;QACjE,EAAE;QACF,wDAAwD;KAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,MAAM,CACT,CACJ,CAAC;IAEF,IAAM,WAAW,GAAM,eAAe,yBAAsB,CAAC;IAC7D,IAAM,aAAa,GAAG,4BAA4B,CAAC;IAEnD,EAAE,CAAC,aAAa,CACZ,WAAQ,CAAC,4BAA4B,EAAE,qCAA6B,CAAC,EACrE,MAAM,CAAC,IAAI,CACP;QACI,aAAa;QACb,EAAE;QACF,eAAa,aAAa,aAAU;QACpC,EAAE;QACF,uBAAqB,WAAa;QAClC,EAAE;QACF,eAAe;QACf,kBAAkB;QAClB,cAAW,aAAa,QAAK;QAC7B,4BAA4B;QAC5B,gCAAgC;QAChC,UAAO,WAAQ,CAAC,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,CAAC,oCACpE,eAAe,WAAQ;QACtD,WAAQ,WAAW,YAAS;QAC5B,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,MAAM,CACT,EACD,EAAE,MAAM,EAAE,GAAK,EAAE,CACpB,CAAC;IAEF,IAAM,oBAAoB,GAAG,WAAQ,CAAC,4BAA4B,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;IAE1G,IAAI;QAAE,EAAE,CAAC,SAAS,CAAC,cAAW,CAAC,oBAAoB,CAAC,CAAC,CAAC;KAAE;IAAC,WAAM,GAAG;IAElE,EAAE,CAAC,aAAa,CACZ,oBAAoB,EACpB,EAAE,CAAC,YAAY,CAAC,WAAQ,CAAC,SAAS,EAAE,eAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAC3E,CAAC;AAEN,CAAC;AAhED,gDAgEC"} {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bin/build-keycloak-theme/generateDebugFiles/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,qCAAyB;AACzB,6BAA0F;AAE1F,kEAAkE;AAClE,SAAgB,kBAAkB,CAC9B,MAGC;IAGO,IAAA,eAAe,GAAmC,MAAM,gBAAzC,EAAE,4BAA4B,GAAK,MAAM,6BAAX,CAAY;IAEjE,EAAE,CAAC,aAAa,CACZ,WAAQ,CAAC,4BAA4B,EAAE,YAAY,CAAC,EACpD,MAAM,CAAC,IAAI,CACP;QACI,4BAA4B;QAC5B,EAAE;QACF,WAAW;QACX,EAAE;QACF,WAAW;QACX,EAAE;QACF,iEAAiE;QACjE,EAAE;QACF,wDAAwD;KAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,MAAM,CACT,CACJ,CAAC;IAEF,IAAM,WAAW,GAAM,eAAe,yBAAsB,CAAC;IAC7D,IAAM,aAAa,GAAG,4BAA4B,CAAC;IAEnD,EAAE,CAAC,aAAa,CACZ,WAAQ,CAAC,4BAA4B,EAAE,qCAAqC,CAAC,EAC7E,MAAM,CAAC,IAAI,CACP;QACI,aAAa;QACb,EAAE;QACF,eAAa,aAAa,aAAU;QACpC,EAAE;QACF,uBAAqB,WAAa;QAClC,EAAE;QACF,eAAe;QACf,kBAAkB;QAClB,cAAW,aAAa,QAAK;QAC7B,4BAA4B;QAC5B,gCAAgC;QAChC,UAAO,WAAQ,CAAC,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,6CAA0C;QACtI,WAAQ,WAAW,YAAS;QAC5B,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,MAAM,CACT,EACD,EAAE,MAAM,EAAE,GAAK,EAAE,CACpB,CAAC;IAEF,IAAM,oBAAoB,GAAG,WAAQ,CAAC,4BAA4B,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;IAE1G,IAAI;QAAE,EAAE,CAAC,SAAS,CAAC,cAAW,CAAC,oBAAoB,CAAC,CAAC,CAAC;KAAE;IAAC,WAAM,GAAG;IAElE,EAAE,CAAC,aAAa,CACZ,oBAAoB,EACpB,EAAE,CAAC,YAAY,CAAC,WAAQ,CAAC,SAAS,EAAE,eAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAC3E,CAAC;AAEN,CAAC;AA/DD,gDA+DC"}

View File

@ -15,10 +15,6 @@ var __read = (this && this.__read) || function (o, n) {
} }
return ar; return ar;
}; };
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
var __importDefault = (this && this.__importDefault) || function (mod) { var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod }; return (mod && mod.__esModule) ? mod : { "default": mod };
}; };
@ -59,13 +55,12 @@ function generateFtlFilesCodeFactory(params) {
$(element).attr(attrName, "${url.resourcesPath}" + href); $(element).attr(attrName, "${url.resourcesPath}" + href);
}); });
}); });
$("head").prepend(__spread((Object.keys(cssGlobalsToDefine).length === 0 ? [] : [ $("head").prepend([
'', '',
'<style>', '<style>',
replaceImportFromStatic_1.generateCssCodeToDefineGlobals({ cssGlobalsToDefine: cssGlobalsToDefine }).cssCodeToPrependInHead, replaceImportFromStatic_1.generateCssCodeToDefineGlobals({ cssGlobalsToDefine: cssGlobalsToDefine }).cssCodeToPrependInHead,
'</style>', '</style>',
'' '',
]), [
'<script>', '<script>',
' Object.assign(', ' Object.assign(',
" window." + ftlValuesGlobalName + ",", " window." + ftlValuesGlobalName + ",",
@ -75,10 +70,10 @@ function generateFtlFilesCodeFactory(params) {
' "resourcesPath": "${url.resourcesPath}"', ' "resourcesPath": "${url.resourcesPath}"',
' }', ' }',
' }', ' }',
' );', ' });',
'</script>', '</script>',
'' ''
]).join("\n")); ].join("\n"));
var partiallyFixedIndexHtmlCode = $.html(); var partiallyFixedIndexHtmlCode = $.html();
function generateFtlFilesCode(params) { function generateFtlFilesCode(params) {
var pageBasename = params.pageBasename; var pageBasename = params.pageBasename;

View File

@ -1 +1 @@
{"version":3,"file":"generateFtl.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/generateFtl.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,oDAA8B;AAC9B,qEAGmC;AAEnC,SAAgB,2BAA2B,CACvC,MAIC;IAGO,IAAA,mBAAmB,GAAwC,MAAM,oBAA9C,EAAE,kBAAkB,GAAoB,MAAM,mBAA1B,EAAE,aAAa,GAAK,MAAM,cAAX,CAAY;IAE1E,IAAM,CAAC,GAAG,iBAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEtC,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC;QAAC,YAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,uBAAc;;QAAd,IAAA,KAAA,aAAc,EAAR,OAAO,QAAA,CAAC;QAE/B,IAAA,WAAW,GAAK,yDAA+B,CAAC;YACpD,mBAAmB,qBAAA;YACnB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAG;SAC/B,CAAC,YAHiB,CAGhB;QAEH,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEjC,CAAC,CAAC,CAAC;IAGF;QACG,CAAC,MAAM,EAAE,MAAM,CAAC;QAChB,CAAC,QAAQ,EAAE,KAAK,CAAC;KACV,CAAC,OAAO,CAAC,UAAC,EAAoB;YAApB,KAAA,aAAoB,EAAnB,QAAQ,QAAA,EAAE,QAAQ,QAAA;QACpC,OAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;YAAC,YAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,uBAAc;;YAAd,IAAA,KAAA,aAAc,EAAR,OAAO,QAAA,CAAC;YAE5B,IAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEvC,IAAI,EAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAC,GAAG,EAAC,EAAE;gBACxB,OAAO;aACV;YAED,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAAC,CAAC;QAE7D,CAAC,CAAC;IAVF,CAUE,CACL,CAAC;IAEF,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CACb,SACO,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,EAAE;QACF,SAAS;QACT,wDAA8B,CAC1B,EAAE,kBAAkB,oBAAA,EAAE,CACzB,CAAC,sBAAsB;QACxB,UAAU;QACV,EAAE;KACL,CAAC;QAEF,UAAU;QACV,oBAAoB;QACpB,oBAAkB,mBAAmB,MAAG;QACxC,WAAW;QACX,sBAAsB;QACtB,sDAAsD;QACtD,yDAAyD;QACzD,eAAe;QACf,WAAW;QACX,QAAQ;QACR,WAAW;QACX,EAAE;OACJ,IAAI,CAAC,IAAI,CAAC,CACf,CAAC;IAGF,IAAM,2BAA2B,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7C,SAAS,oBAAoB,CACzB,MAEC;QAGO,IAAA,YAAY,GAAK,MAAM,aAAX,CAAY;QAEhC,IAAM,CAAC,GAAG,iBAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAEpD,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CACb;YACI,EAAE;YACF,UAAU;YACV,eAAa,mBAAmB,iCAAyB,YAAY,UAAM;YAC3E,WAAW;YACX,EAAE;SACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAEf,CAAC;QAEF,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IAEnC,CAAC;IAED,OAAO,EAAE,oBAAoB,sBAAA,EAAE,CAAC;AAGpC,CAAC;AAnGD,kEAmGC"} {"version":3,"file":"generateFtl.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/generateFtl.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAEA,oDAA8B;AAC9B,qEAGmC;AAEnC,SAAgB,2BAA2B,CACvC,MAIC;IAGO,IAAA,mBAAmB,GAAwC,MAAM,oBAA9C,EAAE,kBAAkB,GAAoB,MAAM,mBAA1B,EAAE,aAAa,GAAK,MAAM,cAAX,CAAY;IAE1E,IAAM,CAAC,GAAG,iBAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEtC,CAAC,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC;QAAC,YAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,uBAAc;;QAAd,IAAA,KAAA,aAAc,EAAR,OAAO,QAAA,CAAC;QAE/B,IAAA,WAAW,GAAK,yDAA+B,CAAC;YACpD,mBAAmB,qBAAA;YACnB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAG;SAC/B,CAAC,YAHiB,CAGhB;QAEH,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEjC,CAAC,CAAC,CAAC;IAGF;QACG,CAAC,MAAM,EAAE,MAAM,CAAC;QAChB,CAAC,QAAQ,EAAE,KAAK,CAAC;KACV,CAAC,OAAO,CAAC,UAAC,EAAoB;YAApB,KAAA,aAAoB,EAAnB,QAAQ,QAAA,EAAE,QAAQ,QAAA;QACpC,OAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;YAAC,YAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,uBAAc;;YAAd,IAAA,KAAA,aAAc,EAAR,OAAO,QAAA,CAAC;YAE5B,IAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEvC,IAAI,EAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAC,GAAG,EAAC,EAAE;gBACxB,OAAO;aACV;YAED,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAAC,CAAC;QAE7D,CAAC,CAAC;IAVF,CAUE,CACL,CAAC;IAEF,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CACb;QACI,EAAE;QACF,SAAS;QACT,wDAA8B,CAC1B,EAAE,kBAAkB,oBAAA,EAAE,CACzB,CAAC,sBAAsB;QACxB,UAAU;QACV,EAAE;QACF,UAAU;QACV,oBAAoB;QACpB,oBAAkB,mBAAmB,MAAG;QACxC,WAAW;QACX,sBAAsB;QACtB,sDAAsD;QACtD,yDAAyD;QACzD,eAAe;QACf,WAAW;QACX,SAAS;QACT,WAAW;QACX,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,CACf,CAAC;IAGF,IAAM,2BAA2B,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7C,SAAS,oBAAoB,CACzB,MAEC;QAGO,IAAA,YAAY,GAAK,MAAM,aAAX,CAAY;QAEhC,IAAM,CAAC,GAAG,iBAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAEpD,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CACb;YACI,EAAE;YACF,UAAU;YACV,eAAa,mBAAmB,iCAAyB,YAAY,UAAM;YAC3E,WAAW;YACX,EAAE;SACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAEf,CAAC;QAEF,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IAEnC,CAAC;IAED,OAAO,EAAE,oBAAoB,sBAAA,EAAE,CAAC;AAGpC,CAAC;AAhGD,kEAgGC"}

View File

@ -6,6 +6,4 @@ export declare type ParsedPackageJson = {
export declare function generateJavaStackFiles(params: { export declare function generateJavaStackFiles(params: {
parsedPackageJson: ParsedPackageJson; parsedPackageJson: ParsedPackageJson;
keycloakThemeBuildingDirPath: string; keycloakThemeBuildingDirPath: string;
}): { }): void;
jarFilePath: string;
};

View File

@ -66,7 +66,6 @@ function generateJavaStackFiles(params) {
] ]
}, null, 2), "utf8")); }, null, 2), "utf8"));
} }
return { "jarFilePath": path_1.join(keycloakThemeBuildingDirPath, "target", name + "-" + version + ".jar") };
} }
exports.generateJavaStackFiles = generateJavaStackFiles; exports.generateJavaStackFiles = generateJavaStackFiles;
//# sourceMappingURL=generateJavaStackFiles.js.map //# sourceMappingURL=generateJavaStackFiles.js.map

View File

@ -1 +1 @@
{"version":3,"file":"generateJavaStackFiles.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/generateJavaStackFiles.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,uCAA2B;AAC3B,qCAAyB;AACzB,6BAAgE;AAQhE,SAAgB,sBAAsB,CAClC,MAGC;IAIG,IAAA,KAEA,MAAM,kBAFwC,EAAzB,IAAI,UAAA,EAAE,OAAO,aAAA,EAAE,QAAQ,cAAA,EAC5C,4BAA4B,GAC5B,MAAM,6BADsB,CACrB;IAEX;QAEY,IAAA,WAAW,GAAK,CAAC,SAAS,mBAAmB;YAGjD,IAAM,OAAO,GAAG,CAAC;;gBAEb,IAAM,eAAe,GAAG,qDAAmD,IAAM,CAAC;gBAElF,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;oBACf,eAAe,CAAC,CAAC,aACjB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,0CAAE,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,oCAAK,eAAe,CAC9E,GAAG,WAAW,CAAC;YAEpB,CAAC,CAAC,EAAE,CAAC;YAEL,IAAM,UAAU,GAAM,IAAI,oBAAiB,CAAC;YAE5C,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;QAE3B,CAAC,CAAC,EAAE,YAhCe,CAgCd;QAEL,EAAE,CAAC,aAAa,CACZ,WAAQ,CAAC,4BAA4B,EAAE,SAAS,CAAC,EACjD,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CACnC,CAAC;KAEL;IAED;QAEI,IAAM,qBAAqB,GAAG,WAAQ,CAClC,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAC3C,WAAW,EAAE,UAAU,EAAE,sBAAsB,CAClD,CAAC;QAEF,IAAI;YAEA,EAAE,CAAC,SAAS,CAAC,cAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC;SAEpD;QAAC,WAAM,GAAG;QAEX,EAAE,CAAC,aAAa,CACZ,qBAAqB,EACrB,MAAM,CAAC,IAAI,CACP,IAAI,CAAC,SAAS,CAAC;YACX,QAAQ,EAAE;gBACN;oBACI,MAAM,EAAE,IAAI;oBACZ,OAAO,EAAE,CAAC,OAAO,CAAC;iBACrB;aACJ;SACJ,EAAE,IAAI,EAAE,CAAC,CAAC,EACX,MAAM,CACT,CACJ,CAAC;KAEL;IAED,OAAO,EAAE,aAAa,EAAE,WAAQ,CAAC,4BAA4B,EAAE,QAAQ,EAAK,IAAI,SAAI,OAAO,SAAM,CAAC,EAAE,CAAC;AAEzG,CAAC;AAvFD,wDAuFC"} {"version":3,"file":"generateJavaStackFiles.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/generateJavaStackFiles.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,uCAA2B;AAC3B,qCAAyB;AACzB,6BAAgE;AAQhE,SAAgB,sBAAsB,CAClC,MAGC;IAIG,IAAA,KAEA,MAAM,kBAFwC,EAAzB,IAAI,UAAA,EAAE,OAAO,aAAA,EAAE,QAAQ,cAAA,EAC5C,4BAA4B,GAC5B,MAAM,6BADsB,CACrB;IAEX;QAEY,IAAA,WAAW,GAAK,CAAC,SAAS,mBAAmB;YAGjD,IAAM,OAAO,GAAG,CAAC;;gBAEb,IAAM,eAAe,GAAG,qDAAmD,IAAM,CAAC;gBAElF,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;oBACf,eAAe,CAAC,CAAC,aACjB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,0CAAE,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC,GAAG,oCAAK,eAAe,CAC9E,GAAG,WAAW,CAAC;YAEpB,CAAC,CAAC,EAAE,CAAC;YAEL,IAAM,UAAU,GAAM,IAAI,oBAAiB,CAAC;YAE5C,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;QAE3B,CAAC,CAAC,EAAE,YAhCe,CAgCd;QAEL,EAAE,CAAC,aAAa,CACZ,WAAQ,CAAC,4BAA4B,EAAE,SAAS,CAAC,EACjD,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CACnC,CAAC;KAEL;IAED;QAEI,IAAM,qBAAqB,GAAG,WAAQ,CAClC,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAC3C,WAAW,EAAE,UAAU,EAAE,sBAAsB,CAClD,CAAC;QAEF,IAAI;YAEA,EAAE,CAAC,SAAS,CAAC,cAAW,CAAC,qBAAqB,CAAC,CAAC,CAAC;SAEpD;QAAC,WAAM,GAAG;QAEX,EAAE,CAAC,aAAa,CACZ,qBAAqB,EACrB,MAAM,CAAC,IAAI,CACP,IAAI,CAAC,SAAS,CAAC;YACX,QAAQ,EAAE;gBACN;oBACI,MAAM,EAAE,IAAI;oBACZ,OAAO,EAAE,CAAC,OAAO,CAAC;iBACrB;aACJ;SACJ,EAAE,IAAI,EAAE,CAAC,CAAC,EACX,MAAM,CACT,CACJ,CAAC;KAEL;AAEL,CAAC;AArFD,wDAqFC"}

View File

@ -1,4 +1,3 @@
export declare const ftlValuesGlobalName = "keycloakPagesContext";
export declare function generateKeycloakThemeResources(params: { export declare function generateKeycloakThemeResources(params: {
themeName: string; themeName: string;
reactAppBuildDirPath: string; reactAppBuildDirPath: string;

View File

@ -30,13 +30,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
return result; return result;
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.generateKeycloakThemeResources = exports.ftlValuesGlobalName = void 0; exports.generateKeycloakThemeResources = void 0;
var transformCodebase_1 = require("../../tools/transformCodebase"); var transformCodebase_1 = require("../../tools/transformCodebase");
var fs = __importStar(require("fs")); var fs = __importStar(require("fs"));
var path_1 = require("path"); var path_1 = require("path");
var replaceImportFromStatic_1 = require("./replaceImportFromStatic"); var replaceImportFromStatic_1 = require("./replaceImportFromStatic");
var generateFtl_1 = require("./generateFtl"); var generateFtl_1 = require("./generateFtl");
exports.ftlValuesGlobalName = "keycloakPagesContext"; var ftlValuesGlobalName = "keycloakFtlValues";
function generateKeycloakThemeResources(params) { function generateKeycloakThemeResources(params) {
var themeName = params.themeName, reactAppBuildDirPath = params.reactAppBuildDirPath, keycloakThemeBuildingDirPath = params.keycloakThemeBuildingDirPath; var themeName = params.themeName, reactAppBuildDirPath = params.reactAppBuildDirPath, keycloakThemeBuildingDirPath = params.keycloakThemeBuildingDirPath;
var themeDirPath = path_1.join(keycloakThemeBuildingDirPath, "src", "main", "resources", "theme", themeName, "login"); var themeDirPath = path_1.join(keycloakThemeBuildingDirPath, "src", "main", "resources", "theme", themeName, "login");
@ -54,7 +54,7 @@ function generateKeycloakThemeResources(params) {
if (/\.js?$/i.test(filePath)) { if (/\.js?$/i.test(filePath)) {
var fixedJsCode = replaceImportFromStatic_1.replaceImportFromStaticInJsCode({ var fixedJsCode = replaceImportFromStatic_1.replaceImportFromStaticInJsCode({
"jsCode": sourceCode.toString("utf8"), "jsCode": sourceCode.toString("utf8"),
ftlValuesGlobalName: exports.ftlValuesGlobalName ftlValuesGlobalName: ftlValuesGlobalName
}).fixedJsCode; }).fixedJsCode;
return { "modifiedSourceCode": Buffer.from(fixedJsCode, "utf8") }; return { "modifiedSourceCode": Buffer.from(fixedJsCode, "utf8") };
} }
@ -63,14 +63,13 @@ function generateKeycloakThemeResources(params) {
}); });
var generateFtlFilesCode = generateFtl_1.generateFtlFilesCodeFactory({ var generateFtlFilesCode = generateFtl_1.generateFtlFilesCodeFactory({
"cssGlobalsToDefine": allCssGlobalsToDefine, "cssGlobalsToDefine": allCssGlobalsToDefine,
ftlValuesGlobalName: exports.ftlValuesGlobalName, ftlValuesGlobalName: ftlValuesGlobalName,
"indexHtmlCode": fs.readFileSync(path_1.join(reactAppBuildDirPath, "index.html")).toString("utf8") "indexHtmlCode": fs.readFileSync(path_1.join(reactAppBuildDirPath, "index.html")).toString("utf8")
}).generateFtlFilesCode; }).generateFtlFilesCode;
["login.ftl", "register.ftl"].forEach(function (pageBasename) { ["login.ftl", "register.ftl"].forEach(function (pageBasename) {
var ftlCode = generateFtlFilesCode({ pageBasename: pageBasename }).ftlCode; var ftlCode = generateFtlFilesCode({ pageBasename: pageBasename }).ftlCode;
fs.writeFileSync(path_1.join(themeDirPath, pageBasename), Buffer.from(ftlCode, "utf8")); fs.writeFileSync(path_1.join(themeDirPath, pageBasename), Buffer.from(ftlCode, "utf8"));
}); });
fs.writeFileSync(path_1.join(themeDirPath, "theme.properties"), Buffer.from("parent=base\n", "utf8"));
} }
exports.generateKeycloakThemeResources = generateKeycloakThemeResources; exports.generateKeycloakThemeResources = generateKeycloakThemeResources;
//# sourceMappingURL=generateKeycloakThemeResources.js.map //# sourceMappingURL=generateKeycloakThemeResources.js.map

View File

@ -1 +1 @@
{"version":3,"file":"generateKeycloakThemeResources.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mEAAkE;AAClE,qCAAyB;AACzB,6BAAwC;AACxC,qEAGmC;AACnC,6CAA4D;AAE/C,QAAA,mBAAmB,GAAG,sBAAsB,CAAC;AAE1D,SAAgB,8BAA8B,CAC1C,MAIC;IAGO,IAAA,SAAS,GAAyD,MAAM,UAA/D,EAAE,oBAAoB,GAAmC,MAAM,qBAAzC,EAAE,4BAA4B,GAAK,MAAM,6BAAX,CAAY;IAEjF,IAAM,YAAY,GAAG,WAAQ,CAAC,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAErH,IAAI,qBAAqB,GAA2B,EAAE,CAAC;IAEvD,qCAAiB,CAAC;QACd,aAAa,EAAE,WAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;QAClD,YAAY,EAAE,oBAAoB;QAClC,2BAA2B,EAAE,UAAC,EAAwB;gBAAtB,QAAQ,cAAA,EAAE,UAAU,gBAAA;YAEhD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAErB,IAAA,KAAuC,0DAAgC,CACzE,EAAE,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAC7C,EAFO,kBAAkB,wBAAA,EAAE,YAAY,kBAEvC,CAAC;gBAEF,qBAAqB,yBACd,qBAAqB,GACrB,kBAAkB,CACxB,CAAC;gBAEF,OAAO,EAAE,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC;aAEtE;YAED,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAElB,IAAA,WAAW,GAAK,yDAA+B,CAAC;oBACpD,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACrC,mBAAmB,6BAAA;iBACtB,CAAC,YAHiB,CAGhB;gBAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC;aAErE;YAED,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC;QAEhD,CAAC;KACJ,CAAC,CAAC;IAEK,IAAA,oBAAoB,GAAK,yCAA2B,CAAC;QACzD,oBAAoB,EAAE,qBAAqB;QAC3C,mBAAmB,6BAAA;QACnB,eAAe,EAAE,EAAE,CAAC,YAAY,CAC5B,WAAQ,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAC/C,CAAC,QAAQ,CAAC,MAAM,CAAC;KACrB,CAAC,qBAN0B,CAMzB;IAEF,CAAC,WAAW,EAAE,cAAc,CAAW,CAAC,OAAO,CAAC,UAAA,YAAY;QAEjD,IAAA,OAAO,GAAK,oBAAoB,CAAC,EAAE,YAAY,cAAA,EAAE,CAAC,QAA3C,CAA4C;QAE3D,EAAE,CAAC,aAAa,CACZ,WAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,EACpC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAC/B,CAAA;IAEL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,aAAa,CACZ,WAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAC1C,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CACvC,CAAC;AAEN,CAAC;AA1ED,wEA0EC"} {"version":3,"file":"generateKeycloakThemeResources.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mEAAkE;AAClE,qCAAyB;AACzB,6BAAwC;AACxC,qEAGmC;AACnC,6CAA4D;AAE5D,IAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAEhD,SAAgB,8BAA8B,CAC1C,MAIC;IAGO,IAAA,SAAS,GAAyD,MAAM,UAA/D,EAAE,oBAAoB,GAAmC,MAAM,qBAAzC,EAAE,4BAA4B,GAAK,MAAM,6BAAX,CAAY;IAEjF,IAAM,YAAY,GAAG,WAAQ,CAAC,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAErH,IAAI,qBAAqB,GAA2B,EAAE,CAAC;IAEvD,qCAAiB,CAAC;QACd,aAAa,EAAE,WAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;QAClD,YAAY,EAAE,oBAAoB;QAClC,2BAA2B,EAAE,UAAC,EAAwB;gBAAtB,QAAQ,cAAA,EAAE,UAAU,gBAAA;YAEhD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAErB,IAAA,KAAuC,0DAAgC,CACzE,EAAE,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAC7C,EAFO,kBAAkB,wBAAA,EAAE,YAAY,kBAEvC,CAAC;gBAEF,qBAAqB,yBACd,qBAAqB,GACrB,kBAAkB,CACxB,CAAC;gBAEF,OAAO,EAAE,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC;aAEtE;YAED,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAElB,IAAA,WAAW,GAAK,yDAA+B,CAAC;oBACpD,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACrC,mBAAmB,qBAAA;iBACtB,CAAC,YAHiB,CAGhB;gBAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC;aAErE;YAED,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC;QAEhD,CAAC;KACJ,CAAC,CAAC;IAEK,IAAA,oBAAoB,GAAK,yCAA2B,CAAC;QACzD,oBAAoB,EAAE,qBAAqB;QAC3C,mBAAmB,qBAAA;QACnB,eAAe,EAAE,EAAE,CAAC,YAAY,CAC5B,WAAQ,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAC/C,CAAC,QAAQ,CAAC,MAAM,CAAC;KACrB,CAAC,qBAN0B,CAMzB;IAEF,CAAC,WAAW,EAAE,cAAc,CAAW,CAAC,OAAO,CAAC,UAAA,YAAY;QAEjD,IAAA,OAAO,GAAK,oBAAoB,CAAC,EAAE,YAAY,cAAA,EAAE,CAAC,QAA3C,CAA4C;QAE3D,EAAE,CAAC,aAAa,CACZ,WAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,EACpC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAC/B,CAAA;IAEL,CAAC,CAAC,CAAC;AAEP,CAAC;AArED,wEAqEC"}

View File

@ -29,58 +29,20 @@ var generateDebugFiles_1 = require("./generateDebugFiles");
var reactProjectDirPath = process.cwd(); var reactProjectDirPath = process.cwd();
var parsedPackageJson = require(path_1.join(reactProjectDirPath, "package.json")); var parsedPackageJson = require(path_1.join(reactProjectDirPath, "package.json"));
exports.keycloakThemeBuildingDirPath = path_1.join(reactProjectDirPath, "build_keycloak"); exports.keycloakThemeBuildingDirPath = path_1.join(reactProjectDirPath, "build_keycloak");
console.log("🔏 Building the keycloak theme...⌚");
if (require.main === module) { if (require.main === module) {
generateKeycloakThemeResources_1.generateKeycloakThemeResources({ generateKeycloakThemeResources_1.generateKeycloakThemeResources({
keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath, keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath,
"reactAppBuildDirPath": path_1.join(reactProjectDirPath, "build"), "reactAppBuildDirPath": path_1.join(reactProjectDirPath, "build"),
"themeName": parsedPackageJson.name "themeName": parsedPackageJson.name
}); });
var jarFilePath = generateJavaStackFiles_1.generateJavaStackFiles({ generateJavaStackFiles_1.generateJavaStackFiles({
parsedPackageJson: parsedPackageJson, parsedPackageJson: parsedPackageJson,
keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath
}).jarFilePath; });
child_process.execSync("mvn package", { "cwd": exports.keycloakThemeBuildingDirPath }); child_process.execSync("mvn package", { "cwd": exports.keycloakThemeBuildingDirPath });
generateDebugFiles_1.generateDebugFiles({ generateDebugFiles_1.generateDebugFiles({
keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath, keycloakThemeBuildingDirPath: exports.keycloakThemeBuildingDirPath,
"packageJsonName": parsedPackageJson.name "packageJsonName": parsedPackageJson.name
}); });
console.log([
'',
"\u2705 Your keycloak theme has been generated and bundled into ./" + path_1.relative(reactProjectDirPath, jarFilePath) + " \uD83D\uDE80",
"It is to be placed in \"/opt/jboss/keycloak/standalone/deployments\" in the container running a jboss/keycloak Docker image. (Tested with 11.0.3)",
'',
'Using Helm (https://github.com/codecentric/helm-charts), edit to reflect:',
'',
'value.yaml: ',
' extraInitContainers: |',
' - name: realm-ext-provider',
' image: curlimages/curl',
' imagePullPolicy: IfNotPresent',
' command:',
' - sh',
' args:',
' - -c',
" - curl -L -f -S -o /extensions/" + path_1.basename(jarFilePath) + " https://AN.URL.FOR/" + path_1.basename(jarFilePath),
' volumeMounts:',
' - name: extensions',
' mountPath: /extensions',
' ',
' extraVolumeMounts: |',
' - name: extensions',
' mountPath: /opt/jboss/keycloak/standalone/deployments',
'',
'',
'To test your theme locally, with hot reloading, you can spin up a Keycloak container image with the theme loaded by running:',
'',
"$ ./" + path_1.relative(reactProjectDirPath, path_1.join(exports.keycloakThemeBuildingDirPath, generateDebugFiles_1.containerLaunchScriptBasename)),
'',
'To enable the theme within keycloak log into the admin console, create a realm (called "myrealm" for example),',
"go to your realm settings, click on the theme tab then select " + parsedPackageJson.name + ".",
"More details: https://www.keycloak.org/getting-started/getting-started-docker",
'',
'Once your container is up and configured 👉 http://localhost:8080/auth/realms/myrealm/account',
'',
].join("\n"));
} }
//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map

View File

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA,mFAAkF;AAClF,mEAAkE;AAElE,6BAA4F;AAC5F,2DAA+C;AAC/C,2DAAyF;AAGzF,IAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAE1C,IAAM,iBAAiB,GAAsB,OAAO,CAAC,WAAQ,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC,CAAC;AAEvF,QAAA,4BAA4B,GAAG,WAAQ,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;AAG5F,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;AAElD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;IAEzB,+DAA8B,CAAC;QAC3B,4BAA4B,sCAAA;QAC5B,sBAAsB,EAAE,WAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;QAC9D,WAAW,EAAE,iBAAiB,CAAC,IAAI;KACtC,CAAC,CAAC;IAEK,IAAA,WAAW,GAAK,+CAAsB,CAAC;QAC3C,iBAAiB,mBAAA;QACjB,4BAA4B,sCAAA;KAC/B,CAAC,YAHiB,CAGhB;IAEH,aAAa,CAAC,QAAQ,CAClB,aAAa,EACb,EAAE,KAAK,EAAE,oCAA4B,EAAE,CAC1C,CAAC;IAEF,uCAAkB,CAAC;QACf,4BAA4B,sCAAA;QAC5B,iBAAiB,EAAE,iBAAiB,CAAC,IAAI;KAC5C,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC;QACR,EAAE;QACF,sEAA+D,eAAY,CAAC,mBAAmB,EAAE,WAAW,CAAC,kBAAK;QAClH,mJAAiJ;QACjJ,EAAE;QACF,2EAA2E;QAC3E,EAAE;QACF,cAAc;QACd,4BAA4B;QAC5B,oCAAoC;QACpC,kCAAkC;QAClC,yCAAyC;QACzC,oBAAoB;QACpB,kBAAkB;QAClB,iBAAiB;QACjB,kBAAkB;QAClB,gDAA8C,eAAY,CAAC,WAAW,CAAC,4BAAuB,eAAY,CAAC,WAAW,CAAG;QACzH,yBAAyB;QACzB,gCAAgC;QAChC,sCAAsC;QACtC,UAAU;QACV,8BAA8B;QAC9B,gCAAgC;QAChC,qEAAqE;QACrE,EAAE;QACF,EAAE;QACF,8HAA8H;QAC9H,EAAE;QACF,SAAO,eAAY,CAAC,mBAAmB,EAAE,WAAQ,CAAC,oCAA4B,EAAE,kDAA6B,CAAC,CAAG;QACjH,EAAE;QACF,gHAAgH;QAChH,mEAAiE,iBAAiB,CAAC,IAAI,MAAG;QAC1F,+EAA+E;QAC/E,EAAE;QACF,+FAA+F;QAC/F,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;CAEjB"} {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bin/build-keycloak-theme/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA,mFAAkF;AAClF,mEAAkE;AAElE,6BAAwC;AACxC,2DAA+C;AAC/C,2DAA0D;AAE1D,IAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAE1C,IAAM,iBAAiB,GAAsB,OAAO,CAAC,WAAQ,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC,CAAC;AAEvF,QAAA,4BAA4B,GAAG,WAAQ,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;AAE5F,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;IAEzB,+DAA8B,CAAC;QAC3B,4BAA4B,sCAAA;QAC5B,sBAAsB,EAAE,WAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;QAC9D,WAAW,EAAE,iBAAiB,CAAC,IAAI;KACtC,CAAC,CAAC;IAEH,+CAAsB,CAAC;QACnB,iBAAiB,mBAAA;QACjB,4BAA4B,sCAAA;KAC/B,CAAC,CAAC;IAEH,aAAa,CAAC,QAAQ,CAClB,aAAa,EACb,EAAE,KAAK,EAAE,oCAA4B,EAAE,CAC1C,CAAC;IAEF,uCAAkB,CAAC;QACf,4BAA4B,sCAAA;QAC5B,iBAAiB,EAAE,iBAAiB,CAAC,IAAI;KAC5C,CAAC,CAAC;CAEN"}

1
lib/index.d.ts vendored
View File

@ -1 +0,0 @@
export * from "./keycloakFtlValues";

View File

@ -1,14 +0,0 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
__exportStar(require("./keycloakFtlValues"), exports);
//# sourceMappingURL=index.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sDAAoC"}

1
lib/inex.d.ts vendored Normal file
View File

@ -0,0 +1 @@
export {};

3
lib/inex.js Normal file
View File

@ -0,0 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=inex.js.map

1
lib/inex.js.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"inex.js","sourceRoot":"","sources":["../src/lib/inex.ts"],"names":[],"mappings":""}

View File

@ -1,9 +0,0 @@
import type { generateFtlFilesCodeFactory } from "../bin/build-keycloak-theme/generateFtl";
export declare type KeycloakFtlValues = {
pageBasename: Parameters<ReturnType<typeof generateFtlFilesCodeFactory>["generateFtlFilesCode"]>[0]["pageBasename"];
url: {
loginAction: string;
resourcesPath: string;
};
};
export declare const keycloakPagesContext: KeycloakFtlValues | undefined;

View File

@ -1,9 +0,0 @@
"use strict";
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.keycloakPagesContext = void 0;
var generateKeycloakThemeResources_1 = require("../bin/build-keycloak-theme/generateKeycloakThemeResources");
var id_1 = require("evt/tools/typeSafety/id");
exports.keycloakPagesContext = (_a = {}, _a[generateKeycloakThemeResources_1.ftlValuesGlobalName] = id_1.id(window[generateKeycloakThemeResources_1.ftlValuesGlobalName]), _a).keycloakPagesContext;
;
//# sourceMappingURL=keycloakFtlValues.js.map

View File

@ -1 +0,0 @@
{"version":3,"file":"keycloakFtlValues.js","sourceRoot":"","sources":["../src/lib/keycloakFtlValues.ts"],"names":[],"mappings":";;;;AAGA,6GAAiG;AAEjG,8CAA6C;AAW9B,QAAA,oBAAoB,aAC7B,GAAC,oDAAmB,IAAG,OAAE,CAAiC,MAAc,CAAC,oDAAmB,CAAC,CAAC,2BAAG;AACvG,CAAC"}

29
package-lock.json generated
View File

@ -1,15 +1,14 @@
{ {
"name": "keycloak-react-theming", "name": "keycloak-react-theming",
"version": "0.0.13", "version": "0.0.7",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"version": "0.0.13", "version": "0.0.7",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"cheerio": "^1.0.0-rc.5", "cheerio": "^1.0.0-rc.5"
"evt": "^1.9.12"
}, },
"bin": { "bin": {
"build-keycloak-theme": "dist/bin/build-keycloak-theme/index.js", "build-keycloak-theme": "dist/bin/build-keycloak-theme/index.js",
@ -483,6 +482,7 @@
"version": "1.9.12", "version": "1.9.12",
"resolved": "https://registry.npmjs.org/evt/-/evt-1.9.12.tgz", "resolved": "https://registry.npmjs.org/evt/-/evt-1.9.12.tgz",
"integrity": "sha512-u8wC4Xif2pcDJ9cEm0wzWCIQb+Y214m1eUgsgm2hVIuXuvC6LToryA0Ecl1O8Slii2E9l6USLsyxXWntjlnIbw==", "integrity": "sha512-u8wC4Xif2pcDJ9cEm0wzWCIQb+Y214m1eUgsgm2hVIuXuvC6LToryA0Ecl1O8Slii2E9l6USLsyxXWntjlnIbw==",
"dev": true,
"dependencies": { "dependencies": {
"minimal-polyfills": "^2.1.5", "minimal-polyfills": "^2.1.5",
"run-exclusive": "^2.2.14" "run-exclusive": "^2.2.14"
@ -612,7 +612,8 @@
"node_modules/minimal-polyfills": { "node_modules/minimal-polyfills": {
"version": "2.1.6", "version": "2.1.6",
"resolved": "https://registry.npmjs.org/minimal-polyfills/-/minimal-polyfills-2.1.6.tgz", "resolved": "https://registry.npmjs.org/minimal-polyfills/-/minimal-polyfills-2.1.6.tgz",
"integrity": "sha512-vqoxj7eMzsqX0M6/dkgoNFPw6Mztgn5qjSl0bWGboQeU7Y4UPLeyoqQw6JI+0qmBcJYdkr3nK7dqY8u/fgRp5g==" "integrity": "sha512-vqoxj7eMzsqX0M6/dkgoNFPw6Mztgn5qjSl0bWGboQeU7Y4UPLeyoqQw6JI+0qmBcJYdkr3nK7dqY8u/fgRp5g==",
"dev": true
}, },
"node_modules/minimatch": { "node_modules/minimatch": {
"version": "3.0.4", "version": "3.0.4",
@ -748,6 +749,7 @@
"version": "2.2.14", "version": "2.2.14",
"resolved": "https://registry.npmjs.org/run-exclusive/-/run-exclusive-2.2.14.tgz", "resolved": "https://registry.npmjs.org/run-exclusive/-/run-exclusive-2.2.14.tgz",
"integrity": "sha512-NHaQfB3zPJFx7p4M06AcmoK8xz/h8YDMCdy3jxfyoC9VqIbl1U+DiVjUuAYZBRMwvj5qkQnOUGfsmyUC4k46dg==", "integrity": "sha512-NHaQfB3zPJFx7p4M06AcmoK8xz/h8YDMCdy3jxfyoC9VqIbl1U+DiVjUuAYZBRMwvj5qkQnOUGfsmyUC4k46dg==",
"dev": true,
"dependencies": { "dependencies": {
"minimal-polyfills": "^2.1.5" "minimal-polyfills": "^2.1.5"
} }
@ -936,9 +938,9 @@
} }
}, },
"node_modules/yargs-parser": { "node_modules/yargs-parser": {
"version": "20.2.6", "version": "20.2.5",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.5.tgz",
"integrity": "sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA==", "integrity": "sha512-jYRGS3zWy20NtDtK2kBgo/TlAoy5YUuhD9/LZ7z7W4j1Fdw2cqD0xEEclf8fxc8xjD6X5Qr+qQQwCEsP8iRiYg==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": ">=10" "node": ">=10"
@ -1325,6 +1327,7 @@
"version": "1.9.12", "version": "1.9.12",
"resolved": "https://registry.npmjs.org/evt/-/evt-1.9.12.tgz", "resolved": "https://registry.npmjs.org/evt/-/evt-1.9.12.tgz",
"integrity": "sha512-u8wC4Xif2pcDJ9cEm0wzWCIQb+Y214m1eUgsgm2hVIuXuvC6LToryA0Ecl1O8Slii2E9l6USLsyxXWntjlnIbw==", "integrity": "sha512-u8wC4Xif2pcDJ9cEm0wzWCIQb+Y214m1eUgsgm2hVIuXuvC6LToryA0Ecl1O8Slii2E9l6USLsyxXWntjlnIbw==",
"dev": true,
"requires": { "requires": {
"minimal-polyfills": "^2.1.5", "minimal-polyfills": "^2.1.5",
"run-exclusive": "^2.2.14" "run-exclusive": "^2.2.14"
@ -1426,7 +1429,8 @@
"minimal-polyfills": { "minimal-polyfills": {
"version": "2.1.6", "version": "2.1.6",
"resolved": "https://registry.npmjs.org/minimal-polyfills/-/minimal-polyfills-2.1.6.tgz", "resolved": "https://registry.npmjs.org/minimal-polyfills/-/minimal-polyfills-2.1.6.tgz",
"integrity": "sha512-vqoxj7eMzsqX0M6/dkgoNFPw6Mztgn5qjSl0bWGboQeU7Y4UPLeyoqQw6JI+0qmBcJYdkr3nK7dqY8u/fgRp5g==" "integrity": "sha512-vqoxj7eMzsqX0M6/dkgoNFPw6Mztgn5qjSl0bWGboQeU7Y4UPLeyoqQw6JI+0qmBcJYdkr3nK7dqY8u/fgRp5g==",
"dev": true
}, },
"minimatch": { "minimatch": {
"version": "3.0.4", "version": "3.0.4",
@ -1535,6 +1539,7 @@
"version": "2.2.14", "version": "2.2.14",
"resolved": "https://registry.npmjs.org/run-exclusive/-/run-exclusive-2.2.14.tgz", "resolved": "https://registry.npmjs.org/run-exclusive/-/run-exclusive-2.2.14.tgz",
"integrity": "sha512-NHaQfB3zPJFx7p4M06AcmoK8xz/h8YDMCdy3jxfyoC9VqIbl1U+DiVjUuAYZBRMwvj5qkQnOUGfsmyUC4k46dg==", "integrity": "sha512-NHaQfB3zPJFx7p4M06AcmoK8xz/h8YDMCdy3jxfyoC9VqIbl1U+DiVjUuAYZBRMwvj5qkQnOUGfsmyUC4k46dg==",
"dev": true,
"requires": { "requires": {
"minimal-polyfills": "^2.1.5" "minimal-polyfills": "^2.1.5"
} }
@ -1694,9 +1699,9 @@
} }
}, },
"yargs-parser": { "yargs-parser": {
"version": "20.2.6", "version": "20.2.5",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.5.tgz",
"integrity": "sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA==", "integrity": "sha512-jYRGS3zWy20NtDtK2kBgo/TlAoy5YUuhD9/LZ7z7W4j1Fdw2cqD0xEEclf8fxc8xjD6X5Qr+qQQwCEsP8iRiYg==",
"dev": true "dev": true
} }
} }

View File

@ -1,13 +1,13 @@
{ {
"name": "keycloak-react-theming", "name": "keycloak-react-theming",
"version": "0.0.13", "version": "0.0.7",
"description": "Keycloak theme generator for Reacts app", "description": "Provides a way to customize Keycloak login and register pages with React",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "git://github.com/garronej/keycloak-react-theming.git" "url": "git://github.com/garronej/keycloak-react-theming.git"
}, },
"main": "lib/index.js", "main": "dist/lib/index.js",
"types": "lib/index.d.ts", "types": "dist/lib/index.d.ts",
"bin": { "bin": {
"build-keycloak-theme": "bin/build-keycloak-theme/index.js", "build-keycloak-theme": "bin/build-keycloak-theme/index.js",
"download-sample-keycloak-themes": "bin/download-sample-keycloak-themes.js" "download-sample-keycloak-themes": "bin/download-sample-keycloak-themes.js"
@ -23,8 +23,7 @@
"src/bin/build-keycloak-theme/index.ts", "src/bin/build-keycloak-theme/index.ts",
"src/bin/build-keycloak-theme/replaceImportFromStatic.ts", "src/bin/build-keycloak-theme/replaceImportFromStatic.ts",
"src/bin/download-sample-keycloak-themes.ts", "src/bin/download-sample-keycloak-themes.ts",
"src/lib/index.ts", "src/lib/inex.ts",
"src/lib/keycloakFtlValues.ts",
"src/tools/crawl.ts", "src/tools/crawl.ts",
"src/tools/transformCodebase.ts", "src/tools/transformCodebase.ts",
"bin/build-keycloak-theme/generateDebugFiles/index.d.ts", "bin/build-keycloak-theme/generateDebugFiles/index.d.ts",
@ -49,12 +48,9 @@
"bin/download-sample-keycloak-themes.d.ts", "bin/download-sample-keycloak-themes.d.ts",
"bin/download-sample-keycloak-themes.js", "bin/download-sample-keycloak-themes.js",
"bin/download-sample-keycloak-themes.js.map", "bin/download-sample-keycloak-themes.js.map",
"lib/index.d.ts", "lib/inex.d.ts",
"lib/index.js", "lib/inex.js",
"lib/index.js.map", "lib/inex.js.map",
"lib/keycloakFtlValues.d.ts",
"lib/keycloakFtlValues.js",
"lib/keycloakFtlValues.js.map",
"tools/crawl.d.ts", "tools/crawl.d.ts",
"tools/crawl.js", "tools/crawl.js",
"tools/crawl.js.map", "tools/crawl.js.map",
@ -76,7 +72,6 @@
"typescript": "^4.1.5" "typescript": "^4.1.5"
}, },
"dependencies": { "dependencies": {
"cheerio": "^1.0.0-rc.5", "cheerio": "^1.0.0-rc.5"
"evt": "^1.9.12"
} }
} }

View File

@ -2,8 +2,6 @@
import * as fs from "fs"; import * as fs from "fs";
import { join as pathJoin, dirname as pathDirname, basename as pathBasename } from "path"; import { join as pathJoin, dirname as pathDirname, basename as pathBasename } from "path";
export const containerLaunchScriptBasename = "start_keycloak_testing_container.sh";
/** Files for being able to run a hot reload keycloak container */ /** Files for being able to run a hot reload keycloak container */
export function generateDebugFiles( export function generateDebugFiles(
params: { params: {
@ -36,7 +34,7 @@ export function generateDebugFiles(
const containerName = "keycloak-testing-container"; const containerName = "keycloak-testing-container";
fs.writeFileSync( fs.writeFileSync(
pathJoin(keycloakThemeBuildingDirPath, containerLaunchScriptBasename), pathJoin(keycloakThemeBuildingDirPath, "start_keycloak_testing_container.sh"),
Buffer.from( Buffer.from(
[ [
"#!/bin/bash", "#!/bin/bash",
@ -50,8 +48,7 @@ export function generateDebugFiles(
` --name ${containerName} \\`, ` --name ${containerName} \\`,
" -e KEYCLOAK_USER=admin \\", " -e KEYCLOAK_USER=admin \\",
" -e KEYCLOAK_PASSWORD=admin \\", " -e KEYCLOAK_PASSWORD=admin \\",
` -v ${pathJoin(keycloakThemeBuildingDirPath, "src", "main", "resources", "theme", packageJsonName) ` -v ${pathJoin(keycloakThemeBuildingDirPath, "src", "main", "resources", "theme", "onyxia")}:/opt/jboss/keycloak/themes/onyxia:rw \\`,
}:/opt/jboss/keycloak/themes/${packageJsonName}:rw \\`,
` -it ${dockerImage}:latest`, ` -it ${dockerImage}:latest`,
"" ""
].join("\n"), ].join("\n"),

View File

@ -49,16 +49,13 @@ export function generateFtlFilesCodeFactory(
$("head").prepend( $("head").prepend(
[ [
...(Object.keys(cssGlobalsToDefine).length === 0 ? [] : [ '',
'', '<style>',
'<style>', generateCssCodeToDefineGlobals(
generateCssCodeToDefineGlobals( { cssGlobalsToDefine }
{ cssGlobalsToDefine } ).cssCodeToPrependInHead,
).cssCodeToPrependInHead, '</style>',
'</style>', '',
''
]),
'<script>', '<script>',
' Object.assign(', ' Object.assign(',
` window.${ftlValuesGlobalName},`, ` window.${ftlValuesGlobalName},`,
@ -68,7 +65,7 @@ export function generateFtlFilesCodeFactory(
' "resourcesPath": "${url.resourcesPath}"', ' "resourcesPath": "${url.resourcesPath}"',
' }', ' }',
' }', ' }',
' );', ' });',
'</script>', '</script>',
'' ''
].join("\n"), ].join("\n"),

View File

@ -14,7 +14,7 @@ export function generateJavaStackFiles(
parsedPackageJson: ParsedPackageJson; parsedPackageJson: ParsedPackageJson;
keycloakThemeBuildingDirPath: string; keycloakThemeBuildingDirPath: string;
} }
): { jarFilePath: string; } { ): void {
const { const {
parsedPackageJson: { name, version, homepage }, parsedPackageJson: { name, version, homepage },
@ -94,7 +94,5 @@ export function generateJavaStackFiles(
} }
return { "jarFilePath": pathJoin(keycloakThemeBuildingDirPath, "target", `${name}-${version}.jar`) };
} }

View File

@ -8,7 +8,7 @@ import {
} from "./replaceImportFromStatic"; } from "./replaceImportFromStatic";
import { generateFtlFilesCodeFactory } from "./generateFtl"; import { generateFtlFilesCodeFactory } from "./generateFtl";
export const ftlValuesGlobalName = "keycloakPagesContext"; const ftlValuesGlobalName = "keycloakFtlValues";
export function generateKeycloakThemeResources( export function generateKeycloakThemeResources(
params: { params: {
@ -79,10 +79,5 @@ export function generateKeycloakThemeResources(
}); });
fs.writeFileSync(
pathJoin(themeDirPath, "theme.properties"),
Buffer.from("parent=base\n", "utf8")
);
} }

View File

@ -3,10 +3,9 @@
import { generateKeycloakThemeResources } from "./generateKeycloakThemeResources"; import { generateKeycloakThemeResources } from "./generateKeycloakThemeResources";
import { generateJavaStackFiles } from "./generateJavaStackFiles"; import { generateJavaStackFiles } from "./generateJavaStackFiles";
import type { ParsedPackageJson } from "./generateJavaStackFiles"; import type { ParsedPackageJson } from "./generateJavaStackFiles";
import { join as pathJoin, relative as pathRelative, basename as pathBasename } from "path"; import { join as pathJoin } from "path";
import * as child_process from "child_process"; import * as child_process from "child_process";
import { generateDebugFiles, containerLaunchScriptBasename } from "./generateDebugFiles"; import { generateDebugFiles } from "./generateDebugFiles";
const reactProjectDirPath = process.cwd(); const reactProjectDirPath = process.cwd();
@ -14,9 +13,6 @@ const parsedPackageJson: ParsedPackageJson = require(pathJoin(reactProjectDirPat
export const keycloakThemeBuildingDirPath = pathJoin(reactProjectDirPath, "build_keycloak"); export const keycloakThemeBuildingDirPath = pathJoin(reactProjectDirPath, "build_keycloak");
console.log("🔏 Building the keycloak theme...⌚");
if (require.main === module) { if (require.main === module) {
generateKeycloakThemeResources({ generateKeycloakThemeResources({
@ -25,7 +21,7 @@ if (require.main === module) {
"themeName": parsedPackageJson.name "themeName": parsedPackageJson.name
}); });
const { jarFilePath } = generateJavaStackFiles({ generateJavaStackFiles({
parsedPackageJson, parsedPackageJson,
keycloakThemeBuildingDirPath keycloakThemeBuildingDirPath
}); });
@ -40,42 +36,4 @@ if (require.main === module) {
"packageJsonName": parsedPackageJson.name "packageJsonName": parsedPackageJson.name
}); });
console.log([
'',
`✅ Your keycloak theme has been generated and bundled into ./${pathRelative(reactProjectDirPath, jarFilePath)} 🚀`,
`It is to be placed in "/opt/jboss/keycloak/standalone/deployments" in the container running a jboss/keycloak Docker image. (Tested with 11.0.3)`,
'',
'Using Helm (https://github.com/codecentric/helm-charts), edit to reflect:',
'',
'value.yaml: ',
' extraInitContainers: |',
' - name: realm-ext-provider',
' image: curlimages/curl',
' imagePullPolicy: IfNotPresent',
' command:',
' - sh',
' args:',
' - -c',
` - curl -L -f -S -o /extensions/${pathBasename(jarFilePath)} https://AN.URL.FOR/${pathBasename(jarFilePath)}`,
' volumeMounts:',
' - name: extensions',
' mountPath: /extensions',
' ',
' extraVolumeMounts: |',
' - name: extensions',
' mountPath: /opt/jboss/keycloak/standalone/deployments',
'',
'',
'To test your theme locally, with hot reloading, you can spin up a Keycloak container image with the theme loaded by running:',
'',
`$ ./${pathRelative(reactProjectDirPath, pathJoin(keycloakThemeBuildingDirPath, containerLaunchScriptBasename))}`,
'',
'To enable the theme within keycloak log into the admin console, create a realm (called "myrealm" for example),',
`go to your realm settings, click on the theme tab then select ${parsedPackageJson.name}.`,
`More details: https://www.keycloak.org/getting-started/getting-started-docker`,
'',
'Once your container is up and configured 👉 http://localhost:8080/auth/realms/myrealm/account',
'',
].join("\n"));
} }

View File

@ -1 +0,0 @@
export * from "./keycloakFtlValues";

3
src/lib/inex.ts Normal file
View File

@ -0,0 +1,3 @@
export { };

View File

@ -1,19 +0,0 @@
import { ftlValuesGlobalName } from "../bin/build-keycloak-theme/generateKeycloakThemeResources";
import type { generateFtlFilesCodeFactory } from "../bin/build-keycloak-theme/generateFtl";
import { id } from "evt/tools/typeSafety/id";
export type KeycloakFtlValues = {
pageBasename: Parameters<ReturnType<typeof generateFtlFilesCodeFactory>["generateFtlFilesCode"]>[0]["pageBasename"];
url: {
loginAction: string,
resourcesPath: string
}
};
export const { keycloakPagesContext } =
{ [ftlValuesGlobalName]: id<KeycloakFtlValues | undefined>((window as any)[ftlValuesGlobalName]) };
;

View File

@ -1,23 +1,15 @@
import { import { setupSampleReactProject } from "./setupSampleReactProject";
setupSampleReactProject,
sampleReactProjectDirPath
} from "./setupSampleReactProject";
import * as st from "scripting-tools"; import * as st from "scripting-tools";
import { join as pathJoin } from "path"; import { join as pathJoin } from "path";
const { sampleReactProjectDirPath } = setupSampleReactProject();
setupSampleReactProject();
console.log(`Running main in ${sampleReactProjectDirPath}`); console.log(`Running main in ${sampleReactProjectDirPath}`);
console.log( st.execSync(
st.execSync( `node ${pathJoin(__dirname, "../bin/build-keycloak-theme")}`,
`node ${pathJoin(__dirname, "../bin/build-keycloak-theme")}`, { "cwd": sampleReactProjectDirPath }
{ "cwd": sampleReactProjectDirPath }
)
); );

View File

@ -1,12 +1,9 @@
import { join as pathJoin } from "path"; import { join as pathJoin } from "path";
import { generateKeycloakThemeResources } from "../bin/build-keycloak-theme/generateKeycloakThemeResources"; import { generateKeycloakThemeResources } from "../bin/build-keycloak-theme/generateKeycloakThemeResources";
import { import { setupSampleReactProject } from "./setupSampleReactProject";
setupSampleReactProject,
sampleReactProjectDirPath
} from "./setupSampleReactProject";
setupSampleReactProject(); const { sampleReactProjectDirPath } = setupSampleReactProject();
generateKeycloakThemeResources({ generateKeycloakThemeResources({
"themeName": "onyxia-ui", "themeName": "onyxia-ui",

View File

@ -16,4 +16,6 @@ export function setupSampleReactProject() {
...["unzip", "rm"].map(prg => `${prg} ${pathBasename(url)}`) ...["unzip", "rm"].map(prg => `${prg} ${pathBasename(url)}`)
].forEach(cmd => st.execSync(cmd, { "cwd": sampleReactProjectDirPath })); ].forEach(cmd => st.execSync(cmd, { "cwd": sampleReactProjectDirPath }));
return { sampleReactProjectDirPath };
} }

View File

@ -22,7 +22,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
var setupSampleReactProject_1 = require("./setupSampleReactProject"); var setupSampleReactProject_1 = require("./setupSampleReactProject");
var st = __importStar(require("scripting-tools")); var st = __importStar(require("scripting-tools"));
var path_1 = require("path"); var path_1 = require("path");
setupSampleReactProject_1.setupSampleReactProject(); var sampleReactProjectDirPath = setupSampleReactProject_1.setupSampleReactProject().sampleReactProjectDirPath;
console.log("Running main in " + setupSampleReactProject_1.sampleReactProjectDirPath); console.log("Running main in " + sampleReactProjectDirPath);
console.log(st.execSync("node " + path_1.join(__dirname, "../bin/build-keycloak-theme"), { "cwd": setupSampleReactProject_1.sampleReactProjectDirPath })); st.execSync("node " + path_1.join(__dirname, "../bin/build-keycloak-theme"), { "cwd": sampleReactProjectDirPath });
//# sourceMappingURL=build-keycloak-theme.js.map //# sourceMappingURL=build-keycloak-theme.js.map

View File

@ -1 +1 @@
{"version":3,"file":"build-keycloak-theme.js","sourceRoot":"","sources":["../src/test/build-keycloak-theme.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA,qEAGmC;AACnC,kDAAsC;AACtC,6BAAwC;AAGxC,iDAAuB,EAAE,CAAC;AAG1B,OAAO,CAAC,GAAG,CAAC,qBAAmB,mDAA2B,CAAC,CAAC;AAE5D,OAAO,CAAC,GAAG,CACP,EAAE,CAAC,QAAQ,CACP,UAAQ,WAAQ,CAAC,SAAS,EAAE,6BAA6B,CAAG,EAC5D,EAAE,KAAK,EAAE,mDAAyB,EAAE,CACvC,CACJ,CAAC"} {"version":3,"file":"build-keycloak-theme.js","sourceRoot":"","sources":["../src/test/build-keycloak-theme.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA,qEAAoE;AACpE,kDAAsC;AACtC,6BAAwC;AAEhC,IAAA,yBAAyB,GAAK,iDAAuB,EAAE,0BAA9B,CAA+B;AAEhE,OAAO,CAAC,GAAG,CAAC,qBAAmB,yBAA2B,CAAC,CAAC;AAE5D,EAAE,CAAC,QAAQ,CACP,UAAQ,WAAQ,CAAC,SAAS,EAAE,6BAA6B,CAAG,EAC5D,EAAE,KAAK,EAAE,yBAAyB,EAAE,CACvC,CAAC"}

View File

@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
var path_1 = require("path"); var path_1 = require("path");
var generateKeycloakThemeResources_1 = require("../bin/build-keycloak-theme/generateKeycloakThemeResources"); var generateKeycloakThemeResources_1 = require("../bin/build-keycloak-theme/generateKeycloakThemeResources");
var setupSampleReactProject_1 = require("./setupSampleReactProject"); var setupSampleReactProject_1 = require("./setupSampleReactProject");
setupSampleReactProject_1.setupSampleReactProject(); var sampleReactProjectDirPath = setupSampleReactProject_1.setupSampleReactProject().sampleReactProjectDirPath;
generateKeycloakThemeResources_1.generateKeycloakThemeResources({ generateKeycloakThemeResources_1.generateKeycloakThemeResources({
"themeName": "onyxia-ui", "themeName": "onyxia-ui",
"reactAppBuildDirPath": path_1.join(setupSampleReactProject_1.sampleReactProjectDirPath, "build"), "reactAppBuildDirPath": path_1.join(sampleReactProjectDirPath, "build"),
"keycloakThemeBuildingDirPath": path_1.join(setupSampleReactProject_1.sampleReactProjectDirPath, "build_keycloak_theme") "keycloakThemeBuildingDirPath": path_1.join(sampleReactProjectDirPath, "build_keycloak_theme")
}); });
//# sourceMappingURL=generateKeycloakThemeResources.js.map //# sourceMappingURL=generateKeycloakThemeResources.js.map

View File

@ -1 +1 @@
{"version":3,"file":"generateKeycloakThemeResources.js","sourceRoot":"","sources":["../src/test/generateKeycloakThemeResources.ts"],"names":[],"mappings":";;AACA,6BAAwC;AACxC,6GAA4G;AAC5G,qEAGmC;AAEnC,iDAAuB,EAAE,CAAC;AAE1B,+DAA8B,CAAC;IAC3B,WAAW,EAAE,WAAW;IACxB,sBAAsB,EAAE,WAAQ,CAAC,mDAAyB,EAAE,OAAO,CAAC;IACpE,8BAA8B,EAAE,WAAQ,CAAC,mDAAyB,EAAE,sBAAsB,CAAC;CAC9F,CAAC,CAAC"} {"version":3,"file":"generateKeycloakThemeResources.js","sourceRoot":"","sources":["../src/test/generateKeycloakThemeResources.ts"],"names":[],"mappings":";;AACA,6BAAwC;AACxC,6GAA4G;AAC5G,qEAAoE;AAE5D,IAAA,yBAAyB,GAAK,iDAAuB,EAAE,0BAA9B,CAA+B;AAEhE,+DAA8B,CAAC;IAC3B,WAAW,EAAE,WAAW;IACxB,sBAAsB,EAAE,WAAQ,CAAC,yBAAyB,EAAE,OAAO,CAAC;IACpE,8BAA8B,EAAE,WAAQ,CAAC,yBAAyB,EAAE,sBAAsB,CAAC;CAC9F,CAAC,CAAC"}

View File

@ -1,2 +1,4 @@
export declare const sampleReactProjectDirPath: string; export declare const sampleReactProjectDirPath: string;
export declare function setupSampleReactProject(): void; export declare function setupSampleReactProject(): {
sampleReactProjectDirPath: string;
};

View File

@ -50,6 +50,7 @@ function setupSampleReactProject() {
__spread([ __spread([
"wget " + url "wget " + url
], ["unzip", "rm"].map(function (prg) { return prg + " " + path_1.basename(url); })).forEach(function (cmd) { return st.execSync(cmd, { "cwd": exports.sampleReactProjectDirPath }); }); ], ["unzip", "rm"].map(function (prg) { return prg + " " + path_1.basename(url); })).forEach(function (cmd) { return st.execSync(cmd, { "cwd": exports.sampleReactProjectDirPath }); });
return { sampleReactProjectDirPath: exports.sampleReactProjectDirPath };
} }
exports.setupSampleReactProject = setupSampleReactProject; exports.setupSampleReactProject = setupSampleReactProject;
//# sourceMappingURL=setupSampleReactProject.js.map //# sourceMappingURL=setupSampleReactProject.js.map

View File

@ -1 +1 @@
{"version":3,"file":"setupSampleReactProject.js","sourceRoot":"","sources":["../src/test/setupSampleReactProject.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAAsC;AACtC,6BAAkE;AAErD,QAAA,yBAAyB,GAAG,WAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC;AAEjG,SAAgB,uBAAuB;IAEnC,EAAE,CAAC,QAAQ,CAAC,YAAU,iCAA2B,CAAC,CAAC;IACnD,EAAE,CAAC,QAAQ,CAAC,WAAS,iCAA2B,CAAC,CAAC;IAElD,IAAM,GAAG,GAAG,mHAAmH,CAAC;IAEhI;QACI,UAAQ,GAAK;OACV,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAG,GAAG,SAAI,eAAY,CAAC,GAAG,CAAG,EAA7B,CAA6B,CAAC,EAC9D,OAAO,CAAC,UAAA,GAAG,IAAI,OAAA,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,iCAAyB,EAAE,CAAC,EAAtD,CAAsD,CAAC,CAAC;AAE7E,CAAC;AAZD,0DAYC"} {"version":3,"file":"setupSampleReactProject.js","sourceRoot":"","sources":["../src/test/setupSampleReactProject.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kDAAsC;AACtC,6BAAkE;AAErD,QAAA,yBAAyB,GAAG,WAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC;AAEjG,SAAgB,uBAAuB;IAEnC,EAAE,CAAC,QAAQ,CAAC,YAAU,iCAA2B,CAAC,CAAC;IACnD,EAAE,CAAC,QAAQ,CAAC,WAAS,iCAA2B,CAAC,CAAC;IAElD,IAAM,GAAG,GAAG,mHAAmH,CAAC;IAEhI;QACI,UAAQ,GAAK;OACV,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAG,GAAG,SAAI,eAAY,CAAC,GAAG,CAAG,EAA7B,CAA6B,CAAC,EAC9D,OAAO,CAAC,UAAA,GAAG,IAAI,OAAA,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,iCAAyB,EAAE,CAAC,EAAtD,CAAsD,CAAC,CAAC;IAEzE,OAAO,EAAE,yBAAyB,mCAAA,EAAE,CAAC;AAEzC,CAAC;AAdD,0DAcC"}

View File

@ -242,27 +242,27 @@
"affectsGlobalScope": false "affectsGlobalScope": false
}, },
"../src/bin/build-keycloak-theme/generateFtl.ts": { "../src/bin/build-keycloak-theme/generateFtl.ts": {
"version": "9b6401a245a32e2968648cf5e48595a0a4e1d12237bf8aadf2da6336304ad8c8", "version": "9ff8e2f3fe2505639167e0574c85bbe0748103e8093eb2d956309b59ffeffdde",
"signature": "3a11af9abe294b90f19598d16e9d081f5452cdb668939e63abdd6a4d90955279", "signature": "3a11af9abe294b90f19598d16e9d081f5452cdb668939e63abdd6a4d90955279",
"affectsGlobalScope": false "affectsGlobalScope": false
}, },
"../src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts": { "../src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts": {
"version": "fa036a62fb59eb4f9c98070852ba0de9789bacdc38c049a015649439edd74edc", "version": "c3b6d9c8f827f26d42410ac74adb2e87384d355d612d4a8ac368033bb731f5b1",
"signature": "91ea17958f25db390b27717b63af5395e85d44a75b1fcaf57ff05c0a46dcacae", "signature": "c53e9172d81232fc2b183d2105ce6b33db0803cdb01c188755460b66b9e7bf35",
"affectsGlobalScope": false "affectsGlobalScope": false
}, },
"../src/bin/build-keycloak-theme/generateJavaStackFiles.ts": { "../src/bin/build-keycloak-theme/generateJavaStackFiles.ts": {
"version": "9ce7db79f73f7e02e5c50134e826f9fe4c7a48c6d248ad0d500196d3606f1321", "version": "5ea7c3fa0f38cf5fb8d975843226927a2711c2d4407fe54f59cdc4a36761a49e",
"signature": "557c16c024b7430c3da3f19a980eca355acaa8275713ad3bc3fd91329248b921", "signature": "9467ef96692034313a18433a9f0ba9586d47d0d8b0862b756a94d58b0910660e",
"affectsGlobalScope": false "affectsGlobalScope": false
}, },
"../src/bin/build-keycloak-theme/generateDebugFiles/index.ts": { "../src/bin/build-keycloak-theme/generateDebugFiles/index.ts": {
"version": "7ed04e9e9768ab4256d5d51bf12323ded0ecef891c1a100f34211903f9a3f149", "version": "611e45ac6f36b781b20816282a04aea99ef815637556b98ec656359921809ece",
"signature": "a32872c9b926d7fd1fd2ed3aca63380a6c333c9ea05f1f84fd0248cd637f2553", "signature": "e3d849f4c3846c3254bf58e796a6ed29216735252657be3dec24d30c1df5517b",
"affectsGlobalScope": false "affectsGlobalScope": false
}, },
"../src/bin/build-keycloak-theme/index.ts": { "../src/bin/build-keycloak-theme/index.ts": {
"version": "324a1c0c8c3cfa50dbc213fa4f2650551a3e5537e53635b8d4225acad9c83dc3", "version": "87c56909e792ee3afdc835081db05365537f1b2699945b7a8d59dcc896d30a78",
"signature": "cc0e708e12dd472472902f20c879f10b9352d52e6823ac341bc0941ef15b9618", "signature": "cc0e708e12dd472472902f20c879f10b9352d52e6823ac341bc0941ef15b9618",
"affectsGlobalScope": false "affectsGlobalScope": false
}, },
@ -271,19 +271,9 @@
"signature": "43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012", "signature": "43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012",
"affectsGlobalScope": false "affectsGlobalScope": false
}, },
"../node_modules/evt/tools/typeSafety/id.d.ts": { "../src/lib/inex.ts": {
"version": "9b4cbbc5d76a0e78a053503ed153a83f48799f1519e3aef593cb0987700704b8", "version": "f5f88f79d2709a1ebf75743bef209380b3dd79f3b6f83e61f1ffdbabc4dcc903",
"signature": "9b4cbbc5d76a0e78a053503ed153a83f48799f1519e3aef593cb0987700704b8", "signature": "8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881",
"affectsGlobalScope": false
},
"../src/lib/keycloakFtlValues.ts": {
"version": "8855aa745f2916ae3bc7161b4ef9784c21f595070e177e2a201a5d8ffc672a64",
"signature": "47f69685f9207ddeb9e876a0b9545efbd8a73a6b3b123c9b685165bde9d408df",
"affectsGlobalScope": false
},
"../src/lib/index.ts": {
"version": "982f8546cf41fe3912d92c4b9f338c57b55bebe8dacd5002bb11449d1a273ed5",
"signature": "988e58c5be2a660857f23895090b1b6cafe4fe6d36ce4f9e74754ac6d8bfd787",
"affectsGlobalScope": false "affectsGlobalScope": false
}, },
"../node_modules/@types/node/globals.d.ts": { "../node_modules/@types/node/globals.d.ts": {
@ -512,12 +502,12 @@
"affectsGlobalScope": false "affectsGlobalScope": false
}, },
"../src/test/setupSampleReactProject.ts": { "../src/test/setupSampleReactProject.ts": {
"version": "5d592efc3bfbae69466fab8beb461761dd9e7c903929fcfaac193db047481e3c", "version": "4584f6388902ef725ef7af1a81689d594386fe475602650e1c3196e364565f9a",
"signature": "2c0ddcdfefa535987300f17ab4be6b93e9dcc2583a80136eebb34671ff7cac00", "signature": "a2bc6a0c53ec1dd6388b62c6b3ae4df8e55c24889deb0cad6251f95cffa17da9",
"affectsGlobalScope": false "affectsGlobalScope": false
}, },
"../src/test/build-keycloak-theme.ts": { "../src/test/build-keycloak-theme.ts": {
"version": "42f3866a8b954b6f15f9e63132a0554b5e9b12068c024c9f4250d48efe9a59f5", "version": "7a0945c27488e0c49134e54cf9363cd058cf07986ab1fa92b4382db235355628",
"signature": "8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881", "signature": "8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881",
"affectsGlobalScope": false "affectsGlobalScope": false
}, },
@ -527,7 +517,7 @@
"affectsGlobalScope": false "affectsGlobalScope": false
}, },
"../src/test/generateKeycloakThemeResources.ts": { "../src/test/generateKeycloakThemeResources.ts": {
"version": "d6d7ad4c5158ffddb31c072d016c4a8d5925359c787548ffab0fd3adf6f58f2b", "version": "8abf896388c9556edcc236b42c3f73a9c23f2a7f51fd40aea155f92473160eb0",
"signature": "8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881", "signature": "8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881",
"affectsGlobalScope": false "affectsGlobalScope": false
}, },
@ -806,14 +796,6 @@
"../node_modules/@types/node/path.d.ts", "../node_modules/@types/node/path.d.ts",
"../src/bin/build-keycloak-theme/index.ts" "../src/bin/build-keycloak-theme/index.ts"
], ],
"../src/lib/index.ts": [
"../src/lib/keycloakFtlValues.ts"
],
"../src/lib/keycloakFtlValues.ts": [
"../node_modules/evt/tools/typeSafety/id.d.ts",
"../src/bin/build-keycloak-theme/generateFtl.ts",
"../src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts"
],
"../src/test/build-keycloak-theme.ts": [ "../src/test/build-keycloak-theme.ts": [
"../node_modules/@types/node/path.d.ts", "../node_modules/@types/node/path.d.ts",
"../node_modules/scripting-tools/dist/lib/index.d.ts", "../node_modules/scripting-tools/dist/lib/index.d.ts",
@ -1052,12 +1034,6 @@
"../node_modules/@types/node/child_process.d.ts", "../node_modules/@types/node/child_process.d.ts",
"../node_modules/@types/node/index.d.ts", "../node_modules/@types/node/index.d.ts",
"../node_modules/scripting-tools/dist/lib/get_caller_file_path.d.ts" "../node_modules/scripting-tools/dist/lib/get_caller_file_path.d.ts"
],
"../src/lib/index.ts": [
"../src/lib/keycloakFtlValues.ts"
],
"../src/lib/keycloakFtlValues.ts": [
"../src/bin/build-keycloak-theme/generateFtl.ts"
] ]
}, },
"semanticDiagnosticsPerFile": [ "semanticDiagnosticsPerFile": [
@ -1118,7 +1094,6 @@
"../node_modules/domutils/lib/stringify.d.ts", "../node_modules/domutils/lib/stringify.d.ts",
"../node_modules/domutils/lib/tagtypes.d.ts", "../node_modules/domutils/lib/tagtypes.d.ts",
"../node_modules/domutils/lib/traversal.d.ts", "../node_modules/domutils/lib/traversal.d.ts",
"../node_modules/evt/tools/typeSafety/id.d.ts",
"../node_modules/htmlparser2/lib/FeedHandler.d.ts", "../node_modules/htmlparser2/lib/FeedHandler.d.ts",
"../node_modules/htmlparser2/lib/Parser.d.ts", "../node_modules/htmlparser2/lib/Parser.d.ts",
"../node_modules/htmlparser2/lib/Tokenizer.d.ts", "../node_modules/htmlparser2/lib/Tokenizer.d.ts",
@ -1160,8 +1135,7 @@
"../src/bin/build-keycloak-theme/index.ts", "../src/bin/build-keycloak-theme/index.ts",
"../src/bin/build-keycloak-theme/replaceImportFromStatic.ts", "../src/bin/build-keycloak-theme/replaceImportFromStatic.ts",
"../src/bin/download-sample-keycloak-themes.ts", "../src/bin/download-sample-keycloak-themes.ts",
"../src/lib/index.ts", "../src/lib/inex.ts",
"../src/lib/keycloakFtlValues.ts",
"../src/test/build-keycloak-theme.ts", "../src/test/build-keycloak-theme.ts",
"../src/test/download-sample-keycloak-themes.ts", "../src/test/download-sample-keycloak-themes.ts",
"../src/test/generateKeycloakThemeResources.ts", "../src/test/generateKeycloakThemeResources.ts",