keycloakify 7.6.1 → 7.6.3
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/account/kcContext/getKcContext.js +3 -1
- package/account/kcContext/getKcContext.js.map +1 -1
- package/bin/download-builtin-keycloak-theme.js +6 -2
- package/bin/download-builtin-keycloak-theme.js.map +1 -1
- package/bin/eject-keycloak-page.js +6 -6
- package/bin/eject-keycloak-page.js.map +1 -1
- package/bin/getSrcDirPath.d.ts +12 -0
- package/bin/getSrcDirPath.js +60 -0
- package/bin/getSrcDirPath.js.map +1 -0
- package/bin/initialize-email-theme.js +4 -2
- package/bin/initialize-email-theme.js.map +1 -1
- package/bin/keycloakify/BuildOptions.d.ts +5 -3
- package/bin/keycloakify/BuildOptions.js +62 -5
- package/bin/keycloakify/BuildOptions.js.map +1 -1
- package/bin/keycloakify/generateFtl/generateFtl.d.ts +0 -4
- package/bin/keycloakify/generateFtl/generateFtl.js +1 -27
- package/bin/keycloakify/generateFtl/generateFtl.js.map +1 -1
- package/bin/keycloakify/generateFtl/index.d.ts +1 -0
- package/bin/keycloakify/generateFtl/index.js +1 -0
- package/bin/keycloakify/generateFtl/index.js.map +1 -1
- package/bin/keycloakify/generateFtl/pageId.d.ts +4 -0
- package/bin/keycloakify/generateFtl/pageId.js +30 -0
- package/bin/keycloakify/generateFtl/pageId.js.map +1 -0
- package/bin/keycloakify/keycloakify.js +13 -19
- package/bin/keycloakify/keycloakify.js.map +1 -1
- package/bin/keycloakify/parsedPackageJson.d.ts +26 -3
- package/bin/keycloakify/parsedPackageJson.js +8 -7
- package/bin/keycloakify/parsedPackageJson.js.map +1 -1
- package/login/kcContext/getKcContext.js +2 -1
- package/login/kcContext/getKcContext.js.map +1 -1
- package/login/lib/useDownloadTerms.d.ts +1 -2
- package/login/pages/Terms.js +3 -2
- package/login/pages/Terms.js.map +1 -1
- package/package.json +9 -5
- package/src/account/kcContext/getKcContext.ts +3 -1
- package/src/bin/download-builtin-keycloak-theme.ts +12 -2
- package/src/bin/eject-keycloak-page.ts +5 -5
- package/src/bin/getSrcDirPath.ts +43 -0
- package/src/bin/initialize-email-theme.ts +4 -2
- package/src/bin/keycloakify/BuildOptions.ts +53 -10
- package/src/bin/keycloakify/generateFtl/generateFtl.ts +0 -31
- package/src/bin/keycloakify/generateFtl/index.ts +1 -0
- package/src/bin/keycloakify/generateFtl/pageId.ts +30 -0
- package/src/bin/keycloakify/keycloakify.ts +14 -21
- package/src/bin/keycloakify/parsedPackageJson.ts +12 -10
- package/src/login/kcContext/getKcContext.ts +2 -1
- package/src/login/lib/useDownloadTerms.ts +1 -1
- package/src/login/pages/Terms.tsx +6 -2
- package/bin/keycloakify/build-paths.d.ts +0 -12
- package/bin/keycloakify/build-paths.js +0 -93
- package/bin/keycloakify/build-paths.js.map +0 -1
- package/src/bin/keycloakify/build-paths.ts +0 -72
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"keycloakify.js","sourceRoot":"","sources":["../../src/bin/keycloakify/keycloakify.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mFAAkF;AAClF,mEAAkE;AAClE,6BAA4G;AAC5G,2DAA+C;AAC/C,iGAAgG;AAChG,qCAAyB;AACzB,+CAAkD;AAClD,0CAA4C;AAC5C,kDAAoD;AACpD,qDAA+B;AAC/B,uCAAsC;AAEtC,
|
1
|
+
{"version":3,"file":"keycloakify.js","sourceRoot":"","sources":["../../src/bin/keycloakify/keycloakify.ts"],"names":[],"mappings":"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"}
|
@@ -1,6 +1,29 @@
|
|
1
1
|
export declare const bundlers: readonly ["mvn", "keycloakify", "none"];
|
2
2
|
export type Bundler = (typeof bundlers)[number];
|
3
|
-
export
|
3
|
+
export type ParsedPackageJson = {
|
4
|
+
name: string;
|
5
|
+
version: string;
|
6
|
+
homepage?: string;
|
7
|
+
keycloakify?: {
|
8
|
+
/** @deprecated: use extraLoginPages instead */
|
9
|
+
extraPages?: string[];
|
10
|
+
extraLoginPages?: string[];
|
11
|
+
extraAccountPages?: string[];
|
12
|
+
extraThemeProperties?: string[];
|
13
|
+
areAppAndKeycloakServerSharingSameDomain?: boolean;
|
14
|
+
artifactId?: string;
|
15
|
+
groupId?: string;
|
16
|
+
bundler?: Bundler;
|
17
|
+
keycloakVersionDefaultAssets?: string;
|
18
|
+
reactAppBuildDirPath?: string;
|
19
|
+
keycloakifyBuildDirPath?: string;
|
20
|
+
customUserAttributes?: string[];
|
21
|
+
themeName?: string;
|
22
|
+
};
|
23
|
+
};
|
24
|
+
export declare function getParsedPackageJson(params: {
|
25
|
+
projectDirPath: string;
|
26
|
+
}): {
|
4
27
|
name: string;
|
5
28
|
version: string;
|
6
29
|
homepage?: string | undefined;
|
@@ -14,8 +37,8 @@ export declare const getParsedPackageJson: () => {
|
|
14
37
|
groupId?: string | undefined;
|
15
38
|
bundler?: "keycloakify" | "none" | "mvn" | undefined;
|
16
39
|
keycloakVersionDefaultAssets?: string | undefined;
|
17
|
-
|
18
|
-
|
40
|
+
reactAppBuildDirPath?: string | undefined;
|
41
|
+
keycloakifyBuildDirPath?: string | undefined;
|
19
42
|
customUserAttributes?: string[] | undefined;
|
20
43
|
themeName?: string | undefined;
|
21
44
|
} | undefined;
|
@@ -28,7 +28,6 @@ var fs = __importStar(require("fs"));
|
|
28
28
|
var tsafe_1 = require("tsafe");
|
29
29
|
var zod_1 = require("zod");
|
30
30
|
var pathJoin_1 = require("../tools/pathJoin");
|
31
|
-
var reactProjectDirPath = process.cwd();
|
32
31
|
exports.bundlers = ["mvn", "keycloakify", "none"];
|
33
32
|
var zParsedPackageJson = zod_1.z.object({
|
34
33
|
"name": zod_1.z.string(),
|
@@ -45,8 +44,8 @@ var zParsedPackageJson = zod_1.z.object({
|
|
45
44
|
"groupId": zod_1.z.string().optional(),
|
46
45
|
"bundler": zod_1.z.enum(exports.bundlers).optional(),
|
47
46
|
"keycloakVersionDefaultAssets": zod_1.z.string().optional(),
|
48
|
-
"
|
49
|
-
"
|
47
|
+
"reactAppBuildDirPath": zod_1.z.string().optional(),
|
48
|
+
"keycloakifyBuildDirPath": zod_1.z.string().optional(),
|
50
49
|
"customUserAttributes": zod_1.z.array(zod_1.z.string()).optional(),
|
51
50
|
"themeName": zod_1.z.string().optional()
|
52
51
|
})
|
@@ -54,11 +53,13 @@ var zParsedPackageJson = zod_1.z.object({
|
|
54
53
|
});
|
55
54
|
(0, tsafe_1.assert)();
|
56
55
|
var parsedPackageJson;
|
57
|
-
|
58
|
-
|
56
|
+
function getParsedPackageJson(params) {
|
57
|
+
var projectDirPath = params.projectDirPath;
|
58
|
+
if (parsedPackageJson) {
|
59
59
|
return parsedPackageJson;
|
60
|
-
|
60
|
+
}
|
61
|
+
parsedPackageJson = zParsedPackageJson.parse(JSON.parse(fs.readFileSync((0, pathJoin_1.pathJoin)(projectDirPath, "package.json")).toString("utf8")));
|
61
62
|
return parsedPackageJson;
|
62
|
-
}
|
63
|
+
}
|
63
64
|
exports.getParsedPackageJson = getParsedPackageJson;
|
64
65
|
//# sourceMappingURL=parsedPackageJson.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"parsedPackageJson.js","sourceRoot":"","sources":["../../src/bin/keycloakify/parsedPackageJson.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAyB;AACzB,+BAA+B;AAE/B,2BAAwB;AACxB,8CAA6C;
|
1
|
+
{"version":3,"file":"parsedPackageJson.js","sourceRoot":"","sources":["../../src/bin/keycloakify/parsedPackageJson.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAyB;AACzB,+BAA+B;AAE/B,2BAAwB;AACxB,8CAA6C;AAEhC,QAAA,QAAQ,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAU,CAAC;AAwBhE,IAAM,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,aAAa,EAAE,OAAC;SACX,MAAM,CAAC;QACJ,YAAY,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC5C,iBAAiB,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QACjD,mBAAmB,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QACnD,sBAAsB,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QACtD,0CAA0C,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAClE,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,SAAS,EAAE,OAAC,CAAC,IAAI,CAAC,gBAAQ,CAAC,CAAC,QAAQ,EAAE;QACtC,8BAA8B,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACrD,sBAAsB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7C,yBAAyB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChD,sBAAsB,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QACtD,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACrC,CAAC;SACD,QAAQ,EAAE;CAClB,CAAC,CAAC;AAEH,IAAA,cAAM,GAA+E,CAAC;AAEtF,IAAI,iBAA+E,CAAC;AACpF,SAAgB,oBAAoB,CAAC,MAAkC;IAC3D,IAAA,cAAc,GAAK,MAAM,eAAX,CAAY;IAClC,IAAI,iBAAiB,EAAE;QACnB,OAAO,iBAAiB,CAAC;KAC5B;IACD,iBAAiB,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAA,mBAAQ,EAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrI,OAAO,iBAAiB,CAAC;AAC7B,CAAC;AAPD,oDAOC"}
|
@@ -8,6 +8,7 @@ import { pathJoin } from "../../bin/tools/pathJoin";
|
|
8
8
|
import { pathBasename } from "../../tools/pathBasename";
|
9
9
|
import { mockTestingResourcesCommonPath } from "../../bin/mockTestingResourcesPath";
|
10
10
|
import { symToStr } from "tsafe/symToStr";
|
11
|
+
import { loginThemePageIds } from "../../bin/keycloakify/generateFtl/pageId";
|
11
12
|
export function getKcContext(params) {
|
12
13
|
var _a, _b;
|
13
14
|
const { mockPageId, mockData } = params !== null && params !== void 0 ? params : {};
|
@@ -81,7 +82,7 @@ export function getKcContext(params) {
|
|
81
82
|
if (realKcContext === undefined) {
|
82
83
|
return { "kcContext": undefined };
|
83
84
|
}
|
84
|
-
if (!("login" in realKcContext)) {
|
85
|
+
if (id(loginThemePageIds).indexOf(realKcContext.pageId) < 0 && !("login" in realKcContext)) {
|
85
86
|
return { "kcContext": undefined };
|
86
87
|
}
|
87
88
|
{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getKcContext.js","sourceRoot":"","sources":["../../src/login/kcContext/getKcContext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,EAAE,EAAE,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
1
|
+
{"version":3,"file":"getKcContext.js","sourceRoot":"","sources":["../../src/login/kcContext/getKcContext.ts"],"names":[],"mappings":"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"}
|
@@ -1,7 +1,6 @@
|
|
1
|
-
import { KcContext } from "../kcContext";
|
2
1
|
export declare const evtTermMarkdown: import("evt/lib/types").StatefulEvt<string | undefined>;
|
3
2
|
export type KcContextLike = {
|
4
|
-
pageId:
|
3
|
+
pageId: string;
|
5
4
|
locale?: {
|
6
5
|
currentLanguageTag: string;
|
7
6
|
};
|
package/login/pages/Terms.js
CHANGED
@@ -13,9 +13,10 @@ export default function Terms(props) {
|
|
13
13
|
const { msg, msgStr } = i18n;
|
14
14
|
useRerenderOnStateChange(evtTermMarkdown);
|
15
15
|
const { url } = kcContext;
|
16
|
-
|
16
|
+
const termMarkdown = evtTermMarkdown.state;
|
17
|
+
if (termMarkdown === undefined) {
|
17
18
|
return null;
|
18
19
|
}
|
19
|
-
return (_jsxs(Template, Object.assign({}, { kcContext, i18n, doUseDefaultCss, classes }, { displayMessage: false, headerNode: msg("termsTitle") }, { children: [_jsx("div", Object.assign({ id: "kc-terms-text" }, { children:
|
20
|
+
return (_jsxs(Template, Object.assign({}, { kcContext, i18n, doUseDefaultCss, classes }, { displayMessage: false, headerNode: msg("termsTitle") }, { children: [_jsx("div", Object.assign({ id: "kc-terms-text" }, { children: _jsx(Markdown, { children: termMarkdown }) })), _jsxs("form", Object.assign({ className: "form-actions", action: url.loginAction, method: "POST" }, { children: [_jsx("input", { className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonClass"), getClassName("kcButtonClass"), getClassName("kcButtonPrimaryClass"), getClassName("kcButtonLargeClass")), name: "accept", id: "kc-accept", type: "submit", value: msgStr("doAccept") }), _jsx("input", { className: clsx(getClassName("kcButtonClass"), getClassName("kcButtonDefaultClass"), getClassName("kcButtonLargeClass")), name: "cancel", id: "kc-decline", type: "submit", value: msgStr("doDecline") })] })), _jsx("div", { className: "clearfix" })] })));
|
20
21
|
}
|
21
22
|
//# sourceMappingURL=Terms.js.map
|
package/login/pages/Terms.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Terms.js","sourceRoot":"","sources":["../../src/login/pages/Terms.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAIzE,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,KAAmE;IAC7F,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEtE,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC;QACrC,eAAe;QACf,OAAO;KACV,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE7B,wBAAwB,CAAC,eAAe,CAAC,CAAC;IAE1C,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;IAE1B,
|
1
|
+
{"version":3,"file":"Terms.js","sourceRoot":"","sources":["../../src/login/pages/Terms.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAIzE,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,KAAmE;IAC7F,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEtE,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC;QACrC,eAAe;QACf,OAAO;KACV,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE7B,wBAAwB,CAAC,eAAe,CAAC,CAAC;IAE1C,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;IAE1B,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC;IAE3C,IAAI,YAAY,KAAK,SAAS,EAAE;QAC5B,OAAO,IAAI,CAAC;KACf;IAED,OAAO,CACH,MAAC,QAAQ,oBAAK,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,IAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,iBAC7G,4BAAK,EAAE,EAAC,eAAe,gBACnB,KAAC,QAAQ,cAAE,YAAY,GAAY,IACjC,EACN,8BAAM,SAAS,EAAC,cAAc,EAAC,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAC,MAAM,iBACjE,gBACI,SAAS,EAAE,IAAI,CACX,YAAY,CAAC,eAAe,CAAC,EAC7B,YAAY,CAAC,eAAe,CAAC,EAC7B,YAAY,CAAC,eAAe,CAAC,EAC7B,YAAY,CAAC,sBAAsB,CAAC,EACpC,YAAY,CAAC,oBAAoB,CAAC,CACrC,EACD,IAAI,EAAC,QAAQ,EACb,EAAE,EAAC,WAAW,EACd,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,GAC3B,EACF,gBACI,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,YAAY,CAAC,sBAAsB,CAAC,EAAE,YAAY,CAAC,oBAAoB,CAAC,CAAC,EACxH,IAAI,EAAC,QAAQ,EACb,EAAE,EAAC,YAAY,EACf,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,GAC5B,KACC,EACP,cAAK,SAAS,EAAC,UAAU,GAAG,KACrB,CACd,CAAC;AACN,CAAC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "keycloakify",
|
3
|
-
"version": "7.6.
|
3
|
+
"version": "7.6.3",
|
4
4
|
"description": "Create Keycloak themes using React",
|
5
5
|
"repository": {
|
6
6
|
"type": "git",
|
@@ -68,13 +68,14 @@
|
|
68
68
|
"src/account/pages/Password.tsx",
|
69
69
|
"src/bin/download-builtin-keycloak-theme.ts",
|
70
70
|
"src/bin/eject-keycloak-page.ts",
|
71
|
+
"src/bin/getSrcDirPath.ts",
|
71
72
|
"src/bin/initialize-email-theme.ts",
|
72
73
|
"src/bin/keycloakify/BuildOptions.ts",
|
73
|
-
"src/bin/keycloakify/build-paths.ts",
|
74
74
|
"src/bin/keycloakify/ftlValuesGlobalName.ts",
|
75
75
|
"src/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl",
|
76
76
|
"src/bin/keycloakify/generateFtl/generateFtl.ts",
|
77
77
|
"src/bin/keycloakify/generateFtl/index.ts",
|
78
|
+
"src/bin/keycloakify/generateFtl/pageId.ts",
|
78
79
|
"src/bin/keycloakify/generateJavaStackFiles.ts",
|
79
80
|
"src/bin/keycloakify/generateKeycloakThemeResources.ts",
|
80
81
|
"src/bin/keycloakify/generateStartKeycloakTestingContainer.ts",
|
@@ -315,15 +316,15 @@
|
|
315
316
|
"bin/eject-keycloak-page.d.ts",
|
316
317
|
"bin/eject-keycloak-page.js",
|
317
318
|
"bin/eject-keycloak-page.js.map",
|
319
|
+
"bin/getSrcDirPath.d.ts",
|
320
|
+
"bin/getSrcDirPath.js",
|
321
|
+
"bin/getSrcDirPath.js.map",
|
318
322
|
"bin/initialize-email-theme.d.ts",
|
319
323
|
"bin/initialize-email-theme.js",
|
320
324
|
"bin/initialize-email-theme.js.map",
|
321
325
|
"bin/keycloakify/BuildOptions.d.ts",
|
322
326
|
"bin/keycloakify/BuildOptions.js",
|
323
327
|
"bin/keycloakify/BuildOptions.js.map",
|
324
|
-
"bin/keycloakify/build-paths.d.ts",
|
325
|
-
"bin/keycloakify/build-paths.js",
|
326
|
-
"bin/keycloakify/build-paths.js.map",
|
327
328
|
"bin/keycloakify/ftlValuesGlobalName.d.ts",
|
328
329
|
"bin/keycloakify/ftlValuesGlobalName.js",
|
329
330
|
"bin/keycloakify/ftlValuesGlobalName.js.map",
|
@@ -334,6 +335,9 @@
|
|
334
335
|
"bin/keycloakify/generateFtl/index.d.ts",
|
335
336
|
"bin/keycloakify/generateFtl/index.js",
|
336
337
|
"bin/keycloakify/generateFtl/index.js.map",
|
338
|
+
"bin/keycloakify/generateFtl/pageId.d.ts",
|
339
|
+
"bin/keycloakify/generateFtl/pageId.js",
|
340
|
+
"bin/keycloakify/generateFtl/pageId.js.map",
|
337
341
|
"bin/keycloakify/generateJavaStackFiles.d.ts",
|
338
342
|
"bin/keycloakify/generateJavaStackFiles.js",
|
339
343
|
"bin/keycloakify/generateJavaStackFiles.js.map",
|
@@ -7,6 +7,8 @@ import { pathBasename } from "keycloakify/tools/pathBasename";
|
|
7
7
|
import { mockTestingResourcesCommonPath } from "keycloakify/bin/mockTestingResourcesPath";
|
8
8
|
import { symToStr } from "tsafe/symToStr";
|
9
9
|
import { kcContextMocks, kcContextCommonMock } from "keycloakify/account/kcContext/kcContextMocks";
|
10
|
+
import { id } from "tsafe/id";
|
11
|
+
import { accountThemePageIds } from "keycloakify/bin/keycloakify/generateFtl/pageId";
|
10
12
|
|
11
13
|
export function getKcContext<KcContextExtension extends { pageId: string } = never>(params?: {
|
12
14
|
mockPageId?: ExtendKcContext<KcContextExtension>["pageId"];
|
@@ -62,7 +64,7 @@ export function getKcContext<KcContextExtension extends { pageId: string } = nev
|
|
62
64
|
return { "kcContext": undefined };
|
63
65
|
}
|
64
66
|
|
65
|
-
if (!("account" in realKcContext)) {
|
67
|
+
if (id<readonly string[]>(accountThemePageIds).indexOf(realKcContext.pageId) < 0 && !("account" in realKcContext)) {
|
66
68
|
return { "kcContext": undefined };
|
67
69
|
}
|
68
70
|
|
@@ -4,7 +4,7 @@ import { downloadAndUnzip } from "./tools/downloadAndUnzip";
|
|
4
4
|
import { promptKeycloakVersion } from "./promptKeycloakVersion";
|
5
5
|
import { getCliOptions } from "./tools/cliOptions";
|
6
6
|
import { getLogger } from "./tools/logger";
|
7
|
-
import {
|
7
|
+
import { readBuildOptions } from "./keycloakify/BuildOptions";
|
8
8
|
|
9
9
|
export async function downloadBuiltinKeycloakTheme(params: { keycloakVersion: string; destDirPath: string; isSilent: boolean }) {
|
10
10
|
const { keycloakVersion, destDirPath } = params;
|
@@ -25,7 +25,17 @@ async function main() {
|
|
25
25
|
const logger = getLogger({ isSilent });
|
26
26
|
const { keycloakVersion } = await promptKeycloakVersion();
|
27
27
|
|
28
|
-
const destDirPath = pathJoin(
|
28
|
+
const destDirPath = pathJoin(
|
29
|
+
readBuildOptions({
|
30
|
+
"isSilent": true,
|
31
|
+
"isExternalAssetsCliParamProvided": false,
|
32
|
+
"projectDirPath": process.cwd()
|
33
|
+
}).keycloakifyBuildDirPath,
|
34
|
+
"src",
|
35
|
+
"main",
|
36
|
+
"resources",
|
37
|
+
"theme"
|
38
|
+
);
|
29
39
|
|
30
40
|
logger.log(`Downloading builtins theme of Keycloak ${keycloakVersion} here ${destDirPath}`);
|
31
41
|
|
@@ -9,17 +9,17 @@ import {
|
|
9
9
|
type AccountThemePageId,
|
10
10
|
themeTypes,
|
11
11
|
type ThemeType
|
12
|
-
} from "./keycloakify/generateFtl
|
12
|
+
} from "./keycloakify/generateFtl";
|
13
13
|
import { capitalize } from "tsafe/capitalize";
|
14
14
|
import { readFile, writeFile } from "fs/promises";
|
15
15
|
import { existsSync } from "fs";
|
16
16
|
import { join as pathJoin, relative as pathRelative } from "path";
|
17
17
|
import { kebabCaseToCamelCase } from "./tools/kebabCaseToSnakeCase";
|
18
18
|
import { assert, Equals } from "tsafe/assert";
|
19
|
-
import { getThemeSrcDirPath } from "./
|
19
|
+
import { getThemeSrcDirPath } from "./getSrcDirPath";
|
20
20
|
|
21
21
|
(async () => {
|
22
|
-
const
|
22
|
+
const projectDirPath = getProjectRoot();
|
23
23
|
|
24
24
|
console.log("Select a theme type");
|
25
25
|
|
@@ -51,7 +51,7 @@ import { getThemeSrcDirPath } from "./keycloakify/build-paths";
|
|
51
51
|
|
52
52
|
const pageBasename = capitalize(kebabCaseToCamelCase(pageId)).replace(/ftl$/, "tsx");
|
53
53
|
|
54
|
-
const { themeSrcDirPath } = getThemeSrcDirPath();
|
54
|
+
const { themeSrcDirPath } = getThemeSrcDirPath({ "projectDirPath": projectDirPath });
|
55
55
|
|
56
56
|
if (themeSrcDirPath === undefined) {
|
57
57
|
throw new Error("Couldn't locate your theme sources");
|
@@ -65,7 +65,7 @@ import { getThemeSrcDirPath } from "./keycloakify/build-paths";
|
|
65
65
|
process.exit(-1);
|
66
66
|
}
|
67
67
|
|
68
|
-
writeFile(targetFilePath, await readFile(pathJoin(
|
68
|
+
writeFile(targetFilePath, await readFile(pathJoin(projectDirPath, "src", themeType, "pages", pageBasename)));
|
69
69
|
|
70
70
|
console.log(`${pathRelative(process.cwd(), targetFilePath)} created`);
|
71
71
|
})();
|
@@ -0,0 +1,43 @@
|
|
1
|
+
import * as fs from "fs";
|
2
|
+
import { exclude } from "tsafe";
|
3
|
+
import { crawl } from "./tools/crawl";
|
4
|
+
import { join as pathJoin } from "path";
|
5
|
+
|
6
|
+
const themeSrcDirBasename = "keycloak-theme";
|
7
|
+
|
8
|
+
export function getThemeSrcDirPath(params: { projectDirPath: string }) {
|
9
|
+
const { projectDirPath } = params;
|
10
|
+
|
11
|
+
const srcDirPath = pathJoin(projectDirPath, "src");
|
12
|
+
|
13
|
+
const themeSrcDirPath: string | undefined = crawl(srcDirPath)
|
14
|
+
.map(fileRelativePath => {
|
15
|
+
const split = fileRelativePath.split(themeSrcDirBasename);
|
16
|
+
|
17
|
+
if (split.length !== 2) {
|
18
|
+
return undefined;
|
19
|
+
}
|
20
|
+
|
21
|
+
return pathJoin(srcDirPath, split[0] + themeSrcDirBasename);
|
22
|
+
})
|
23
|
+
.filter(exclude(undefined))[0];
|
24
|
+
|
25
|
+
if (themeSrcDirPath === undefined) {
|
26
|
+
if (fs.existsSync(pathJoin(srcDirPath, "login")) || fs.existsSync(pathJoin(srcDirPath, "account"))) {
|
27
|
+
return { "themeSrcDirPath": srcDirPath };
|
28
|
+
}
|
29
|
+
return { "themeSrcDirPath": undefined };
|
30
|
+
}
|
31
|
+
|
32
|
+
return { themeSrcDirPath };
|
33
|
+
}
|
34
|
+
|
35
|
+
export function getEmailThemeSrcDirPath(params: { projectDirPath: string }) {
|
36
|
+
const { projectDirPath } = params;
|
37
|
+
|
38
|
+
const { themeSrcDirPath } = getThemeSrcDirPath({ projectDirPath });
|
39
|
+
|
40
|
+
const emailThemeSrcDirPath = themeSrcDirPath === undefined ? undefined : pathJoin(themeSrcDirPath, "email");
|
41
|
+
|
42
|
+
return { emailThemeSrcDirPath };
|
43
|
+
}
|
@@ -7,13 +7,15 @@ import { promptKeycloakVersion } from "./promptKeycloakVersion";
|
|
7
7
|
import * as fs from "fs";
|
8
8
|
import { getCliOptions } from "./tools/cliOptions";
|
9
9
|
import { getLogger } from "./tools/logger";
|
10
|
-
import { getEmailThemeSrcDirPath } from "./
|
10
|
+
import { getEmailThemeSrcDirPath } from "./getSrcDirPath";
|
11
11
|
|
12
12
|
export async function main() {
|
13
13
|
const { isSilent } = getCliOptions(process.argv.slice(2));
|
14
14
|
const logger = getLogger({ isSilent });
|
15
15
|
|
16
|
-
const { emailThemeSrcDirPath } = getEmailThemeSrcDirPath(
|
16
|
+
const { emailThemeSrcDirPath } = getEmailThemeSrcDirPath({
|
17
|
+
"projectDirPath": process.cwd()
|
18
|
+
});
|
17
19
|
|
18
20
|
if (emailThemeSrcDirPath === undefined) {
|
19
21
|
logger.warn("Couldn't locate your theme source directory");
|
@@ -4,7 +4,8 @@ import { parse as urlParse } from "url";
|
|
4
4
|
import { typeGuard } from "tsafe/typeGuard";
|
5
5
|
import { symToStr } from "tsafe/symToStr";
|
6
6
|
import { bundlers, getParsedPackageJson, type Bundler } from "./parsedPackageJson";
|
7
|
-
import
|
7
|
+
import * as fs from "fs";
|
8
|
+
import { join as pathJoin, sep as pathSep } from "path";
|
8
9
|
|
9
10
|
/** Consolidated build option gathered form CLI arguments and config in package.json */
|
10
11
|
export type BuildOptions = BuildOptions.Standalone | BuildOptions.ExternalAssets;
|
@@ -21,10 +22,10 @@ export namespace BuildOptions {
|
|
21
22
|
artifactId: string;
|
22
23
|
bundler: Bundler;
|
23
24
|
keycloakVersionDefaultAssets: string;
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
25
|
+
/** Directory of your built react project. Defaults to {cwd}/build */
|
26
|
+
reactAppBuildDirPath: string;
|
27
|
+
/** Directory that keycloakify outputs to. Defaults to {cwd}/build_keycloak */
|
28
|
+
keycloakifyBuildDirPath: string;
|
28
29
|
customUserAttributes: string[];
|
29
30
|
};
|
30
31
|
|
@@ -52,10 +53,10 @@ export namespace BuildOptions {
|
|
52
53
|
}
|
53
54
|
}
|
54
55
|
|
55
|
-
export function readBuildOptions(params: {
|
56
|
-
const {
|
56
|
+
export function readBuildOptions(params: { projectDirPath: string; isExternalAssetsCliParamProvided: boolean; isSilent: boolean }): BuildOptions {
|
57
|
+
const { projectDirPath, isExternalAssetsCliParamProvided, isSilent } = params;
|
57
58
|
|
58
|
-
const parsedPackageJson = getParsedPackageJson();
|
59
|
+
const parsedPackageJson = getParsedPackageJson({ projectDirPath });
|
59
60
|
|
60
61
|
const url = (() => {
|
61
62
|
const { homepage } = parsedPackageJson;
|
@@ -66,6 +67,16 @@ export function readBuildOptions(params: { CNAME: string | undefined; isExternal
|
|
66
67
|
url = new URL(homepage);
|
67
68
|
}
|
68
69
|
|
70
|
+
const CNAME = (() => {
|
71
|
+
const cnameFilePath = pathJoin(projectDirPath, "public", "CNAME");
|
72
|
+
|
73
|
+
if (!fs.existsSync(cnameFilePath)) {
|
74
|
+
return undefined;
|
75
|
+
}
|
76
|
+
|
77
|
+
return fs.readFileSync(cnameFilePath).toString("utf8");
|
78
|
+
})();
|
79
|
+
|
69
80
|
if (CNAME !== undefined) {
|
70
81
|
url = new URL(`https://${CNAME.replace(/\s+$/, "")}`);
|
71
82
|
}
|
@@ -134,8 +145,40 @@ export function readBuildOptions(params: { CNAME: string | undefined; isExternal
|
|
134
145
|
extraThemeProperties,
|
135
146
|
isSilent,
|
136
147
|
"keycloakVersionDefaultAssets": keycloakVersionDefaultAssets ?? "11.0.3",
|
137
|
-
|
138
|
-
|
148
|
+
"reactAppBuildDirPath": (() => {
|
149
|
+
let { reactAppBuildDirPath = undefined } = parsedPackageJson.keycloakify ?? {};
|
150
|
+
|
151
|
+
if (reactAppBuildDirPath === undefined) {
|
152
|
+
return pathJoin(projectDirPath, "build");
|
153
|
+
}
|
154
|
+
|
155
|
+
if (pathSep === "\\") {
|
156
|
+
reactAppBuildDirPath = reactAppBuildDirPath.replace(/\//g, pathSep);
|
157
|
+
}
|
158
|
+
|
159
|
+
if (reactAppBuildDirPath.startsWith(`.${pathSep}`)) {
|
160
|
+
return pathJoin(projectDirPath, reactAppBuildDirPath);
|
161
|
+
}
|
162
|
+
|
163
|
+
return reactAppBuildDirPath;
|
164
|
+
})(),
|
165
|
+
"keycloakifyBuildDirPath": (() => {
|
166
|
+
let { keycloakifyBuildDirPath = undefined } = parsedPackageJson.keycloakify ?? {};
|
167
|
+
|
168
|
+
if (keycloakifyBuildDirPath === undefined) {
|
169
|
+
return pathJoin(projectDirPath, "build_keycloak");
|
170
|
+
}
|
171
|
+
|
172
|
+
if (pathSep === "\\") {
|
173
|
+
keycloakifyBuildDirPath = keycloakifyBuildDirPath.replace(/\//g, pathSep);
|
174
|
+
}
|
175
|
+
|
176
|
+
if (keycloakifyBuildDirPath.startsWith(`.${pathSep}`)) {
|
177
|
+
return pathJoin(projectDirPath, keycloakifyBuildDirPath);
|
178
|
+
}
|
179
|
+
|
180
|
+
return keycloakifyBuildDirPath;
|
181
|
+
})(),
|
139
182
|
"customUserAttributes": keycloakify.customUserAttributes ?? []
|
140
183
|
};
|
141
184
|
})();
|
@@ -13,37 +13,6 @@ export const themeTypes = ["login", "account"] as const;
|
|
13
13
|
|
14
14
|
export type ThemeType = (typeof themeTypes)[number];
|
15
15
|
|
16
|
-
export const loginThemePageIds = [
|
17
|
-
"login.ftl",
|
18
|
-
"login-username.ftl",
|
19
|
-
"login-password.ftl",
|
20
|
-
"webauthn-authenticate.ftl",
|
21
|
-
"register.ftl",
|
22
|
-
"register-user-profile.ftl",
|
23
|
-
"info.ftl",
|
24
|
-
"error.ftl",
|
25
|
-
"login-reset-password.ftl",
|
26
|
-
"login-verify-email.ftl",
|
27
|
-
"terms.ftl",
|
28
|
-
"login-otp.ftl",
|
29
|
-
"login-update-profile.ftl",
|
30
|
-
"login-update-password.ftl",
|
31
|
-
"login-idp-link-confirm.ftl",
|
32
|
-
"login-idp-link-email.ftl",
|
33
|
-
"login-page-expired.ftl",
|
34
|
-
"login-config-totp.ftl",
|
35
|
-
"logout-confirm.ftl",
|
36
|
-
"update-user-profile.ftl",
|
37
|
-
"idp-review-user-profile.ftl",
|
38
|
-
"update-email.ftl",
|
39
|
-
"select-authenticator.ftl"
|
40
|
-
] as const;
|
41
|
-
|
42
|
-
export const accountThemePageIds = ["password.ftl", "account.ftl"] as const;
|
43
|
-
|
44
|
-
export type LoginThemePageId = (typeof loginThemePageIds)[number];
|
45
|
-
export type AccountThemePageId = (typeof accountThemePageIds)[number];
|
46
|
-
|
47
16
|
export type BuildOptionsLike = BuildOptionsLike.Standalone | BuildOptionsLike.ExternalAssets;
|
48
17
|
|
49
18
|
export namespace BuildOptionsLike {
|
@@ -0,0 +1,30 @@
|
|
1
|
+
export const loginThemePageIds = [
|
2
|
+
"login.ftl",
|
3
|
+
"login-username.ftl",
|
4
|
+
"login-password.ftl",
|
5
|
+
"webauthn-authenticate.ftl",
|
6
|
+
"register.ftl",
|
7
|
+
"register-user-profile.ftl",
|
8
|
+
"info.ftl",
|
9
|
+
"error.ftl",
|
10
|
+
"login-reset-password.ftl",
|
11
|
+
"login-verify-email.ftl",
|
12
|
+
"terms.ftl",
|
13
|
+
"login-otp.ftl",
|
14
|
+
"login-update-profile.ftl",
|
15
|
+
"login-update-password.ftl",
|
16
|
+
"login-idp-link-confirm.ftl",
|
17
|
+
"login-idp-link-email.ftl",
|
18
|
+
"login-page-expired.ftl",
|
19
|
+
"login-config-totp.ftl",
|
20
|
+
"logout-confirm.ftl",
|
21
|
+
"update-user-profile.ftl",
|
22
|
+
"idp-review-user-profile.ftl",
|
23
|
+
"update-email.ftl",
|
24
|
+
"select-authenticator.ftl"
|
25
|
+
] as const;
|
26
|
+
|
27
|
+
export const accountThemePageIds = ["password.ftl", "account.ftl"] as const;
|
28
|
+
|
29
|
+
export type LoginThemePageId = (typeof loginThemePageIds)[number];
|
30
|
+
export type AccountThemePageId = (typeof accountThemePageIds)[number];
|