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
53 lines
1.3 KiB
Plaintext
53 lines
1.3 KiB
Plaintext
import { Scheduler } from '../Scheduler';
|
|
import { Action } from './Action';
|
|
import { AsyncAction } from './AsyncAction';
|
|
import { TimerHandle } from './timerHandle';
|
|
|
|
export class AsyncScheduler extends Scheduler {
|
|
public actions: Array<AsyncAction<any>> = [];
|
|
/**
|
|
* A flag to indicate whether the Scheduler is currently executing a batch of
|
|
* queued actions.
|
|
* @internal
|
|
*/
|
|
public _active: boolean = false;
|
|
/**
|
|
* An internal ID used to track the latest asynchronous task such as those
|
|
* coming from `setTimeout`, `setInterval`, `requestAnimationFrame`, and
|
|
* others.
|
|
* @internal
|
|
*/
|
|
public _scheduled: TimerHandle | undefined;
|
|
|
|
constructor(SchedulerAction: typeof Action, now: () => number = Scheduler.now) {
|
|
super(SchedulerAction, now);
|
|
}
|
|
|
|
public flush(action: AsyncAction<any>): void {
|
|
const { actions } = this;
|
|
|
|
if (this._active) {
|
|
actions.push(action);
|
|
return;
|
|
}
|
|
|
|
let error: any;
|
|
this._active = true;
|
|
|
|
do {
|
|
if ((error = action.execute(action.state, action.delay))) {
|
|
break;
|
|
}
|
|
} while ((action = actions.shift()!)); // exhaust the scheduler queue
|
|
|
|
this._active = false;
|
|
|
|
if (error) {
|
|
while ((action = actions.shift()!)) {
|
|
action.unsubscribe();
|
|
}
|
|
throw error;
|
|
}
|
|
}
|
|
}
|