@flighthq/application 0.4.0-next.1836.147ae1e → 0.4.0-next.1884.6a2d46f

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import type { Application, ApplicationLoopOptions, ApplicationStepOptions, ApplicationWindow, LoopBackend } from '@flighthq/types/contract';
1
+ import type { Application, ApplicationLoopOptions, ApplicationStepOptions, ApplicationWindow, BackendExplanation, LoopBackend } from '@flighthq/types/contract';
2
2
  export declare function attachApplicationExit(app: Application): void;
3
3
  export declare function attachApplicationLifecycle(app: Application, win: ApplicationWindow): void;
4
4
  export declare function createApplication(): Application;
@@ -6,14 +6,18 @@ export declare function createWebLoopBackend(): LoopBackend;
6
6
  export declare function detachApplicationExit(app: Application): void;
7
7
  export declare function disposeApplication(app: Application): void;
8
8
  export declare function enableApplicationLifecycleSignals(app: Application): void;
9
+ export declare function explainLoopBackend(): BackendExplanation;
9
10
  export declare function forEachApplicationWindow(app: Readonly<Application>, fn: (win: ApplicationWindow) => void): void;
10
11
  export declare function getApplicationFrameRate(app: Readonly<Application>): number;
11
12
  export declare function getApplicationMainWindow(app: Readonly<Application>): ApplicationWindow | null;
12
13
  export declare function getApplicationWindows(app: Readonly<Application>): readonly ApplicationWindow[];
13
- export declare function getLoopBackend(): LoopBackend;
14
+ export declare function getLoopBackend(): LoopBackend | null;
15
+ export declare function installLoopHostBackend(backend: LoopBackend): void;
14
16
  export declare function isApplicationRunning(app: Readonly<Application>): boolean;
17
+ export declare function observeLoopHostResult(operation: 'cancelFrame' | 'requestFrame', succeeded: boolean): void;
15
18
  export declare function pauseApplicationLoop(app: Application): void;
16
19
  export declare function registerApplicationWindow(app: Application, win: ApplicationWindow): void;
20
+ export declare function resetLoopBackendForTest(): void;
17
21
  export declare function resumeApplicationLoop(app: Application): void;
18
22
  export declare function setApplicationMainWindow(app: Application, win: ApplicationWindow): void;
19
23
  export declare function setLoopBackend(backend: LoopBackend | null): void;
@@ -1 +1 @@
1
- {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAalC,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAM5D;AAKD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAyBzF;AAED,wBAAgB,iBAAiB,IAAI,WAAW,CAgB/C;AAED,wBAAgB,oBAAoB,IAAI,WAAW,CAYlD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAI5D;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAKzD;AAKD,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAKxE;AAGD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI,CAE/G;AAID,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,MAAM,CAiB1E;AAID,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,iBAAiB,GAAG,IAAI,CAE7F;AAID,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,SAAS,iBAAiB,EAAE,CAE9F;AAED,wBAAgB,cAAc,IAAI,WAAW,CAG5C;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAExE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAM3D;AAGD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAGxF;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAa5D;AAGD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAGvF;AAGD,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAEhE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,GAAE,QAAQ,CAAC,sBAAsB,CAAM,GAAG,IAAI,CA2D3G;AAID,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,QAAQ,CAAC,sBAAsB,CAAM,GAC7C,IAAI,CAgBN;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAO1D;AAGD,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAI1F"}
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAalC,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAM5D;AAKD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAyBzF;AAED,wBAAgB,iBAAiB,IAAI,WAAW,CAgB/C;AAED,wBAAgB,oBAAoB,IAAI,WAAW,CAYlD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAI5D;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAKzD;AAKD,wBAAgB,iCAAiC,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAKxE;AAED,wBAAgB,kBAAkB,IAAI,kBAAkB,CAuBvD;AAGD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI,CAE/G;AAID,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,MAAM,CAiB1E;AAID,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,iBAAiB,GAAG,IAAI,CAE7F;AAID,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,SAAS,iBAAiB,EAAE,CAE9F;AAED,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAEnD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAMjE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAExE;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,aAAa,GAAG,cAAc,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAKzG;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAM3D;AAGD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAGxF;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAK9C;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAa5D;AAGD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAGvF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAEhE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,GAAE,QAAQ,CAAC,sBAAsB,CAAM,GAAG,IAAI,CA6D3G;AAID,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,QAAQ,CAAC,sBAAsB,CAAM,GAC7C,IAAI,CAgBN;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAO1D;AAGD,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAI1F"}
@@ -98,6 +98,30 @@ export function enableApplicationLifecycleSignals(app) {
98
98
  if (app.onFixedUpdate === null)
99
99
  app.onFixedUpdate = createSignal();
100
100
  }
101
+ export function explainLoopBackend() {
102
+ if (_loopCustom !== null) {
103
+ return {
104
+ conflict: _loopHostConflict,
105
+ layer: 'custom',
106
+ operation: null,
107
+ viability: 'unobserved',
108
+ };
109
+ }
110
+ if (_loopHost !== null) {
111
+ return {
112
+ conflict: _loopHostConflict,
113
+ layer: 'host',
114
+ operation: _loopHostObservation !== null ? _loopHostObservation.operation : null,
115
+ viability: _loopHostObservation !== null ? _loopHostObservation.viability : 'unobserved',
116
+ };
117
+ }
118
+ return {
119
+ conflict: false,
120
+ layer: 'host-not-enabled',
121
+ operation: null,
122
+ viability: 'unobserved',
123
+ };
124
+ }
101
125
  // Iterates over all registered application windows, calling fn for each. Does not allocate.
102
126
  export function forEachApplicationWindow(app, fn) {
103
127
  for (const win of app.windows)
@@ -136,13 +160,25 @@ export function getApplicationWindows(app) {
136
160
  return app.windows.slice();
137
161
  }
138
162
  export function getLoopBackend() {
139
- if (_loopBackend === null)
140
- _loopBackend = createWebLoopBackend();
141
- return _loopBackend;
163
+ return _loopCustom ?? _loopHost ?? null;
164
+ }
165
+ export function installLoopHostBackend(backend) {
166
+ if (_loopHost !== null) {
167
+ if (_loopHost !== backend)
168
+ _loopHostConflict = true;
169
+ return;
170
+ }
171
+ _loopHost = backend;
142
172
  }
143
173
  export function isApplicationRunning(app) {
144
174
  return app.isRunning;
145
175
  }
176
+ export function observeLoopHostResult(operation, succeeded) {
177
+ _loopHostObservation = {
178
+ operation,
179
+ viability: succeeded ? 'available' : 'runtime-api-unavailable',
180
+ };
181
+ }
146
182
  export function pauseApplicationLoop(app) {
147
183
  const observers = getApplicationObservers(app);
148
184
  if (!app.isRunning || observers.has(kPaused))
@@ -157,6 +193,12 @@ export function registerApplicationWindow(app, win) {
157
193
  return;
158
194
  app.windows.push(win);
159
195
  }
196
+ export function resetLoopBackendForTest() {
197
+ _loopCustom = null;
198
+ _loopHost = null;
199
+ _loopHostConflict = false;
200
+ _loopHostObservation = null;
201
+ }
160
202
  export function resumeApplicationLoop(app) {
161
203
  const observers = getApplicationObservers(app);
162
204
  if (!observers.has(kPaused))
@@ -177,16 +219,18 @@ export function setApplicationMainWindow(app, win) {
177
219
  registerApplicationWindow(app, win);
178
220
  _mainWindows.set(app, win);
179
221
  }
180
- // Installs a host loop backend. Pass null to fall back to the web default (requestAnimationFrame).
181
222
  export function setLoopBackend(backend) {
182
- _loopBackend = backend;
223
+ _loopCustom = backend;
183
224
  }
184
225
  export function startApplicationLoop(app, options = {}) {
185
226
  const observers = getApplicationObservers(app);
186
227
  // Stop any existing loop first (idempotent restart).
187
228
  observers.get(kLoop)?.();
188
229
  observers.delete(kPaused);
189
- const backend = getLoopBackend();
230
+ const resolved = getLoopBackend();
231
+ if (resolved === null)
232
+ return;
233
+ const backend = resolved;
190
234
  const maxDeltaTime = options.maxDeltaTime ?? DEFAULT_MAX_DELTA_TIME;
191
235
  const targetFrameRate = options.targetFrameRate ?? 0;
192
236
  const backgroundFrameRate = options.backgroundFrameRate ?? DEFAULT_BACKGROUND_FRAME_RATE;
@@ -275,7 +319,10 @@ const _lifecycleKeys = new WeakMap();
275
319
  // Explicit main-window overrides (set via setApplicationMainWindow).
276
320
  const _mainWindows = new WeakMap();
277
321
  const ROLLING_FPS_WINDOW = 60;
278
- let _loopBackend = null;
322
+ let _loopCustom = null;
323
+ let _loopHost = null;
324
+ let _loopHostConflict = false;
325
+ let _loopHostObservation = null;
279
326
  function applyApplicationStep(app, deltaTime, loopState, policy) {
280
327
  const clamped = Math.min(deltaTime, policy.maxDeltaTime);
281
328
  app.deltaTime = clamped;
@@ -1 +1 @@
1
- {"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AASvG,MAAM,6BAA6B,GAAG,CAAC,CAAC,CAAC,iDAAiD;AAC1F,MAAM,sBAAsB,GAAG,CAAC,CAAC,CAAC,mCAAmC;AACrE,MAAM,sBAAsB,GAAG,GAAG,CAAC,CAAC,0CAA0C;AAC9E,MAAM,6BAA6B,GAAG,CAAC,CAAC,CAAC,gDAAgD;AAEzF,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;AACvB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;AACvB,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC;AAEzB,2BAA2B;AAE3B,MAAM,UAAU,qBAAqB,CAAC,GAAgB;IACpD,MAAM,SAAS,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC/C,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACjD,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,iGAAiG;AACjG,6FAA6F;AAC7F,+EAA+E;AAC/E,MAAM,UAAU,0BAA0B,CAAC,GAAgB,EAAE,GAAsB;IACjF,0EAA0E;IAC1E,IAAI,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,UAAU,GAAG,MAAM,EAAE,CAAC;QACtB,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,SAAS,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC/C,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;IAE9B,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,GAAG,CAAC,YAAY,KAAK,IAAI;YAAE,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC9D,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI;YAAE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEF,aAAa,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC9C,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC1C,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE;QAC7B,gBAAgB,CAAC,GAAG,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACjD,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,CAAC;QACd,UAAU,EAAE,CAAC;QACb,kBAAkB,EAAE,CAAC;QACrB,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,YAAY,EAAE;QACtB,aAAa,EAAE,IAAI;QACnB,QAAQ,EAAE,YAAY,EAAE;QACxB,QAAQ,EAAE,YAAY,EAAE;QACxB,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,YAAY,CAAC,QAAgC;YAC3C,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QACD,WAAW,CAAC,MAAe;YACzB,oBAAoB,CAAC,MAAgB,CAAC,CAAC;QACzC,CAAC;QACD,GAAG;YACD,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAgB;IACpD,MAAM,SAAS,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC/C,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IACzB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAgB;IACjD,MAAM,SAAS,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC/C,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,CAAC;IACpD,SAAS,CAAC,KAAK,EAAE,CAAC;IAClB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,CAAC;AAED,0FAA0F;AAC1F,2FAA2F;AAC3F,mDAAmD;AACnD,MAAM,UAAU,iCAAiC,CAAC,GAAgB;IAChE,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI;QAAE,GAAG,CAAC,UAAU,GAAG,YAAY,EAAE,CAAC;IAC7D,IAAI,GAAG,CAAC,YAAY,KAAK,IAAI;QAAE,GAAG,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC;IACjE,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI;QAAE,GAAG,CAAC,OAAO,GAAG,YAAY,EAAE,CAAC;IACvD,IAAI,GAAG,CAAC,aAAa,KAAK,IAAI;QAAE,GAAG,CAAC,aAAa,GAAG,YAAY,EAAE,CAAC;AACrE,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,wBAAwB,CAAC,GAA0B,EAAE,EAAoC;IACvG,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO;QAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,iGAAiG;AACjG,uDAAuD;AACvD,MAAM,UAAU,uBAAuB,CAAC,GAA0B;IAChE,MAAM,KAAK,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAkB,CAAC,CAAC;IAC5D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC;IAC5B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IACvB,mCAAmC;IACnC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YACf,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;YAChB,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IACD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;IAC/B,OAAO,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,kGAAkG;AAClG,mDAAmD;AACnD,MAAM,UAAU,wBAAwB,CAAC,GAA0B;IACjE,OAAO,YAAY,CAAC,GAAG,CAAC,GAAkB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACxE,CAAC;AAED,2GAA2G;AAC3G,gBAAgB;AAChB,MAAM,UAAU,qBAAqB,CAAC,GAA0B;IAC9D,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,YAAY,KAAK,IAAI;QAAE,YAAY,GAAG,oBAAoB,EAAE,CAAC;IACjE,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAA0B;IAC7D,OAAO,GAAG,CAAC,SAAS,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAgB;IACnD,MAAM,SAAS,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO;IACrD,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;IACtB,qEAAqE;IACrE,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,yBAAyB,CAAC,GAAgB,EAAE,GAAsB;IAChF,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO;IACtC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAgB;IACpD,MAAM,SAAS,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO;IACpC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1B,+FAA+F;IAC/F,4DAA4D;IAC5D,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACxB,SAAS,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC/B,SAAS,CAAC,oBAAoB,GAAG,CAAC,CAAC;IACrC,CAAC;IACD,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;AACvB,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,wBAAwB,CAAC,GAAgB,EAAE,GAAsB;IAC/E,yBAAyB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,cAAc,CAAC,OAA2B;IACxD,YAAY,GAAG,OAAO,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAgB,EAAE,UAA4C,EAAE;IACnG,MAAM,SAAS,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC/C,qDAAqD;IACrD,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IACzB,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE1B,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,sBAAsB,CAAC;IACpE,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,CAAC,CAAC;IACrD,MAAM,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,IAAI,6BAA6B,CAAC;IACzF,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,sBAAsB,CAAC;IACtE,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,6BAA6B,CAAC;IACvF,MAAM,aAAa,GAAG,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5E,wFAAwF;IACxF,MAAM,SAAS,GAAG,eAAe,CAAC,aAAa,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACnF,MAAM,UAAU,GAAoC,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;IAChG,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAE1C,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;IAErB,SAAS,IAAI,CAAC,IAAY;QACxB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACnB,sCAAsC;YACtC,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACnD,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC;QACxD,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;QAE1B,4FAA4F;QAC5F,MAAM,cAAc,GAAG,GAAG,CAAC,SAAS,IAAI,UAAU,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC;QAEhH,2FAA2F;QAC3F,2FAA2F;QAC3F,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,SAAS,CAAC,oBAAoB,IAAI,GAAG,CAAC;YACtC,IAAI,cAAc,GAAG,CAAC,IAAI,SAAS,CAAC,oBAAoB,GAAG,cAAc,EAAE,CAAC;gBAC1E,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACnD,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;gBACvE,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,cAAc,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC;QACxF,SAAS,CAAC,oBAAoB,GAAG,CAAC,CAAC;QAEnC,oBAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAExD,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnD,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACnD,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,oGAAoG;AACpG,+EAA+E;AAC/E,MAAM,UAAU,mBAAmB,CACjC,GAAgB,EAChB,SAAiB,EACjB,UAA4C,EAAE;IAE9C,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,sBAAsB,CAAC;IACtE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,iBAAiB,EAAE,YAAY,IAAI,sBAAsB,CAAC;IACvG,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,6BAA6B,CAAC;IACvF,MAAM,SAAS,GACb,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACrH,IAAI,aAAa,GAAG,CAAC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QACjD,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS;YAAE,SAAS,CAAC,YAAY,GAAG,YAAY,CAAC;IAChF,CAAC;IACD,MAAM,UAAU,GAAoC;QAClD,cAAc,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACzD,YAAY;KACb,CAAC;IACF,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAgB;IAClD,MAAM,SAAS,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC/C,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IACzB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1B,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,2BAA2B,CAAC,GAAgB,EAAE,GAAsB;IAClF,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3C,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG;QAAE,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED,gGAAgG;AAChG,iGAAiG;AACjG,MAAM,qBAAqB,GAAG,IAAI,OAAO,EAAwC,CAAC;AAElF,kDAAkD;AAClD,MAAM,qBAAqB,GAAG,IAAI,OAAO,EAA0B,CAAC;AAEpE,4EAA4E;AAC5E,MAAM,cAAc,GAAG,IAAI,OAAO,EAA6B,CAAC;AAEhE,qEAAqE;AACrE,MAAM,YAAY,GAAG,IAAI,OAAO,EAAkC,CAAC;AAEnE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,IAAI,YAAY,GAAuB,IAAI,CAAC;AAmB5C,SAAS,oBAAoB,CAC3B,GAAgB,EAChB,SAAiB,EACjB,SAAgC,EAChC,MAAuC;IAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IACzD,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;IACxB,GAAG,CAAC,WAAW,IAAI,OAAO,GAAG,IAAI,CAAC;IAClC,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;IAEpB,IAAI,SAAS,KAAK,SAAS;QAAE,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEjE,MAAM,WAAW,GAAG,GAAG,CAAC,aAAa,CAAC;IACtC,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;IAC7C,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,CAAC,aAAa,GAAG,CAAC,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QAC7F,cAAc,CAAC,gBAAgB,IAAI,OAAO,CAAC;QAC3C,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,OACE,cAAc,CAAC,gBAAgB,IAAI,cAAc,CAAC,aAAa;YAC/D,UAAU,GAAG,cAAc,CAAC,kBAAkB,EAC9C,CAAC;YACD,cAAc,CAAC,gBAAgB,IAAI,cAAc,CAAC,aAAa,CAAC;YAChE,UAAU,EAAE,CAAC;YACb,kCAAkC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;QACvG,CAAC;QACD,qFAAqF;QACrF,IAAI,UAAU,IAAI,cAAc,CAAC,kBAAkB;YAAE,cAAc,CAAC,gBAAgB,GAAG,CAAC,CAAC;QACzF,uEAAuE;QACvE,GAAG,CAAC,kBAAkB,GAAG,cAAc,CAAC,gBAAgB,GAAG,cAAc,CAAC,aAAa,CAAC;IAC1F,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,kBAAkB,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,kCAAkC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACjF,kCAAkC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,kBAAkB,CAAC,SAAoB,EAAE,aAAqB,EAAE,kBAA0B;IACjG,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC;IACxC,SAAS,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;AACpD,CAAC;AAED,SAAS,eAAe,CAAC,aAAqB,EAAE,YAAoB,EAAE,kBAA0B;IAC9F,OAAO;QACL,gBAAgB,EAAE,CAAC;QACnB,aAAa;QACb,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,CAAC;QACV,WAAW,EAAE,IAAe;QAC5B,oBAAoB,EAAE,CAAC;QACvB,QAAQ,EAAE,CAAC,CAAC;QACZ,YAAY;QACZ,kBAAkB;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,GAAgB,EAChB,aAAqB,EACrB,YAAoB,EACpB,kBAA0B;IAE1B,IAAI,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,SAAS,GAAG,eAAe,CAAC,aAAa,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;QAC7E,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,kCAAkC,CAAC,GAA0B,EAAE,QAAoB;IAC1F,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAC5B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,QAAQ,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,QAAQ,EAAE,CAAC;IACb,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAgB;IAC/C,IAAI,SAAS,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,2FAA2F;AAC3F,kFAAkF;AAClF,SAAS,qBAAqB;IAC5B,OAAO,OAAO,QAAQ,KAAK,WAAW,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC7D,CAAC;AAED,SAAS,eAAe,CAAC,KAAgB,EAAE,KAAa;IACtD,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QAChD,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QACvC,KAAK,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,kBAAkB,CAAC;IAC3D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"application.js","sourceRoot":"","sources":["../src/application.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/application",
3
- "version": "0.4.0-next.1836.147ae1e",
3
+ "version": "0.4.0-next.1884.6a2d46f",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,9 +38,9 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/entity": "0.4.0-next.1836.147ae1e",
42
- "@flighthq/signals": "0.4.0-next.1836.147ae1e",
43
- "@flighthq/types": "0.4.0-next.1836.147ae1e"
41
+ "@flighthq/entity": "0.4.0-next.1884.6a2d46f",
42
+ "@flighthq/signals": "0.4.0-next.1884.6a2d46f",
43
+ "@flighthq/types": "0.4.0-next.1884.6a2d46f"
44
44
  },
45
45
  "devDependencies": {
46
46
  "typescript": "^5.3.0"
@@ -9,14 +9,18 @@ import {
9
9
  detachApplicationExit,
10
10
  disposeApplication,
11
11
  enableApplicationLifecycleSignals,
12
+ explainLoopBackend,
12
13
  forEachApplicationWindow,
13
14
  getApplicationFrameRate,
14
15
  getApplicationMainWindow,
15
16
  getApplicationWindows,
16
17
  getLoopBackend,
18
+ installLoopHostBackend,
17
19
  isApplicationRunning,
20
+ observeLoopHostResult,
18
21
  pauseApplicationLoop,
19
22
  registerApplicationWindow,
23
+ resetLoopBackendForTest,
20
24
  resumeApplicationLoop,
21
25
  setApplicationMainWindow,
22
26
  setLoopBackend,
@@ -50,7 +54,7 @@ function makeManualLoopBackend(): LoopBackend & { tick: (time: number) => void;
50
54
  };
51
55
  }
52
56
 
53
- afterEach(() => setLoopBackend(null));
57
+ afterEach(() => resetLoopBackendForTest());
54
58
 
55
59
  describe('attachApplicationExit', () => {
56
60
  it('emits onExit on beforeunload', () => {
@@ -226,6 +230,48 @@ describe('enableApplicationLifecycleSignals', () => {
226
230
  });
227
231
  });
228
232
 
233
+ describe('explainLoopBackend', () => {
234
+ it('reports host-not-enabled when no backend is installed', () => {
235
+ expect(explainLoopBackend()).toEqual({
236
+ conflict: false,
237
+ layer: 'host-not-enabled',
238
+ operation: null,
239
+ viability: 'unobserved',
240
+ });
241
+ });
242
+
243
+ it('reports custom layer when custom backend is set', () => {
244
+ setLoopBackend(makeManualLoopBackend());
245
+ expect(explainLoopBackend().layer).toBe('custom');
246
+ });
247
+
248
+ it('reports host layer after install', () => {
249
+ installLoopHostBackend(createWebLoopBackend());
250
+ expect(explainLoopBackend().layer).toBe('host');
251
+ expect(explainLoopBackend().viability).toBe('unobserved');
252
+ });
253
+
254
+ it('reports conflict when a distinct host is installed twice', () => {
255
+ installLoopHostBackend(createWebLoopBackend());
256
+ installLoopHostBackend(createWebLoopBackend());
257
+ expect(explainLoopBackend().conflict).toBe(true);
258
+ });
259
+
260
+ it('preserves first host on conflict', () => {
261
+ const first = createWebLoopBackend();
262
+ installLoopHostBackend(first);
263
+ installLoopHostBackend(createWebLoopBackend());
264
+ expect(getLoopBackend()).toBe(first);
265
+ });
266
+
267
+ it('is idempotent — same reference does not conflict', () => {
268
+ const backend = createWebLoopBackend();
269
+ installLoopHostBackend(backend);
270
+ installLoopHostBackend(backend);
271
+ expect(explainLoopBackend().conflict).toBe(false);
272
+ });
273
+ });
274
+
229
275
  describe('forEachApplicationWindow', () => {
230
276
  it('iterates all registered windows', () => {
231
277
  const app = createApplication();
@@ -305,19 +351,45 @@ describe('getApplicationWindows', () => {
305
351
  });
306
352
 
307
353
  describe('getLoopBackend', () => {
308
- it('falls back to a web backend', () => {
309
- vi.stubGlobal('requestAnimationFrame', vi.fn());
310
- vi.stubGlobal('cancelAnimationFrame', vi.fn());
311
- const backend = getLoopBackend();
312
- expect(backend).not.toBeNull();
313
- vi.unstubAllGlobals();
354
+ it('returns null when no backend is installed', () => {
355
+ expect(getLoopBackend()).toBeNull();
314
356
  });
315
357
 
316
- it('returns the registered backend', () => {
317
- const backend = makeManualLoopBackend();
318
- setLoopBackend(backend);
358
+ it('returns custom backend over host', () => {
359
+ installLoopHostBackend(createWebLoopBackend());
360
+ const custom = makeManualLoopBackend();
361
+ setLoopBackend(custom);
362
+ expect(getLoopBackend()).toBe(custom);
363
+ });
364
+
365
+ it('returns host backend when no custom is set', () => {
366
+ const host = createWebLoopBackend();
367
+ installLoopHostBackend(host);
368
+ expect(getLoopBackend()).toBe(host);
369
+ });
370
+ });
371
+
372
+ describe('installLoopHostBackend', () => {
373
+ it('installs a host backend retrievable via getLoopBackend', () => {
374
+ const backend = createWebLoopBackend();
375
+ installLoopHostBackend(backend);
319
376
  expect(getLoopBackend()).toBe(backend);
320
377
  });
378
+
379
+ it('first-host-wins — second distinct backend sets conflict', () => {
380
+ const first = createWebLoopBackend();
381
+ installLoopHostBackend(first);
382
+ installLoopHostBackend(createWebLoopBackend());
383
+ expect(getLoopBackend()).toBe(first);
384
+ expect(explainLoopBackend().conflict).toBe(true);
385
+ });
386
+
387
+ it('same reference is idempotent — no conflict', () => {
388
+ const backend = createWebLoopBackend();
389
+ installLoopHostBackend(backend);
390
+ installLoopHostBackend(backend);
391
+ expect(explainLoopBackend().conflict).toBe(false);
392
+ });
321
393
  });
322
394
 
323
395
  describe('isApplicationRunning', () => {
@@ -345,6 +417,58 @@ describe('isApplicationRunning', () => {
345
417
  });
346
418
  });
347
419
 
420
+ describe('observeLoopHostResult', () => {
421
+ it('records available after success', () => {
422
+ installLoopHostBackend(createWebLoopBackend());
423
+ observeLoopHostResult('requestFrame', true);
424
+ expect(explainLoopBackend()).toEqual({
425
+ conflict: false,
426
+ layer: 'host',
427
+ operation: 'requestFrame',
428
+ viability: 'available',
429
+ });
430
+ });
431
+
432
+ it('records runtime-api-unavailable after failure', () => {
433
+ installLoopHostBackend(createWebLoopBackend());
434
+ observeLoopHostResult('requestFrame', false);
435
+ expect(explainLoopBackend().viability).toBe('runtime-api-unavailable');
436
+ });
437
+
438
+ it('later observation replaces prior — loss then recovery', () => {
439
+ installLoopHostBackend(createWebLoopBackend());
440
+ observeLoopHostResult('requestFrame', false);
441
+ expect(explainLoopBackend().viability).toBe('runtime-api-unavailable');
442
+ observeLoopHostResult('requestFrame', true);
443
+ expect(explainLoopBackend().viability).toBe('available');
444
+ });
445
+
446
+ it('recovery then loss — available reverts to unavailable', () => {
447
+ installLoopHostBackend(createWebLoopBackend());
448
+ observeLoopHostResult('requestFrame', true);
449
+ expect(explainLoopBackend().viability).toBe('available');
450
+ observeLoopHostResult('requestFrame', false);
451
+ expect(explainLoopBackend().viability).toBe('runtime-api-unavailable');
452
+ });
453
+
454
+ it('cancelFrame observation is recorded independently', () => {
455
+ installLoopHostBackend(createWebLoopBackend());
456
+ observeLoopHostResult('requestFrame', true);
457
+ expect(explainLoopBackend().operation).toBe('requestFrame');
458
+ observeLoopHostResult('cancelFrame', true);
459
+ expect(explainLoopBackend().operation).toBe('cancelFrame');
460
+ expect(explainLoopBackend().viability).toBe('available');
461
+ });
462
+
463
+ it('cancelFrame failure overwrites prior requestFrame success', () => {
464
+ installLoopHostBackend(createWebLoopBackend());
465
+ observeLoopHostResult('requestFrame', true);
466
+ observeLoopHostResult('cancelFrame', false);
467
+ expect(explainLoopBackend().operation).toBe('cancelFrame');
468
+ expect(explainLoopBackend().viability).toBe('runtime-api-unavailable');
469
+ });
470
+ });
471
+
348
472
  describe('pauseApplicationLoop', () => {
349
473
  it('pauses emission without cancelling the rAF chain', () => {
350
474
  const backend = makeManualLoopBackend();
@@ -392,6 +516,17 @@ describe('registerApplicationWindow', () => {
392
516
  });
393
517
  });
394
518
 
519
+ describe('resetLoopBackendForTest', () => {
520
+ it('clears all state', () => {
521
+ installLoopHostBackend(createWebLoopBackend());
522
+ observeLoopHostResult('requestFrame', true);
523
+ setLoopBackend(makeManualLoopBackend());
524
+ resetLoopBackendForTest();
525
+ expect(explainLoopBackend().layer).toBe('host-not-enabled');
526
+ expect(getLoopBackend()).toBeNull();
527
+ });
528
+ });
529
+
395
530
  describe('resumeApplicationLoop', () => {
396
531
  it('resumes emission after pause without dumping the gap delta', () => {
397
532
  const backend = makeManualLoopBackend();
@@ -435,18 +570,30 @@ describe('setApplicationMainWindow', () => {
435
570
  });
436
571
 
437
572
  describe('setLoopBackend', () => {
438
- it('clears back to the web fallback when passed null', () => {
439
- const backend = makeManualLoopBackend();
440
- setLoopBackend(backend);
573
+ it('clears custom back to host or null when passed null', () => {
574
+ const custom = makeManualLoopBackend();
575
+ setLoopBackend(custom);
576
+ expect(getLoopBackend()).toBe(custom);
441
577
  setLoopBackend(null);
442
- vi.stubGlobal('requestAnimationFrame', vi.fn());
443
- vi.stubGlobal('cancelAnimationFrame', vi.fn());
444
- expect(getLoopBackend()).not.toBeNull();
445
- vi.unstubAllGlobals();
578
+ expect(getLoopBackend()).toBeNull();
579
+ });
580
+
581
+ it('clears custom but keeps host when passed null', () => {
582
+ const host = createWebLoopBackend();
583
+ installLoopHostBackend(host);
584
+ setLoopBackend(makeManualLoopBackend());
585
+ setLoopBackend(null);
586
+ expect(getLoopBackend()).toBe(host);
446
587
  });
447
588
  });
448
589
 
449
590
  describe('startApplicationLoop', () => {
591
+ it('is a no-op when no backend is installed', () => {
592
+ const app = createApplication();
593
+ startApplicationLoop(app);
594
+ expect(app.isRunning).toBe(false);
595
+ });
596
+
450
597
  it('sets isRunning to true', () => {
451
598
  const backend = makeManualLoopBackend();
452
599
  setLoopBackend(backend);