keycloakify 2.3.0 → 2.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/README.md +156 -127
- package/bin/KeycloakVersion.js.map +1 -1
- package/bin/build-keycloak-theme/build-keycloak-theme.js +57 -54
- package/bin/build-keycloak-theme/build-keycloak-theme.js.map +1 -1
- package/bin/build-keycloak-theme/ftlValuesGlobalName.js.map +1 -1
- package/bin/build-keycloak-theme/generateDebugFiles/generateDebugFiles.js +4 -11
- package/bin/build-keycloak-theme/generateDebugFiles/generateDebugFiles.js.map +1 -1
- package/bin/build-keycloak-theme/generateFtl/common.ftl +72 -57
- package/bin/build-keycloak-theme/generateFtl/generateFtl.d.ts +1 -1
- package/bin/build-keycloak-theme/generateFtl/generateFtl.js +47 -44
- package/bin/build-keycloak-theme/generateFtl/generateFtl.js.map +1 -1
- package/bin/build-keycloak-theme/generateJavaStackFiles.js +12 -8
- package/bin/build-keycloak-theme/generateJavaStackFiles.js.map +1 -1
- package/bin/build-keycloak-theme/generateKeycloakThemeResources.js +20 -21
- package/bin/build-keycloak-theme/generateKeycloakThemeResources.js.map +1 -1
- package/bin/build-keycloak-theme/index.js.map +1 -1
- package/bin/build-keycloak-theme/replaceImportFromStatic.js +18 -30
- package/bin/build-keycloak-theme/replaceImportFromStatic.js.map +1 -1
- package/bin/download-builtin-keycloak-theme.js +2 -2
- package/bin/download-builtin-keycloak-theme.js.map +1 -1
- package/bin/generate-i18n-messages.js +9 -11
- package/bin/generate-i18n-messages.js.map +1 -1
- package/bin/link_in_test_app.js +6 -22
- package/bin/link_in_test_app.js.map +1 -1
- package/bin/tools/crawl.js.map +1 -1
- package/bin/tools/downloadAndUnzip.js +4 -5
- package/bin/tools/downloadAndUnzip.js.map +1 -1
- package/bin/tools/grant-exec-perms.js +4 -3
- package/bin/tools/grant-exec-perms.js.map +1 -1
- package/bin/tools/isInside.js.map +1 -1
- package/bin/tools/rm.js +1 -1
- package/bin/tools/rm.js.map +1 -1
- package/bin/tools/transformCodebase.js +7 -3
- package/bin/tools/transformCodebase.js.map +1 -1
- package/lib/components/Error.js +1 -2
- package/lib/components/Error.js.map +1 -1
- package/lib/components/Info.js +1 -15
- package/lib/components/Info.js.map +1 -1
- package/lib/components/KcApp.js +23 -10
- package/lib/components/KcApp.js.map +1 -1
- package/lib/components/KcProps.d.ts +4 -2
- package/lib/components/KcProps.js +10 -8
- package/lib/components/KcProps.js.map +1 -1
- package/lib/components/Login.js +20 -18
- package/lib/components/Login.js.map +1 -1
- package/lib/components/LoginIdpLinkConfirm.js.map +1 -1
- package/lib/components/LoginOtp.js +14 -15
- package/lib/components/LoginOtp.js.map +1 -1
- package/lib/components/LoginResetPassword.js +5 -7
- package/lib/components/LoginResetPassword.js.map +1 -1
- package/lib/components/LoginUpdateProfile.js +1 -5
- package/lib/components/LoginUpdateProfile.js.map +1 -1
- package/lib/components/LoginVerifyEmail.js.map +1 -1
- package/lib/components/Register.js +1 -4
- package/lib/components/Register.js.map +1 -1
- package/lib/components/RegisterUserProfile.d.ts +6 -0
- package/lib/components/RegisterUserProfile.js +78 -0
- package/lib/components/RegisterUserProfile.js.map +1 -0
- package/lib/components/Template.js +28 -43
- package/lib/components/Template.js.map +1 -1
- package/lib/components/Terms.js.map +1 -1
- package/lib/getKcContext/KcContextBase.d.ts +78 -18
- package/lib/getKcContext/KcContextBase.js +2 -3
- package/lib/getKcContext/KcContextBase.js.map +1 -1
- package/lib/getKcContext/getKcContext.d.ts +1 -3
- package/lib/getKcContext/getKcContext.js +5 -9
- package/lib/getKcContext/getKcContext.js.map +1 -1
- package/lib/getKcContext/kcContextMocks/kcContextMocks.d.ts +1 -0
- package/lib/getKcContext/kcContextMocks/kcContextMocks.js +187 -55
- package/lib/getKcContext/kcContextMocks/kcContextMocks.js.map +1 -1
- package/lib/getKcContext/kcContextMocks/urlResourcesPath.js.map +1 -1
- package/lib/i18n/KcLanguageTag.d.ts +25 -2
- package/lib/i18n/KcLanguageTag.js +27 -27
- package/lib/i18n/KcLanguageTag.js.map +1 -1
- package/lib/i18n/generated_kcMessages/11.0.3/account.js +27 -27
- package/lib/i18n/generated_kcMessages/11.0.3/account.js.map +1 -1
- package/lib/i18n/generated_kcMessages/11.0.3/admin.js +23 -23
- package/lib/i18n/generated_kcMessages/11.0.3/admin.js.map +1 -1
- package/lib/i18n/generated_kcMessages/11.0.3/email.js +97 -97
- package/lib/i18n/generated_kcMessages/11.0.3/email.js.map +1 -1
- package/lib/i18n/generated_kcMessages/11.0.3/login.js +30 -30
- package/lib/i18n/generated_kcMessages/11.0.3/login.js.map +1 -1
- package/lib/i18n/generated_kcMessages/15.0.2/account.js +29 -29
- package/lib/i18n/generated_kcMessages/15.0.2/account.js.map +1 -1
- package/lib/i18n/generated_kcMessages/15.0.2/admin.js +23 -23
- package/lib/i18n/generated_kcMessages/15.0.2/admin.js.map +1 -1
- package/lib/i18n/generated_kcMessages/15.0.2/email.js +111 -111
- package/lib/i18n/generated_kcMessages/15.0.2/email.js.map +1 -1
- package/lib/i18n/generated_kcMessages/15.0.2/login.js +32 -32
- package/lib/i18n/generated_kcMessages/15.0.2/login.js.map +1 -1
- package/lib/i18n/kcMessages/login.js +1 -1
- package/lib/i18n/kcMessages/login.js.map +1 -1
- package/lib/i18n/useKcLanguageTag.js +1 -3
- package/lib/i18n/useKcLanguageTag.js.map +1 -1
- package/lib/i18n/useKcMessage.d.ts +2 -1
- package/lib/i18n/useKcMessage.js +8 -6
- package/lib/i18n/useKcMessage.js.map +1 -1
- package/lib/keycloakJsAdapter.d.ts +6 -6
- package/lib/keycloakJsAdapter.js +10 -12
- package/lib/keycloakJsAdapter.js.map +1 -1
- package/lib/tools/ReactComponent.d.ts +2 -0
- package/lib/tools/ReactComponent.js +3 -0
- package/lib/tools/ReactComponent.js.map +1 -0
- package/lib/tools/allPropertiesValuesToUndefined.js +1 -2
- package/lib/tools/allPropertiesValuesToUndefined.js.map +1 -1
- package/lib/tools/appendHead.js +16 -12
- package/lib/tools/appendHead.js.map +1 -1
- package/lib/tools/assert.js.map +1 -1
- package/lib/tools/deepAssign.js +3 -4
- package/lib/tools/deepAssign.js.map +1 -1
- package/lib/tools/deepClone.js.map +1 -1
- package/package.json +26 -6
- package/src/bin/KeycloakVersion.ts +0 -2
- package/src/bin/build-keycloak-theme/build-keycloak-theme.ts +70 -77
- package/src/bin/build-keycloak-theme/ftlValuesGlobalName.ts +1 -2
- package/src/bin/build-keycloak-theme/generateDebugFiles/generateDebugFiles.ts +26 -37
- package/src/bin/build-keycloak-theme/generateDebugFiles/index.ts +1 -1
- package/src/bin/build-keycloak-theme/generateFtl/common.ftl +72 -57
- package/src/bin/build-keycloak-theme/generateFtl/generateFtl.ts +75 -95
- package/src/bin/build-keycloak-theme/generateFtl/index.ts +1 -1
- package/src/bin/build-keycloak-theme/generateJavaStackFiles.ts +38 -56
- package/src/bin/build-keycloak-theme/generateKeycloakThemeResources.ts +47 -85
- package/src/bin/build-keycloak-theme/index.ts +2 -4
- package/src/bin/build-keycloak-theme/replaceImportFromStatic.ts +34 -78
- package/src/bin/download-builtin-keycloak-theme.ts +5 -19
- package/src/bin/generate-i18n-messages.ts +13 -25
- package/src/bin/link_in_test_app.ts +9 -38
- package/src/bin/tools/crawl.ts +2 -12
- package/src/bin/tools/downloadAndUnzip.ts +6 -22
- package/src/bin/tools/getProjectRoot.ts +1 -1
- package/src/bin/tools/grant-exec-perms.ts +8 -7
- package/src/bin/tools/isInside.ts +2 -9
- package/src/bin/tools/rm.ts +21 -32
- package/src/bin/tools/transformCodebase.ts +20 -43
- package/src/lib/components/Error.tsx +3 -7
- package/src/lib/components/Info.tsx +23 -47
- package/src/lib/components/KcApp.tsx +25 -13
- package/src/lib/components/KcProps.ts +94 -92
- package/src/lib/components/Login.tsx +126 -116
- package/src/lib/components/LoginIdpLinkConfirm.tsx +38 -53
- package/src/lib/components/LoginOtp.tsx +39 -76
- package/src/lib/components/LoginResetPassword.tsx +9 -26
- package/src/lib/components/LoginUpdateProfile.tsx +104 -117
- package/src/lib/components/LoginVerifyEmail.tsx +3 -12
- package/src/lib/components/Register.tsx +76 -46
- package/src/lib/components/RegisterUserProfile.tsx +201 -0
- package/src/lib/components/Template.tsx +109 -161
- package/src/lib/components/Terms.tsx +4 -13
- package/src/lib/getKcContext/KcContextBase.ts +104 -53
- package/src/lib/getKcContext/getKcContext.ts +47 -78
- package/src/lib/getKcContext/index.ts +2 -2
- package/src/lib/getKcContext/kcContextMocks/index.ts +1 -1
- package/src/lib/getKcContext/kcContextMocks/kcContextMocks.ts +362 -241
- package/src/lib/getKcContext/kcContextMocks/urlResourcesPath.ts +1 -2
- package/src/lib/i18n/KcLanguageTag.ts +34 -45
- package/src/lib/i18n/generated_kcMessages/11.0.3/account.ts +3086 -3059
- package/src/lib/i18n/generated_kcMessages/11.0.3/admin.ts +248 -239
- package/src/lib/i18n/generated_kcMessages/11.0.3/email.ts +848 -633
- package/src/lib/i18n/generated_kcMessages/11.0.3/login.ts +4466 -4359
- package/src/lib/i18n/generated_kcMessages/15.0.2/account.ts +4247 -4202
- package/src/lib/i18n/generated_kcMessages/15.0.2/admin.ts +273 -264
- package/src/lib/i18n/generated_kcMessages/15.0.2/email.ts +997 -749
- package/src/lib/i18n/generated_kcMessages/15.0.2/login.ts +5352 -5212
- package/src/lib/i18n/kcMessages/login.ts +4 -9
- package/src/lib/i18n/useKcLanguageTag.ts +2 -16
- package/src/lib/i18n/useKcMessage.tsx +17 -20
- package/src/lib/index.ts +0 -1
- package/src/lib/keycloakJsAdapter.ts +23 -53
- package/src/lib/tools/AndByDiscriminatingKey.ts +16 -30
- package/src/lib/tools/DeepPartial.ts +1 -2
- package/src/lib/tools/ReactComponent.ts +4 -0
- package/src/lib/tools/allPropertiesValuesToUndefined.ts +1 -6
- package/src/lib/tools/appendHead.ts +28 -25
- package/src/lib/tools/assert.ts +1 -2
- package/src/lib/tools/deepAssign.ts +28 -46
- package/src/lib/tools/deepClone.ts +2 -3
@@ -1,25 +1,30 @@
|
|
1
|
-
|
2
1
|
import type { PageId } from "../../bin/build-keycloak-theme/generateFtl";
|
3
2
|
import type { KcLanguageTag } from "../i18n/KcLanguageTag";
|
4
|
-
import {
|
3
|
+
import { assert } from "tsafe/assert";
|
4
|
+
import type { Equals } from "tsafe";
|
5
5
|
import type { MessageKey } from "../i18n/useKcMessage";
|
6
6
|
import type { LanguageLabel } from "../i18n/KcLanguageTag";
|
7
7
|
|
8
|
-
type ExtractAfterStartingWith<Prefix extends string, StrEnum> =
|
9
|
-
StrEnum extends `${Prefix}${infer U}` ? U : never;
|
8
|
+
type ExtractAfterStartingWith<Prefix extends string, StrEnum> = StrEnum extends `${Prefix}${infer U}` ? U : never;
|
10
9
|
|
11
|
-
/** Take theses type definition with a grain of salt.
|
10
|
+
/** Take theses type definition with a grain of salt.
|
12
11
|
* Some values might be undefined on some pages.
|
13
12
|
* (ex: url.loginAction is undefined on error.ftl)
|
14
13
|
*/
|
15
14
|
export type KcContextBase =
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
KcContextBase.
|
15
|
+
| KcContextBase.Login
|
16
|
+
| KcContextBase.Register
|
17
|
+
| KcContextBase.RegisterUserProfile
|
18
|
+
| KcContextBase.Info
|
19
|
+
| KcContextBase.Error
|
20
|
+
| KcContextBase.LoginResetPassword
|
21
|
+
| KcContextBase.LoginVerifyEmail
|
22
|
+
| KcContextBase.Terms
|
23
|
+
| KcContextBase.LoginOtp
|
24
|
+
| KcContextBase.LoginUpdateProfile
|
25
|
+
| KcContextBase.LoginIdpLinkConfirm;
|
20
26
|
|
21
27
|
export declare namespace KcContextBase {
|
22
|
-
|
23
28
|
export type Common = {
|
24
29
|
url: {
|
25
30
|
loginAction: string;
|
@@ -45,7 +50,7 @@ export declare namespace KcContextBase {
|
|
45
50
|
//label: LanguageLabel;
|
46
51
|
}[];
|
47
52
|
current: LanguageLabel;
|
48
|
-
}
|
53
|
+
};
|
49
54
|
auth?: {
|
50
55
|
showUsername: boolean;
|
51
56
|
showResetCredentials: boolean;
|
@@ -60,8 +65,14 @@ export declare namespace KcContextBase {
|
|
60
65
|
client: {
|
61
66
|
clientId: string;
|
62
67
|
name?: string;
|
63
|
-
}
|
68
|
+
};
|
64
69
|
isAppInitiatedAction: boolean;
|
70
|
+
messagesPerField: {
|
71
|
+
printIfExists: <T>(fieldName: string, x: T) => T | undefined;
|
72
|
+
existsError: (fieldName: string) => boolean;
|
73
|
+
get: (fieldName: string) => string;
|
74
|
+
exists: (fieldName: string) => boolean;
|
75
|
+
};
|
65
76
|
};
|
66
77
|
|
67
78
|
export type Login = Common & {
|
@@ -93,37 +104,14 @@ export declare namespace KcContextBase {
|
|
93
104
|
alias: string;
|
94
105
|
providerId: string;
|
95
106
|
displayName: string;
|
96
|
-
}[]
|
107
|
+
}[];
|
97
108
|
};
|
98
109
|
};
|
99
110
|
|
100
|
-
export type
|
101
|
-
pageId: "register.ftl";
|
111
|
+
export type RegisterCommon = Common & {
|
102
112
|
url: {
|
103
113
|
registrationAction: string;
|
104
114
|
};
|
105
|
-
messagesPerField: {
|
106
|
-
printIfExists<T>(
|
107
|
-
key:
|
108
|
-
"userLabel" |
|
109
|
-
"username" |
|
110
|
-
"email" |
|
111
|
-
"firstName" |
|
112
|
-
"lastName" |
|
113
|
-
"password" |
|
114
|
-
"password-confirm",
|
115
|
-
x: T
|
116
|
-
): T | undefined;
|
117
|
-
};
|
118
|
-
register: {
|
119
|
-
formData: {
|
120
|
-
firstName?: string;
|
121
|
-
displayName?: string;
|
122
|
-
lastName?: string;
|
123
|
-
email?: string;
|
124
|
-
username?: string;
|
125
|
-
}
|
126
|
-
};
|
127
115
|
passwordRequired: boolean;
|
128
116
|
recaptchaRequired: boolean;
|
129
117
|
recaptchaSiteKey?: string;
|
@@ -134,7 +122,29 @@ export declare namespace KcContextBase {
|
|
134
122
|
alias: string;
|
135
123
|
providerId: string;
|
136
124
|
displayName: string;
|
137
|
-
}[]
|
125
|
+
}[];
|
126
|
+
};
|
127
|
+
};
|
128
|
+
|
129
|
+
export type Register = RegisterCommon & {
|
130
|
+
pageId: "register.ftl";
|
131
|
+
register: {
|
132
|
+
formData: {
|
133
|
+
firstName?: string;
|
134
|
+
displayName?: string;
|
135
|
+
lastName?: string;
|
136
|
+
email?: string;
|
137
|
+
username?: string;
|
138
|
+
};
|
139
|
+
};
|
140
|
+
};
|
141
|
+
|
142
|
+
export type RegisterUserProfile = RegisterCommon & {
|
143
|
+
pageId: "register-user-profile.ftl";
|
144
|
+
profile: {
|
145
|
+
context: "REGISTRATION_PROFILE";
|
146
|
+
attributes: Attribute[];
|
147
|
+
attributesByName: Record<string, Attribute>;
|
138
148
|
};
|
139
149
|
};
|
140
150
|
|
@@ -147,14 +157,14 @@ export declare namespace KcContextBase {
|
|
147
157
|
actionUri?: string;
|
148
158
|
client: {
|
149
159
|
baseUrl?: string;
|
150
|
-
}
|
160
|
+
};
|
151
161
|
};
|
152
162
|
|
153
163
|
export type Error = Common & {
|
154
164
|
pageId: "error.ftl";
|
155
165
|
client?: {
|
156
166
|
baseUrl?: string;
|
157
|
-
}
|
167
|
+
};
|
158
168
|
message: NonNullable<Common["message"]>;
|
159
169
|
};
|
160
170
|
|
@@ -162,7 +172,7 @@ export declare namespace KcContextBase {
|
|
162
172
|
pageId: "login-reset-password.ftl";
|
163
173
|
realm: {
|
164
174
|
loginWithEmailAllowed: boolean;
|
165
|
-
}
|
175
|
+
};
|
166
176
|
};
|
167
177
|
|
168
178
|
export type LoginVerifyEmail = Common & {
|
@@ -176,8 +186,8 @@ export declare namespace KcContextBase {
|
|
176
186
|
export type LoginOtp = Common & {
|
177
187
|
pageId: "login-otp.ftl";
|
178
188
|
otpLogin: {
|
179
|
-
userOtpCredentials: { id: string; userLabel: string
|
180
|
-
}
|
189
|
+
userOtpCredentials: { id: string; userLabel: string }[];
|
190
|
+
};
|
181
191
|
};
|
182
192
|
|
183
193
|
export type LoginUpdateProfile = Common & {
|
@@ -189,24 +199,65 @@ export declare namespace KcContextBase {
|
|
189
199
|
firstName?: string;
|
190
200
|
lastName?: string;
|
191
201
|
};
|
192
|
-
messagesPerField: {
|
193
|
-
printIfExists<T>(
|
194
|
-
key: "username" | "email" | "firstName" | "lastName",
|
195
|
-
x: T
|
196
|
-
): T | undefined;
|
197
|
-
};
|
198
|
-
|
199
202
|
};
|
200
203
|
|
201
204
|
export type LoginIdpLinkConfirm = Common & {
|
202
205
|
pageId: "login-idp-link-confirm.ftl";
|
203
206
|
idpAlias: string;
|
204
207
|
};
|
205
|
-
|
206
208
|
}
|
207
209
|
|
208
|
-
|
209
|
-
|
210
|
+
export type Attribute = {
|
211
|
+
name: string;
|
212
|
+
displayName?: string;
|
213
|
+
required: boolean;
|
214
|
+
value?: string;
|
215
|
+
group?: string;
|
216
|
+
groupDisplayHeader?: string;
|
217
|
+
groupDisplayDescription?: string;
|
218
|
+
readOnly: boolean;
|
219
|
+
autocomplete?: string;
|
220
|
+
validators: Validators;
|
221
|
+
annotations: Record<string, string>;
|
222
|
+
groupAnnotations: Record<string, string>;
|
223
|
+
};
|
224
|
+
|
225
|
+
export type Validators = Partial<{
|
226
|
+
length: Validators.DoIgnoreEmpty & Validators.Range;
|
227
|
+
double: Validators.DoIgnoreEmpty & Validators.Range;
|
228
|
+
integer: Validators.DoIgnoreEmpty & Validators.Range;
|
229
|
+
email: Validators.DoIgnoreEmpty;
|
230
|
+
"up-immutable-attribute": {};
|
231
|
+
"up-attribute-required-by-metadata-value": {};
|
232
|
+
"up-username-has-value": {};
|
233
|
+
"up-duplicate-username": {};
|
234
|
+
"up-username-mutation": {};
|
235
|
+
"up-email-exists-as-username": {};
|
236
|
+
"up-blank-attribute-value": Validators.ErrorMessage & {
|
237
|
+
"fail-on-null": boolean;
|
238
|
+
};
|
239
|
+
"up-duplicate-email": {};
|
240
|
+
"local-date": Validators.DoIgnoreEmpty;
|
241
|
+
pattern: Validators.DoIgnoreEmpty & Validators.ErrorMessage & { pattern: string };
|
242
|
+
"person-name-prohibited-characters": Validators.DoIgnoreEmpty & Validators.ErrorMessage;
|
243
|
+
uri: Validators.DoIgnoreEmpty;
|
244
|
+
"username-prohibited-characters": Validators.DoIgnoreEmpty & Validators.ErrorMessage;
|
245
|
+
}>;
|
246
|
+
|
247
|
+
export declare namespace Validators {
|
248
|
+
export type DoIgnoreEmpty = {
|
249
|
+
"ignore.empty.value"?: boolean;
|
250
|
+
};
|
210
251
|
|
252
|
+
export type ErrorMessage = {
|
253
|
+
"error-message"?: string;
|
254
|
+
};
|
211
255
|
|
256
|
+
export type Range = {
|
257
|
+
/** "0", "1", "2"... yeah I know, don't tell me */
|
258
|
+
min?: string;
|
259
|
+
max?: string;
|
260
|
+
};
|
261
|
+
}
|
212
262
|
|
263
|
+
assert<Equals<KcContextBase["pageId"], PageId>>();
|
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
import type { KcContextBase } from "./KcContextBase";
|
3
2
|
import { kcContextMocks, kcContextCommonMock } from "./kcContextMocks";
|
4
3
|
import { ftlValuesGlobalName } from "../../bin/build-keycloak-theme/ftlValuesGlobalName";
|
@@ -6,81 +5,51 @@ import type { AndByDiscriminatingKey } from "../tools/AndByDiscriminatingKey";
|
|
6
5
|
import type { DeepPartial } from "../tools/DeepPartial";
|
7
6
|
import { deepAssign } from "../tools/deepAssign";
|
8
7
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
deepAssign({
|
57
|
-
"target": kcContext,
|
58
|
-
"source": kcContextDefaultMock !== undefined ?
|
59
|
-
kcContextDefaultMock :
|
60
|
-
{ "pageId": mockPageId, ...kcContextCommonMock, }
|
61
|
-
});
|
62
|
-
|
63
|
-
if (partialKcContextCustomMock !== undefined) {
|
64
|
-
|
65
|
-
deepAssign({
|
66
|
-
"target": kcContext,
|
67
|
-
"source": partialKcContextCustomMock
|
68
|
-
});
|
69
|
-
|
70
|
-
}
|
71
|
-
|
72
|
-
return { kcContext };
|
73
|
-
|
74
|
-
}
|
75
|
-
|
76
|
-
return {
|
77
|
-
"kcContext":
|
78
|
-
typeof window === "undefined" ?
|
79
|
-
undefined :
|
80
|
-
(window as any)[ftlValuesGlobalName]
|
81
|
-
};
|
82
|
-
|
8
|
+
export type ExtendsKcContextBase<KcContextExtended extends { pageId: string }> = [KcContextExtended] extends [never]
|
9
|
+
? KcContextBase
|
10
|
+
: AndByDiscriminatingKey<"pageId", KcContextExtended & KcContextBase.Common, KcContextBase>;
|
11
|
+
|
12
|
+
export function getKcContext<KcContextExtended extends { pageId: string } = never>(params?: {
|
13
|
+
mockPageId?: ExtendsKcContextBase<KcContextExtended>["pageId"];
|
14
|
+
mockData?: readonly DeepPartial<ExtendsKcContextBase<KcContextExtended>>[];
|
15
|
+
}): { kcContext: ExtendsKcContextBase<KcContextExtended> | undefined } {
|
16
|
+
const { mockPageId, mockData } = params ?? {};
|
17
|
+
|
18
|
+
if (mockPageId !== undefined) {
|
19
|
+
//TODO maybe trow if no mock fo custom page
|
20
|
+
|
21
|
+
const kcContextDefaultMock = kcContextMocks.find(({ pageId }) => pageId === mockPageId);
|
22
|
+
|
23
|
+
const partialKcContextCustomMock = mockData?.find(({ pageId }) => pageId === mockPageId);
|
24
|
+
|
25
|
+
if (kcContextDefaultMock === undefined && partialKcContextCustomMock === undefined) {
|
26
|
+
console.warn(
|
27
|
+
[
|
28
|
+
`WARNING: You declared the non build in page ${mockPageId} but you didn't `,
|
29
|
+
`provide mock data needed to debug the page outside of Keycloak as you are trying to do now.`,
|
30
|
+
`Please check the documentation of the getKcContext function`,
|
31
|
+
].join("\n"),
|
32
|
+
);
|
33
|
+
}
|
34
|
+
|
35
|
+
const kcContext: any = {};
|
36
|
+
|
37
|
+
deepAssign({
|
38
|
+
"target": kcContext,
|
39
|
+
"source": kcContextDefaultMock !== undefined ? kcContextDefaultMock : { "pageId": mockPageId, ...kcContextCommonMock },
|
40
|
+
});
|
41
|
+
|
42
|
+
if (partialKcContextCustomMock !== undefined) {
|
43
|
+
deepAssign({
|
44
|
+
"target": kcContext,
|
45
|
+
"source": partialKcContextCustomMock,
|
46
|
+
});
|
47
|
+
}
|
48
|
+
|
49
|
+
return { kcContext };
|
50
|
+
}
|
51
|
+
|
52
|
+
return {
|
53
|
+
"kcContext": typeof window === "undefined" ? undefined : (window as any)[ftlValuesGlobalName],
|
54
|
+
};
|
83
55
|
}
|
84
|
-
|
85
|
-
|
86
|
-
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export type { KcContextBase
|
2
|
-
export { getKcContext } from "./getKcContext";
|
1
|
+
export type { KcContextBase } from "./KcContextBase";
|
2
|
+
export { getKcContext } from "./getKcContext";
|
@@ -1 +1 @@
|
|
1
|
-
export * from "./kcContextMocks";
|
1
|
+
export * from "./kcContextMocks";
|