keycloakify-test
Version:
Keycloak theme generator for Reacts app
162 lines • 6.59 kB
JavaScript
;
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 __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateFtlFilesCodeFactory = exports.pageIds = void 0;
var cheerio_1 = __importDefault(require("cheerio"));
var replaceImportFromStatic_1 = require("../replaceImportFromStatic");
var fs_1 = __importDefault(require("fs"));
var path_1 = require("path");
var objectKeys_1 = require("tsafe/objectKeys");
var ftlValuesGlobalName_1 = require("../ftlValuesGlobalName");
exports.pageIds = [
"login.ftl",
"register.ftl",
"register-user-profile.ftl",
"info.ftl",
"error.ftl",
"login-reset-password.ftl",
"login-verify-email.ftl",
"terms.ftl",
"login-otp.ftl",
"login-update-profile.ftl",
"login-update-password.ftl",
"login-idp-link-confirm.ftl",
"login-idp-link-email.ftl",
"login-page-expired.ftl",
"login-config-totp.ftl",
];
function generateFtlFilesCodeFactory(params) {
var cssGlobalsToDefine = params.cssGlobalsToDefine, indexHtmlCode = params.indexHtmlCode, urlPathname = params.urlPathname, urlOrigin = params.urlOrigin, baseAuthenticationUrl = params.baseAuthenticationUrl;
var $ = cheerio_1.default.load(indexHtmlCode);
$("script:not([src])").each(function () {
var _a = [];
for (var _i = 0; _i < arguments.length; _i++) {
_a[_i] = arguments[_i];
}
var _b = __read(_a, 2), element = _b[1];
var fixedJsCode = (0, replaceImportFromStatic_1.replaceImportsFromStaticInJsCode)({
"jsCode": $(element).html(),
urlOrigin: urlOrigin,
}).fixedJsCode;
$(element).text(fixedJsCode);
});
$("style").each(function () {
var _a = [];
for (var _i = 0; _i < arguments.length; _i++) {
_a[_i] = arguments[_i];
}
var _b = __read(_a, 2), element = _b[1];
var fixedCssCode = (0, replaceImportFromStatic_1.replaceImportsInInlineCssCode)({
"cssCode": $(element).html(),
"urlPathname": params.urlPathname,
urlOrigin: urlOrigin,
}).fixedCssCode;
$(element).text(fixedCssCode);
});
[
["link", "href"],
["script", "src"],
].forEach(function (_a) {
var _b = __read(_a, 2), selector = _b[0], attrName = _b[1];
return $(selector).each(function () {
var _a = [];
for (var _i = 0; _i < arguments.length; _i++) {
_a[_i] = arguments[_i];
}
var _b = __read(_a, 2), element = _b[1];
var href = $(element).attr(attrName);
if (href === undefined) {
return;
}
$(element).attr(attrName, urlOrigin !== undefined
? href.replace(/^\//, "".concat(urlOrigin, "/"))
: href.replace(new RegExp("^".concat(urlPathname.replace(/\//g, "\\/"))), baseAuthenticationUrl + "${url.resourcesPath}/build/"));
});
});
//FTL is no valid html, we can't insert with cheerio, we put placeholder for injecting later.
var replaceValueBySearchValue = {
'{ "x": "vIdLqMeOed9sdLdIdOxdK0d" }': fs_1.default
.readFileSync((0, path_1.join)(__dirname, "ftl_object_to_js_code_declaring_an_object.ftl"))
.toString("utf8")
.match(/^<script>const _=((?:.|\n)+)<\/script>[\n]?$/)[1],
"<!-- xIdLqMeOedErIdLsPdNdI9dSlxI -->": [
"<#if scripts??>",
" <#list scripts as script>",
' <script src="${script}" type="text/javascript"></script>',
" </#list>",
"</#if>",
].join("\n"),
};
$("head").prepend(__spreadArray(__spreadArray([], __read((Object.keys(cssGlobalsToDefine).length === 0
? []
: [
"",
"<style>",
(0, replaceImportFromStatic_1.generateCssCodeToDefineGlobals)({
cssGlobalsToDefine: cssGlobalsToDefine,
urlPathname: urlPathname,
}).cssCodeToPrependInHead,
"</style>",
"",
])), false), [
"<script>",
" window.".concat(ftlValuesGlobalName_1.ftlValuesGlobalName, "= ").concat((0, objectKeys_1.objectKeys)(replaceValueBySearchValue)[0], ";"),
"</script>",
"",
(0, objectKeys_1.objectKeys)(replaceValueBySearchValue)[1],
], false).join("\n"));
var partiallyFixedIndexHtmlCode = $.html();
function generateFtlFilesCode(params) {
var pageId = params.pageId;
var $ = cheerio_1.default.load(partiallyFixedIndexHtmlCode);
var ftlCode = $.html();
Object.entries(__assign(__assign({}, replaceValueBySearchValue), {
//If updated, don't forget to change in the ftl script as well.
"PAGE_ID_xIgLsPgGId9D8e": pageId })).map(function (_a) {
var _b = __read(_a, 2), searchValue = _b[0], replaceValue = _b[1];
return (ftlCode = ftlCode.replace(searchValue, replaceValue));
});
return { ftlCode: ftlCode };
}
return { generateFtlFilesCode: generateFtlFilesCode };
}
exports.generateFtlFilesCodeFactory = generateFtlFilesCodeFactory;
//# sourceMappingURL=generateFtl.js.map