@flighthq/power 0.3.1-next.975.01aea94 → 0.4.0-edge.1908.751021c
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.
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/power.d.ts +5 -1
- package/dist/power.d.ts.map +1 -1
- package/dist/power.js +89 -188
- package/dist/power.js.map +1 -1
- package/package.json +3 -3
- package/src/power.test.ts +149 -68
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { attachPower, createPower, detachPower, disposePower, enablePowerSignals, getPowerBatteryHealth, getPowerIdlePollingIntervalMs, getPowerStatus, getPowerSystemIdleState, getPowerSystemIdleTime, getPowerThermalState, hasPowerKeepAwake, setPowerIdlePollingIntervalMs, setPowerKeepAwake, } from './contract';
|
|
1
|
+
export { attachPower, createPower, detachPower, disposePower, enablePowerSignals, explainPowerBackend, getPowerBatteryHealth, getPowerIdlePollingIntervalMs, getPowerStatus, getPowerSystemIdleState, getPowerSystemIdleTime, getPowerThermalState, hasPowerKeepAwake, setPowerIdlePollingIntervalMs, setPowerKeepAwake, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,6BAA6B,EAC7B,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,6BAA6B,EAC7B,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { attachPower, createPower, detachPower, disposePower, enablePowerSignals, getPowerBatteryHealth, getPowerIdlePollingIntervalMs, getPowerStatus, getPowerSystemIdleState, getPowerSystemIdleTime, getPowerThermalState, hasPowerKeepAwake, setPowerIdlePollingIntervalMs, setPowerKeepAwake, } from './contract';
|
|
1
|
+
export { attachPower, createPower, detachPower, disposePower, enablePowerSignals, explainPowerBackend, getPowerBatteryHealth, getPowerIdlePollingIntervalMs, getPowerStatus, getPowerSystemIdleState, getPowerSystemIdleTime, getPowerThermalState, hasPowerKeepAwake, setPowerIdlePollingIntervalMs, setPowerKeepAwake, } from './contract';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,6BAA6B,EAC7B,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,6BAA6B,EAC7B,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
package/dist/power.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
+
import type { BackendExplanation } from '@flighthq/types/contract';
|
|
1
2
|
import type { Power, PowerBackend, PowerBatteryHealth, PowerIdleState, PowerKeepAwakeMode, PowerStatus, PowerThermalState } from '@flighthq/types/contract';
|
|
2
3
|
export declare function attachPower(power: Power, idleThresholdSeconds?: number): void;
|
|
3
4
|
export declare function createPower(): Power;
|
|
4
5
|
export declare function createPowerBatteryHealth(): PowerBatteryHealth;
|
|
5
6
|
export declare function createPowerStatus(): PowerStatus;
|
|
6
|
-
export declare function createWebPowerBackend(): PowerBackend;
|
|
7
7
|
export declare function detachPower(power: Power): void;
|
|
8
8
|
export declare function disposePower(power: Power): void;
|
|
9
9
|
export declare function enablePowerSignals(power: Power): void;
|
|
10
|
+
export declare function explainPowerBackend(): BackendExplanation;
|
|
10
11
|
export declare function getPowerBackend(): PowerBackend;
|
|
11
12
|
export declare function getPowerBatteryHealth(out: PowerBatteryHealth): PowerBatteryHealth | null;
|
|
12
13
|
export declare function getPowerIdlePollingIntervalMs(): number;
|
|
@@ -15,6 +16,9 @@ export declare function getPowerSystemIdleState(thresholdSeconds: number): Power
|
|
|
15
16
|
export declare function getPowerSystemIdleTime(): number;
|
|
16
17
|
export declare function getPowerThermalState(): PowerThermalState;
|
|
17
18
|
export declare function hasPowerKeepAwake(): boolean;
|
|
19
|
+
export declare function installPowerHostBackend(backend: PowerBackend): void;
|
|
20
|
+
export declare function observePowerHostResult(operation: string, succeeded: boolean): void;
|
|
21
|
+
export declare function resetPowerBackendForTest(): void;
|
|
18
22
|
export declare function setPowerBackend(backend: PowerBackend | null): void;
|
|
19
23
|
export declare function setPowerIdlePollingIntervalMs(intervalMs: number): void;
|
|
20
24
|
export declare function setPowerKeepAwake(enabled: boolean, mode?: PowerKeepAwakeMode): boolean;
|
package/dist/power.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"power.d.ts","sourceRoot":"","sources":["../src/power.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,KAAK,EACL,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AASlC,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,oBAAoB,SAAK,GAAG,IAAI,CAyDzE;AAID,wBAAgB,WAAW,IAAI,KAAK,CAanC;AAGD,wBAAgB,wBAAwB,IAAI,kBAAkB,CAQ7D;AAGD,wBAAgB,iBAAiB,IAAI,WAAW,CAW/C;
|
|
1
|
+
{"version":3,"file":"power.d.ts","sourceRoot":"","sources":["../src/power.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EACV,KAAK,EACL,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AASlC,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,oBAAoB,SAAK,GAAG,IAAI,CAyDzE;AAID,wBAAgB,WAAW,IAAI,KAAK,CAanC;AAGD,wBAAgB,wBAAwB,IAAI,kBAAkB,CAQ7D;AAGD,wBAAgB,iBAAiB,IAAI,WAAW,CAW/C;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAM9C;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAE/C;AAID,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAWrD;AAED,wBAAgB,mBAAmB,IAAI,kBAAkB,CAaxD;AAED,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAID,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,GAAG,kBAAkB,GAAG,IAAI,CAExF;AAGD,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD;AAGD,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CAE5D;AAGD,wBAAgB,uBAAuB,CAAC,gBAAgB,EAAE,MAAM,GAAG,cAAc,CAEhF;AAGD,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAGD,wBAAgB,oBAAoB,IAAI,iBAAiB,CAExD;AAGD,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAMnE;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAKlF;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAK/C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAElE;AAKD,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAEtE;AAID,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAEtF"}
|
package/dist/power.js
CHANGED
|
@@ -110,174 +110,6 @@ export function createPowerStatus() {
|
|
|
110
110
|
thermalState: 'Unknown',
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
|
-
// Builds the default web backend over the Battery Status API and the Screen Wake Lock API. Degrades
|
|
114
|
-
// to batteryLevel=-1 / not charging and a no-op subscription where the APIs are absent.
|
|
115
|
-
export function createWebPowerBackend() {
|
|
116
|
-
let cachedLevel = -1;
|
|
117
|
-
let cachedCharging = false;
|
|
118
|
-
let cachedChargingTime = -1;
|
|
119
|
-
let cachedDischargingTime = -1;
|
|
120
|
-
return {
|
|
121
|
-
getBatteryHealth(_out) {
|
|
122
|
-
// Browser Battery Status API does not expose health information.
|
|
123
|
-
return null;
|
|
124
|
-
},
|
|
125
|
-
isKeepAwakeActive() {
|
|
126
|
-
return _wakeLockSentinel !== null;
|
|
127
|
-
},
|
|
128
|
-
getStatus(out) {
|
|
129
|
-
// Read all input values first (alias-safe: out may be the same object as an input).
|
|
130
|
-
const level = cachedLevel;
|
|
131
|
-
const charging = cachedCharging;
|
|
132
|
-
const chargingTime = cachedChargingTime;
|
|
133
|
-
const dischargingTime = cachedDischargingTime;
|
|
134
|
-
out.batteryLevel = level;
|
|
135
|
-
out.chargingTime = chargingTime;
|
|
136
|
-
out.dischargingTime = dischargingTime;
|
|
137
|
-
out.isBatteryLow = level >= 0 && level <= 0.2 && !charging;
|
|
138
|
-
out.isCharging = charging;
|
|
139
|
-
// Web Battery Status API: isOnBattery = device has a battery and is not charging/AC.
|
|
140
|
-
// If level is -1 (API absent), we cannot determine the power source; use false as sentinel.
|
|
141
|
-
out.isOnBattery = level >= 0 && !charging;
|
|
142
|
-
// No real OS low-power-mode read available on web; use false as sentinel.
|
|
143
|
-
out.isLowPower = false;
|
|
144
|
-
out.thermalState = 'Unknown';
|
|
145
|
-
return out;
|
|
146
|
-
},
|
|
147
|
-
getSystemIdleState(_thresholdSeconds) {
|
|
148
|
-
// The Idle Detection API is permission-gated and not widely available; return sentinel.
|
|
149
|
-
return 'Unknown';
|
|
150
|
-
},
|
|
151
|
-
getSystemIdleTime() {
|
|
152
|
-
// No idle-time API available on web; return sentinel.
|
|
153
|
-
return -1;
|
|
154
|
-
},
|
|
155
|
-
setKeepAwake(enabled, mode) {
|
|
156
|
-
const resolvedMode = mode ?? 'PreventDisplaySleep';
|
|
157
|
-
// Web only supports display-sleep prevention via the Screen Wake Lock API.
|
|
158
|
-
if (resolvedMode === 'PreventAppSuspension')
|
|
159
|
-
return false;
|
|
160
|
-
if (typeof navigator === 'undefined')
|
|
161
|
-
return false;
|
|
162
|
-
const wakeLock = navigator.wakeLock;
|
|
163
|
-
if (wakeLock === undefined)
|
|
164
|
-
return false;
|
|
165
|
-
try {
|
|
166
|
-
if (!enabled) {
|
|
167
|
-
_wakeLockSentinel?.release?.().catch(() => { });
|
|
168
|
-
_wakeLockSentinel = null;
|
|
169
|
-
return true;
|
|
170
|
-
}
|
|
171
|
-
wakeLock
|
|
172
|
-
.request('screen')
|
|
173
|
-
.then((sentinel) => {
|
|
174
|
-
_wakeLockSentinel = sentinel;
|
|
175
|
-
// Re-acquire the lock after visibility is restored; browsers auto-release it when the
|
|
176
|
-
// tab goes hidden.
|
|
177
|
-
sentinel.addEventListener?.('release', () => {
|
|
178
|
-
if (_wakeLockSentinel === sentinel && !document.hidden) {
|
|
179
|
-
wakeLock
|
|
180
|
-
.request('screen')
|
|
181
|
-
.then((newSentinel) => {
|
|
182
|
-
if (_wakeLockSentinel === sentinel)
|
|
183
|
-
_wakeLockSentinel = newSentinel;
|
|
184
|
-
})
|
|
185
|
-
.catch(() => { });
|
|
186
|
-
}
|
|
187
|
-
});
|
|
188
|
-
})
|
|
189
|
-
.catch(() => { });
|
|
190
|
-
return true;
|
|
191
|
-
}
|
|
192
|
-
catch {
|
|
193
|
-
return false;
|
|
194
|
-
}
|
|
195
|
-
},
|
|
196
|
-
subscribe(listener) {
|
|
197
|
-
const battery = getWebBatteryManagerPromise();
|
|
198
|
-
if (battery === null)
|
|
199
|
-
return () => { };
|
|
200
|
-
let manager = null;
|
|
201
|
-
const onLevelChange = () => {
|
|
202
|
-
if (manager !== null)
|
|
203
|
-
cachedLevel = manager.level;
|
|
204
|
-
listener();
|
|
205
|
-
};
|
|
206
|
-
const onChargingChange = () => {
|
|
207
|
-
if (manager !== null)
|
|
208
|
-
cachedCharging = manager.charging;
|
|
209
|
-
listener();
|
|
210
|
-
};
|
|
211
|
-
const onChargingTimeChange = () => {
|
|
212
|
-
if (manager !== null) {
|
|
213
|
-
const t = manager.chargingTime;
|
|
214
|
-
cachedChargingTime = t === Infinity ? -1 : t;
|
|
215
|
-
}
|
|
216
|
-
listener();
|
|
217
|
-
};
|
|
218
|
-
const onDischargingTimeChange = () => {
|
|
219
|
-
if (manager !== null) {
|
|
220
|
-
const t = manager.dischargingTime;
|
|
221
|
-
cachedDischargingTime = t === Infinity ? -1 : t;
|
|
222
|
-
}
|
|
223
|
-
listener();
|
|
224
|
-
};
|
|
225
|
-
let cancelled = false;
|
|
226
|
-
battery
|
|
227
|
-
.then((m) => {
|
|
228
|
-
if (cancelled)
|
|
229
|
-
return;
|
|
230
|
-
manager = m;
|
|
231
|
-
cachedLevel = m.level;
|
|
232
|
-
cachedCharging = m.charging;
|
|
233
|
-
cachedChargingTime = m.chargingTime === Infinity ? -1 : m.chargingTime;
|
|
234
|
-
cachedDischargingTime = m.dischargingTime === Infinity ? -1 : m.dischargingTime;
|
|
235
|
-
m.addEventListener?.('levelchange', onLevelChange);
|
|
236
|
-
m.addEventListener?.('chargingchange', onChargingChange);
|
|
237
|
-
m.addEventListener?.('chargingtimechange', onChargingTimeChange);
|
|
238
|
-
m.addEventListener?.('dischargingtimechange', onDischargingTimeChange);
|
|
239
|
-
listener();
|
|
240
|
-
})
|
|
241
|
-
.catch(() => { });
|
|
242
|
-
return () => {
|
|
243
|
-
cancelled = true;
|
|
244
|
-
manager?.removeEventListener?.('levelchange', onLevelChange);
|
|
245
|
-
manager?.removeEventListener?.('chargingchange', onChargingChange);
|
|
246
|
-
manager?.removeEventListener?.('chargingtimechange', onChargingTimeChange);
|
|
247
|
-
manager?.removeEventListener?.('dischargingtimechange', onDischargingTimeChange);
|
|
248
|
-
manager = null;
|
|
249
|
-
};
|
|
250
|
-
},
|
|
251
|
-
subscribeLockScreen() {
|
|
252
|
-
// The Web Platform has no lock-screen API; only native hosts can detect screen lock.
|
|
253
|
-
return () => { };
|
|
254
|
-
},
|
|
255
|
-
subscribeLowPowerModeChange() {
|
|
256
|
-
// No OS low-power-mode API available on web; return a no-op unsubscriber.
|
|
257
|
-
return () => { };
|
|
258
|
-
},
|
|
259
|
-
subscribeResume(listener) {
|
|
260
|
-
if (typeof document === 'undefined')
|
|
261
|
-
return () => { };
|
|
262
|
-
document.addEventListener('resume', listener);
|
|
263
|
-
return () => document.removeEventListener('resume', listener);
|
|
264
|
-
},
|
|
265
|
-
subscribeSuspend(listener) {
|
|
266
|
-
if (typeof document === 'undefined')
|
|
267
|
-
return () => { };
|
|
268
|
-
document.addEventListener('freeze', listener);
|
|
269
|
-
return () => document.removeEventListener('freeze', listener);
|
|
270
|
-
},
|
|
271
|
-
subscribeThermalStateChange() {
|
|
272
|
-
// No thermal state API available on web; return a no-op unsubscriber.
|
|
273
|
-
return () => { };
|
|
274
|
-
},
|
|
275
|
-
subscribeUnlockScreen() {
|
|
276
|
-
// The Web Platform has no unlock-screen API; only native hosts can detect screen unlock.
|
|
277
|
-
return () => { };
|
|
278
|
-
},
|
|
279
|
-
};
|
|
280
|
-
}
|
|
281
113
|
// Stops delivery to `power` and forgets its subscription. Safe to call when not attached.
|
|
282
114
|
export function detachPower(power) {
|
|
283
115
|
const unsubscribe = _subscriptions.get(power);
|
|
@@ -315,10 +147,22 @@ export function enablePowerSignals(power) {
|
|
|
315
147
|
if (power.onUnlockScreen === null)
|
|
316
148
|
power.onUnlockScreen = createSignal();
|
|
317
149
|
}
|
|
150
|
+
export function explainPowerBackend() {
|
|
151
|
+
if (_custom !== null) {
|
|
152
|
+
return { conflict: _hostConflict, layer: 'custom', operation: null, viability: 'unobserved' };
|
|
153
|
+
}
|
|
154
|
+
if (_host !== null) {
|
|
155
|
+
return {
|
|
156
|
+
conflict: _hostConflict,
|
|
157
|
+
layer: 'host',
|
|
158
|
+
operation: _hostObservation !== null ? _hostObservation.operation : null,
|
|
159
|
+
viability: _hostObservation !== null ? _hostObservation.viability : 'unobserved',
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
return { conflict: false, layer: 'host-not-enabled', operation: null, viability: 'unobserved' };
|
|
163
|
+
}
|
|
318
164
|
export function getPowerBackend() {
|
|
319
|
-
|
|
320
|
-
_backend = createWebPowerBackend();
|
|
321
|
-
return _backend;
|
|
165
|
+
return _custom ?? _host ?? _sentinel;
|
|
322
166
|
}
|
|
323
167
|
// Returns the battery health detail from the active backend, writing into `out` and returning it,
|
|
324
168
|
// or returns null when the active backend does not support battery health reporting.
|
|
@@ -349,9 +193,28 @@ export function getPowerThermalState() {
|
|
|
349
193
|
export function hasPowerKeepAwake() {
|
|
350
194
|
return getPowerBackend().isKeepAwakeActive();
|
|
351
195
|
}
|
|
352
|
-
|
|
196
|
+
export function installPowerHostBackend(backend) {
|
|
197
|
+
if (_host !== null) {
|
|
198
|
+
if (_host !== backend)
|
|
199
|
+
_hostConflict = true;
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
_host = backend;
|
|
203
|
+
}
|
|
204
|
+
export function observePowerHostResult(operation, succeeded) {
|
|
205
|
+
_hostObservation = {
|
|
206
|
+
operation,
|
|
207
|
+
viability: succeeded ? 'available' : 'runtime-api-unavailable',
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
export function resetPowerBackendForTest() {
|
|
211
|
+
_custom = null;
|
|
212
|
+
_host = null;
|
|
213
|
+
_hostConflict = false;
|
|
214
|
+
_hostObservation = null;
|
|
215
|
+
}
|
|
353
216
|
export function setPowerBackend(backend) {
|
|
354
|
-
|
|
217
|
+
_custom = backend;
|
|
355
218
|
}
|
|
356
219
|
// Sets the interval at which attachPower polls the backend for idle state changes. The default is
|
|
357
220
|
// 5000ms (5 seconds); set lower for more responsive idle detection at the cost of more frequent
|
|
@@ -364,22 +227,60 @@ export function setPowerIdlePollingIntervalMs(intervalMs) {
|
|
|
364
227
|
export function setPowerKeepAwake(enabled, mode) {
|
|
365
228
|
return getPowerBackend().setKeepAwake(enabled, mode);
|
|
366
229
|
}
|
|
367
|
-
let
|
|
230
|
+
let _custom = null;
|
|
231
|
+
let _host = null;
|
|
232
|
+
let _hostConflict = false;
|
|
233
|
+
let _hostObservation = null;
|
|
368
234
|
let _idlePollingIntervalMs = 5000;
|
|
369
|
-
let _wakeLockSentinel = null;
|
|
370
235
|
const _scratch = createPowerStatus();
|
|
371
|
-
const
|
|
372
|
-
|
|
373
|
-
if (typeof navigator === 'undefined')
|
|
236
|
+
const _sentinel = {
|
|
237
|
+
getBatteryHealth() {
|
|
374
238
|
return null;
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
239
|
+
},
|
|
240
|
+
getStatus(out) {
|
|
241
|
+
out.batteryLevel = -1;
|
|
242
|
+
out.chargingTime = -1;
|
|
243
|
+
out.dischargingTime = -1;
|
|
244
|
+
out.isBatteryLow = false;
|
|
245
|
+
out.isCharging = false;
|
|
246
|
+
out.isLowPower = false;
|
|
247
|
+
out.isOnBattery = false;
|
|
248
|
+
out.thermalState = 'Unknown';
|
|
249
|
+
return out;
|
|
250
|
+
},
|
|
251
|
+
getSystemIdleState() {
|
|
252
|
+
return 'Unknown';
|
|
253
|
+
},
|
|
254
|
+
getSystemIdleTime() {
|
|
255
|
+
return -1;
|
|
256
|
+
},
|
|
257
|
+
isKeepAwakeActive() {
|
|
258
|
+
return false;
|
|
259
|
+
},
|
|
260
|
+
setKeepAwake() {
|
|
261
|
+
return false;
|
|
262
|
+
},
|
|
263
|
+
subscribe() {
|
|
264
|
+
return () => { };
|
|
265
|
+
},
|
|
266
|
+
subscribeLockScreen() {
|
|
267
|
+
return () => { };
|
|
268
|
+
},
|
|
269
|
+
subscribeLowPowerModeChange() {
|
|
270
|
+
return () => { };
|
|
271
|
+
},
|
|
272
|
+
subscribeResume() {
|
|
273
|
+
return () => { };
|
|
274
|
+
},
|
|
275
|
+
subscribeSuspend() {
|
|
276
|
+
return () => { };
|
|
277
|
+
},
|
|
278
|
+
subscribeThermalStateChange() {
|
|
279
|
+
return () => { };
|
|
280
|
+
},
|
|
281
|
+
subscribeUnlockScreen() {
|
|
282
|
+
return () => { };
|
|
283
|
+
},
|
|
284
|
+
};
|
|
285
|
+
const _subscriptions = new WeakMap();
|
|
385
286
|
//# sourceMappingURL=power.js.map
|
package/dist/power.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"power.js","sourceRoot":"","sources":["../src/power.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"power.js","sourceRoot":"","sources":["../src/power.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/power",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0-edge.1908.751021c",
|
|
4
4
|
"author": "Joshua Granick and other contributors",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@flighthq/signals": "0.
|
|
42
|
-
"@flighthq/types": "0.
|
|
41
|
+
"@flighthq/signals": "0.4.0-edge.1908.751021c",
|
|
42
|
+
"@flighthq/types": "0.4.0-edge.1908.751021c"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"typescript": "^5.3.0"
|
package/src/power.test.ts
CHANGED
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
createPower,
|
|
7
7
|
createPowerBatteryHealth,
|
|
8
8
|
createPowerStatus,
|
|
9
|
-
createWebPowerBackend,
|
|
10
9
|
detachPower,
|
|
11
10
|
disposePower,
|
|
12
11
|
enablePowerSignals,
|
|
12
|
+
explainPowerBackend,
|
|
13
13
|
getPowerBackend,
|
|
14
14
|
getPowerBatteryHealth,
|
|
15
15
|
getPowerIdlePollingIntervalMs,
|
|
@@ -18,6 +18,9 @@ import {
|
|
|
18
18
|
getPowerSystemIdleTime,
|
|
19
19
|
getPowerThermalState,
|
|
20
20
|
hasPowerKeepAwake,
|
|
21
|
+
installPowerHostBackend,
|
|
22
|
+
observePowerHostResult,
|
|
23
|
+
resetPowerBackendForTest,
|
|
21
24
|
setPowerBackend,
|
|
22
25
|
setPowerIdlePollingIntervalMs,
|
|
23
26
|
setPowerKeepAwake,
|
|
@@ -137,7 +140,7 @@ function fakeBackend(): PowerBackend & {
|
|
|
137
140
|
};
|
|
138
141
|
}
|
|
139
142
|
|
|
140
|
-
afterEach(() =>
|
|
143
|
+
afterEach(() => resetPowerBackendForTest());
|
|
141
144
|
|
|
142
145
|
describe('attachPower', () => {
|
|
143
146
|
it('emits onChange and the charging transition signals', () => {
|
|
@@ -335,72 +338,6 @@ describe('createPowerStatus', () => {
|
|
|
335
338
|
});
|
|
336
339
|
});
|
|
337
340
|
|
|
338
|
-
describe('createWebPowerBackend', () => {
|
|
339
|
-
it('isKeepAwakeActive returns false when no lock is held', () => {
|
|
340
|
-
expect(createWebPowerBackend().isKeepAwakeActive()).toBe(false);
|
|
341
|
-
});
|
|
342
|
-
|
|
343
|
-
it('reads a status without throwing', () => {
|
|
344
|
-
const out = createPowerStatus();
|
|
345
|
-
expect(typeof createWebPowerBackend().getStatus(out).isCharging).toBe('boolean');
|
|
346
|
-
});
|
|
347
|
-
|
|
348
|
-
it('getStatus is alias-safe when out is the scratch object', () => {
|
|
349
|
-
const backend = createWebPowerBackend();
|
|
350
|
-
const out = createPowerStatus();
|
|
351
|
-
const result = backend.getStatus(out);
|
|
352
|
-
expect(result).toBe(out);
|
|
353
|
-
});
|
|
354
|
-
|
|
355
|
-
it('getBatteryHealth returns null on web', () => {
|
|
356
|
-
const backend = createWebPowerBackend();
|
|
357
|
-
const out = createPowerBatteryHealth();
|
|
358
|
-
expect(backend.getBatteryHealth(out)).toBeNull();
|
|
359
|
-
});
|
|
360
|
-
|
|
361
|
-
it('getSystemIdleTime returns -1 on web', () => {
|
|
362
|
-
expect(createWebPowerBackend().getSystemIdleTime()).toBe(-1);
|
|
363
|
-
});
|
|
364
|
-
|
|
365
|
-
it('getSystemIdleState returns Unknown on web', () => {
|
|
366
|
-
expect(createWebPowerBackend().getSystemIdleState(5)).toBe('Unknown');
|
|
367
|
-
});
|
|
368
|
-
|
|
369
|
-
it('subscribeLockScreen and subscribeUnlockScreen return inert no-ops on the web', () => {
|
|
370
|
-
const backend = createWebPowerBackend();
|
|
371
|
-
expect(() => backend.subscribeLockScreen(() => {})()).not.toThrow();
|
|
372
|
-
expect(() => backend.subscribeUnlockScreen(() => {})()).not.toThrow();
|
|
373
|
-
});
|
|
374
|
-
|
|
375
|
-
it('subscribeLowPowerModeChange returns an inert no-op on the web', () => {
|
|
376
|
-
const backend = createWebPowerBackend();
|
|
377
|
-
expect(() => backend.subscribeLowPowerModeChange(() => {})()).not.toThrow();
|
|
378
|
-
});
|
|
379
|
-
|
|
380
|
-
it('subscribeThermalStateChange returns an inert no-op on the web', () => {
|
|
381
|
-
const backend = createWebPowerBackend();
|
|
382
|
-
expect(() => backend.subscribeThermalStateChange(() => {})()).not.toThrow();
|
|
383
|
-
});
|
|
384
|
-
|
|
385
|
-
it('subscribes without throwing when battery API is absent', () => {
|
|
386
|
-
const unsubscribe = createWebPowerBackend().subscribe(() => {});
|
|
387
|
-
expect(() => unsubscribe()).not.toThrow();
|
|
388
|
-
});
|
|
389
|
-
|
|
390
|
-
it('toggles keep-awake without throwing', () => {
|
|
391
|
-
expect(typeof createWebPowerBackend().setKeepAwake(true)).toBe('boolean');
|
|
392
|
-
});
|
|
393
|
-
|
|
394
|
-
it('setKeepAwake returns false for PreventAppSuspension mode (web unsupported)', () => {
|
|
395
|
-
expect(createWebPowerBackend().setKeepAwake(true, 'PreventAppSuspension')).toBe(false);
|
|
396
|
-
});
|
|
397
|
-
|
|
398
|
-
it('setKeepAwake honors PreventDisplaySleep mode (web default path)', () => {
|
|
399
|
-
// Web may not have wakeLock, but should not throw.
|
|
400
|
-
expect(() => createWebPowerBackend().setKeepAwake(true, 'PreventDisplaySleep')).not.toThrow();
|
|
401
|
-
});
|
|
402
|
-
});
|
|
403
|
-
|
|
404
341
|
describe('detachPower', () => {
|
|
405
342
|
it('stops further delivery', () => {
|
|
406
343
|
const backend = fakeBackend();
|
|
@@ -472,12 +409,105 @@ describe('enablePowerSignals', () => {
|
|
|
472
409
|
});
|
|
473
410
|
});
|
|
474
411
|
|
|
412
|
+
describe('explainPowerBackend', () => {
|
|
413
|
+
afterEach(() => resetPowerBackendForTest());
|
|
414
|
+
|
|
415
|
+
it('reports host-not-enabled when no backend is installed', () => {
|
|
416
|
+
resetPowerBackendForTest();
|
|
417
|
+
const explanation = explainPowerBackend();
|
|
418
|
+
expect(explanation.layer).toBe('host-not-enabled');
|
|
419
|
+
expect(explanation.conflict).toBe(false);
|
|
420
|
+
expect(explanation.viability).toBe('unobserved');
|
|
421
|
+
});
|
|
422
|
+
|
|
423
|
+
it('reports custom layer when a custom backend is set', () => {
|
|
424
|
+
setPowerBackend(fakeBackend());
|
|
425
|
+
expect(explainPowerBackend().layer).toBe('custom');
|
|
426
|
+
});
|
|
427
|
+
|
|
428
|
+
it('reports host layer when a host backend is installed', () => {
|
|
429
|
+
installPowerHostBackend(fakeBackend());
|
|
430
|
+
expect(explainPowerBackend().layer).toBe('host');
|
|
431
|
+
});
|
|
432
|
+
|
|
433
|
+
it('reports conflict when two different host backends are installed', () => {
|
|
434
|
+
installPowerHostBackend(fakeBackend());
|
|
435
|
+
installPowerHostBackend(fakeBackend());
|
|
436
|
+
expect(explainPowerBackend().conflict).toBe(true);
|
|
437
|
+
});
|
|
438
|
+
});
|
|
439
|
+
|
|
475
440
|
describe('getPowerBackend', () => {
|
|
476
441
|
it('falls back to a web backend', () => {
|
|
477
442
|
expect(getPowerBackend()).not.toBeNull();
|
|
478
443
|
});
|
|
479
444
|
});
|
|
480
445
|
|
|
446
|
+
describe('getPowerBackend (sentinel)', () => {
|
|
447
|
+
it('isKeepAwakeActive returns false when no lock is held', () => {
|
|
448
|
+
expect(getPowerBackend().isKeepAwakeActive()).toBe(false);
|
|
449
|
+
});
|
|
450
|
+
|
|
451
|
+
it('reads a status without throwing', () => {
|
|
452
|
+
const out = createPowerStatus();
|
|
453
|
+
expect(typeof getPowerBackend().getStatus(out).isCharging).toBe('boolean');
|
|
454
|
+
});
|
|
455
|
+
|
|
456
|
+
it('getStatus is alias-safe when out is the scratch object', () => {
|
|
457
|
+
const backend = getPowerBackend();
|
|
458
|
+
const out = createPowerStatus();
|
|
459
|
+
const result = backend.getStatus(out);
|
|
460
|
+
expect(result).toBe(out);
|
|
461
|
+
});
|
|
462
|
+
|
|
463
|
+
it('getBatteryHealth returns null', () => {
|
|
464
|
+
const backend = getPowerBackend();
|
|
465
|
+
const out = createPowerBatteryHealth();
|
|
466
|
+
expect(backend.getBatteryHealth(out)).toBeNull();
|
|
467
|
+
});
|
|
468
|
+
|
|
469
|
+
it('getSystemIdleTime returns -1', () => {
|
|
470
|
+
expect(getPowerBackend().getSystemIdleTime()).toBe(-1);
|
|
471
|
+
});
|
|
472
|
+
|
|
473
|
+
it('getSystemIdleState returns Unknown', () => {
|
|
474
|
+
expect(getPowerBackend().getSystemIdleState(5)).toBe('Unknown');
|
|
475
|
+
});
|
|
476
|
+
|
|
477
|
+
it('subscribeLockScreen and subscribeUnlockScreen return inert no-ops', () => {
|
|
478
|
+
const backend = getPowerBackend();
|
|
479
|
+
expect(() => backend.subscribeLockScreen(() => {})()).not.toThrow();
|
|
480
|
+
expect(() => backend.subscribeUnlockScreen(() => {})()).not.toThrow();
|
|
481
|
+
});
|
|
482
|
+
|
|
483
|
+
it('subscribeLowPowerModeChange returns an inert no-op', () => {
|
|
484
|
+
const backend = getPowerBackend();
|
|
485
|
+
expect(() => backend.subscribeLowPowerModeChange(() => {})()).not.toThrow();
|
|
486
|
+
});
|
|
487
|
+
|
|
488
|
+
it('subscribeThermalStateChange returns an inert no-op', () => {
|
|
489
|
+
const backend = getPowerBackend();
|
|
490
|
+
expect(() => backend.subscribeThermalStateChange(() => {})()).not.toThrow();
|
|
491
|
+
});
|
|
492
|
+
|
|
493
|
+
it('subscribes without throwing', () => {
|
|
494
|
+
const unsubscribe = getPowerBackend().subscribe(() => {});
|
|
495
|
+
expect(() => unsubscribe()).not.toThrow();
|
|
496
|
+
});
|
|
497
|
+
|
|
498
|
+
it('setKeepAwake returns false', () => {
|
|
499
|
+
expect(getPowerBackend().setKeepAwake(true)).toBe(false);
|
|
500
|
+
});
|
|
501
|
+
|
|
502
|
+
it('setKeepAwake returns false for PreventAppSuspension mode', () => {
|
|
503
|
+
expect(getPowerBackend().setKeepAwake(true, 'PreventAppSuspension')).toBe(false);
|
|
504
|
+
});
|
|
505
|
+
|
|
506
|
+
it('setKeepAwake returns false for PreventDisplaySleep mode', () => {
|
|
507
|
+
expect(getPowerBackend().setKeepAwake(true, 'PreventDisplaySleep')).toBe(false);
|
|
508
|
+
});
|
|
509
|
+
});
|
|
510
|
+
|
|
481
511
|
describe('getPowerBatteryHealth', () => {
|
|
482
512
|
it('returns null from the default web backend', () => {
|
|
483
513
|
const out = createPowerBatteryHealth();
|
|
@@ -570,6 +600,57 @@ describe('hasPowerKeepAwake', () => {
|
|
|
570
600
|
});
|
|
571
601
|
});
|
|
572
602
|
|
|
603
|
+
describe('installPowerHostBackend', () => {
|
|
604
|
+
afterEach(() => resetPowerBackendForTest());
|
|
605
|
+
|
|
606
|
+
it('installs a host backend that getPowerBackend returns', () => {
|
|
607
|
+
const backend = fakeBackend();
|
|
608
|
+
installPowerHostBackend(backend);
|
|
609
|
+
expect(getPowerBackend()).toBe(backend);
|
|
610
|
+
});
|
|
611
|
+
|
|
612
|
+
it('is first-host-wins: a second different backend sets conflict', () => {
|
|
613
|
+
const first = fakeBackend();
|
|
614
|
+
const second = fakeBackend();
|
|
615
|
+
installPowerHostBackend(first);
|
|
616
|
+
installPowerHostBackend(second);
|
|
617
|
+
expect(getPowerBackend()).toBe(first);
|
|
618
|
+
expect(explainPowerBackend().conflict).toBe(true);
|
|
619
|
+
});
|
|
620
|
+
});
|
|
621
|
+
|
|
622
|
+
describe('observePowerHostResult', () => {
|
|
623
|
+
afterEach(() => resetPowerBackendForTest());
|
|
624
|
+
|
|
625
|
+
it('records a successful observation', () => {
|
|
626
|
+
installPowerHostBackend(fakeBackend());
|
|
627
|
+
observePowerHostResult('setKeepAwake', true);
|
|
628
|
+
const explanation = explainPowerBackend();
|
|
629
|
+
expect(explanation.operation).toBe('setKeepAwake');
|
|
630
|
+
expect(explanation.viability).toBe('available');
|
|
631
|
+
});
|
|
632
|
+
|
|
633
|
+
it('records a failed observation', () => {
|
|
634
|
+
installPowerHostBackend(fakeBackend());
|
|
635
|
+
observePowerHostResult('setKeepAwake', false);
|
|
636
|
+
expect(explainPowerBackend().viability).toBe('runtime-api-unavailable');
|
|
637
|
+
});
|
|
638
|
+
});
|
|
639
|
+
|
|
640
|
+
describe('resetPowerBackendForTest', () => {
|
|
641
|
+
it('clears all backend slots', () => {
|
|
642
|
+
const backend = fakeBackend();
|
|
643
|
+
setPowerBackend(backend);
|
|
644
|
+
installPowerHostBackend(fakeBackend());
|
|
645
|
+
observePowerHostResult('setKeepAwake', true);
|
|
646
|
+
resetPowerBackendForTest();
|
|
647
|
+
expect(getPowerBackend()).not.toBe(backend);
|
|
648
|
+
expect(explainPowerBackend().layer).toBe('host-not-enabled');
|
|
649
|
+
expect(explainPowerBackend().conflict).toBe(false);
|
|
650
|
+
expect(explainPowerBackend().viability).toBe('unobserved');
|
|
651
|
+
});
|
|
652
|
+
});
|
|
653
|
+
|
|
573
654
|
describe('setPowerBackend', () => {
|
|
574
655
|
it('clears back to the web fallback when passed null', () => {
|
|
575
656
|
setPowerBackend(fakeBackend());
|