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
82 lines
1.7 KiB
Plaintext
82 lines
1.7 KiB
Plaintext
const conversions = require('./conversions');
|
|
const route = require('./route');
|
|
|
|
const convert = {};
|
|
|
|
const models = Object.keys(conversions);
|
|
|
|
function wrapRaw(fn) {
|
|
const wrappedFn = function (...args) {
|
|
const arg0 = args[0];
|
|
if (arg0 === undefined || arg0 === null) {
|
|
return arg0;
|
|
}
|
|
|
|
if (arg0.length > 1) {
|
|
args = arg0;
|
|
}
|
|
|
|
return fn(args);
|
|
};
|
|
|
|
// Preserve .conversion property if there is one
|
|
if ('conversion' in fn) {
|
|
wrappedFn.conversion = fn.conversion;
|
|
}
|
|
|
|
return wrappedFn;
|
|
}
|
|
|
|
function wrapRounded(fn) {
|
|
const wrappedFn = function (...args) {
|
|
const arg0 = args[0];
|
|
|
|
if (arg0 === undefined || arg0 === null) {
|
|
return arg0;
|
|
}
|
|
|
|
if (arg0.length > 1) {
|
|
args = arg0;
|
|
}
|
|
|
|
const result = fn(args);
|
|
|
|
// We're assuming the result is an array here.
|
|
// see notice in conversions.js; don't use box types
|
|
// in conversion functions.
|
|
if (typeof result === 'object') {
|
|
for (let len = result.length, i = 0; i < len; i++) {
|
|
result[i] = Math.round(result[i]);
|
|
}
|
|
}
|
|
|
|
return result;
|
|
};
|
|
|
|
// Preserve .conversion property if there is one
|
|
if ('conversion' in fn) {
|
|
wrappedFn.conversion = fn.conversion;
|
|
}
|
|
|
|
return wrappedFn;
|
|
}
|
|
|
|
models.forEach(fromModel => {
|
|
convert[fromModel] = {};
|
|
|
|
Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});
|
|
Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});
|
|
|
|
const routes = route(fromModel);
|
|
const routeModels = Object.keys(routes);
|
|
|
|
routeModels.forEach(toModel => {
|
|
const fn = routes[toModel];
|
|
|
|
convert[fromModel][toModel] = wrapRounded(fn);
|
|
convert[fromModel][toModel].raw = wrapRaw(fn);
|
|
});
|
|
});
|
|
|
|
module.exports = convert;
|