keycloakify 10.0.0-rc.17 → 10.0.0-rc.19

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 (208) 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 +2265 -2028
  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 +232 -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/ftl_object_to_js_code_declaring_an_object.ftl +20 -2
  102. package/src/bin/keycloakify/generateFtl/generateFtl.ts +49 -12
  103. package/src/bin/keycloakify/generateSrcMainResources/bringInAccountV1.ts +29 -18
  104. package/src/bin/keycloakify/generateSrcMainResources/generateMessageProperties.ts +35 -12
  105. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResources.ts +3 -1
  106. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForMainTheme.ts +86 -41
  107. package/src/bin/keycloakify/generateSrcMainResources/generateSrcMainResourcesForThemeVariant.ts +39 -15
  108. package/src/bin/keycloakify/generateSrcMainResources/readExtraPageNames.ts +21 -7
  109. package/src/bin/keycloakify/generateSrcMainResources/readFieldNameUsage.ts +34 -7
  110. package/src/bin/keycloakify/generateStartKeycloakTestingContainer.ts +19 -5
  111. package/src/bin/keycloakify/keycloakify.ts +28 -9
  112. package/src/bin/keycloakify/replacers/replaceImportsInCssCode.ts +24 -5
  113. package/src/bin/keycloakify/replacers/replaceImportsInInlineCssCode.ts +6 -2
  114. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/replaceImportsInJsCode.ts +6 -3
  115. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/vite.ts +24 -6
  116. package/src/bin/keycloakify/replacers/replaceImportsInJsCode/webpack.ts +49 -11
  117. package/src/bin/main.ts +78 -41
  118. package/src/bin/shared/KeycloakVersionRange.ts +3 -1
  119. package/src/bin/shared/buildOptions.ts +70 -43
  120. package/src/bin/shared/constants.ts +4 -2
  121. package/src/bin/shared/copyKeycloakResourcesToPublic.ts +27 -13
  122. package/src/bin/shared/downloadKeycloakDefaultTheme.ts +161 -218
  123. package/src/bin/shared/downloadKeycloakStaticResources.ts +25 -21
  124. package/src/bin/shared/getJarFileBasename.ts +3 -1
  125. package/src/bin/shared/getThemeSrcDirPath.ts +5 -2
  126. package/src/bin/shared/metaInfKeycloakThemes.ts +35 -8
  127. package/src/bin/shared/promptKeycloakVersion.ts +33 -14
  128. package/src/bin/start-keycloak/appBuild.ts +128 -0
  129. package/src/bin/start-keycloak/index.ts +1 -0
  130. package/src/bin/start-keycloak/keycloakifyBuild.ts +41 -0
  131. package/src/bin/start-keycloak/myrealm-realm-23.json +2142 -0
  132. package/src/bin/start-keycloak/myrealm-realm-24.json +2318 -0
  133. package/src/bin/start-keycloak/start-keycloak.ts +469 -0
  134. package/src/bin/tools/SemVer.ts +32 -13
  135. package/src/bin/tools/String.prototype.replaceAll.ts +9 -2
  136. package/src/bin/tools/crawl.ts +4 -1
  137. package/src/bin/tools/crc32.ts +42 -24
  138. package/src/bin/tools/downloadAndExtractArchive/downloadAndExtractArchive.ts +262 -0
  139. package/src/bin/tools/downloadAndExtractArchive/fetchProxyOptions.ts +96 -0
  140. package/src/bin/tools/downloadAndExtractArchive/index.ts +1 -0
  141. package/src/bin/tools/extractArchive.ts +132 -0
  142. package/src/bin/tools/fetchProxyOptions.ts +31 -8
  143. package/src/bin/tools/getAbsoluteAndInOsFormatPath.ts +10 -2
  144. package/src/bin/tools/getNpmWorkspaceRootDirPath.ts +18 -5
  145. package/src/bin/tools/octokit-addons/getLatestsSemVersionedTag.ts +8 -2
  146. package/src/bin/tools/octokit-addons/listTags.ts +15 -4
  147. package/src/bin/tools/partitionPromiseSettledResults.ts +12 -3
  148. package/src/bin/tools/readThisNpmPackageVersion.ts +5 -1
  149. package/src/bin/tools/transformCodebase.ts +29 -10
  150. package/src/bin/tools/trimIndent.ts +4 -1
  151. package/src/lib/isStorybook.ts +3 -1
  152. package/src/lib/useGetClassName.ts +12 -3
  153. package/src/login/Template.tsx +14 -14
  154. package/src/login/TemplateProps.ts +4 -1
  155. package/src/login/UserProfileFormFields.tsx +44 -42
  156. package/src/login/i18n/baseMessages/ca.ts +1 -1
  157. package/src/login/i18n/baseMessages/el.ts +0 -1
  158. package/src/login/i18n/baseMessages/en.ts +1 -1
  159. package/src/login/i18n/baseMessages/es.ts +1 -1
  160. package/src/login/i18n/baseMessages/fa.ts +0 -1
  161. package/src/login/i18n/baseMessages/hu.ts +1 -1
  162. package/src/login/i18n/baseMessages/zh-CN.ts +1 -1
  163. package/src/login/i18n/i18n.tsx +42 -32
  164. package/src/login/kcContext/KcContext.ts +8 -2
  165. package/src/login/kcContext/createGetKcContext.ts +84 -37
  166. package/src/login/kcContext/getKcContext.ts +3 -1
  167. package/src/login/kcContext/getKcContextFromWindow.ts +6 -2
  168. package/src/login/kcContext/kcContextMocks.ts +339 -325
  169. package/src/login/lib/useDownloadTerms.ts +6 -4
  170. package/src/login/lib/useGetClassName.ts +119 -112
  171. package/src/login/lib/useUserProfileForm.tsx +219 -205
  172. package/src/login/pages/DeleteAccountConfirm.tsx +9 -3
  173. package/src/login/pages/FrontchannelLogout.tsx +1 -1
  174. package/src/login/pages/Login.tsx +2 -2
  175. package/src/login/pages/LoginRecoveryAuthnCodeConfig.tsx +3 -3
  176. package/src/login/pages/LoginResetPassword.tsx +2 -2
  177. package/src/login/pages/LoginUsername.tsx +2 -2
  178. package/src/login/pages/WebauthnAuthenticate.tsx +11 -8
  179. package/src/login/pages/WebauthnRegister.tsx +7 -7
  180. package/src/tools/AndByDiscriminatingKey.ts +12 -6
  181. package/src/tools/Array.prototype.every.ts +4 -1
  182. package/src/tools/LazyOrNot.ts +3 -1
  183. package/src/tools/clsx.ts +7 -1
  184. package/src/tools/deepAssign.ts +15 -8
  185. package/src/tools/deepClone.ts +3 -1
  186. package/src/tools/formatNumber.ts +4 -1
  187. package/src/tools/useConstCallback.ts +3 -1
  188. package/src/tools/useInsertLinkTags.ts +20 -7
  189. package/src/tools/useInsertScriptTags.ts +7 -2
  190. package/src/tools/useSetClassName.ts +4 -1
  191. package/src/vite-plugin/vite-plugin.ts +45 -21
  192. package/tools/Array.prototype.every.js +2 -1
  193. package/tools/Array.prototype.every.js.map +1 -1
  194. package/tools/clsx.js.map +1 -1
  195. package/tools/deepAssign.js +9 -7
  196. package/tools/deepAssign.js.map +1 -1
  197. package/tools/deepClone.js.map +1 -1
  198. package/tools/formatNumber.js.map +1 -1
  199. package/tools/useConstCallback.js.map +1 -1
  200. package/tools/useInsertLinkTags.js +5 -4
  201. package/tools/useInsertLinkTags.js.map +1 -1
  202. package/tools/useInsertScriptTags.js +5 -2
  203. package/tools/useInsertScriptTags.js.map +1 -1
  204. package/tools/useSetClassName.js.map +1 -1
  205. package/vite-plugin/index.js +985 -1651
  206. package/src/bin/shared/downloadAndUnzip.ts +0 -203
  207. package/src/bin/start-keycloak.ts +0 -309
  208. package/src/bin/tools/unzip.ts +0 -141
@@ -1,5 +1,8 @@
1
1
  import { assert, type Equals } from "tsafe/assert";
2
- import type { KeycloakAccountV1Version, KeycloakThemeAdditionalInfoExtensionVersion } from "./extensionVersions";
2
+ import type {
3
+ KeycloakAccountV1Version,
4
+ KeycloakThemeAdditionalInfoExtensionVersion
5
+ } from "./extensionVersions";
3
6
  import type { KeycloakVersionRange } from "../../shared/KeycloakVersionRange";
4
7
 
5
8
  export function getKeycloakVersionRangeForJar(params: {
@@ -7,7 +10,11 @@ export function getKeycloakVersionRangeForJar(params: {
7
10
  keycloakAccountV1Version: KeycloakAccountV1Version;
8
11
  keycloakThemeAdditionalInfoExtensionVersion: KeycloakThemeAdditionalInfoExtensionVersion;
9
12
  }): KeycloakVersionRange | undefined {
10
- const { keycloakAccountV1Version, keycloakThemeAdditionalInfoExtensionVersion, doesImplementAccountTheme } = params;
13
+ const {
14
+ keycloakAccountV1Version,
15
+ keycloakThemeAdditionalInfoExtensionVersion,
16
+ doesImplementAccountTheme
17
+ } = params;
11
18
 
12
19
  if (doesImplementAccountTheme) {
13
20
  const keycloakVersionRange = (() => {
@@ -19,7 +26,9 @@ export function getKeycloakVersionRangeForJar(params: {
19
26
  case "1.1.5":
20
27
  return undefined;
21
28
  }
22
- assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false);
29
+ assert<
30
+ Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>
31
+ >(false);
23
32
  case "0.3":
24
33
  switch (keycloakThemeAdditionalInfoExtensionVersion) {
25
34
  case null:
@@ -27,7 +36,9 @@ export function getKeycloakVersionRangeForJar(params: {
27
36
  case "1.1.5":
28
37
  return "23" as const;
29
38
  }
30
- assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false);
39
+ assert<
40
+ Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>
41
+ >(false);
31
42
  case "0.4":
32
43
  switch (keycloakThemeAdditionalInfoExtensionVersion) {
33
44
  case null:
@@ -35,11 +46,18 @@ export function getKeycloakVersionRangeForJar(params: {
35
46
  case "1.1.5":
36
47
  return "24-and-above" as const;
37
48
  }
38
- assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false);
49
+ assert<
50
+ Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>
51
+ >(false);
39
52
  }
40
53
  })();
41
54
 
42
- assert<Equals<typeof keycloakVersionRange, KeycloakVersionRange.WithAccountTheme | undefined>>();
55
+ assert<
56
+ Equals<
57
+ typeof keycloakVersionRange,
58
+ KeycloakVersionRange.WithAccountTheme | undefined
59
+ >
60
+ >();
43
61
 
44
62
  return keycloakVersionRange;
45
63
  } else {
@@ -54,10 +72,17 @@ export function getKeycloakVersionRangeForJar(params: {
54
72
  case "1.1.5":
55
73
  return "22-and-above";
56
74
  }
57
- assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false);
75
+ assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(
76
+ false
77
+ );
58
78
  })();
59
79
 
60
- assert<Equals<typeof keycloakVersionRange, KeycloakVersionRange.WithoutAccountTheme | undefined>>();
80
+ assert<
81
+ Equals<
82
+ typeof keycloakVersionRange,
83
+ KeycloakVersionRange.WithoutAccountTheme | undefined
84
+ >
85
+ >();
61
86
 
62
87
  return keycloakVersionRange;
63
88
  }
@@ -2,8 +2,6 @@
2
2
  (()=>{
3
3
  <#assign pageId="PAGE_ID_xIgLsPgGId9D8e">
4
4
  const out = ${ftl_object_to_js_code_declaring_an_object(.data_model, [])?no_esc};
5
- out["msg"]= function(){ throw new Error("use import { useKcMessage } from 'keycloakify'"); };
6
- out["advancedMsg"]= function(){ throw new Error("use import { useKcMessage } from 'keycloakify'"); };
7
5
  out["messagesPerField"]= {
8
6
  <#assign fieldNames = [ FIELD_NAMES_eKsIY4ZsZ4xeM ]>
9
7
  <#attempt>
@@ -181,6 +179,26 @@ try {
181
179
  out["url"]["resourcesCommonPath"] = out["url"]["resourcesPath"] + "/" + "RESOURCES_COMMON_cLsLsMrtDkpVv";
182
180
  } catch(error) { }
183
181
 
182
+ <#if profile?? && profile.attributes??>
183
+ out["__localizationReamlOverrides_userProfile"] = {
184
+ <#list profile.attributes as attribute>
185
+ <#if attribute.annotations?? && attribute.displayName??>
186
+ "${attribute.displayName}xx": "${advancedMsg(attribute.displayName)?no_esc}",
187
+ </#if>
188
+ <#if attribute.annotations.inputHelperTextBefore??>
189
+ "${attribute.annotations.inputHelperTextBefore}": "${advancedMsg(attribute.annotations.inputHelperTextBefore)?no_esc}",
190
+ </#if>
191
+ <#if attribute.annotations.inputHelperTextAfter??>
192
+ "${attribute.annotations.inputHelperTextAfter}": "${advancedMsg(attribute.annotations.inputHelperTextAfter)?no_esc}",
193
+ </#if>
194
+ <#if attribute.annotations.inputTypePlaceholder??>
195
+ "${attribute.annotations.inputTypePlaceholder}": "${advancedMsg(attribute.annotations.inputTypePlaceholder)?no_esc}",
196
+ </#if>
197
+ </#list>
198
+ };
199
+ </#if>
200
+
201
+
184
202
  return out;
185
203
 
186
204
  })();
@@ -6,7 +6,12 @@ import * as fs from "fs";
6
6
  import { join as pathJoin } from "path";
7
7
  import type { BuildOptions } from "../../shared/buildOptions";
8
8
  import { assert } from "tsafe/assert";
9
- import { type ThemeType, nameOfTheGlobal, basenameOfTheKeycloakifyResourcesDir, resources_common } from "../../shared/constants";
9
+ import {
10
+ type ThemeType,
11
+ nameOfTheGlobal,
12
+ basenameOfTheKeycloakifyResourcesDir,
13
+ resources_common
14
+ } from "../../shared/constants";
10
15
  import { getThisCodebaseRootDirPath } from "../../tools/getThisCodebaseRootDirPath";
11
16
 
12
17
  export type BuildOptionsLike = {
@@ -28,7 +33,15 @@ export function generateFtlFilesCodeFactory(params: {
28
33
  themeType: ThemeType;
29
34
  fieldNames: string[];
30
35
  }) {
31
- const { themeName, cssGlobalsToDefine, indexHtmlCode, buildOptions, keycloakifyVersion, themeType, fieldNames } = params;
36
+ const {
37
+ themeName,
38
+ cssGlobalsToDefine,
39
+ indexHtmlCode,
40
+ buildOptions,
41
+ keycloakifyVersion,
42
+ themeType,
43
+ fieldNames
44
+ } = params;
32
45
 
33
46
  const $ = cheerio.load(indexHtmlCode);
34
47
 
@@ -38,7 +51,10 @@ export function generateFtlFilesCodeFactory(params: {
38
51
 
39
52
  assert(jsCode !== null);
40
53
 
41
- const { fixedJsCode } = replaceImportsInJsCode({ jsCode, buildOptions });
54
+ const { fixedJsCode } = replaceImportsInJsCode({
55
+ jsCode,
56
+ buildOptions
57
+ });
42
58
 
43
59
  $(element).text(fixedJsCode);
44
60
  });
@@ -72,7 +88,9 @@ export function generateFtlFilesCodeFactory(params: {
72
88
  $(element).attr(
73
89
  attrName,
74
90
  href.replace(
75
- new RegExp(`^${(buildOptions.urlPathname ?? "/").replace(/\//g, "\\/")}`),
91
+ new RegExp(
92
+ `^${(buildOptions.urlPathname ?? "/").replace(/\//g, "\\/")}`
93
+ ),
76
94
  `\${url.resourcesPath}/${basenameOfTheKeycloakifyResourcesDir}/`
77
95
  )
78
96
  );
@@ -98,20 +116,33 @@ export function generateFtlFilesCodeFactory(params: {
98
116
  //FTL is no valid html, we can't insert with cheerio, we put placeholder for injecting later.
99
117
  const ftlObjectToJsCodeDeclaringAnObject = fs
100
118
  .readFileSync(
101
- pathJoin(getThisCodebaseRootDirPath(), "src", "bin", "keycloakify", "generateFtl", "ftl_object_to_js_code_declaring_an_object.ftl")
119
+ pathJoin(
120
+ getThisCodebaseRootDirPath(),
121
+ "src",
122
+ "bin",
123
+ "keycloakify",
124
+ "generateFtl",
125
+ "ftl_object_to_js_code_declaring_an_object.ftl"
126
+ )
102
127
  )
103
128
  .toString("utf8")
104
129
  .match(/^<script>const _=((?:.|\n)+)<\/script>[\n]?$/)![1]
105
- .replace("FIELD_NAMES_eKsIY4ZsZ4xeM", fieldNames.map(name => `"${name}"`).join(", "))
130
+ .replace(
131
+ "FIELD_NAMES_eKsIY4ZsZ4xeM",
132
+ fieldNames.map(name => `"${name}"`).join(", ")
133
+ )
106
134
  .replace("KEYCLOAKIFY_VERSION_xEdKd3xEdr", keycloakifyVersion)
107
135
  .replace("KEYCLOAKIFY_THEME_VERSION_sIgKd3xEdr3dx", buildOptions.themeVersion)
108
136
  .replace("KEYCLOAKIFY_THEME_TYPE_dExKd3xEdr", themeType)
109
137
  .replace("KEYCLOAKIFY_THEME_NAME_cXxKd3xEer", themeName)
110
138
  .replace("RESOURCES_COMMON_cLsLsMrtDkpVv", resources_common);
111
139
 
112
- const ftlObjectToJsCodeDeclaringAnObjectPlaceholder = '{ "x": "vIdLqMeOed9sdLdIdOxdK0d" }';
140
+ const ftlObjectToJsCodeDeclaringAnObjectPlaceholder =
141
+ '{ "x": "vIdLqMeOed9sdLdIdOxdK0d" }';
113
142
 
114
- $("head").prepend(`<script>\nwindow.${nameOfTheGlobal}=${ftlObjectToJsCodeDeclaringAnObjectPlaceholder}</script>`);
143
+ $("head").prepend(
144
+ `<script>\nwindow.${nameOfTheGlobal}=${ftlObjectToJsCodeDeclaringAnObjectPlaceholder}</script>`
145
+ );
115
146
 
116
147
  // Remove part of the document marked as ignored.
117
148
  {
@@ -119,7 +150,9 @@ export function generateFtlFilesCodeFactory(params: {
119
150
 
120
151
  startTags.each((...[, startTag]) => {
121
152
  const $startTag = $(startTag);
122
- const $endTag = $startTag.nextAll('meta[name="keycloakify-ignore-end"]').first();
153
+ const $endTag = $startTag
154
+ .nextAll('meta[name="keycloakify-ignore-end"]')
155
+ .first();
123
156
 
124
157
  if ($endTag.length) {
125
158
  let currentNode = $startTag.next();
@@ -146,9 +179,13 @@ export function generateFtlFilesCodeFactory(params: {
146
179
  let ftlCode = $.html();
147
180
 
148
181
  Object.entries({
149
- [ftlObjectToJsCodeDeclaringAnObjectPlaceholder]: ftlObjectToJsCodeDeclaringAnObject,
150
- "PAGE_ID_xIgLsPgGId9D8e": pageId
151
- }).map(([searchValue, replaceValue]) => (ftlCode = ftlCode.replace(searchValue, replaceValue)));
182
+ [ftlObjectToJsCodeDeclaringAnObjectPlaceholder]:
183
+ ftlObjectToJsCodeDeclaringAnObject,
184
+ PAGE_ID_xIgLsPgGId9D8e: pageId
185
+ }).map(
186
+ ([searchValue, replaceValue]) =>
187
+ (ftlCode = ftlCode.replace(searchValue, replaceValue))
188
+ );
152
189
 
153
190
  return { ftlCode };
154
191
  }
@@ -2,10 +2,13 @@ import * as fs from "fs";
2
2
  import { join as pathJoin } from "path";
3
3
  import { assert } from "tsafe/assert";
4
4
  import type { BuildOptions } from "../../shared/buildOptions";
5
- import { resources_common, lastKeycloakVersionWithAccountV1, accountV1ThemeName } from "../../shared/constants";
5
+ import {
6
+ resources_common,
7
+ lastKeycloakVersionWithAccountV1,
8
+ accountV1ThemeName
9
+ } from "../../shared/constants";
6
10
  import { downloadKeycloakDefaultTheme } from "../../shared/downloadKeycloakDefaultTheme";
7
11
  import { transformCodebase } from "../../tools/transformCodebase";
8
- import { rmSync } from "../../tools/fs.rmSync";
9
12
 
10
13
  type BuildOptionsLike = {
11
14
  cacheDirPath: string;
@@ -18,33 +21,36 @@ assert<BuildOptions extends BuildOptionsLike ? true : false>();
18
21
  export async function bringInAccountV1(params: { buildOptions: BuildOptionsLike }) {
19
22
  const { buildOptions } = params;
20
23
 
21
- const builtinKeycloakThemeTmpDirPath = pathJoin(buildOptions.cacheDirPath, "bringInAccountV1_tmp");
22
-
23
- await downloadKeycloakDefaultTheme({
24
- "destDirPath": builtinKeycloakThemeTmpDirPath,
25
- "keycloakVersion": lastKeycloakVersionWithAccountV1,
24
+ const { defaultThemeDirPath } = await downloadKeycloakDefaultTheme({
25
+ keycloakVersion: lastKeycloakVersionWithAccountV1,
26
26
  buildOptions
27
27
  });
28
28
 
29
- const accountV1DirPath = pathJoin(buildOptions.keycloakifyBuildDirPath, "src", "main", "resources", "theme", accountV1ThemeName, "account");
29
+ const accountV1DirPath = pathJoin(
30
+ buildOptions.keycloakifyBuildDirPath,
31
+ "src",
32
+ "main",
33
+ "resources",
34
+ "theme",
35
+ accountV1ThemeName,
36
+ "account"
37
+ );
30
38
 
31
39
  transformCodebase({
32
- "srcDirPath": pathJoin(builtinKeycloakThemeTmpDirPath, "base", "account"),
33
- "destDirPath": accountV1DirPath
40
+ srcDirPath: pathJoin(defaultThemeDirPath, "base", "account"),
41
+ destDirPath: accountV1DirPath
34
42
  });
35
43
 
36
44
  transformCodebase({
37
- "srcDirPath": pathJoin(builtinKeycloakThemeTmpDirPath, "keycloak", "account", "resources"),
38
- "destDirPath": pathJoin(accountV1DirPath, "resources")
45
+ srcDirPath: pathJoin(defaultThemeDirPath, "keycloak", "account", "resources"),
46
+ destDirPath: pathJoin(accountV1DirPath, "resources")
39
47
  });
40
48
 
41
49
  transformCodebase({
42
- "srcDirPath": pathJoin(builtinKeycloakThemeTmpDirPath, "keycloak", "common", "resources"),
43
- "destDirPath": pathJoin(accountV1DirPath, "resources", resources_common)
50
+ srcDirPath: pathJoin(defaultThemeDirPath, "keycloak", "common", "resources"),
51
+ destDirPath: pathJoin(accountV1DirPath, "resources", resources_common)
44
52
  });
45
53
 
46
- rmSync(builtinKeycloakThemeTmpDirPath, { "recursive": true });
47
-
48
54
  fs.writeFileSync(
49
55
  pathJoin(accountV1DirPath, "theme.properties"),
50
56
  Buffer.from(
@@ -58,8 +64,13 @@ export async function bringInAccountV1(params: { buildOptions: BuildOptionsLike
58
64
  "css/account.css",
59
65
  "img/icon-sidebar-active.png",
60
66
  "img/logo.png",
61
- ...["patternfly.min.css", "patternfly-additions.min.css", "patternfly-additions.min.css"].map(
62
- fileBasename => `${resources_common}/node_modules/patternfly/dist/css/${fileBasename}`
67
+ ...[
68
+ "patternfly.min.css",
69
+ "patternfly-additions.min.css",
70
+ "patternfly-additions.min.css"
71
+ ].map(
72
+ fileBasename =>
73
+ `${resources_common}/node_modules/patternfly/dist/css/${fileBasename}`
63
74
  )
64
75
  ].join(" "),
65
76
  "",
@@ -16,8 +16,8 @@ export function generateMessageProperties(params: {
16
16
  const { themeSrcDirPath, themeType } = params;
17
17
 
18
18
  let files = crawl({
19
- "dirPath": pathJoin(themeSrcDirPath, themeType),
20
- "returnedPathsType": "absolute"
19
+ dirPath: pathJoin(themeSrcDirPath, themeType),
20
+ returnedPathsType: "absolute"
21
21
  });
22
22
 
23
23
  files = files.filter(file => {
@@ -34,7 +34,9 @@ export function generateMessageProperties(params: {
34
34
 
35
35
  files = files.sort((a, b) => a.length - b.length);
36
36
 
37
- files = files.filter(file => readFileSync(file).toString("utf8").includes("createUseI18n"));
37
+ files = files.filter(file =>
38
+ readFileSync(file).toString("utf8").includes("createUseI18n")
39
+ );
38
40
 
39
41
  if (files.length === 0) {
40
42
  return [];
@@ -43,18 +45,25 @@ export function generateMessageProperties(params: {
43
45
  const extraMessages = files
44
46
  .map(file => {
45
47
  const root = recast.parse(readFileSync(file).toString("utf8"), {
46
- "parser": {
47
- "parse": (code: string) => babelParser.parse(code, { "sourceType": "module", "plugins": ["typescript"] }),
48
- "generator": babelGenerate,
49
- "types": babelTypes
48
+ parser: {
49
+ parse: (code: string) =>
50
+ babelParser.parse(code, {
51
+ sourceType: "module",
52
+ plugins: ["typescript"]
53
+ }),
54
+ generator: babelGenerate,
55
+ types: babelTypes
50
56
  }
51
57
  });
52
58
 
53
59
  const codes: string[] = [];
54
60
 
55
61
  recast.visit(root, {
56
- "visitCallExpression": function (path) {
57
- if (path.node.callee.type === "Identifier" && path.node.callee.name === "createUseI18n") {
62
+ visitCallExpression: function (path) {
63
+ if (
64
+ path.node.callee.type === "Identifier" &&
65
+ path.node.callee.name === "createUseI18n"
66
+ ) {
58
67
  codes.push(babelGenerate(path.node.arguments[0] as any).code);
59
68
  }
60
69
  this.traverse(path);
@@ -65,7 +74,9 @@ export function generateMessageProperties(params: {
65
74
  })
66
75
  .flat()
67
76
  .map(code => {
68
- let extraMessages: { [languageTag: string]: Record<string, string> } = {};
77
+ let extraMessages: {
78
+ [languageTag: string]: Record<string, string>;
79
+ } = {};
69
80
 
70
81
  try {
71
82
  eval(`${symToStr({ extraMessages })} = ${code}`);
@@ -140,7 +151,14 @@ export function generateMessageProperties(params: {
140
151
 
141
152
  out.push({
142
153
  languageTag,
143
- "propertiesFileSource": ["# This file was generated by keycloakify", "", "parent=base", "", propertiesFileSource, ""].join("\n")
154
+ propertiesFileSource: [
155
+ "# This file was generated by keycloakify",
156
+ "",
157
+ "parent=base",
158
+ "",
159
+ propertiesFileSource,
160
+ ""
161
+ ].join("\n")
144
162
  });
145
163
  }
146
164
 
@@ -157,7 +175,12 @@ function toUTF16(codePoint: number): string {
157
175
  codePoint -= 0x10000;
158
176
  let highSurrogate = (codePoint >> 10) + 0xd800;
159
177
  let lowSurrogate = (codePoint % 0x400) + 0xdc00;
160
- return "\\u" + highSurrogate.toString(16).padStart(4, "0") + "\\u" + lowSurrogate.toString(16).padStart(4, "0");
178
+ return (
179
+ "\\u" +
180
+ highSurrogate.toString(16).padStart(4, "0") +
181
+ "\\u" +
182
+ lowSurrogate.toString(16).padStart(4, "0")
183
+ );
161
184
  }
162
185
  }
163
186
 
@@ -12,7 +12,9 @@ export type BuildOptionsLike = BuildOptionsLike_generateSrcMainResourcesForMainT
12
12
 
13
13
  assert<BuildOptions extends BuildOptionsLike ? true : false>();
14
14
 
15
- export async function generateSrcMainResources(params: { buildOptions: BuildOptionsLike }): Promise<void> {
15
+ export async function generateSrcMainResources(params: {
16
+ buildOptions: BuildOptionsLike;
17
+ }): Promise<void> {
16
18
  const { buildOptions } = params;
17
19
 
18
20
  const [themeName, ...themeVariantNames] = buildOptions.themeNames;