keycloakify 11.3.7-rc.0 → 11.3.8

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/README.md CHANGED
@@ -69,7 +69,7 @@ Project backers, we trust and recommend their services.
69
69
  <br/>
70
70
 
71
71
  <p align="center">
72
- <i><a href="https://phasetwo.io/"><strong>Keycloak on Steroids as a Service</strong></a> - Keycloak community contributors of popular <a href="https://github.com/p2-inc#our-extensions-">extensions</a> providing free and dedicated <a href="https://phasetwo.io/hosting/">Keycloak hosting</a> and enterprise <a href="https://phasetwo.io/support/">Keycloak support</a> to businesses of all sizes.</i>
72
+ <i><a href="https://phasetwo.io/?utm_source=keycloakify"><strong>Keycloak as a Service</strong></a> - Keycloak community contributors of popular <a href="https://github.com/p2-inc#our-extensions-?utm_source=keycloakify">extensions</a> providing free and dedicated <a href="https://phasetwo.io/hosting/?utm_source=keycloakify">Keycloak hosting</a> and enterprise <a href="https://phasetwo.io/support/?utm_source=keycloakify">Keycloak support</a> to businesses of all sizes.</i>
73
73
  </p>
74
74
 
75
75
  <br/>
package/bin/526.index.js CHANGED
@@ -477,8 +477,6 @@ async function command(params) {
477
477
  buildContext.startKeycloakOptions.keycloakExtraArgs.join(SPACE_PLACEHOLDER)
478
478
  ])
479
479
  ];
480
- console.log("DEBUG issue #694");
481
- console.log(JSON.stringify(dockerRunArgs, null, 2));
482
480
  console.log(source_default().blue([
483
481
  `$ docker run \\`,
484
482
  ...dockerRunArgs
package/bin/932.index.js CHANGED
@@ -18,6 +18,13 @@ __webpack_require__.r(__webpack_exports__);
18
18
  /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_3__);
19
19
  /* harmony import */ var _tools_downloadAndExtractArchive__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(38367);
20
20
  /* harmony import */ var _shared_customHandler_delegate__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(72138);
21
+ /* harmony import */ var make_fetch_happen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(9525);
22
+ /* harmony import */ var make_fetch_happen__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(make_fetch_happen__WEBPACK_IMPORTED_MODULE_6__);
23
+ /* harmony import */ var _tools_SemVer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(12171);
24
+ /* harmony import */ var tsafe_assert__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(29041);
25
+
26
+
27
+
21
28
 
22
29
 
23
30
 
@@ -40,15 +47,31 @@ async function command(params) {
40
47
  process.exit(-1);
41
48
  }
42
49
  console.log("Initialize with the base email theme from which version of Keycloak?");
43
- const { keycloakVersion } = await (0,_shared_promptKeycloakVersion__WEBPACK_IMPORTED_MODULE_2__/* .promptKeycloakVersion */ .s)({
50
+ let { keycloakVersion } = await (0,_shared_promptKeycloakVersion__WEBPACK_IMPORTED_MODULE_2__/* .promptKeycloakVersion */ .s)({
44
51
  // NOTE: This is arbitrary
45
52
  startingFromMajor: 17,
46
53
  excludeMajorVersions: [],
47
54
  doOmitPatch: false,
48
55
  buildContext
49
56
  });
57
+ const getUrl = (keycloakVersion) => {
58
+ return `https://repo1.maven.org/maven2/org/keycloak/keycloak-themes/${keycloakVersion}/keycloak-themes-${keycloakVersion}.jar`;
59
+ };
60
+ keycloakVersion = await (async () => {
61
+ const keycloakVersionParsed = _tools_SemVer__WEBPACK_IMPORTED_MODULE_7__/* .SemVer.parse */ .h.parse(keycloakVersion);
62
+ while (true) {
63
+ const url = getUrl(_tools_SemVer__WEBPACK_IMPORTED_MODULE_7__/* .SemVer.stringify */ .h.stringify(keycloakVersionParsed));
64
+ const response = await make_fetch_happen__WEBPACK_IMPORTED_MODULE_6___default()(url, buildContext.fetchOptions);
65
+ if (response.ok) {
66
+ break;
67
+ }
68
+ (0,tsafe_assert__WEBPACK_IMPORTED_MODULE_8__/* .assert */ .h)(keycloakVersionParsed.patch !== 0);
69
+ keycloakVersionParsed.patch--;
70
+ }
71
+ return _tools_SemVer__WEBPACK_IMPORTED_MODULE_7__/* .SemVer.stringify */ .h.stringify(keycloakVersionParsed);
72
+ })();
50
73
  const { extractedDirPath } = await (0,_tools_downloadAndExtractArchive__WEBPACK_IMPORTED_MODULE_4__/* .downloadAndExtractArchive */ .I)({
51
- url: `https://repo1.maven.org/maven2/org/keycloak/keycloak-themes/${keycloakVersion}/keycloak-themes-${keycloakVersion}.jar`,
74
+ url: getUrl(keycloakVersion),
52
75
  cacheDirPath: buildContext.cacheDirPath,
53
76
  fetchOptions: buildContext.fetchOptions,
54
77
  uniqueIdOfOnArchiveFile: "extractOnlyEmailTheme",
@@ -1,6 +1,7 @@
1
1
  import { useEffect } from "react";
2
2
  import { useInsertScriptTags } from "../../tools/useInsertScriptTags";
3
3
  import { assert } from "../../tools/assert";
4
+ import { waitForElementMountedOnDom } from "../../tools/waitForElementMountedOnDom";
4
5
  assert();
5
6
  assert();
6
7
  export function useScript(params) {
@@ -43,7 +44,12 @@ export function useScript(params) {
43
44
  if (isFetchingTranslations) {
44
45
  return;
45
46
  }
46
- insertScriptTags();
47
+ (async () => {
48
+ await waitForElementMountedOnDom({
49
+ elementId: authButtonId
50
+ });
51
+ insertScriptTags();
52
+ })();
47
53
  }, [isFetchingTranslations]);
48
54
  }
49
55
  //# sourceMappingURL=LoginPasskeysConditionalAuthenticate.useScript.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoginPasskeysConditionalAuthenticate.useScript.js","sourceRoot":"","sources":["../../src/login/pages/LoginPasskeysConditionalAuthenticate.useScript.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAclD,MAAM,EAAmG,CAAC;AAC1G,MAAM,EAAuF,CAAC;AAO9F,MAAM,UAAU,SAAS,CAAC,MAA0E;IAChG,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAEjD,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAE9F,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC;IAEhD,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CAAC;QAC7C,mBAAmB,EAAE,8BAA8B;QACnD,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,GAAG,EAAE,CAAC;8DAC2B,GAAG,CAAC,aAAa;wDACvB,GAAG,CAAC,aAAa;;kEAEP,YAAY;;6CAEjC,gBAAgB;sCACvB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;6CAClB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;iCAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;0CACX,aAAa;;;;;uCAKhB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;;;mCAM/D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;;iBAE5E;aACJ;SACJ;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,sBAAsB,EAAE;YACxB,OAAO;SACV;QAED,gBAAgB,EAAE,CAAC;IACvB,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"LoginPasskeysConditionalAuthenticate.useScript.js","sourceRoot":"","sources":["../../src/login/pages/LoginPasskeysConditionalAuthenticate.useScript.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAa1F,MAAM,EAAmG,CAAC;AAC1G,MAAM,EAAuF,CAAC;AAO9F,MAAM,UAAU,SAAS,CAAC,MAA0E;IAChG,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAEjD,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAE9F,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC;IAEhD,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CAAC;QAC7C,mBAAmB,EAAE,8BAA8B;QACnD,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,GAAG,EAAE,CAAC;8DAC2B,GAAG,CAAC,aAAa;wDACvB,GAAG,CAAC,aAAa;;kEAEP,YAAY;;6CAEjC,gBAAgB;sCACvB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;6CAClB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC;iCAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;0CACX,aAAa;;;;;uCAKhB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;;;mCAM/D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;;iBAE5E;aACJ;SACJ;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,sBAAsB,EAAE;YACxB,OAAO;SACV;QAED,CAAC,KAAK,IAAI,EAAE;YACR,MAAM,0BAA0B,CAAC;gBAC7B,SAAS,EAAE,YAAY;aAC1B,CAAC,CAAC;YAEH,gBAAgB,EAAE,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { useEffect } from "react";
2
2
  import { useInsertScriptTags } from "../../tools/useInsertScriptTags";
3
+ import { waitForElementMountedOnDom } from "../../tools/waitForElementMountedOnDom";
3
4
  export function useScript(params) {
4
5
  const { olRecoveryCodesListId, i18n } = params;
5
6
  const { msgStr, isFetchingTranslations } = i18n;
@@ -127,7 +128,12 @@ export function useScript(params) {
127
128
  if (isFetchingTranslations) {
128
129
  return;
129
130
  }
130
- insertScriptTags();
131
+ (async () => {
132
+ await waitForElementMountedOnDom({
133
+ elementId: olRecoveryCodesListId
134
+ });
135
+ insertScriptTags();
136
+ })();
131
137
  }, [isFetchingTranslations]);
132
138
  }
133
139
  //# sourceMappingURL=LoginRecoveryAuthnCodeConfig.useScript.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LoginRecoveryAuthnCodeConfig.useScript.js","sourceRoot":"","sources":["../../src/login/pages/LoginRecoveryAuthnCodeConfig.useScript.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAO5E,MAAM,UAAU,SAAS,CAAC,MAAyD;IAC/E,MAAM,EAAE,qBAAqB,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAE/C,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC;IAEhD,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CAAC;QAC7C,mBAAmB,EAAE,8BAA8B;QACnD,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,GAAG,EAAE,CAAC;;;;;kEAK+B,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0EA+Bb,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;8BAwBjE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;;8BAE7D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC;8BAClE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;8EAsBX,qBAAqB;;;;;;;;;;sCAU7D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;;sCAE7D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC;sCAClE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;;;;;;;;;;iBAahF;aACJ;SACJ;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,sBAAsB,EAAE;YACxB,OAAO;SACV;QAED,gBAAgB,EAAE,CAAC;IACvB,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"LoginRecoveryAuthnCodeConfig.useScript.js","sourceRoot":"","sources":["../../src/login/pages/LoginRecoveryAuthnCodeConfig.useScript.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAO1F,MAAM,UAAU,SAAS,CAAC,MAAyD;IAC/E,MAAM,EAAE,qBAAqB,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAE/C,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC;IAEhD,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CAAC;QAC7C,mBAAmB,EAAE,8BAA8B;QACnD,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,GAAG,EAAE,CAAC;;;;;kEAK+B,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0EA+Bb,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;8BAwBjE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;;8BAE7D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC;8BAClE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;8EAsBX,qBAAqB;;;;;;;;;;sCAU7D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;;sCAE7D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC;sCAClE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;;;;;;;;;;iBAahF;aACJ;SACJ;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,sBAAsB,EAAE;YACxB,OAAO;SACV;QAED,CAAC,KAAK,IAAI,EAAE;YACR,MAAM,0BAA0B,CAAC;gBAC7B,SAAS,EAAE,qBAAqB;aACnC,CAAC,CAAC;YAEH,gBAAgB,EAAE,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { useEffect } from "react";
2
2
  import { useInsertScriptTags } from "../../tools/useInsertScriptTags";
3
3
  import { assert } from "../../tools/assert";
4
+ import { waitForElementMountedOnDom } from "../../tools/waitForElementMountedOnDom";
4
5
  assert();
5
6
  assert();
6
7
  export function useScript(params) {
@@ -35,7 +36,12 @@ export function useScript(params) {
35
36
  if (isFetchingTranslations) {
36
37
  return;
37
38
  }
38
- insertScriptTags();
39
+ (async () => {
40
+ await waitForElementMountedOnDom({
41
+ elementId: authButtonId
42
+ });
43
+ insertScriptTags();
44
+ })();
39
45
  }, [isFetchingTranslations]);
40
46
  }
41
47
  //# sourceMappingURL=WebauthnAuthenticate.useScript.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WebauthnAuthenticate.useScript.js","sourceRoot":"","sources":["../../src/login/pages/WebauthnAuthenticate.useScript.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAclD,MAAM,EAAmF,CAAC;AAC1F,MAAM,EAAuE,CAAC;AAO9E,MAAM,UAAU,SAAS,CAAC,MAA0E;IAChG,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAEjD,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAE9F,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC;IAEhD,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CAAC;QAC7C,mBAAmB,EAAE,sBAAsB;QAC3C,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,GAAG,EAAE,CAAC;;8DAE2B,GAAG,CAAC,aAAa;kEACb,YAAY;;;iDAG7B,gBAAgB;2CACtB,SAAS;kDACF,gBAAgB;sCAC5B,IAAI;8CACI,aAAa;uCACpB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;iBAIjF;aACJ;SACJ;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,sBAAsB,EAAE;YACxB,OAAO;SACV;QAED,gBAAgB,EAAE,CAAC;IACvB,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"WebauthnAuthenticate.useScript.js","sourceRoot":"","sources":["../../src/login/pages/WebauthnAuthenticate.useScript.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAa1F,MAAM,EAAmF,CAAC;AAC1F,MAAM,EAAuE,CAAC;AAO9E,MAAM,UAAU,SAAS,CAAC,MAA0E;IAChG,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAEjD,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC;IAE9F,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC;IAEhD,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CAAC;QAC7C,mBAAmB,EAAE,sBAAsB;QAC3C,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,GAAG,EAAE,CAAC;;8DAE2B,GAAG,CAAC,aAAa;kEACb,YAAY;;;iDAG7B,gBAAgB;2CACtB,SAAS;kDACF,gBAAgB;sCAC5B,IAAI;8CACI,aAAa;uCACpB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;iBAIjF;aACJ;SACJ;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,sBAAsB,EAAE;YACxB,OAAO;SACV;QAED,CAAC,KAAK,IAAI,EAAE;YACR,MAAM,0BAA0B,CAAC;gBAC7B,SAAS,EAAE,YAAY;aAC1B,CAAC,CAAC;YAEH,gBAAgB,EAAE,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { useEffect } from "react";
2
2
  import { useInsertScriptTags } from "../../tools/useInsertScriptTags";
3
3
  import { assert } from "../../tools/assert";
4
+ import { waitForElementMountedOnDom } from "../../tools/waitForElementMountedOnDom";
4
5
  assert();
5
6
  assert();
6
7
  export function useScript(params) {
@@ -43,7 +44,12 @@ export function useScript(params) {
43
44
  if (isFetchingTranslations) {
44
45
  return;
45
46
  }
46
- insertScriptTags();
47
+ (async () => {
48
+ await waitForElementMountedOnDom({
49
+ elementId: authButtonId
50
+ });
51
+ insertScriptTags();
52
+ })();
47
53
  }, [isFetchingTranslations]);
48
54
  }
49
55
  //# sourceMappingURL=WebauthnRegister.useScript.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WebauthnRegister.useScript.js","sourceRoot":"","sources":["../../src/login/pages/WebauthnRegister.useScript.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAqBlD,MAAM,EAA+E,CAAC;AACtF,MAAM,EAAmE,CAAC;AAO1E,MAAM,UAAU,SAAS,CAAC,MAA0E;IAChG,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAEjD,MAAM,EACF,GAAG,EACH,SAAS,EACT,MAAM,EACN,QAAQ,EACR,mBAAmB,EACnB,YAAY,EACZ,IAAI,EACJ,+BAA+B,EAC/B,uBAAuB,EACvB,kBAAkB,EAClB,2BAA2B,EAC3B,aAAa,EACb,oBAAoB,EACvB,GAAG,SAAS,CAAC;IAEd,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC;IAEhD,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CAAC;QAC7C,mBAAmB,EAAE,8BAA8B;QACnD,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,GAAG,EAAE,CAAC;0DACuB,GAAG,CAAC,aAAa;sEACL,YAAY;;;2CAGvC,SAAS;wCACZ,MAAM;0CACJ,QAAQ;oDACE,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;6CAC1C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;qCACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gEACO,IAAI,CAAC,SAAS,CAAC,+BAA+B,CAAC;wDACvD,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC;mDAC5C,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC;4DACzB,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC;8CACzD,aAAa;qDACN,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC;0CAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;gDACpD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC;uCAC1E,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;iBAIjF;aACJ;SACJ;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,sBAAsB,EAAE;YACxB,OAAO;SACV;QAED,gBAAgB,EAAE,CAAC;IACvB,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"WebauthnRegister.useScript.js","sourceRoot":"","sources":["../../src/login/pages/WebauthnRegister.useScript.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAoB1F,MAAM,EAA+E,CAAC;AACtF,MAAM,EAAmE,CAAC;AAO1E,MAAM,UAAU,SAAS,CAAC,MAA0E;IAChG,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAEjD,MAAM,EACF,GAAG,EACH,SAAS,EACT,MAAM,EACN,QAAQ,EACR,mBAAmB,EACnB,YAAY,EACZ,IAAI,EACJ,+BAA+B,EAC/B,uBAAuB,EACvB,kBAAkB,EAClB,2BAA2B,EAC3B,aAAa,EACb,oBAAoB,EACvB,GAAG,SAAS,CAAC;IAEd,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC;IAEhD,MAAM,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,CAAC;QAC7C,mBAAmB,EAAE,8BAA8B;QACnD,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,GAAG,EAAE,CAAC;0DACuB,GAAG,CAAC,aAAa;sEACL,YAAY;;;2CAGvC,SAAS;wCACZ,MAAM;0CACJ,QAAQ;oDACE,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;6CAC1C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;qCACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gEACO,IAAI,CAAC,SAAS,CAAC,+BAA+B,CAAC;wDACvD,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC;mDAC5C,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC;4DACzB,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC;8CACzD,aAAa;qDACN,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC;0CAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC;gDACpD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC;uCAC1E,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;;;;iBAIjF;aACJ;SACJ;KACJ,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,sBAAsB,EAAE;YACxB,OAAO;SACV;QAED,CAAC,KAAK,IAAI,EAAE;YACR,MAAM,0BAA0B,CAAC;gBAC7B,SAAS,EAAE,YAAY;aAC1B,CAAC,CAAC;YAEH,gBAAgB,EAAE,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keycloakify",
3
- "version": "11.3.7-rc.0",
3
+ "version": "11.3.8",
4
4
  "description": "Framework to create custom Keycloak UIs",
5
5
  "repository": {
6
6
  "type": "git",
@@ -850,6 +850,7 @@
850
850
  "src/tools/useOnFirstMount.ts",
851
851
  "src/tools/useSetClassName.ts",
852
852
  "src/tools/vendor/dompurify.ts",
853
+ "src/tools/waitForElementMountedOnDom.ts",
853
854
  "src/tsconfig.json",
854
855
  "src/vite-plugin/index.ts",
855
856
  "src/vite-plugin/tsconfig.json",
@@ -977,6 +978,9 @@
977
978
  "tools/useSetClassName.js.map",
978
979
  "tools/vendor/dompurify.d.ts",
979
980
  "tools/vendor/dompurify.js",
981
+ "tools/waitForElementMountedOnDom.d.ts",
982
+ "tools/waitForElementMountedOnDom.js",
983
+ "tools/waitForElementMountedOnDom.js.map",
980
984
  "bin/add-story.d.ts",
981
985
  "bin/copy-keycloak-resources-to-public.d.ts",
982
986
  "bin/eject-page.d.ts",
@@ -5,6 +5,9 @@ import type { BuildContext } from "./shared/buildContext";
5
5
  import * as fs from "fs";
6
6
  import { downloadAndExtractArchive } from "./tools/downloadAndExtractArchive";
7
7
  import { maybeDelegateCommandToCustomHandler } from "./shared/customHandler_delegate";
8
+ import fetch from "make-fetch-happen";
9
+ import { SemVer } from "./tools/SemVer";
10
+ import { assert } from "tsafe/assert";
8
11
 
9
12
  export async function command(params: { buildContext: BuildContext }) {
10
13
  const { buildContext } = params;
@@ -36,7 +39,7 @@ export async function command(params: { buildContext: BuildContext }) {
36
39
 
37
40
  console.log("Initialize with the base email theme from which version of Keycloak?");
38
41
 
39
- const { keycloakVersion } = await promptKeycloakVersion({
42
+ let { keycloakVersion } = await promptKeycloakVersion({
40
43
  // NOTE: This is arbitrary
41
44
  startingFromMajor: 17,
42
45
  excludeMajorVersions: [],
@@ -44,8 +47,32 @@ export async function command(params: { buildContext: BuildContext }) {
44
47
  buildContext
45
48
  });
46
49
 
50
+ const getUrl = (keycloakVersion: string) => {
51
+ return `https://repo1.maven.org/maven2/org/keycloak/keycloak-themes/${keycloakVersion}/keycloak-themes-${keycloakVersion}.jar`;
52
+ };
53
+
54
+ keycloakVersion = await (async () => {
55
+ const keycloakVersionParsed = SemVer.parse(keycloakVersion);
56
+
57
+ while (true) {
58
+ const url = getUrl(SemVer.stringify(keycloakVersionParsed));
59
+
60
+ const response = await fetch(url, buildContext.fetchOptions);
61
+
62
+ if (response.ok) {
63
+ break;
64
+ }
65
+
66
+ assert(keycloakVersionParsed.patch !== 0);
67
+
68
+ keycloakVersionParsed.patch--;
69
+ }
70
+
71
+ return SemVer.stringify(keycloakVersionParsed);
72
+ })();
73
+
47
74
  const { extractedDirPath } = await downloadAndExtractArchive({
48
- url: `https://repo1.maven.org/maven2/org/keycloak/keycloak-themes/${keycloakVersion}/keycloak-themes-${keycloakVersion}.jar`,
75
+ url: getUrl(keycloakVersion),
49
76
  cacheDirPath: buildContext.cacheDirPath,
50
77
  fetchOptions: buildContext.fetchOptions,
51
78
  uniqueIdOfOnArchiveFile: "extractOnlyEmailTheme",
@@ -451,10 +451,6 @@ export async function command(params: {
451
451
  ])
452
452
  ];
453
453
 
454
- console.log("DEBUG issue #694");
455
-
456
- console.log(JSON.stringify(dockerRunArgs, null, 2));
457
-
458
454
  console.log(
459
455
  chalk.blue(
460
456
  [
@@ -2,6 +2,7 @@ import { useEffect } from "react";
2
2
  import { useInsertScriptTags } from "keycloakify/tools/useInsertScriptTags";
3
3
  import { assert } from "keycloakify/tools/assert";
4
4
  import { KcContext } from "keycloakify/login/KcContext/KcContext";
5
+ import { waitForElementMountedOnDom } from "keycloakify/tools/waitForElementMountedOnDom";
5
6
 
6
7
  type KcContextLike = {
7
8
  url: {
@@ -67,6 +68,12 @@ export function useScript(params: { authButtonId: string; kcContext: KcContextLi
67
68
  return;
68
69
  }
69
70
 
70
- insertScriptTags();
71
+ (async () => {
72
+ await waitForElementMountedOnDom({
73
+ elementId: authButtonId
74
+ });
75
+
76
+ insertScriptTags();
77
+ })();
71
78
  }, [isFetchingTranslations]);
72
79
  }
@@ -1,5 +1,6 @@
1
1
  import { useEffect } from "react";
2
2
  import { useInsertScriptTags } from "keycloakify/tools/useInsertScriptTags";
3
+ import { waitForElementMountedOnDom } from "keycloakify/tools/waitForElementMountedOnDom";
3
4
 
4
5
  type I18nLike = {
5
6
  msgStr: (key: "recovery-codes-download-file-header" | "recovery-codes-download-file-description" | "recovery-codes-download-file-date") => string;
@@ -137,6 +138,12 @@ export function useScript(params: { olRecoveryCodesListId: string; i18n: I18nLik
137
138
  return;
138
139
  }
139
140
 
140
- insertScriptTags();
141
+ (async () => {
142
+ await waitForElementMountedOnDom({
143
+ elementId: olRecoveryCodesListId
144
+ });
145
+
146
+ insertScriptTags();
147
+ })();
141
148
  }, [isFetchingTranslations]);
142
149
  }
@@ -2,6 +2,7 @@ import { useEffect } from "react";
2
2
  import { useInsertScriptTags } from "keycloakify/tools/useInsertScriptTags";
3
3
  import { assert } from "keycloakify/tools/assert";
4
4
  import { KcContext } from "keycloakify/login/KcContext/KcContext";
5
+ import { waitForElementMountedOnDom } from "keycloakify/tools/waitForElementMountedOnDom";
5
6
 
6
7
  type KcContextLike = {
7
8
  url: {
@@ -59,6 +60,12 @@ export function useScript(params: { authButtonId: string; kcContext: KcContextLi
59
60
  return;
60
61
  }
61
62
 
62
- insertScriptTags();
63
+ (async () => {
64
+ await waitForElementMountedOnDom({
65
+ elementId: authButtonId
66
+ });
67
+
68
+ insertScriptTags();
69
+ })();
63
70
  }, [isFetchingTranslations]);
64
71
  }
@@ -2,6 +2,7 @@ import { useEffect } from "react";
2
2
  import { useInsertScriptTags } from "keycloakify/tools/useInsertScriptTags";
3
3
  import { assert } from "keycloakify/tools/assert";
4
4
  import { KcContext } from "keycloakify/login/KcContext/KcContext";
5
+ import { waitForElementMountedOnDom } from "keycloakify/tools/waitForElementMountedOnDom";
5
6
 
6
7
  type KcContextLike = {
7
8
  url: {
@@ -88,6 +89,12 @@ export function useScript(params: { authButtonId: string; kcContext: KcContextLi
88
89
  return;
89
90
  }
90
91
 
91
- insertScriptTags();
92
+ (async () => {
93
+ await waitForElementMountedOnDom({
94
+ elementId: authButtonId
95
+ });
96
+
97
+ insertScriptTags();
98
+ })();
92
99
  }, [isFetchingTranslations]);
93
100
  }
@@ -0,0 +1,30 @@
1
+ export async function waitForElementMountedOnDom(params: {
2
+ elementId: string;
3
+ }): Promise<void> {
4
+ const { elementId } = params;
5
+
6
+ const getElement = () => document.getElementById(elementId);
7
+
8
+ const element = getElement();
9
+
10
+ if (element === null) {
11
+ let prElementPresentInTheDom_resolve: () => void;
12
+ const prElementPresentInTheDom = new Promise<void>(
13
+ resolve => (prElementPresentInTheDom_resolve = resolve)
14
+ );
15
+
16
+ // Observe the dom for the element to be added
17
+ const observer = new MutationObserver(() => {
18
+ const element = getElement();
19
+ if (element === null) {
20
+ return;
21
+ }
22
+ observer.disconnect();
23
+ prElementPresentInTheDom_resolve();
24
+ });
25
+
26
+ observer.observe(document.body, { childList: true, subtree: true });
27
+
28
+ await prElementPresentInTheDom;
29
+ }
30
+ }
@@ -0,0 +1,3 @@
1
+ export declare function waitForElementMountedOnDom(params: {
2
+ elementId: string;
3
+ }): Promise<void>;
@@ -0,0 +1,21 @@
1
+ export async function waitForElementMountedOnDom(params) {
2
+ const { elementId } = params;
3
+ const getElement = () => document.getElementById(elementId);
4
+ const element = getElement();
5
+ if (element === null) {
6
+ let prElementPresentInTheDom_resolve;
7
+ const prElementPresentInTheDom = new Promise(resolve => (prElementPresentInTheDom_resolve = resolve));
8
+ // Observe the dom for the element to be added
9
+ const observer = new MutationObserver(() => {
10
+ const element = getElement();
11
+ if (element === null) {
12
+ return;
13
+ }
14
+ observer.disconnect();
15
+ prElementPresentInTheDom_resolve();
16
+ });
17
+ observer.observe(document.body, { childList: true, subtree: true });
18
+ await prElementPresentInTheDom;
19
+ }
20
+ }
21
+ //# sourceMappingURL=waitForElementMountedOnDom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waitForElementMountedOnDom.js","sourceRoot":"","sources":["../src/tools/waitForElementMountedOnDom.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,MAEhD;IACG,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAE7B,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAE5D,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAE7B,IAAI,OAAO,KAAK,IAAI,EAAE;QAClB,IAAI,gCAA4C,CAAC;QACjD,MAAM,wBAAwB,GAAG,IAAI,OAAO,CACxC,OAAO,CAAC,EAAE,CAAC,CAAC,gCAAgC,GAAG,OAAO,CAAC,CAC1D,CAAC;QAEF,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;YACvC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,IAAI,OAAO,KAAK,IAAI,EAAE;gBAClB,OAAO;aACV;YACD,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtB,gCAAgC,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpE,MAAM,wBAAwB,CAAC;KAClC;AACL,CAAC"}