TenantAtlas/apps/platform/.pnpm-store/v10/files/6f/ba1c7c9f19164f74b7ca80d86e6bd8ad745a76c49d83729485f33a4559cd0c99ac63c90f7da93a07a240e3921244cec3746e7672ce050e4590d614190330e3
Ahmed Darrazi 9f74f7a658
Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 51s
feat: compress governance operator outcomes
2026-04-19 14:15:11 +02:00

80 lines
2.0 KiB
Plaintext

function parsePgArrayValue(arrayString, startFrom, inQuotes) {
for (let i = startFrom; i < arrayString.length; i++) {
const char = arrayString[i];
if (char === "\\") {
i++;
continue;
}
if (char === '"') {
return [arrayString.slice(startFrom, i).replace(/\\/g, ""), i + 1];
}
if (inQuotes) {
continue;
}
if (char === "," || char === "}") {
return [arrayString.slice(startFrom, i).replace(/\\/g, ""), i];
}
}
return [arrayString.slice(startFrom).replace(/\\/g, ""), arrayString.length];
}
function parsePgNestedArray(arrayString, startFrom = 0) {
const result = [];
let i = startFrom;
let lastCharIsComma = false;
while (i < arrayString.length) {
const char = arrayString[i];
if (char === ",") {
if (lastCharIsComma || i === startFrom) {
result.push("");
}
lastCharIsComma = true;
i++;
continue;
}
lastCharIsComma = false;
if (char === "\\") {
i += 2;
continue;
}
if (char === '"') {
const [value2, startFrom2] = parsePgArrayValue(arrayString, i + 1, true);
result.push(value2);
i = startFrom2;
continue;
}
if (char === "}") {
return [result, i + 1];
}
if (char === "{") {
const [value2, startFrom2] = parsePgNestedArray(arrayString, i + 1);
result.push(value2);
i = startFrom2;
continue;
}
const [value, newStartFrom] = parsePgArrayValue(arrayString, i, false);
result.push(value);
i = newStartFrom;
}
return [result, i];
}
function parsePgArray(arrayString) {
const [result] = parsePgNestedArray(arrayString, 1);
return result;
}
function makePgArray(array) {
return `{${array.map((item) => {
if (Array.isArray(item)) {
return makePgArray(item);
}
if (typeof item === "string") {
return `"${item.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
}
return `${item}`;
}).join(",")}}`;
}
export {
makePgArray,
parsePgArray,
parsePgNestedArray
};
//# sourceMappingURL=array.js.map