@jss-rule-engine/edge
Version:
49 lines (48 loc) • 1.66 kB
JavaScript
// Function to generate all binary strings
export function generateAllBinaryStrings(n, i, resultArr, arr) {
if (i == n) {
var result = "";
for (var i_1 = 0; i_1 < n; i_1++) {
result += arr[i_1];
}
if (arr.indexOf(1) != -1) {
resultArr.push(result);
}
return;
}
// First assign "0" at ith position
// and try for all other permutations
// for remaining positions
arr[i] = 0;
generateAllBinaryStrings(n, i + 1, resultArr, arr);
// And then assign "1" at ith position
// and try for all other permutations
// for remaining positions
arr[i] = 1;
generateAllBinaryStrings(n, i + 1, resultArr, arr);
}
export var SC_VARIANT_PREFIX = "_scvariant";
export function normalizePersonalizedRewrite(pathname) {
if (!pathname.includes(SC_VARIANT_PREFIX)) {
return pathname;
}
var result = pathname.match("".concat(SC_VARIANT_PREFIX, ".*?(?:\\/|$)"));
return result === null ? pathname : pathname.replace(result[0], '');
}
export function getScPersonalizedRewrite(pathname, variantId) {
var path = pathname.startsWith('/') ? pathname : '/' + pathname;
var result = "/".concat(SC_VARIANT_PREFIX).concat(variantId).concat(path);
return result;
}
export function getScPersonalizedVariantIds(parsedRule) {
var _a;
var result = [];
if (parsedRule) {
var ruleCount = (_a = parsedRule.rules) === null || _a === void 0 ? void 0 : _a.length;
var arr = new Array(ruleCount);
arr.fill(0);
generateAllBinaryStrings(ruleCount, 0, result, arr);
return result;
}
return null;
}