keycloakify 4.2.7 → 4.2.11

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 CHANGED
@@ -1,3 +1,20 @@
1
+ ### **4.2.11** (2021-12-07)
2
+
3
+
4
+
5
+ ### **4.2.10** (2021-11-12)
6
+
7
+ - Export an exaustive list of KcLanguageTag
8
+
9
+ ### **4.2.9** (2021-11-11)
10
+
11
+ - Fix useAdvancedMsg
12
+
13
+ ### **4.2.8** (2021-11-10)
14
+
15
+ - Update doc about pattern that can be used for user attributes #50
16
+ - Bring back Safari compat
17
+
1
18
  ### **4.2.7** (2021-11-09)
2
19
 
3
20
  - Fix useFormValidationSlice
package/README.md CHANGED
@@ -77,6 +77,7 @@ If you already have a Keycloak custom theme, it can be easily ported to Keycloak
77
77
  - [Implement context persistence (optional)](#implement-context-persistence-optional)
78
78
  - [Kickstart video](#kickstart-video)
79
79
  - [About the errors related to `objectToJson` in Keycloak logs.](#about-the-errors-related-to-objecttojson-in-keycloak-logs)
80
+ - [The pages take too long to load ?](#the-pages-take-too-long-to-load-)
80
81
  - [Adding custom message (to `i18n/useKcMessage.tsx`)](#adding-custom-message-to-i18nusekcmessagetsx)
81
82
  - [Email domain whitelist](#email-domain-whitelist)
82
83
  - [Changelog highlights](#changelog-highlights)
@@ -307,6 +308,8 @@ Checkout a complete setup [here](https://github.com/garronej/keycloakify-demo-ap
307
308
  </a>
308
309
  </p>
309
310
 
311
+ NOTE: In reality the regexp used in this gif doesn't work server side, the regexp pattern should be `^[^@]@gmail\.com$` 😬.
312
+
310
313
  User Profile is a Keycloak feature that enables to
311
314
  [define, from the admin console](https://user-images.githubusercontent.com/6702424/136872461-1f5b64ef-d2ef-4c6b-bb8d-07d4729552b3.png),
312
315
  what information you want to collect on your users in the register page and to validate inputs
@@ -459,6 +462,10 @@ To [converts the `.ftl` values into a JavaScript object](https://github.com/Inse
459
462
  without making assumptions on the `.data_model` we have to do things that throws.
460
463
  It's all-right because every statement that can fail is inside an `<#attempt><#recorver>` block but it results in errors being printed to the logs.
461
464
 
465
+ # The pages take too long to load ?
466
+
467
+ The problem of templates taking a long time to load only happens in the test environment, when you have a console logging all the above-mentioned `.ftl` warnings in real time. Logging all those warnings is what takes time. Once in production page load is way faster.
468
+
462
469
  # Adding custom message (to `i18n/useKcMessage.tsx`)
463
470
 
464
471
  You can reproduce [this approach](https://github.com/garronej/keycloakify-demo-app/blob/main/src/kcMessagesExtension.ts)
@@ -467,6 +474,9 @@ This approach is a bit hacky as it doesn't provide type safety but it works.
467
474
 
468
475
  # Email domain whitelist
469
476
 
477
+ NOTE: This have been kind of deprecated by [user attribute](#user-profile-and-frontend-form-validation) you could
478
+ use a pattern [like this one](https://github.com/InseeFrLab/onyxia-web/blob/f1206e0329b3b8d401ca7bffa95ca9c213cb190a/src/app/components/KcApp/kcContext.ts#L106) to whitelist email domains.
479
+
470
480
  If you want to restrict the emails domain that can register, you can use [this plugin](https://github.com/micedre/keycloak-mail-whitelisting)
471
481
  and `kcRegisterContext["authorizedMailDomains"]` to validate on.
472
482
 
@@ -24,6 +24,7 @@ declare const kcLanguageByTagLabel: {
24
24
  };
25
25
  export declare type LanguageLabel = typeof kcLanguageByTagLabel[keyof typeof kcLanguageByTagLabel];
26
26
  export declare function getKcLanguageTagLabel(language: KcLanguageTag): LanguageLabel;
27
+ export declare const kcLanguageTags: ("tr" | "no" | "en" | "fr" | "ca" | "cs" | "da" | "de" | "es" | "hu" | "it" | "ja" | "lt" | "nl" | "pl" | "pt-BR" | "ru" | "sk" | "sv" | "zh-CN")[];
27
28
  /**
28
29
  * Pass in "fr-FR" or "français" for example, it will return the AvailableLanguage
29
30
  * it corresponds to: "fr".
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getBestMatchAmongKcLanguageTag = exports.getKcLanguageTagLabel = void 0;
3
+ exports.getBestMatchAmongKcLanguageTag = exports.kcLanguageTags = exports.getKcLanguageTagLabel = void 0;
4
4
  var objectKeys_1 = require("tsafe/objectKeys");
5
5
  var login_1 = require("./kcMessages/login");
6
6
  var kcLanguageByTagLabel = {
@@ -32,7 +32,7 @@ function getKcLanguageTagLabel(language) {
32
32
  return (_a = kcLanguageByTagLabel[language]) !== null && _a !== void 0 ? _a : language;
33
33
  }
34
34
  exports.getKcLanguageTagLabel = getKcLanguageTagLabel;
35
- var availableLanguages = (0, objectKeys_1.objectKeys)(login_1.kcMessages);
35
+ exports.kcLanguageTags = (0, objectKeys_1.objectKeys)(login_1.kcMessages);
36
36
  /**
37
37
  * Pass in "fr-FR" or "français" for example, it will return the AvailableLanguage
38
38
  * it corresponds to: "fr".
@@ -41,7 +41,7 @@ var availableLanguages = (0, objectKeys_1.objectKeys)(login_1.kcMessages);
41
41
  */
42
42
  function getBestMatchAmongKcLanguageTag(languageLike) {
43
43
  var iso2LanguageLike = languageLike.split("-")[0].toLowerCase();
44
- var kcLanguageTag = availableLanguages.find(function (language) {
44
+ var kcLanguageTag = exports.kcLanguageTags.find(function (language) {
45
45
  return language.toLowerCase().includes(iso2LanguageLike) ||
46
46
  getKcLanguageTagLabel(language).toLocaleLowerCase() === languageLike.toLocaleLowerCase();
47
47
  });
@@ -1 +1 @@
1
- {"version":3,"file":"KcLanguageTag.js","sourceRoot":"","sources":["../../src/lib/i18n/KcLanguageTag.ts"],"names":[],"mappings":";;;AAAA,+CAA8C;AAC9C,4CAAgD;AAIhD,IAAM,oBAAoB,GAAG;IACzB,4BAA4B;IAC5B,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,oBAAoB;IAC7B,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,QAAQ;IACd,2BAA2B;CACrB,CAAC;AAIX,SAAgB,qBAAqB,CAAC,QAAuB;;IACzD,OAAO,MAAA,oBAAoB,CAAC,QAAQ,CAAC,mCAAI,QAAQ,CAAC;AACtD,CAAC;AAFD,sDAEC;AAED,IAAM,kBAAkB,GAAG,IAAA,uBAAU,EAAC,kBAAU,CAAC,CAAC;AAElD;;;;;GAKG;AACH,SAAgB,8BAA8B,CAAC,YAAoB;IAC/D,IAAM,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAElE,IAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CACzC,UAAA,QAAQ;QACJ,OAAA,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACjD,qBAAqB,CAAC,QAAQ,CAAC,CAAC,iBAAiB,EAAE,KAAK,YAAY,CAAC,iBAAiB,EAAE;IADxF,CACwF,CAC/F,CAAC;IAEF,IAAI,aAAa,KAAK,SAAS,EAAE;QAC7B,OAAO,aAAa,CAAC;KACxB;IAED,IAAI,YAAY,KAAK,SAAS,CAAC,QAAQ,EAAE;QACrC,OAAO,8BAA8B,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KAC7D;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAlBD,wEAkBC"}
1
+ {"version":3,"file":"KcLanguageTag.js","sourceRoot":"","sources":["../../src/lib/i18n/KcLanguageTag.ts"],"names":[],"mappings":";;;AAAA,+CAA8C;AAC9C,4CAAgD;AAIhD,IAAM,oBAAoB,GAAG;IACzB,4BAA4B;IAC5B,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,oBAAoB;IAC7B,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,QAAQ;IACd,2BAA2B;CACrB,CAAC;AAIX,SAAgB,qBAAqB,CAAC,QAAuB;;IACzD,OAAO,MAAA,oBAAoB,CAAC,QAAQ,CAAC,mCAAI,QAAQ,CAAC;AACtD,CAAC;AAFD,sDAEC;AAEY,QAAA,cAAc,GAAG,IAAA,uBAAU,EAAC,kBAAU,CAAC,CAAC;AAErD;;;;;GAKG;AACH,SAAgB,8BAA8B,CAAC,YAAoB;IAC/D,IAAM,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAElE,IAAM,aAAa,GAAG,sBAAc,CAAC,IAAI,CACrC,UAAA,QAAQ;QACJ,OAAA,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACjD,qBAAqB,CAAC,QAAQ,CAAC,CAAC,iBAAiB,EAAE,KAAK,YAAY,CAAC,iBAAiB,EAAE;IADxF,CACwF,CAC/F,CAAC;IAEF,IAAI,aAAa,KAAK,SAAS,EAAE;QAC7B,OAAO,aAAa,CAAC;KACxB;IAED,IAAI,YAAY,KAAK,SAAS,CAAC,QAAQ,EAAE;QACrC,OAAO,8BAA8B,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KAC7D;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAlBD,wEAkBC"}
@@ -51,7 +51,7 @@ function resolveMsg(props) {
51
51
  str = (function () {
52
52
  var _a;
53
53
  var startIndex = (_a = str
54
- .match(/(?<={)[0-9]+(?=})/g)) === null || _a === void 0 ? void 0 : _a.map(function (g) { return parseInt(g); }).sort(function (a, b) { return a - b; })[0];
54
+ .match(/{[0-9]+}/g)) === null || _a === void 0 ? void 0 : _a.map(function (g) { return g.match(/{([0-9]+)}/)[1]; }).map(function (indexStr) { return parseInt(indexStr); }).sort(function (a, b) { return a - b; })[0];
55
55
  if (startIndex === undefined) {
56
56
  return str;
57
57
  }
@@ -68,14 +68,14 @@ function resolveMsg(props) {
68
68
  function resolveMsgAdvanced(props) {
69
69
  var key = props.key, args = props.args, kcLanguageTag = props.kcLanguageTag, doRenderMarkdown = props.doRenderMarkdown;
70
70
  var match = key.match(/^\$\{([^{]+)\}$/);
71
- var resolvedKey = match === null ? key : match[1];
71
+ var keyUnwrappedFromCurlyBraces = match === null ? key : match[1];
72
72
  var out = resolveMsg({
73
- "key": resolvedKey,
73
+ "key": keyUnwrappedFromCurlyBraces,
74
74
  args: args,
75
75
  kcLanguageTag: kcLanguageTag,
76
76
  doRenderMarkdown: doRenderMarkdown,
77
77
  });
78
- return (out !== undefined ? out : match === null ? doRenderMarkdown ? (0, jsx_runtime_1.jsx)("span", { children: key }, void 0) : key : undefined);
78
+ return (out !== undefined ? out : doRenderMarkdown ? (0, jsx_runtime_1.jsx)("span", { children: keyUnwrappedFromCurlyBraces }, void 0) : keyUnwrappedFromCurlyBraces);
79
79
  }
80
80
  /**
81
81
  * When the language is switched the page is reloaded, this may appear
@@ -1 +1 @@
1
- {"version":3,"file":"useKcMessage.js","sourceRoot":"","sources":["../../src/lib/i18n/useKcMessage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useKcMessage.js","sourceRoot":"","sources":["../../src/lib/i18n/useKcMessage.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "keycloakify",
3
- "version": "4.2.7",
3
+ "version": "4.2.11",
4
4
  "description": "Keycloak theme generator for Reacts app",
5
5
  "repository": {
6
6
  "type": "git",
@@ -321,7 +321,7 @@
321
321
  "@emotion/react": "^11.4.1",
322
322
  "powerhooks": "^0.10.0",
323
323
  "react": "^16.8.0 || ^17.0.0",
324
- "tss-react": "^1.1.0"
324
+ "tss-react": "^1.1.0 || ^3.0.0"
325
325
  },
326
326
  "devDependencies": {
327
327
  "@emotion/react": "^11.4.1",
@@ -335,7 +335,7 @@
335
335
  "properties-parser": "^0.3.1",
336
336
  "react": "^17.0.1",
337
337
  "rimraf": "^3.0.2",
338
- "tss-react": "^1.1.0",
338
+ "tss-react": "^3.0.0",
339
339
  "typescript": "^4.2.3"
340
340
  },
341
341
  "dependencies": {
@@ -34,7 +34,7 @@ export function getKcLanguageTagLabel(language: KcLanguageTag): LanguageLabel {
34
34
  return kcLanguageByTagLabel[language] ?? language;
35
35
  }
36
36
 
37
- const availableLanguages = objectKeys(kcMessages);
37
+ export const kcLanguageTags = objectKeys(kcMessages);
38
38
 
39
39
  /**
40
40
  * Pass in "fr-FR" or "français" for example, it will return the AvailableLanguage
@@ -45,7 +45,7 @@ const availableLanguages = objectKeys(kcMessages);
45
45
  export function getBestMatchAmongKcLanguageTag(languageLike: string): KcLanguageTag {
46
46
  const iso2LanguageLike = languageLike.split("-")[0].toLowerCase();
47
47
 
48
- const kcLanguageTag = availableLanguages.find(
48
+ const kcLanguageTag = kcLanguageTags.find(
49
49
  language =>
50
50
  language.toLowerCase().includes(iso2LanguageLike) ||
51
51
  getKcLanguageTagLabel(language).toLocaleLowerCase() === languageLike.toLocaleLowerCase(),
@@ -27,8 +27,9 @@ function resolveMsg<Key extends string, DoRenderMarkdown extends boolean>(props:
27
27
 
28
28
  str = (() => {
29
29
  const startIndex = str
30
- .match(/(?<={)[0-9]+(?=})/g)
31
- ?.map(g => parseInt(g))
30
+ .match(/{[0-9]+}/g)
31
+ ?.map(g => g.match(/{([0-9]+)}/)![1])
32
+ .map(indexStr => parseInt(indexStr))
32
33
  .sort((a, b) => a - b)[0];
33
34
 
34
35
  if (startIndex === undefined) {
@@ -67,16 +68,16 @@ function resolveMsgAdvanced<Key extends string, DoRenderMarkdown extends boolean
67
68
 
68
69
  const match = key.match(/^\$\{([^{]+)\}$/);
69
70
 
70
- const resolvedKey = match === null ? key : match[1];
71
+ const keyUnwrappedFromCurlyBraces = match === null ? key : match[1];
71
72
 
72
73
  const out = resolveMsg({
73
- "key": resolvedKey,
74
+ "key": keyUnwrappedFromCurlyBraces,
74
75
  args,
75
76
  kcLanguageTag,
76
77
  doRenderMarkdown,
77
78
  });
78
79
 
79
- return (out !== undefined ? out : match === null ? doRenderMarkdown ? <span>{key}</span> : key : undefined) as any;
80
+ return (out !== undefined ? out : doRenderMarkdown ? <span>{keyUnwrappedFromCurlyBraces}</span> : keyUnwrappedFromCurlyBraces) as any;
80
81
  }
81
82
 
82
83
  /**