Some checks failed
Main Confidence / confidence (push) Failing after 45s
## Summary - introduce surface-aware compressed governance outcomes and reuse the shared truth/explanation seams for operator-first summaries - apply the compressed outcome hierarchy across baseline, evidence, review, review-pack, canonical review/evidence, and artifact-oriented operation-run surfaces - expand spec 214 fixtures and Pest coverage, and fix tenant-panel route assertions by generating explicit tenant-panel URLs in the affected Filament tests ## Validation - `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent` - focused governance compression suite from `specs/214-governance-outcome-compression/quickstart.md` passed (`68` tests, `445` assertions) - `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/InventoryItemResourceTest.php tests/Feature/Filament/BackupSetUiEnforcementTest.php tests/Feature/Filament/RestoreRunUiEnforcementTest.php` passed (`18` tests, `81` assertions) Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #253
80 lines
2.0 KiB
Plaintext
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 |