keycloakify 10.1.3 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/account/KcContext/kcContextMocks.js +18 -6
- package/account/KcContext/kcContextMocks.js.map +1 -1
- package/account/Template.js +8 -26
- package/account/Template.js.map +1 -1
- package/account/Template.useInitialize.d.ts +12 -0
- package/account/Template.useInitialize.js +20 -0
- package/account/Template.useInitialize.js.map +1 -0
- package/account/i18n/index.d.ts +5 -5
- package/account/i18n/index.js +1 -1
- package/account/i18n/index.js.map +1 -1
- package/account/i18n/messages_defaultSet/types.d.ts +3 -0
- package/account/i18n/messages_defaultSet/types.js +26 -0
- package/account/i18n/messages_defaultSet/types.js.map +1 -0
- package/account/i18n/noJsx/GenericI18n_noJsx.d.ts +63 -0
- package/account/i18n/noJsx/GenericI18n_noJsx.js +2 -0
- package/account/i18n/noJsx/GenericI18n_noJsx.js.map +1 -0
- package/account/i18n/noJsx/getI18n.d.ts +41 -0
- package/account/i18n/noJsx/getI18n.js +207 -0
- package/account/i18n/noJsx/getI18n.js.map +1 -0
- package/account/i18n/noJsx/i18nBuilder.d.ts +18 -0
- package/account/i18n/noJsx/i18nBuilder.js +27 -0
- package/account/i18n/noJsx/i18nBuilder.js.map +1 -0
- package/account/i18n/noJsx/index.d.ts +3 -0
- package/account/i18n/noJsx/index.js +2 -0
- package/account/i18n/noJsx/index.js.map +1 -0
- package/account/i18n/withJsx/GenericI18n.d.ts +72 -0
- package/account/i18n/withJsx/GenericI18n.js +5 -0
- package/account/i18n/withJsx/GenericI18n.js.map +1 -0
- package/account/i18n/withJsx/i18nBuilder.d.ts +18 -0
- package/account/i18n/withJsx/i18nBuilder.js +27 -0
- package/account/i18n/withJsx/i18nBuilder.js.map +1 -0
- package/account/i18n/withJsx/index.d.ts +3 -0
- package/account/i18n/withJsx/index.js +2 -0
- package/account/i18n/withJsx/index.js.map +1 -0
- package/account/i18n/withJsx/useI18n.d.ts +27 -0
- package/account/i18n/{useI18n.js → withJsx/useI18n.js} +6 -4
- package/account/i18n/withJsx/useI18n.js.map +1 -0
- package/account/index.d.ts +1 -1
- package/account/index.js +1 -1
- package/account/index.js.map +1 -1
- package/account/pages/Totp.js +3 -2
- package/account/pages/Totp.js.map +1 -1
- package/bin/246.index.js +191 -191
- package/bin/499.index.js +252 -68
- package/bin/main.js +1 -1
- package/lib/kcSanitize/HtmlPolicyBuilder.d.ts +28 -0
- package/lib/kcSanitize/HtmlPolicyBuilder.js +209 -0
- package/lib/kcSanitize/HtmlPolicyBuilder.js.map +1 -0
- package/lib/kcSanitize/KcSanitizer.d.ts +12 -0
- package/lib/kcSanitize/KcSanitizer.js +46 -0
- package/lib/kcSanitize/KcSanitizer.js.map +1 -0
- package/lib/kcSanitize/KcSanitizerPolicy.d.ts +24 -0
- package/lib/kcSanitize/KcSanitizerPolicy.js +149 -0
- package/lib/kcSanitize/KcSanitizerPolicy.js.map +1 -0
- package/lib/kcSanitize/index.d.ts +1 -0
- package/lib/kcSanitize/index.js +5 -0
- package/lib/kcSanitize/index.js.map +1 -0
- package/login/KcContext/kcContextMocks.js +24 -6
- package/login/KcContext/kcContextMocks.js.map +1 -1
- package/login/Template.js +7 -7
- package/login/Template.js.map +1 -1
- package/login/{Template.useStylesAndScripts.d.ts → Template.useInitialize.d.ts} +1 -4
- package/login/{Template.useStylesAndScripts.js → Template.useInitialize.js} +5 -23
- package/login/Template.useInitialize.js.map +1 -0
- package/login/i18n/index.d.ts +5 -5
- package/login/i18n/index.js +1 -1
- package/login/i18n/index.js.map +1 -1
- package/login/i18n/messages_defaultSet/types.d.ts +3 -0
- package/login/i18n/messages_defaultSet/types.js +33 -0
- package/login/i18n/messages_defaultSet/types.js.map +1 -0
- package/login/i18n/noJsx/GenericI18n_noJsx.d.ts +63 -0
- package/login/i18n/noJsx/GenericI18n_noJsx.js +2 -0
- package/login/i18n/noJsx/GenericI18n_noJsx.js.map +1 -0
- package/login/i18n/noJsx/getI18n.d.ts +41 -0
- package/login/i18n/noJsx/getI18n.js +207 -0
- package/login/i18n/noJsx/getI18n.js.map +1 -0
- package/login/i18n/noJsx/i18nBuilder.d.ts +18 -0
- package/login/i18n/noJsx/i18nBuilder.js +27 -0
- package/login/i18n/noJsx/i18nBuilder.js.map +1 -0
- package/login/i18n/noJsx/index.d.ts +3 -0
- package/login/i18n/noJsx/index.js +2 -0
- package/login/i18n/noJsx/index.js.map +1 -0
- package/login/i18n/withJsx/GenericI18n.d.ts +72 -0
- package/login/i18n/withJsx/GenericI18n.js +5 -0
- package/login/i18n/withJsx/GenericI18n.js.map +1 -0
- package/login/i18n/withJsx/i18nBuilder.d.ts +18 -0
- package/login/i18n/withJsx/i18nBuilder.js +27 -0
- package/login/i18n/withJsx/i18nBuilder.js.map +1 -0
- package/login/i18n/withJsx/index.d.ts +3 -0
- package/login/i18n/withJsx/index.js +2 -0
- package/login/i18n/withJsx/index.js.map +1 -0
- package/login/i18n/withJsx/useI18n.d.ts +27 -0
- package/login/i18n/{useI18n.js → withJsx/useI18n.js} +6 -4
- package/login/i18n/withJsx/useI18n.js.map +1 -0
- package/login/index.d.ts +1 -1
- package/login/index.js +1 -1
- package/login/index.js.map +1 -1
- package/login/lib/useUserProfileForm.d.ts +1 -1
- package/login/lib/useUserProfileForm.js +2 -1
- package/login/lib/useUserProfileForm.js.map +1 -1
- package/login/pages/Error.js +2 -1
- package/login/pages/Error.js.map +1 -1
- package/login/pages/Info.js +4 -3
- package/login/pages/Info.js.map +1 -1
- package/login/pages/Login.js +4 -3
- package/login/pages/Login.js.map +1 -1
- package/login/pages/LoginConfigTotp.js +3 -2
- package/login/pages/LoginConfigTotp.js.map +1 -1
- package/login/pages/LoginOtp.js +2 -1
- package/login/pages/LoginOtp.js.map +1 -1
- package/login/pages/LoginPassword.js +2 -1
- package/login/pages/LoginPassword.js.map +1 -1
- package/login/pages/LoginRecoveryAuthnCodeInput.js +2 -1
- package/login/pages/LoginRecoveryAuthnCodeInput.js.map +1 -1
- package/login/pages/LoginResetPassword.js +2 -1
- package/login/pages/LoginResetPassword.js.map +1 -1
- package/login/pages/LoginUpdatePassword.js +3 -2
- package/login/pages/LoginUpdatePassword.js.map +1 -1
- package/login/pages/Register.js +2 -1
- package/login/pages/Register.js.map +1 -1
- package/package.json +110 -31
- package/src/account/KcContext/kcContextMocks.ts +49 -29
- package/src/account/Template.tsx +11 -32
- package/src/account/Template.useInitialize.ts +35 -0
- package/src/account/i18n/index.ts +5 -5
- package/src/account/i18n/messages_defaultSet/types.ts +30 -0
- package/src/account/i18n/noJsx/GenericI18n_noJsx.ts +64 -0
- package/src/account/i18n/noJsx/getI18n.tsx +341 -0
- package/src/account/i18n/noJsx/i18nBuilder.ts +117 -0
- package/src/account/i18n/noJsx/index.ts +3 -0
- package/src/account/i18n/withJsx/GenericI18n.tsx +81 -0
- package/src/account/i18n/withJsx/i18nBuilder.ts +117 -0
- package/src/account/i18n/withJsx/index.ts +3 -0
- package/src/{login/i18n → account/i18n/withJsx}/useI18n.tsx +43 -11
- package/src/account/index.ts +1 -1
- package/src/account/pages/Totp.tsx +3 -2
- package/src/bin/initialize-account-theme/src/multi-page/i18n.ts +10 -3
- package/src/bin/keycloakify/generateFtl/kcContextDeclarationTemplate.ftl +15 -0
- package/src/bin/keycloakify/generateResources/generateMessageProperties.ts +371 -121
- package/src/bin/keycloakify/generateResources/generateResources.ts +8 -6
- package/src/bin/keycloakify/generateResources/generateResourcesForMainTheme.ts +61 -29
- package/src/bin/keycloakify/generateResources/generateResourcesForThemeVariant.ts +15 -9
- package/src/lib/kcSanitize/HtmlPolicyBuilder.ts +252 -0
- package/src/lib/kcSanitize/KcSanitizer.ts +60 -0
- package/src/lib/kcSanitize/KcSanitizerPolicy.ts +294 -0
- package/src/lib/kcSanitize/index.ts +5 -0
- package/src/login/KcContext/kcContextMocks.ts +54 -29
- package/src/login/Template.tsx +11 -17
- package/src/login/{Template.useStylesAndScripts.ts → Template.useInitialize.ts} +5 -29
- package/src/login/i18n/index.ts +5 -5
- package/src/login/i18n/messages_defaultSet/types.ts +37 -0
- package/src/login/i18n/noJsx/GenericI18n_noJsx.ts +64 -0
- package/src/login/i18n/noJsx/getI18n.tsx +341 -0
- package/src/login/i18n/noJsx/i18nBuilder.ts +117 -0
- package/src/login/i18n/noJsx/index.ts +3 -0
- package/src/login/i18n/withJsx/GenericI18n.tsx +81 -0
- package/src/login/i18n/withJsx/i18nBuilder.ts +117 -0
- package/src/login/i18n/withJsx/index.ts +3 -0
- package/src/{account/i18n → login/i18n/withJsx}/useI18n.tsx +43 -11
- package/src/login/index.ts +1 -1
- package/src/login/lib/useUserProfileForm.tsx +3 -2
- package/src/login/pages/Error.tsx +2 -1
- package/src/login/pages/Info.tsx +13 -10
- package/src/login/pages/Login.tsx +4 -3
- package/src/login/pages/LoginConfigTotp.tsx +3 -2
- package/src/login/pages/LoginOtp.tsx +2 -1
- package/src/login/pages/LoginPassword.tsx +2 -1
- package/src/login/pages/LoginRecoveryAuthnCodeInput.tsx +2 -1
- package/src/login/pages/LoginResetPassword.tsx +2 -1
- package/src/login/pages/LoginUpdatePassword.tsx +3 -2
- package/src/login/pages/Register.tsx +2 -1
- package/src/tools/useInsertScriptTags.ts +1 -1
- package/src/tools/vendor/dompurify.ts +3 -0
- package/stories/intro/intro.stories.tsx +0 -1
- package/tools/useInsertScriptTags.d.ts +1 -1
- package/tools/vendor/dompurify.d.ts +2 -0
- package/tools/vendor/dompurify.js +2 -0
- package/account/i18n/GenericI18n.d.ts +0 -6
- package/account/i18n/GenericI18n.js +0 -2
- package/account/i18n/GenericI18n.js.map +0 -1
- package/account/i18n/i18n.d.ts +0 -87
- package/account/i18n/i18n.js +0 -111
- package/account/i18n/i18n.js.map +0 -1
- package/account/i18n/useI18n.d.ts +0 -14
- package/account/i18n/useI18n.js.map +0 -1
- package/login/Template.useStylesAndScripts.js.map +0 -1
- package/login/i18n/GenericI18n.d.ts +0 -6
- package/login/i18n/GenericI18n.js +0 -2
- package/login/i18n/GenericI18n.js.map +0 -1
- package/login/i18n/i18n.d.ts +0 -87
- package/login/i18n/i18n.js +0 -113
- package/login/i18n/i18n.js.map +0 -1
- package/login/i18n/useI18n.d.ts +0 -14
- package/login/i18n/useI18n.js.map +0 -1
- package/src/account/i18n/GenericI18n.tsx +0 -6
- package/src/account/i18n/i18n.tsx +0 -250
- package/src/login/i18n/GenericI18n.tsx +0 -6
- package/src/login/i18n/i18n.tsx +0 -252
package/bin/499.index.js
CHANGED
@@ -19,12 +19,13 @@ exports.modules = {
|
|
19
19
|
/* harmony import */ var _babel_generator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(92332);
|
20
20
|
/* harmony import */ var _babel_types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(7912);
|
21
21
|
/* harmony import */ var _babel_types__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_types__WEBPACK_IMPORTED_MODULE_7__);
|
22
|
-
/* harmony import */ var
|
22
|
+
/* harmony import */ var _tools_escapeStringForPropertiesFile__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(27190);
|
23
23
|
/* harmony import */ var _tools_getThisCodebaseRootDirPath__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(58822);
|
24
24
|
/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(57147);
|
25
25
|
/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_9__);
|
26
26
|
/* harmony import */ var tsafe_assert__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(88078);
|
27
27
|
/* harmony import */ var tsafe_assert__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(tsafe_assert__WEBPACK_IMPORTED_MODULE_10__);
|
28
|
+
/* harmony import */ var _tools_getAbsoluteAndInOsFormatPath__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(84794);
|
28
29
|
|
29
30
|
|
30
31
|
|
@@ -37,19 +38,19 @@ exports.modules = {
|
|
37
38
|
|
38
39
|
|
39
40
|
|
41
|
+
|
42
|
+
(0,tsafe_assert__WEBPACK_IMPORTED_MODULE_10__.assert)();
|
40
43
|
function generateMessageProperties(params) {
|
41
|
-
const {
|
44
|
+
const { buildContext, themeType } = params;
|
42
45
|
const baseMessagesDirPath = (0,path__WEBPACK_IMPORTED_MODULE_2__.join)((0,_tools_getThisCodebaseRootDirPath__WEBPACK_IMPORTED_MODULE_8__/* .getThisCodebaseRootDirPath */ .e)(), "src", themeType, "i18n", "messages_defaultSet");
|
43
|
-
const
|
44
|
-
.filter(
|
46
|
+
const messages_defaultSet_by_languageTag_defaultSet = Object.fromEntries(fs__WEBPACK_IMPORTED_MODULE_9__.readdirSync(baseMessagesDirPath)
|
47
|
+
.filter(basename => basename !== "index.ts" && basename !== "types.ts")
|
45
48
|
.map(basename => ({
|
46
49
|
languageTag: basename.replace(/\.ts$/, ""),
|
47
50
|
filePath: (0,path__WEBPACK_IMPORTED_MODULE_2__.join)(baseMessagesDirPath, basename)
|
48
51
|
}))
|
49
52
|
.map(({ languageTag, filePath }) => {
|
50
|
-
const lines = fs__WEBPACK_IMPORTED_MODULE_9__.readFileSync(filePath)
|
51
|
-
.toString("utf8")
|
52
|
-
.split(/\r?\n/);
|
53
|
+
const lines = fs__WEBPACK_IMPORTED_MODULE_9__.readFileSync(filePath).toString("utf8").split(/\r?\n/);
|
53
54
|
let messagesJson = "{";
|
54
55
|
let isInDeclaration = false;
|
55
56
|
for (const line of lines) {
|
@@ -70,7 +71,7 @@ function generateMessageProperties(params) {
|
|
70
71
|
}));
|
71
72
|
const { i18nTsFilePath } = (() => {
|
72
73
|
let files = (0,_tools_crawl__WEBPACK_IMPORTED_MODULE_1__/* .crawl */ .J)({
|
73
|
-
dirPath: (0,path__WEBPACK_IMPORTED_MODULE_2__.join)(themeSrcDirPath, themeType),
|
74
|
+
dirPath: (0,path__WEBPACK_IMPORTED_MODULE_2__.join)(buildContext.themeSrcDirPath, themeType),
|
74
75
|
returnedPathsType: "absolute"
|
75
76
|
});
|
76
77
|
files = files.filter(file => {
|
@@ -84,72 +85,231 @@ function generateMessageProperties(params) {
|
|
84
85
|
return aIsI18nFile === bIsI18nFile ? 0 : aIsI18nFile ? -1 : 1;
|
85
86
|
});
|
86
87
|
files = files.sort((a, b) => a.length - b.length);
|
87
|
-
files = files.filter(file => fs__WEBPACK_IMPORTED_MODULE_9__.readFileSync(file).toString("utf8").includes("
|
88
|
+
files = files.filter(file => fs__WEBPACK_IMPORTED_MODULE_9__.readFileSync(file).toString("utf8").includes("i18nBuilder"));
|
88
89
|
const i18nTsFilePath = files[0];
|
89
90
|
return { i18nTsFilePath };
|
90
91
|
})();
|
91
|
-
const
|
92
|
+
const i18nTsRoot = (() => {
|
92
93
|
if (i18nTsFilePath === undefined) {
|
93
94
|
return undefined;
|
94
95
|
}
|
95
|
-
const root =
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
96
|
+
const root = recastParseTs(i18nTsFilePath);
|
97
|
+
return root;
|
98
|
+
})();
|
99
|
+
const messages_defaultSet_by_languageTag_notInDefaultSet = (() => {
|
100
|
+
if (i18nTsRoot === undefined) {
|
101
|
+
return undefined;
|
102
|
+
}
|
103
|
+
let extraLanguageEntryByLanguageTag = {};
|
104
|
+
recast__WEBPACK_IMPORTED_MODULE_4__/* .visit */ .Vn(i18nTsRoot, {
|
105
|
+
visitCallExpression: function (path) {
|
106
|
+
const node = path.node;
|
107
|
+
// Check if the callee is a MemberExpression with property 'withExtraLanguages'
|
108
|
+
if (node.callee.type === "MemberExpression" &&
|
109
|
+
node.callee.property.type === "Identifier" &&
|
110
|
+
node.callee.property.name === "withExtraLanguages") {
|
111
|
+
const arg = node.arguments[0];
|
112
|
+
if (arg && arg.type === "ObjectExpression") {
|
113
|
+
// Iterate over the properties of the object
|
114
|
+
arg.properties.forEach(prop => {
|
115
|
+
if (prop.type === "ObjectProperty" &&
|
116
|
+
prop.key.type === "Identifier") {
|
117
|
+
const lang = prop.key.name;
|
118
|
+
const value = prop.value;
|
119
|
+
if (value.type === "ObjectExpression") {
|
120
|
+
let label = undefined;
|
121
|
+
let pathStr = undefined;
|
122
|
+
// Iterate over the properties of the language object
|
123
|
+
value.properties.forEach(p => {
|
124
|
+
if (p.type === "ObjectProperty" &&
|
125
|
+
p.key.type === "Identifier") {
|
126
|
+
if (p.key.name === "label" &&
|
127
|
+
p.value.type === "StringLiteral") {
|
128
|
+
label = p.value.value;
|
129
|
+
}
|
130
|
+
if (p.key.name === "getMessages" &&
|
131
|
+
(p.value.type ===
|
132
|
+
"ArrowFunctionExpression" ||
|
133
|
+
p.value.type === "FunctionExpression")) {
|
134
|
+
// Extract the import path from the function body
|
135
|
+
const body = p.value.body;
|
136
|
+
if (body.type === "CallExpression" &&
|
137
|
+
body.callee.type === "Import") {
|
138
|
+
const importArg = body.arguments[0];
|
139
|
+
if (importArg.type === "StringLiteral") {
|
140
|
+
pathStr = importArg.value;
|
141
|
+
}
|
142
|
+
}
|
143
|
+
else if (body.type === "BlockStatement") {
|
144
|
+
// If the function body is a block (e.g., function with braces {})
|
145
|
+
// Look for return statement
|
146
|
+
body.body.forEach(statement => {
|
147
|
+
if (statement.type ===
|
148
|
+
"ReturnStatement" &&
|
149
|
+
statement.argument &&
|
150
|
+
statement.argument.type ===
|
151
|
+
"CallExpression" &&
|
152
|
+
statement.argument.callee
|
153
|
+
.type === "Import") {
|
154
|
+
const importArg = statement.argument
|
155
|
+
.arguments[0];
|
156
|
+
if (importArg.type ===
|
157
|
+
"StringLiteral") {
|
158
|
+
pathStr = importArg.value;
|
159
|
+
}
|
160
|
+
}
|
161
|
+
});
|
162
|
+
}
|
163
|
+
}
|
164
|
+
}
|
165
|
+
});
|
166
|
+
if (label && pathStr) {
|
167
|
+
extraLanguageEntryByLanguageTag[lang] = {
|
168
|
+
label,
|
169
|
+
path: pathStr
|
170
|
+
};
|
171
|
+
}
|
172
|
+
}
|
173
|
+
}
|
174
|
+
});
|
175
|
+
}
|
176
|
+
return false; // Stop traversing this path
|
177
|
+
}
|
178
|
+
this.traverse(path); // Continue traversing other paths
|
103
179
|
}
|
104
180
|
});
|
105
|
-
|
106
|
-
|
181
|
+
const messages_defaultSet_by_languageTag_notInDefaultSet = Object.fromEntries(Object.entries(extraLanguageEntryByLanguageTag).map(([languageTag, { path: relativePathWithoutExt }]) => [
|
182
|
+
languageTag,
|
183
|
+
(() => {
|
184
|
+
const filePath = (0,_tools_getAbsoluteAndInOsFormatPath__WEBPACK_IMPORTED_MODULE_11__/* .getAbsoluteAndInOsFormatPath */ .c)({
|
185
|
+
pathIsh: relativePathWithoutExt.endsWith(".ts")
|
186
|
+
? relativePathWithoutExt
|
187
|
+
: `${relativePathWithoutExt}.ts`,
|
188
|
+
cwd: (0,path__WEBPACK_IMPORTED_MODULE_2__.dirname)(i18nTsFilePath)
|
189
|
+
});
|
190
|
+
const root = recastParseTs(filePath);
|
191
|
+
let declarationCode = "";
|
192
|
+
recast__WEBPACK_IMPORTED_MODULE_4__/* .visit */ .Vn(root, {
|
193
|
+
visitVariableDeclarator: function (path) {
|
194
|
+
const node = path.node;
|
195
|
+
// Check if the variable name is 'messages'
|
196
|
+
if (node.id.type === "Identifier" &&
|
197
|
+
node.id.name === "messages") {
|
198
|
+
// Ensure there is an initializer
|
199
|
+
if (node.init) {
|
200
|
+
// Generate code from the initializer, preserving comments
|
201
|
+
declarationCode = recast__WEBPACK_IMPORTED_MODULE_4__/* .print */ .S0(node.init)
|
202
|
+
.code.replace(/}.*$/, "}");
|
203
|
+
}
|
204
|
+
return false; // Stop traversing this path
|
205
|
+
}
|
206
|
+
this.traverse(path); // Continue traversing other paths
|
207
|
+
}
|
208
|
+
});
|
209
|
+
(0,tsafe_assert__WEBPACK_IMPORTED_MODULE_10__.assert)(declarationCode !== undefined, `${filePath} does not contain a 'messages' variable declaration`);
|
210
|
+
let messages = {};
|
211
|
+
try {
|
212
|
+
eval(`${(0,tsafe_symToStr__WEBPACK_IMPORTED_MODULE_3__/* .symToStr */ .r)({ messages })} = ${declarationCode};`);
|
213
|
+
}
|
214
|
+
catch (_a) {
|
215
|
+
throw new Error(`The declaration of 'message' in ${filePath} cannot be statically evaluated: ${declarationCode}`);
|
216
|
+
}
|
217
|
+
return messages;
|
218
|
+
})()
|
219
|
+
]));
|
220
|
+
return messages_defaultSet_by_languageTag_notInDefaultSet;
|
221
|
+
})();
|
222
|
+
const messages_defaultSet_by_languageTag = Object.assign(Object.assign({}, messages_defaultSet_by_languageTag_defaultSet), messages_defaultSet_by_languageTag_notInDefaultSet);
|
223
|
+
const messages_themeDefined_by_languageTag = (() => {
|
224
|
+
if (i18nTsRoot === undefined) {
|
225
|
+
return undefined;
|
226
|
+
}
|
227
|
+
let firstArgumentCode = undefined;
|
228
|
+
recast__WEBPACK_IMPORTED_MODULE_4__/* .visit */ .Vn(i18nTsRoot, {
|
107
229
|
visitCallExpression: function (path) {
|
108
|
-
|
109
|
-
|
110
|
-
|
230
|
+
const node = path.node;
|
231
|
+
if (node.callee.type === "MemberExpression" &&
|
232
|
+
node.callee.property.type === "Identifier" &&
|
233
|
+
node.callee.property.name === "withCustomTranslations") {
|
234
|
+
firstArgumentCode = (0,_babel_generator__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .ZP)(node.arguments[0]).code;
|
111
235
|
return false;
|
112
236
|
}
|
113
237
|
this.traverse(path);
|
114
238
|
}
|
115
239
|
});
|
116
|
-
(
|
117
|
-
|
240
|
+
if (firstArgumentCode === undefined) {
|
241
|
+
return undefined;
|
242
|
+
}
|
243
|
+
let messages_themeDefined_by_languageTag = {};
|
118
244
|
try {
|
119
|
-
eval(`${(0,tsafe_symToStr__WEBPACK_IMPORTED_MODULE_3__/* .symToStr */ .r)({
|
245
|
+
eval(`${(0,tsafe_symToStr__WEBPACK_IMPORTED_MODULE_3__/* .symToStr */ .r)({ messages_themeDefined_by_languageTag })} = ${firstArgumentCode}`);
|
120
246
|
}
|
121
247
|
catch (_a) {
|
122
248
|
console.warn([
|
123
|
-
"WARNING:
|
124
|
-
"This
|
125
|
-
|
126
|
-
"\n",
|
127
|
-
"The following code could not be evaluated:",
|
128
|
-
"\n",
|
129
|
-
messageBundleDeclarationTsCode
|
249
|
+
"WARNING: The argument of withCustomTranslations can't be statically evaluated!",
|
250
|
+
"This needs to be fixed refer to the documentation: https://docs.keycloakify.dev/i18n",
|
251
|
+
firstArgumentCode
|
130
252
|
].join(" "));
|
253
|
+
return undefined;
|
131
254
|
}
|
132
|
-
return
|
255
|
+
return messages_themeDefined_by_languageTag;
|
133
256
|
})();
|
134
|
-
const
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
:
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
257
|
+
const languageTags = Object.keys(messages_defaultSet_by_languageTag);
|
258
|
+
return {
|
259
|
+
languageTags,
|
260
|
+
writeMessagePropertiesFiles: ({ messageDirPath, themeName }) => {
|
261
|
+
for (const languageTag of languageTags) {
|
262
|
+
const messages = Object.assign({}, messages_defaultSet_by_languageTag[languageTag]);
|
263
|
+
add_theme_defined_messages: {
|
264
|
+
if (messages_themeDefined_by_languageTag === undefined) {
|
265
|
+
break add_theme_defined_messages;
|
266
|
+
}
|
267
|
+
let messages_themeDefined = messages_themeDefined_by_languageTag[languageTag];
|
268
|
+
if (messages_themeDefined === undefined) {
|
269
|
+
messages_themeDefined =
|
270
|
+
messages_themeDefined_by_languageTag[_shared_constants__WEBPACK_IMPORTED_MODULE_0__/* .FALLBACK_LANGUAGE_TAG */ ._L];
|
271
|
+
}
|
272
|
+
if (messages_themeDefined === undefined) {
|
273
|
+
messages_themeDefined =
|
274
|
+
messages_themeDefined_by_languageTag[Object.keys(messages_themeDefined_by_languageTag)[0]];
|
275
|
+
}
|
276
|
+
if (messages_themeDefined === undefined) {
|
277
|
+
break add_theme_defined_messages;
|
278
|
+
}
|
279
|
+
for (const [key, messageOrMessageByThemeName] of Object.entries(messages_themeDefined)) {
|
280
|
+
const message = (() => {
|
281
|
+
if (typeof messageOrMessageByThemeName === "string") {
|
282
|
+
return messageOrMessageByThemeName;
|
283
|
+
}
|
284
|
+
const message = messageOrMessageByThemeName[themeName];
|
285
|
+
(0,tsafe_assert__WEBPACK_IMPORTED_MODULE_10__.assert)(message !== undefined);
|
286
|
+
return message;
|
287
|
+
})();
|
288
|
+
messages[key] = message;
|
289
|
+
}
|
290
|
+
}
|
291
|
+
const propertiesFileSource = [
|
292
|
+
"",
|
293
|
+
...Object.entries(messages).map(([key, value]) => `${key}=${(0,_tools_escapeStringForPropertiesFile__WEBPACK_IMPORTED_MODULE_12__/* .escapeStringForPropertiesFile */ .y)(value)}`),
|
294
|
+
""
|
295
|
+
].join("\n");
|
296
|
+
fs__WEBPACK_IMPORTED_MODULE_9__.mkdirSync(messageDirPath, { recursive: true });
|
297
|
+
fs__WEBPACK_IMPORTED_MODULE_9__.writeFileSync((0,path__WEBPACK_IMPORTED_MODULE_2__.join)(messageDirPath, `messages_${languageTag}.properties`), Buffer.from(propertiesFileSource, "utf8"));
|
298
|
+
}
|
299
|
+
}
|
300
|
+
};
|
301
|
+
}
|
302
|
+
function recastParseTs(filePath) {
|
303
|
+
return recast__WEBPACK_IMPORTED_MODULE_4__/* .parse */ .Qc(fs__WEBPACK_IMPORTED_MODULE_9__.readFileSync(filePath).toString("utf8"), {
|
304
|
+
parser: {
|
305
|
+
parse: (code) => _babel_parser__WEBPACK_IMPORTED_MODULE_5__/* .parse */ .Qc(code, {
|
306
|
+
sourceType: "module",
|
307
|
+
plugins: ["typescript"]
|
308
|
+
}),
|
309
|
+
generator: _babel_generator__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .ZP,
|
310
|
+
types: _babel_types__WEBPACK_IMPORTED_MODULE_7__
|
311
|
+
}
|
312
|
+
});
|
153
313
|
}
|
154
314
|
//# sourceMappingURL=generateMessageProperties.js.map
|
155
315
|
|
@@ -652,6 +812,7 @@ async function generateResourcesForMainTheme(params) {
|
|
652
812
|
const { themeType } = params;
|
653
813
|
return (0,external_path_.join)(resourcesDirPath, "theme", themeName, themeType);
|
654
814
|
};
|
815
|
+
const writeMessagePropertiesFilesByThemeType = {};
|
655
816
|
for (const themeType of ["login", "account"]) {
|
656
817
|
if (!buildContext.implementedThemeTypes[themeType].isImplemented) {
|
657
818
|
continue;
|
@@ -746,20 +907,22 @@ async function generateResourcesForMainTheme(params) {
|
|
746
907
|
const { ftlCode } = generateFtlFilesCode({ pageId });
|
747
908
|
external_fs_.writeFileSync((0,external_path_.join)(themeTypeDirPath, pageId), Buffer.from(ftlCode, "utf8"));
|
748
909
|
});
|
910
|
+
let languageTags = undefined;
|
749
911
|
i18n_messages_generation: {
|
750
912
|
if (isForAccountSpa) {
|
751
913
|
break i18n_messages_generation;
|
752
914
|
}
|
753
|
-
(0,generateMessageProperties/* generateMessageProperties */.k)({
|
754
|
-
|
915
|
+
const wrap = (0,generateMessageProperties/* generateMessageProperties */.k)({
|
916
|
+
buildContext,
|
755
917
|
themeType
|
756
|
-
})
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
|
918
|
+
});
|
919
|
+
languageTags = wrap.languageTags;
|
920
|
+
const { writeMessagePropertiesFiles } = wrap;
|
921
|
+
writeMessagePropertiesFilesByThemeType[themeType] =
|
922
|
+
writeMessagePropertiesFiles;
|
923
|
+
writeMessagePropertiesFiles({
|
924
|
+
messageDirPath: (0,external_path_.join)(themeTypeDirPath, "messages"),
|
925
|
+
themeName
|
763
926
|
});
|
764
927
|
}
|
765
928
|
bring_in_account_v3_i18n_messages: {
|
@@ -804,7 +967,10 @@ async function generateResourcesForMainTheme(params) {
|
|
804
967
|
})()}`,
|
805
968
|
...(isForAccountSpa ? ["deprecatedMode=false"] : []),
|
806
969
|
...((_a = buildContext.extraThemeProperties) !== null && _a !== void 0 ? _a : []),
|
807
|
-
...buildContext.environmentVariables.map(({ name, default: defaultValue }) => `${name}=\${env.${name}:${(0,escapeStringForPropertiesFile/* escapeStringForPropertiesFile */.y)(defaultValue)}}`)
|
970
|
+
...buildContext.environmentVariables.map(({ name, default: defaultValue }) => `${name}=\${env.${name}:${(0,escapeStringForPropertiesFile/* escapeStringForPropertiesFile */.y)(defaultValue)}}`),
|
971
|
+
...(languageTags === undefined
|
972
|
+
? []
|
973
|
+
: [`locales=${languageTags.join(",")}`])
|
808
974
|
].join("\n\n"), "utf8"));
|
809
975
|
}
|
810
976
|
email: {
|
@@ -848,6 +1014,19 @@ async function generateResourcesForMainTheme(params) {
|
|
848
1014
|
getNewMetaInfKeycloakTheme: () => metaInfKeycloakThemes
|
849
1015
|
});
|
850
1016
|
}
|
1017
|
+
return {
|
1018
|
+
writeMessagePropertiesFilesForThemeVariant: ({ getMessageDirPath, themeName }) => {
|
1019
|
+
(0,objectEntries.objectEntries)(writeMessagePropertiesFilesByThemeType).forEach(([themeType, writeMessagePropertiesFiles]) => {
|
1020
|
+
if (writeMessagePropertiesFiles === undefined) {
|
1021
|
+
return;
|
1022
|
+
}
|
1023
|
+
writeMessagePropertiesFiles({
|
1024
|
+
messageDirPath: getMessageDirPath({ themeType }),
|
1025
|
+
themeName
|
1026
|
+
});
|
1027
|
+
});
|
1028
|
+
}
|
1029
|
+
};
|
851
1030
|
}
|
852
1031
|
//# sourceMappingURL=generateResourcesForMainTheme.js.map
|
853
1032
|
;// CONCATENATED MODULE: ./dist/bin/keycloakify/generateResources/generateResourcesForThemeVariant.js
|
@@ -855,13 +1034,13 @@ async function generateResourcesForMainTheme(params) {
|
|
855
1034
|
|
856
1035
|
|
857
1036
|
|
858
|
-
(0,assert.assert)();
|
859
1037
|
function generateResourcesForThemeVariant(params) {
|
860
|
-
const { resourcesDirPath, themeName, themeVariantName } = params;
|
1038
|
+
const { resourcesDirPath, themeName, themeVariantName, writeMessagePropertiesFiles } = params;
|
861
1039
|
const mainThemeDirPath = (0,external_path_.join)(resourcesDirPath, "theme", themeName);
|
1040
|
+
const themeVariantDirPath = (0,external_path_.join)(mainThemeDirPath, "..", themeVariantName);
|
862
1041
|
(0,transformCodebase/* transformCodebase */.N)({
|
863
1042
|
srcDirPath: mainThemeDirPath,
|
864
|
-
destDirPath:
|
1043
|
+
destDirPath: themeVariantDirPath,
|
865
1044
|
transformSourceCode: ({ fileRelativePath, sourceCode }) => {
|
866
1045
|
if ((0,external_path_.extname)(fileRelativePath) === ".ftl" &&
|
867
1046
|
fileRelativePath.split(external_path_.sep).length === 2) {
|
@@ -890,6 +1069,10 @@ function generateResourcesForThemeVariant(params) {
|
|
890
1069
|
return newMetaInfKeycloakTheme;
|
891
1070
|
}
|
892
1071
|
});
|
1072
|
+
writeMessagePropertiesFiles({
|
1073
|
+
getMessageDirPath: ({ themeType }) => (0,external_path_.join)(themeVariantDirPath, themeType, "messages"),
|
1074
|
+
themeName: themeVariantName
|
1075
|
+
});
|
893
1076
|
}
|
894
1077
|
//# sourceMappingURL=generateResourcesForThemeVariant.js.map
|
895
1078
|
;// CONCATENATED MODULE: ./dist/bin/keycloakify/generateResources/generateResources.js
|
@@ -905,7 +1088,7 @@ async function generateResources(params) {
|
|
905
1088
|
if (external_fs_default().existsSync(resourcesDirPath)) {
|
906
1089
|
(0,fs_rmSync/* rmSync */.a)(resourcesDirPath, { recursive: true });
|
907
1090
|
}
|
908
|
-
await generateResourcesForMainTheme({
|
1091
|
+
const { writeMessagePropertiesFilesForThemeVariant } = await generateResourcesForMainTheme({
|
909
1092
|
resourcesDirPath,
|
910
1093
|
themeName,
|
911
1094
|
buildContext
|
@@ -914,7 +1097,8 @@ async function generateResources(params) {
|
|
914
1097
|
generateResourcesForThemeVariant({
|
915
1098
|
resourcesDirPath,
|
916
1099
|
themeName,
|
917
|
-
themeVariantName
|
1100
|
+
themeVariantName,
|
1101
|
+
writeMessagePropertiesFiles: writeMessagePropertiesFilesForThemeVariant
|
918
1102
|
});
|
919
1103
|
}
|
920
1104
|
}
|
package/bin/main.js
CHANGED
@@ -8785,7 +8785,7 @@ var eventemitter3 = __nccwpck_require__(11848);
|
|
8785
8785
|
// EXTERNAL MODULE: external "tty"
|
8786
8786
|
var external_tty_ = __nccwpck_require__(76224);
|
8787
8787
|
var external_tty_namespaceObject = /*#__PURE__*/__nccwpck_require__.t(external_tty_, 2);
|
8788
|
-
;// CONCATENATED MODULE: ./node_modules/
|
8788
|
+
;// CONCATENATED MODULE: ./node_modules/colorette/index.js
|
8789
8789
|
|
8790
8790
|
|
8791
8791
|
const {
|
@@ -0,0 +1,28 @@
|
|
1
|
+
/// <reference types="dompurify" />
|
2
|
+
import { DOMPurify } from "../../tools/vendor/dompurify";
|
3
|
+
export declare class HtmlPolicyBuilder {
|
4
|
+
private globalAttributesAllowed;
|
5
|
+
private tagsAllowed;
|
6
|
+
private tagsAllowedWithNoAttribute;
|
7
|
+
private currentAttribute;
|
8
|
+
private isStylingAllowed;
|
9
|
+
private allowedProtocols;
|
10
|
+
private enforceRelNofollow;
|
11
|
+
private DOMPurify;
|
12
|
+
constructor(dependencyInjections: Partial<{
|
13
|
+
DOMPurify: typeof DOMPurify;
|
14
|
+
}>);
|
15
|
+
allowWithoutAttributes(tag: string): this;
|
16
|
+
allowAttributes(...args: string[]): this;
|
17
|
+
matching(matchingPattern: RegExp | ((value: string) => boolean)): this;
|
18
|
+
globally(): this;
|
19
|
+
allowStyling(): this;
|
20
|
+
onElements(...tags: string[]): this;
|
21
|
+
allowElements(...tags: string[]): this;
|
22
|
+
requireRelNofollowOnLinks(): this;
|
23
|
+
allowStandardUrlProtocols(): this;
|
24
|
+
apply(html: string): string;
|
25
|
+
private setupHooks;
|
26
|
+
private getAllowedAttributes;
|
27
|
+
private getAllowedUriRegexp;
|
28
|
+
}
|