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
39 lines
1.3 KiB
Plaintext
39 lines
1.3 KiB
Plaintext
import { AsyncAction } from './AsyncAction';
|
|
import { AsyncScheduler } from './AsyncScheduler';
|
|
|
|
export class AsapScheduler extends AsyncScheduler {
|
|
public flush(action?: AsyncAction<any>): void {
|
|
this._active = true;
|
|
// The async id that effects a call to flush is stored in _scheduled.
|
|
// Before executing an action, it's necessary to check the action's async
|
|
// id to determine whether it's supposed to be executed in the current
|
|
// flush.
|
|
// Previous implementations of this method used a count to determine this,
|
|
// but that was unsound, as actions that are unsubscribed - i.e. cancelled -
|
|
// are removed from the actions array and that can shift actions that are
|
|
// scheduled to be executed in a subsequent flush into positions at which
|
|
// they are executed within the current flush.
|
|
const flushId = this._scheduled;
|
|
this._scheduled = undefined;
|
|
|
|
const { actions } = this;
|
|
let error: any;
|
|
action = action || actions.shift()!;
|
|
|
|
do {
|
|
if ((error = action.execute(action.state, action.delay))) {
|
|
break;
|
|
}
|
|
} while ((action = actions[0]) && action.id === flushId && actions.shift());
|
|
|
|
this._active = false;
|
|
|
|
if (error) {
|
|
while ((action = actions[0]) && action.id === flushId && actions.shift()) {
|
|
action.unsubscribe();
|
|
}
|
|
throw error;
|
|
}
|
|
}
|
|
}
|