UNPKG

@edflex-tech/keycloakify

Version:

Keycloak theme generator for Reacts app

167 lines 7.89 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getMsg = exports.changeLocale = exports.getTagLabel = exports.getCurrentKcLanguageTag = exports.kcLanguageTags = exports.kcMessages = void 0; var jsx_runtime_1 = require("react/jsx-runtime"); require("minimal-polyfills/Object.fromEntries"); //NOTE for later: https://github.com/remarkjs/react-markdown/blob/236182ecf30bd89c1e5a7652acaf8d0bf81e6170/src/renderers.js#L7-L35 var react_markdown_1 = __importDefault(require("react-markdown")); var memoizee_1 = __importDefault(require("memoizee")); var login_1 = require("./generated_kcMessages/18.0.1/login"); var assert_1 = require("tsafe/assert"); exports.kcMessages = __assign(__assign({}, login_1.kcMessages), { "en": __assign(__assign({}, login_1.kcMessages["en"]), { "termsText": "⏳", "shouldBeEqual": "{0} should be equal to {1}", "shouldBeDifferent": "{0} should be different to {1}", "shouldMatchPattern": "Pattern should match: `/{0}/`", "mustBeAnInteger": "Must be an integer", "notAValidOption": "Not a valid option" }), "fr": __assign(__assign({}, login_1.kcMessages["fr"]), { /* spell-checker: disable */ "shouldBeEqual": "{0} doit être égal à {1}", "shouldBeDifferent": "{0} doit être différent de {1}", "shouldMatchPattern": "Dois respecter le schéma: `/{0}/`", "mustBeAnInteger": "Doit être un nombre entier", "notAValidOption": "N'est pas une option valide", "logoutConfirmTitle": "Déconnexion", "logoutConfirmHeader": "Êtes-vous sûr(e) de vouloir vous déconnecter ?", "doLogout": "Se déconnecter" }) }); exports.kcLanguageTags = [ "en", "fr", "ca", "cs", "da", "de", "es", "hu", "it", "ja", "lt", "nl", "no", "pl", "pt-BR", "ru", "sk", "sv", "tr", "zh-CN", "fi", "lv", ]; (0, assert_1.assert)(); function getCurrentKcLanguageTag(kcContext) { var _a, _b; return (_b = (_a = kcContext.locale) === null || _a === void 0 ? void 0 : _a.currentLanguageTag) !== null && _b !== void 0 ? _b : "en"; } exports.getCurrentKcLanguageTag = getCurrentKcLanguageTag; function getTagLabel(params) { var kcContext = params.kcContext, kcLanguageTag = params.kcLanguageTag; var locale = kcContext.locale; (0, assert_1.assert)(locale !== undefined, "Internationalization not enabled"); var targetSupportedLocale = locale.supported.find(function (_a) { var languageTag = _a.languageTag; return languageTag === kcLanguageTag; }); (0, assert_1.assert)(targetSupportedLocale !== undefined, "".concat(kcLanguageTag, " need to be enabled in Keycloak admin")); return targetSupportedLocale.label; } exports.getTagLabel = getTagLabel; function changeLocale(params) { var kcContext = params.kcContext, kcLanguageTag = params.kcLanguageTag; var locale = kcContext.locale; (0, assert_1.assert)(locale !== undefined, "Internationalization not enabled"); var targetSupportedLocale = locale.supported.find(function (_a) { var languageTag = _a.languageTag; return languageTag === kcLanguageTag; }); (0, assert_1.assert)(targetSupportedLocale !== undefined, "".concat(kcLanguageTag, " need to be enabled in Keycloak admin")); window.location.href = targetSupportedLocale.url; (0, assert_1.assert)(false, "never"); } exports.changeLocale = changeLocale; function resolveMsg(props) { var _a; var key = props.key, args = props.args, kcLanguageTag = props.kcLanguageTag, doRenderMarkdown = props.doRenderMarkdown; var str = (_a = exports.kcMessages[kcLanguageTag][key]) !== null && _a !== void 0 ? _a : exports.kcMessages["en"][key]; if (str === undefined) { return undefined; } str = (function () { var _a; var startIndex = (_a = str .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]; if (startIndex === undefined) { return str; } args.forEach(function (arg, i) { if (arg === undefined) { return; } str = str.replace(new RegExp("\\{".concat(i + startIndex, "\\}"), "g"), arg); }); return str; })(); return (doRenderMarkdown ? ((0, jsx_runtime_1.jsx)(react_markdown_1.default, __assign({ allowDangerousHtml: true, renderers: key === "termsText" ? undefined : { "paragraph": "span" } }, { children: str }))) : (str)); } function resolveMsgAdvanced(props) { var key = props.key, args = props.args, kcLanguageTag = props.kcLanguageTag, doRenderMarkdown = props.doRenderMarkdown; var match = key.match(/^\$\{([^{]+)\}$/); var keyUnwrappedFromCurlyBraces = match === null ? key : match[1]; var out = resolveMsg({ "key": keyUnwrappedFromCurlyBraces, args: args, kcLanguageTag: kcLanguageTag, doRenderMarkdown: doRenderMarkdown, }); return (out !== undefined ? out : doRenderMarkdown ? (0, jsx_runtime_1.jsx)("span", { children: keyUnwrappedFromCurlyBraces }) : keyUnwrappedFromCurlyBraces); } /** * When the language is switched the page is reloaded, this may appear * as a bug as you might notice that the language successfully switch before * reload. * However we need to tell Keycloak that the user have changed the language * during login so we can retrieve the "local" field of the JWT encoded accessToken. * https://user-images.githubusercontent.com/6702424/138096682-351bb61f-f24e-4caf-91b7-cca8cfa2cb58.mov * * advancedMsg("${access-denied}") === advancedMsg("access-denied") === msg("access-denied") * advancedMsg("${not-a-message-key}") === advancedMsg(not-a-message-key") === "not-a-message-key" * * * NOTE: This function is memoized, it always returns the same object for a given kcContext) * */ exports.getMsg = (0, memoizee_1.default)(function (kcContext) { var kcLanguageTag = getCurrentKcLanguageTag(kcContext); return { "msgStr": function (key) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } return resolveMsg({ key: key, args: args, kcLanguageTag: kcLanguageTag, "doRenderMarkdown": false }); }, "msg": function (key) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } return resolveMsg({ key: key, args: args, kcLanguageTag: kcLanguageTag, "doRenderMarkdown": true }); }, "advancedMsg": function (key) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } return resolveMsgAdvanced({ key: key, args: args, kcLanguageTag: kcLanguageTag, "doRenderMarkdown": true }); }, "advancedMsgStr": function (key) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } return resolveMsgAdvanced({ key: key, args: args, kcLanguageTag: kcLanguageTag, "doRenderMarkdown": false }); }, }; }); //# sourceMappingURL=index.js.map