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
190 lines
6.9 KiB
Plaintext
190 lines
6.9 KiB
Plaintext
"use strict";
|
|
var __create = Object.create;
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __getProtoOf = Object.getPrototypeOf;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __export = (target, all) => {
|
|
for (var name in all)
|
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
}
|
|
return to;
|
|
};
|
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
// If the importer is in node compatibility mode or this is not an ESM
|
|
// file that has been converted to a CommonJS file using a Babel-
|
|
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
mod
|
|
));
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
var configIni_exports = {};
|
|
__export(configIni_exports, {
|
|
configFromIniFile: () => configFromIniFile,
|
|
configsFromIniFile: () => configsFromIniFile
|
|
});
|
|
module.exports = __toCommonJS(configIni_exports);
|
|
var import_fs = __toESM(require("fs"));
|
|
var import_utilsBundle = require("../../utilsBundle");
|
|
function configFromIniFile(filePath) {
|
|
const content = import_fs.default.readFileSync(filePath, "utf8");
|
|
const parsed = import_utilsBundle.ini.parse(content);
|
|
return iniEntriesToConfig(parsed);
|
|
}
|
|
function configsFromIniFile(filePath) {
|
|
const content = import_fs.default.readFileSync(filePath, "utf8");
|
|
const parsed = import_utilsBundle.ini.parse(content);
|
|
const result = /* @__PURE__ */ new Map();
|
|
for (const [sectionName, sectionData] of Object.entries(parsed)) {
|
|
if (typeof sectionData !== "object" || sectionData === null)
|
|
continue;
|
|
result.set(sectionName, iniEntriesToConfig(sectionData));
|
|
}
|
|
return result;
|
|
}
|
|
function iniEntriesToConfig(entries) {
|
|
const config = {};
|
|
for (const [targetPath, rawValue] of Object.entries(entries)) {
|
|
const type = longhandTypes[targetPath];
|
|
const value = type ? coerceToType(rawValue, type) : coerceIniValue(rawValue);
|
|
setNestedValue(config, targetPath, value);
|
|
}
|
|
return config;
|
|
}
|
|
function coerceToType(value, type) {
|
|
switch (type) {
|
|
case "string":
|
|
return String(value);
|
|
case "number":
|
|
return Number(value);
|
|
case "boolean":
|
|
if (typeof value === "boolean")
|
|
return value;
|
|
return value === "true" || value === "1";
|
|
case "string[]":
|
|
if (Array.isArray(value))
|
|
return value.map(String);
|
|
return [String(value)];
|
|
case "size": {
|
|
if (typeof value === "string" && value.includes("x")) {
|
|
const [w, h] = value.split("x").map(Number);
|
|
if (!isNaN(w) && !isNaN(h) && w > 0 && h > 0)
|
|
return { width: w, height: h };
|
|
}
|
|
return void 0;
|
|
}
|
|
}
|
|
}
|
|
function coerceIniValue(value) {
|
|
if (typeof value !== "string")
|
|
return value;
|
|
const trimmed = value.trim();
|
|
if (trimmed === "")
|
|
return trimmed;
|
|
const num = Number(trimmed);
|
|
if (!isNaN(num))
|
|
return num;
|
|
return value;
|
|
}
|
|
function setNestedValue(obj, dotPath, value) {
|
|
const parts = dotPath.split(".");
|
|
let current = obj;
|
|
for (let i = 0; i < parts.length - 1; i++) {
|
|
const part = parts[i];
|
|
if (!(part in current) || typeof current[part] !== "object" || current[part] === null)
|
|
current[part] = {};
|
|
current = current[part];
|
|
}
|
|
current[parts[parts.length - 1]] = value;
|
|
}
|
|
const longhandTypes = {
|
|
// browser direct
|
|
"browser.browserName": "string",
|
|
"browser.isolated": "boolean",
|
|
"browser.userDataDir": "string",
|
|
"browser.cdpEndpoint": "string",
|
|
"browser.cdpTimeout": "number",
|
|
"browser.remoteEndpoint": "string",
|
|
"browser.initPage": "string[]",
|
|
"browser.initScript": "string[]",
|
|
// browser.launchOptions
|
|
"browser.launchOptions.channel": "string",
|
|
"browser.launchOptions.headless": "boolean",
|
|
"browser.launchOptions.executablePath": "string",
|
|
"browser.launchOptions.chromiumSandbox": "boolean",
|
|
"browser.launchOptions.args": "string[]",
|
|
"browser.launchOptions.downloadsPath": "string",
|
|
"browser.launchOptions.handleSIGHUP": "boolean",
|
|
"browser.launchOptions.handleSIGINT": "boolean",
|
|
"browser.launchOptions.handleSIGTERM": "boolean",
|
|
"browser.launchOptions.slowMo": "number",
|
|
"browser.launchOptions.timeout": "number",
|
|
"browser.launchOptions.tracesDir": "string",
|
|
"browser.launchOptions.proxy.server": "string",
|
|
"browser.launchOptions.proxy.bypass": "string",
|
|
"browser.launchOptions.proxy.username": "string",
|
|
"browser.launchOptions.proxy.password": "string",
|
|
// browser.contextOptions
|
|
"browser.contextOptions.acceptDownloads": "boolean",
|
|
"browser.contextOptions.baseURL": "string",
|
|
"browser.contextOptions.bypassCSP": "boolean",
|
|
"browser.contextOptions.colorScheme": "string",
|
|
"browser.contextOptions.contrast": "string",
|
|
"browser.contextOptions.deviceScaleFactor": "number",
|
|
"browser.contextOptions.forcedColors": "string",
|
|
"browser.contextOptions.hasTouch": "boolean",
|
|
"browser.contextOptions.ignoreHTTPSErrors": "boolean",
|
|
"browser.contextOptions.isMobile": "boolean",
|
|
"browser.contextOptions.javaScriptEnabled": "boolean",
|
|
"browser.contextOptions.locale": "string",
|
|
"browser.contextOptions.offline": "boolean",
|
|
"browser.contextOptions.permissions": "string[]",
|
|
"browser.contextOptions.reducedMotion": "string",
|
|
"browser.contextOptions.screen": "size",
|
|
"browser.contextOptions.serviceWorkers": "string",
|
|
"browser.contextOptions.storageState": "string",
|
|
"browser.contextOptions.strictSelectors": "boolean",
|
|
"browser.contextOptions.timezoneId": "string",
|
|
"browser.contextOptions.userAgent": "string",
|
|
"browser.contextOptions.viewport": "size",
|
|
// top-level
|
|
"extension": "boolean",
|
|
"capabilities": "string[]",
|
|
"saveSession": "boolean",
|
|
"saveTrace": "boolean",
|
|
"saveVideo": "size",
|
|
"sharedBrowserContext": "boolean",
|
|
"outputDir": "string",
|
|
"imageResponses": "string",
|
|
"allowUnrestrictedFileAccess": "boolean",
|
|
"codegen": "string",
|
|
"testIdAttribute": "string",
|
|
// server
|
|
"server.port": "number",
|
|
"server.host": "string",
|
|
"server.allowedHosts": "string[]",
|
|
// console
|
|
"console.level": "string",
|
|
// network
|
|
"network.allowedOrigins": "string[]",
|
|
"network.blockedOrigins": "string[]",
|
|
// timeouts
|
|
"timeouts.action": "number",
|
|
"timeouts.navigation": "number",
|
|
// snapshot
|
|
"snapshot.mode": "string"
|
|
};
|
|
// Annotate the CommonJS export names for ESM import in node:
|
|
0 && (module.exports = {
|
|
configFromIniFile,
|
|
configsFromIniFile
|
|
});
|