keycloakify 10.0.0-rc.17 → 10.0.0-rc.18

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.
Files changed (205) hide show
  1. package/PUBLIC_URL.js.map +1 -1
  2. package/account/Template.js +5 -5
  3. package/account/Template.js.map +1 -1
  4. package/account/i18n/i18n.js +37 -29
  5. package/account/i18n/i18n.js.map +1 -1
  6. package/account/kcContext/KcContext.js.map +1 -1
  7. package/account/kcContext/createGetKcContext.js +20 -15
  8. package/account/kcContext/createGetKcContext.js.map +1 -1
  9. package/account/kcContext/getKcContext.js.map +1 -1
  10. package/account/kcContext/getKcContextFromWindow.d.ts +3 -1
  11. package/account/kcContext/getKcContextFromWindow.js.map +1 -1
  12. package/account/kcContext/kcContextMocks.js +148 -144
  13. package/account/kcContext/kcContextMocks.js.map +1 -1
  14. package/account/lib/useGetClassName.js +14 -14
  15. package/account/lib/useGetClassName.js.map +1 -1
  16. package/account/pages/Account.js +1 -1
  17. package/account/pages/Account.js.map +1 -1
  18. package/account/pages/Password.js +7 -7
  19. package/account/pages/Password.js.map +1 -1
  20. package/account/pages/Totp.js +4 -4
  21. package/account/pages/Totp.js.map +1 -1
  22. package/bin/main.js +2066 -2165
  23. package/bin/shared/constants.d.ts +1 -0
  24. package/bin/shared/constants.js +4 -3
  25. package/bin/shared/constants.js.map +1 -1
  26. package/lib/isStorybook.js +2 -1
  27. package/lib/isStorybook.js.map +1 -1
  28. package/lib/useGetClassName.js.map +1 -1
  29. package/login/Template.js +13 -13
  30. package/login/Template.js.map +1 -1
  31. package/login/UserProfileFormFields.js +43 -41
  32. package/login/UserProfileFormFields.js.map +1 -1
  33. package/login/i18n/baseMessages/ca.d.ts +1 -1
  34. package/login/i18n/baseMessages/ca.js +1 -1
  35. package/login/i18n/baseMessages/el.d.ts +0 -1
  36. package/login/i18n/baseMessages/el.js +0 -1
  37. package/login/i18n/baseMessages/el.js.map +1 -1
  38. package/login/i18n/baseMessages/en.d.ts +1 -1
  39. package/login/i18n/baseMessages/en.js +1 -1
  40. package/login/i18n/baseMessages/es.d.ts +1 -1
  41. package/login/i18n/baseMessages/es.js +1 -1
  42. package/login/i18n/baseMessages/fa.d.ts +0 -1
  43. package/login/i18n/baseMessages/fa.js +0 -1
  44. package/login/i18n/baseMessages/fa.js.map +1 -1
  45. package/login/i18n/baseMessages/hu.d.ts +1 -1
  46. package/login/i18n/baseMessages/hu.js +1 -1
  47. package/login/i18n/baseMessages/index.d.ts +1 -2
  48. package/login/i18n/baseMessages/zh-CN.d.ts +1 -1
  49. package/login/i18n/baseMessages/zh-CN.js +1 -1
  50. package/login/i18n/i18n.js +39 -31
  51. package/login/i18n/i18n.js.map +1 -1
  52. package/login/kcContext/KcContext.js.map +1 -1
  53. package/login/kcContext/createGetKcContext.js +30 -22
  54. package/login/kcContext/createGetKcContext.js.map +1 -1
  55. package/login/kcContext/getKcContext.js.map +1 -1
  56. package/login/kcContext/getKcContextFromWindow.d.ts +3 -1
  57. package/login/kcContext/getKcContextFromWindow.js.map +1 -1
  58. package/login/kcContext/kcContextMocks.js +233 -231
  59. package/login/kcContext/kcContextMocks.js.map +1 -1
  60. package/login/lib/useDownloadTerms.js.map +1 -1
  61. package/login/lib/useGetClassName.js +112 -112
  62. package/login/lib/useGetClassName.js.map +1 -1
  63. package/login/lib/useUserProfileForm.js +181 -181
  64. package/login/lib/useUserProfileForm.js.map +1 -1
  65. package/login/pages/DeleteAccountConfirm.js +5 -1
  66. package/login/pages/DeleteAccountConfirm.js.map +1 -1
  67. package/login/pages/FrontchannelLogout.js +1 -1
  68. package/login/pages/FrontchannelLogout.js.map +1 -1
  69. package/login/pages/Login.js.map +1 -1
  70. package/login/pages/LoginRecoveryAuthnCodeConfig.js +3 -3
  71. package/login/pages/LoginRecoveryAuthnCodeConfig.js.map +1 -1
  72. package/login/pages/LoginResetPassword.js.map +1 -1
  73. package/login/pages/LoginUsername.js.map +1 -1
  74. package/login/pages/WebauthnAuthenticate.js +11 -8
  75. package/login/pages/WebauthnAuthenticate.js.map +1 -1
  76. package/login/pages/WebauthnRegister.js +7 -7
  77. package/login/pages/WebauthnRegister.js.map +1 -1
  78. package/package.json +230 -226
  79. package/src/PUBLIC_URL.ts +4 -1
  80. package/src/account/Template.tsx +5 -5
  81. package/src/account/TemplateProps.ts +4 -1
  82. package/src/account/i18n/i18n.tsx +40 -30
  83. package/src/account/kcContext/KcContext.ts +4 -1
  84. package/src/account/kcContext/createGetKcContext.ts +48 -22
  85. package/src/account/kcContext/getKcContext.ts +3 -1
  86. package/src/account/kcContext/getKcContextFromWindow.ts +6 -2
  87. package/src/account/kcContext/kcContextMocks.ts +164 -160
  88. package/src/account/lib/useGetClassName.ts +15 -14
  89. package/src/account/pages/Account.tsx +2 -2
  90. package/src/account/pages/Password.tsx +8 -8
  91. package/src/account/pages/Totp.tsx +4 -6
  92. package/src/bin/copy-keycloak-resources-to-public.ts +2 -2
  93. package/src/bin/download-keycloak-default-theme.ts +30 -8
  94. package/src/bin/eject-page.ts +48 -11
  95. package/src/bin/initialize-email-theme.ts +25 -17
  96. package/src/bin/keycloakify/buildJars/buildJar.ts +179 -104
  97. package/src/bin/keycloakify/buildJars/buildJars.ts +35 -16
  98. package/src/bin/keycloakify/buildJars/extensionVersions.ts +2 -1
  99. package/src/bin/keycloakify/buildJars/generatePom.ts +11 -3
  100. package/src/bin/keycloakify/buildJars/getKeycloakVersionRangeForJar.ts +33 -8
  101. package/src/bin/keycloakify/generateFtl/generateFtl.ts +49 -12
  102. package/src/bin/keycloakify/generateSrcMainResources/bringInAccountV1.ts +29 -18
  103. package/src/bin/keycloakify/generateSrcMainResources/generateMessageProperties.ts +35 -12
  104. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResources.ts +3 -1
  105. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForMainTheme.ts +86 -41
  106. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForThemeVariant.ts +39 -15
  107. package/src/bin/keycloakify/generateSrcMainResources/readExtraPageNames.ts +21 -7
  108. package/src/bin/keycloakify/generateSrcMainResources/readFieldNameUsage.ts +34 -7
  109. package/src/bin/keycloakify/generateStartKeycloakTestingContainer.ts +19 -5
  110. package/src/bin/keycloakify/keycloakify.ts +28 -9
  111. package/src/bin/keycloakify/replacers/replaceImportsInCssCode.ts +24 -5
  112. package/src/bin/keycloakify/replacers/replaceImportsInInlineCssCode.ts +6 -2
  113. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.ts +6 -3
  114. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/vite.ts +24 -6
  115. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts +49 -11
  116. package/src/bin/main.ts +78 -41
  117. package/src/bin/shared/KeycloakVersionRange.ts +3 -1
  118. package/src/bin/shared/buildOptions.ts +70 -43
  119. package/src/bin/shared/constants.ts +4 -2
  120. package/src/bin/shared/copyKeycloakResourcesToPublic.ts +27 -13
  121. package/src/bin/shared/downloadKeycloakDefaultTheme.ts +161 -218
  122. package/src/bin/shared/downloadKeycloakStaticResources.ts +25 -21
  123. package/src/bin/shared/getJarFileBasename.ts +3 -1
  124. package/src/bin/shared/getThemeSrcDirPath.ts +5 -2
  125. package/src/bin/shared/metaInfKeycloakThemes.ts +35 -8
  126. package/src/bin/shared/promptKeycloakVersion.ts +33 -14
  127. package/src/bin/start-keycloak/index.ts +1 -0
  128. package/src/bin/start-keycloak/myrealm-realm-23.json +2142 -0
  129. package/src/bin/start-keycloak/myrealm-realm-24.json +2318 -0
  130. package/src/bin/start-keycloak/start-keycloak.ts +467 -0
  131. package/src/bin/tools/SemVer.ts +32 -13
  132. package/src/bin/tools/String.prototype.replaceAll.ts +9 -2
  133. package/src/bin/tools/crawl.ts +4 -1
  134. package/src/bin/tools/crc32.ts +42 -24
  135. package/src/bin/tools/downloadAndExtractArchive/downloadAndExtractArchive.ts +262 -0
  136. package/src/bin/tools/downloadAndExtractArchive/fetchProxyOptions.ts +96 -0
  137. package/src/bin/tools/downloadAndExtractArchive/index.ts +1 -0
  138. package/src/bin/tools/extractArchive.ts +120 -0
  139. package/src/bin/tools/fetchProxyOptions.ts +31 -8
  140. package/src/bin/tools/getAbsoluteAndInOsFormatPath.ts +10 -2
  141. package/src/bin/tools/getNpmWorkspaceRootDirPath.ts +18 -5
  142. package/src/bin/tools/octokit-addons/getLatestsSemVersionedTag.ts +8 -2
  143. package/src/bin/tools/octokit-addons/listTags.ts +15 -4
  144. package/src/bin/tools/partitionPromiseSettledResults.ts +12 -3
  145. package/src/bin/tools/readThisNpmPackageVersion.ts +5 -1
  146. package/src/bin/tools/transformCodebase.ts +29 -10
  147. package/src/bin/tools/trimIndent.ts +4 -1
  148. package/src/lib/isStorybook.ts +3 -1
  149. package/src/lib/useGetClassName.ts +12 -3
  150. package/src/login/Template.tsx +14 -14
  151. package/src/login/TemplateProps.ts +4 -1
  152. package/src/login/UserProfileFormFields.tsx +44 -42
  153. package/src/login/i18n/baseMessages/ca.ts +1 -1
  154. package/src/login/i18n/baseMessages/el.ts +0 -1
  155. package/src/login/i18n/baseMessages/en.ts +1 -1
  156. package/src/login/i18n/baseMessages/es.ts +1 -1
  157. package/src/login/i18n/baseMessages/fa.ts +0 -1
  158. package/src/login/i18n/baseMessages/hu.ts +1 -1
  159. package/src/login/i18n/baseMessages/zh-CN.ts +1 -1
  160. package/src/login/i18n/i18n.tsx +42 -32
  161. package/src/login/kcContext/KcContext.ts +8 -2
  162. package/src/login/kcContext/createGetKcContext.ts +84 -37
  163. package/src/login/kcContext/getKcContext.ts +3 -1
  164. package/src/login/kcContext/getKcContextFromWindow.ts +6 -2
  165. package/src/login/kcContext/kcContextMocks.ts +339 -325
  166. package/src/login/lib/useDownloadTerms.ts +6 -4
  167. package/src/login/lib/useGetClassName.ts +119 -112
  168. package/src/login/lib/useUserProfileForm.tsx +219 -205
  169. package/src/login/pages/DeleteAccountConfirm.tsx +9 -3
  170. package/src/login/pages/FrontchannelLogout.tsx +1 -1
  171. package/src/login/pages/Login.tsx +2 -2
  172. package/src/login/pages/LoginRecoveryAuthnCodeConfig.tsx +3 -3
  173. package/src/login/pages/LoginResetPassword.tsx +2 -2
  174. package/src/login/pages/LoginUsername.tsx +2 -2
  175. package/src/login/pages/WebauthnAuthenticate.tsx +11 -8
  176. package/src/login/pages/WebauthnRegister.tsx +7 -7
  177. package/src/tools/AndByDiscriminatingKey.ts +12 -6
  178. package/src/tools/Array.prototype.every.ts +4 -1
  179. package/src/tools/LazyOrNot.ts +3 -1
  180. package/src/tools/clsx.ts +7 -1
  181. package/src/tools/deepAssign.ts +15 -8
  182. package/src/tools/deepClone.ts +3 -1
  183. package/src/tools/formatNumber.ts +4 -1
  184. package/src/tools/useConstCallback.ts +3 -1
  185. package/src/tools/useInsertLinkTags.ts +20 -7
  186. package/src/tools/useInsertScriptTags.ts +7 -2
  187. package/src/tools/useSetClassName.ts +4 -1
  188. package/src/vite-plugin/vite-plugin.ts +45 -21
  189. package/tools/Array.prototype.every.js +2 -1
  190. package/tools/Array.prototype.every.js.map +1 -1
  191. package/tools/clsx.js.map +1 -1
  192. package/tools/deepAssign.js +9 -7
  193. package/tools/deepAssign.js.map +1 -1
  194. package/tools/deepClone.js.map +1 -1
  195. package/tools/formatNumber.js.map +1 -1
  196. package/tools/useConstCallback.js.map +1 -1
  197. package/tools/useInsertLinkTags.js +5 -4
  198. package/tools/useInsertLinkTags.js.map +1 -1
  199. package/tools/useInsertScriptTags.js +5 -2
  200. package/tools/useInsertScriptTags.js.map +1 -1
  201. package/tools/useSetClassName.js.map +1 -1
  202. package/vite-plugin/index.js +975 -1651
  203. package/src/bin/shared/downloadAndUnzip.ts +0 -203
  204. package/src/bin/start-keycloak.ts +0 -309
  205. package/src/bin/tools/unzip.ts +0 -141
@@ -91,19 +91,19 @@ export function createUseI18n<ExtraMessageKey extends string = never>(extraMessa
91
91
 
92
92
  setI18n({
93
93
  ...createI18nTranslationFunctions({
94
- "fallbackMessages": {
94
+ fallbackMessages: {
95
95
  ...fallbackMessages,
96
96
  ...(keycloakifyExtraMessages[fallbackLanguageTag] ?? {}),
97
97
  ...(extraMessages[fallbackLanguageTag] ?? {})
98
98
  } as any,
99
- "messages": {
99
+ messages: {
100
100
  ...(await getMessages(currentLanguageTag)),
101
101
  ...((keycloakifyExtraMessages as any)[currentLanguageTag] ?? {}),
102
102
  ...(extraMessages[currentLanguageTag] ?? {})
103
103
  } as any
104
104
  }),
105
105
  currentLanguageTag,
106
- "getChangeLocalUrl": newLanguageTag => {
106
+ getChangeLocalUrl: newLanguageTag => {
107
107
  const { locale } = kcContext;
108
108
 
109
109
  assert(locale !== undefined, "Internationalization not enabled");
@@ -114,7 +114,7 @@ export function createUseI18n<ExtraMessageKey extends string = never>(extraMessa
114
114
 
115
115
  return targetSupportedLocale.url;
116
116
  },
117
- "labelBySupportedLanguageTag": Object.fromEntries(
117
+ labelBySupportedLanguageTag: Object.fromEntries(
118
118
  (kcContext.locale?.supported ?? []).map(({ languageTag, label }) => [languageTag, label])
119
119
  )
120
120
  });
@@ -170,7 +170,7 @@ function createI18nTranslationFunctions<MessageKey extends string>(params: {
170
170
  })();
171
171
 
172
172
  return doRenderMarkdown ? (
173
- <Markdown allowDangerousHtml renderers={{ "paragraph": "span" }}>
173
+ <Markdown allowDangerousHtml renderers={{ paragraph: "span" }}>
174
174
  {messageWithArgsInjectedIfAny}
175
175
  </Markdown>
176
176
  ) : (
@@ -186,7 +186,7 @@ function createI18nTranslationFunctions<MessageKey extends string>(params: {
186
186
  const keyUnwrappedFromCurlyBraces = match === null ? key : match[1];
187
187
 
188
188
  const out = resolveMsg({
189
- "key": keyUnwrappedFromCurlyBraces,
189
+ key: keyUnwrappedFromCurlyBraces,
190
190
  args,
191
191
  doRenderMarkdown
192
192
  });
@@ -195,36 +195,46 @@ function createI18nTranslationFunctions<MessageKey extends string>(params: {
195
195
  }
196
196
 
197
197
  return {
198
- "msgStr": (key, ...args) => resolveMsg({ key, args, "doRenderMarkdown": false }) as string,
199
- "msg": (key, ...args) => resolveMsg({ key, args, "doRenderMarkdown": true }) as JSX.Element,
200
- "advancedMsg": (key, ...args) => resolveMsgAdvanced({ key, args, "doRenderMarkdown": true }) as JSX.Element,
201
- "advancedMsgStr": (key, ...args) => resolveMsgAdvanced({ key, args, "doRenderMarkdown": false }) as string
198
+ msgStr: (key, ...args) => resolveMsg({ key, args, doRenderMarkdown: false }) as string,
199
+ msg: (key, ...args) => resolveMsg({ key, args, doRenderMarkdown: true }) as JSX.Element,
200
+ advancedMsg: (key, ...args) =>
201
+ resolveMsgAdvanced({
202
+ key,
203
+ args,
204
+ doRenderMarkdown: true
205
+ }) as JSX.Element,
206
+ advancedMsgStr: (key, ...args) =>
207
+ resolveMsgAdvanced({
208
+ key,
209
+ args,
210
+ doRenderMarkdown: false
211
+ }) as string
202
212
  };
203
213
  }
204
214
 
205
215
  const keycloakifyExtraMessages = {
206
- "en": {
207
- "shouldBeEqual": "{0} should be equal to {1}",
208
- "shouldBeDifferent": "{0} should be different to {1}",
209
- "shouldMatchPattern": "Pattern should match: `/{0}/`",
210
- "mustBeAnInteger": "Must be an integer",
211
- "notAValidOption": "Not a valid option",
212
- "newPasswordSameAsOld": "New password must be different from the old one",
213
- "passwordConfirmNotMatch": "Password confirmation does not match"
216
+ en: {
217
+ shouldBeEqual: "{0} should be equal to {1}",
218
+ shouldBeDifferent: "{0} should be different to {1}",
219
+ shouldMatchPattern: "Pattern should match: `/{0}/`",
220
+ mustBeAnInteger: "Must be an integer",
221
+ notAValidOption: "Not a valid option",
222
+ newPasswordSameAsOld: "New password must be different from the old one",
223
+ passwordConfirmNotMatch: "Password confirmation does not match"
214
224
  },
215
- "fr": {
225
+ fr: {
216
226
  /* spell-checker: disable */
217
- "shouldBeEqual": "{0} doit être égal à {1}",
218
- "shouldBeDifferent": "{0} doit être différent de {1}",
219
- "shouldMatchPattern": "Dois respecter le schéma: `/{0}/`",
220
- "mustBeAnInteger": "Doit être un nombre entier",
221
- "notAValidOption": "N'est pas une option valide",
222
-
223
- "logoutConfirmTitle": "Déconnexion",
224
- "logoutConfirmHeader": "Êtes-vous sûr(e) de vouloir vous déconnecter ?",
225
- "doLogout": "Se déconnecter",
226
- "newPasswordSameAsOld": "Le nouveau mot de passe doit être différent de l'ancien",
227
- "passwordConfirmNotMatch": "La confirmation du mot de passe ne correspond pas"
227
+ shouldBeEqual: "{0} doit être égal à {1}",
228
+ shouldBeDifferent: "{0} doit être différent de {1}",
229
+ shouldMatchPattern: "Dois respecter le schéma: `/{0}/`",
230
+ mustBeAnInteger: "Doit être un nombre entier",
231
+ notAValidOption: "N'est pas une option valide",
232
+
233
+ logoutConfirmTitle: "Déconnexion",
234
+ logoutConfirmHeader: "Êtes-vous sûr(e) de vouloir vous déconnecter ?",
235
+ doLogout: "Se déconnecter",
236
+ newPasswordSameAsOld: "Le nouveau mot de passe doit être différent de l'ancien",
237
+ passwordConfirmNotMatch: "La confirmation du mot de passe ne correspond pas"
228
238
  /* spell-checker: enable */
229
239
  }
230
240
  };
@@ -68,7 +68,10 @@ export declare namespace KcContext {
68
68
  * @param text to return
69
69
  * @return text if message exists for given field, else undefined
70
70
  */
71
- printIfExists: <T extends string>(fieldName: string, text: T) => T | undefined;
71
+ printIfExists: <T extends string>(
72
+ fieldName: string,
73
+ text: T
74
+ ) => T | undefined;
72
75
  /**
73
76
  * Check if exists error message for given fields
74
77
  *
@@ -4,17 +4,28 @@ import { isStorybook } from "keycloakify/lib/isStorybook";
4
4
  import type { ExtendKcContext } from "./getKcContextFromWindow";
5
5
  import { getKcContextFromWindow } from "./getKcContextFromWindow";
6
6
  import { symToStr } from "tsafe/symToStr";
7
- import { kcContextMocks, kcContextCommonMock } from "keycloakify/account/kcContext/kcContextMocks";
8
-
9
- export function createGetKcContext<KcContextExtension extends { pageId: string } = never>(params?: {
7
+ import {
8
+ kcContextMocks,
9
+ kcContextCommonMock
10
+ } from "keycloakify/account/kcContext/kcContextMocks";
11
+
12
+ export function createGetKcContext<
13
+ KcContextExtension extends { pageId: string } = never
14
+ >(params?: {
10
15
  mockData?: readonly DeepPartial<ExtendKcContext<KcContextExtension>>[];
11
16
  mockProperties?: Record<string, string>;
12
17
  }) {
13
18
  const { mockData, mockProperties } = params ?? {};
14
19
 
15
- function getKcContext<PageId extends ExtendKcContext<KcContextExtension>["pageId"] | undefined = undefined>(params?: {
20
+ function getKcContext<
21
+ PageId extends
22
+ | ExtendKcContext<KcContextExtension>["pageId"]
23
+ | undefined = undefined
24
+ >(params?: {
16
25
  mockPageId?: PageId;
17
- storyPartialKcContext?: DeepPartial<Extract<ExtendKcContext<KcContextExtension>, { pageId: PageId }>>;
26
+ storyPartialKcContext?: DeepPartial<
27
+ Extract<ExtendKcContext<KcContextExtension>, { pageId: PageId }>
28
+ >;
18
29
  }): {
19
30
  kcContext: PageId extends undefined
20
31
  ? ExtendKcContext<KcContextExtension> | undefined
@@ -32,34 +43,46 @@ export function createGetKcContext<KcContextExtension extends { pageId: string }
32
43
  break warn_that_mock_is_enbaled;
33
44
  }
34
45
 
35
- console.log(`%cKeycloakify: ${symToStr({ mockPageId })} set to ${mockPageId}.`, "background: red; color: yellow; font-size: medium");
46
+ console.log(
47
+ `%cKeycloakify: ${symToStr({
48
+ mockPageId
49
+ })} set to ${mockPageId}.`,
50
+ "background: red; color: yellow; font-size: medium"
51
+ );
36
52
  }
37
53
 
38
- const kcContextDefaultMock = kcContextMocks.find(({ pageId }) => pageId === mockPageId);
54
+ const kcContextDefaultMock = kcContextMocks.find(
55
+ ({ pageId }) => pageId === mockPageId
56
+ );
39
57
 
40
58
  const partialKcContextCustomMock = (() => {
41
59
  const out: DeepPartial<ExtendKcContext<KcContextExtension>> = {};
42
60
 
43
- const mockDataPick = mockData?.find(({ pageId }) => pageId === mockPageId);
61
+ const mockDataPick = mockData?.find(
62
+ ({ pageId }) => pageId === mockPageId
63
+ );
44
64
 
45
65
  if (mockDataPick !== undefined) {
46
66
  deepAssign({
47
- "target": out,
48
- "source": mockDataPick
67
+ target: out,
68
+ source: mockDataPick
49
69
  });
50
70
  }
51
71
 
52
72
  if (storyPartialKcContext !== undefined) {
53
73
  deepAssign({
54
- "target": out,
55
- "source": storyPartialKcContext
74
+ target: out,
75
+ source: storyPartialKcContext
56
76
  });
57
77
  }
58
78
 
59
79
  return Object.keys(out).length === 0 ? undefined : out;
60
80
  })();
61
81
 
62
- if (kcContextDefaultMock === undefined && partialKcContextCustomMock === undefined) {
82
+ if (
83
+ kcContextDefaultMock === undefined &&
84
+ partialKcContextCustomMock === undefined
85
+ ) {
63
86
  console.warn(
64
87
  [
65
88
  `WARNING: You declared the non build in page ${mockPageId} but you didn't `,
@@ -72,21 +95,24 @@ export function createGetKcContext<KcContextExtension extends { pageId: string }
72
95
  const kcContext: any = {};
73
96
 
74
97
  deepAssign({
75
- "target": kcContext,
76
- "source": kcContextDefaultMock !== undefined ? kcContextDefaultMock : { "pageId": mockPageId, ...kcContextCommonMock }
98
+ target: kcContext,
99
+ source:
100
+ kcContextDefaultMock !== undefined
101
+ ? kcContextDefaultMock
102
+ : { pageId: mockPageId, ...kcContextCommonMock }
77
103
  });
78
104
 
79
105
  if (partialKcContextCustomMock !== undefined) {
80
106
  deepAssign({
81
- "target": kcContext,
82
- "source": partialKcContextCustomMock
107
+ target: kcContext,
108
+ source: partialKcContextCustomMock
83
109
  });
84
110
  }
85
111
 
86
112
  if (mockProperties !== undefined) {
87
113
  deepAssign({
88
- "target": kcContext.properties,
89
- "source": mockProperties
114
+ target: kcContext.properties,
115
+ source: mockProperties
90
116
  });
91
117
  }
92
118
 
@@ -94,14 +120,14 @@ export function createGetKcContext<KcContextExtension extends { pageId: string }
94
120
  }
95
121
 
96
122
  if (realKcContext === undefined) {
97
- return { "kcContext": undefined as any };
123
+ return { kcContext: undefined as any };
98
124
  }
99
125
 
100
126
  if (realKcContext.themeType !== "account") {
101
- return { "kcContext": undefined as any };
127
+ return { kcContext: undefined as any };
102
128
  }
103
129
 
104
- return { "kcContext": realKcContext as any };
130
+ return { kcContext: realKcContext as any };
105
131
  }
106
132
 
107
133
  return { getKcContext };
@@ -5,7 +5,9 @@ import { createGetKcContext } from "./createGetKcContext";
5
5
  /** NOTE: We now recommend using createGetKcContext instead of this function to make storybook integration easier
6
6
  * See: https://github.com/keycloakify/keycloakify-starter/blob/main/src/keycloak-theme/account/kcContext.ts
7
7
  */
8
- export function getKcContext<KcContextExtension extends { pageId: string } = never>(params?: {
8
+ export function getKcContext<
9
+ KcContextExtension extends { pageId: string } = never
10
+ >(params?: {
9
11
  mockPageId?: ExtendKcContext<KcContextExtension>["pageId"];
10
12
  mockData?: readonly DeepPartial<ExtendKcContext<KcContextExtension>>[];
11
13
  }): { kcContext: ExtendKcContext<KcContextExtension> | undefined } {
@@ -2,10 +2,14 @@ import type { AndByDiscriminatingKey } from "keycloakify/tools/AndByDiscriminati
2
2
  import { nameOfTheGlobal } from "keycloakify/bin/shared/constants";
3
3
  import type { KcContext } from "./KcContext";
4
4
 
5
- export type ExtendKcContext<KcContextExtension extends { pageId: string }> = [KcContextExtension] extends [never]
5
+ export type ExtendKcContext<KcContextExtension extends { pageId: string }> = [
6
+ KcContextExtension
7
+ ] extends [never]
6
8
  ? KcContext
7
9
  : AndByDiscriminatingKey<"pageId", KcContextExtension & KcContext.Common, KcContext>;
8
10
 
9
- export function getKcContextFromWindow<KcContextExtension extends { pageId: string } = never>(): ExtendKcContext<KcContextExtension> | undefined {
11
+ export function getKcContextFromWindow<
12
+ KcContextExtension extends { pageId: string } = never
13
+ >(): ExtendKcContext<KcContextExtension> | undefined {
10
14
  return typeof window === "undefined" ? undefined : (window as any)[nameOfTheGlobal];
11
15
  }