@flighthq/power 0.1.0 → 0.2.0

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/power.d.ts CHANGED
@@ -6,7 +6,7 @@ export declare function createPowerStatus(): PowerStatus;
6
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
- export declare function enablePowerSignals(): Power;
9
+ export declare function enablePowerSignals(power: Power): void;
10
10
  export declare function getPowerBackend(): PowerBackend;
11
11
  export declare function getPowerBatteryHealth(out: PowerBatteryHealth): PowerBatteryHealth | null;
12
12
  export declare function getPowerIdlePollingIntervalMs(): number;
@@ -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,iBAAiB,CAAC;AASzB,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,oBAAoB,SAAK,GAAG,IAAI,CA+CzE;AAGD,wBAAgB,WAAW,IAAI,KAAK,CAanC;AAGD,wBAAgB,wBAAwB,IAAI,kBAAkB,CAQ7D;AAGD,wBAAgB,iBAAiB,IAAI,WAAW,CAW/C;AAID,wBAAgB,qBAAqB,IAAI,YAAY,CA0JpD;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAM9C;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAE/C;AAED,wBAAgB,kBAAkB,IAAI,KAAK,CAE1C;AAED,wBAAgB,eAAe,IAAI,YAAY,CAG9C;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;AAGD,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"}
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,iBAAiB,CAAC;AASzB,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;AAID,wBAAgB,qBAAqB,IAAI,YAAY,CA0JpD;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,eAAe,IAAI,YAAY,CAG9C;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;AAGD,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
@@ -12,30 +12,52 @@ export function attachPower(power, idleThresholdSeconds = 60) {
12
12
  let wasCharging = backend.getStatus(_scratch).isCharging;
13
13
  const unsubscribeChange = backend.subscribe(() => {
14
14
  const status = backend.getStatus(_scratch);
15
- emitSignal(power.onChange, status);
15
+ if (power.onChange !== null)
16
+ emitSignal(power.onChange, status);
16
17
  if (status.isCharging !== wasCharging) {
17
18
  wasCharging = status.isCharging;
18
- emitSignal(status.isCharging ? power.onCharging : power.onDischarging);
19
+ const transition = status.isCharging ? power.onCharging : power.onDischarging;
20
+ if (transition !== null)
21
+ emitSignal(transition);
19
22
  }
20
23
  });
21
- const unsubscribeLockScreen = backend.subscribeLockScreen(() => emitSignal(power.onLockScreen));
22
- const unsubscribeLowPowerModeChange = backend.subscribeLowPowerModeChange(() => emitSignal(power.onLowPowerModeChange));
23
- const unsubscribeResume = backend.subscribeResume(() => emitSignal(power.onResume));
24
- const unsubscribeSuspend = backend.subscribeSuspend(() => emitSignal(power.onSuspend));
25
- const unsubscribeThermalStateChange = backend.subscribeThermalStateChange(() => emitSignal(power.onThermalStateChange));
26
- const unsubscribeUnlockScreen = backend.subscribeUnlockScreen(() => emitSignal(power.onUnlockScreen));
24
+ const unsubscribeLockScreen = backend.subscribeLockScreen(() => {
25
+ if (power.onLockScreen !== null)
26
+ emitSignal(power.onLockScreen);
27
+ });
28
+ const unsubscribeLowPowerModeChange = backend.subscribeLowPowerModeChange(() => {
29
+ if (power.onLowPowerModeChange !== null)
30
+ emitSignal(power.onLowPowerModeChange);
31
+ });
32
+ const unsubscribeResume = backend.subscribeResume(() => {
33
+ if (power.onResume !== null)
34
+ emitSignal(power.onResume);
35
+ });
36
+ const unsubscribeSuspend = backend.subscribeSuspend(() => {
37
+ if (power.onSuspend !== null)
38
+ emitSignal(power.onSuspend);
39
+ });
40
+ const unsubscribeThermalStateChange = backend.subscribeThermalStateChange(() => {
41
+ if (power.onThermalStateChange !== null)
42
+ emitSignal(power.onThermalStateChange);
43
+ });
44
+ const unsubscribeUnlockScreen = backend.subscribeUnlockScreen(() => {
45
+ if (power.onUnlockScreen !== null)
46
+ emitSignal(power.onUnlockScreen);
47
+ });
27
48
  // Idle state polling: poll at the configured interval and emit onIdleStateChange on transitions.
28
49
  // The poll emits only when at least one slot is connected, avoiding spurious allocations when
29
50
  // nobody is listening. The interval still runs (cheaply) so state transitions are never missed
30
51
  // when a listener connects after attach.
31
52
  let lastIdleState = backend.getSystemIdleState(idleThresholdSeconds);
32
53
  const idleIntervalId = setInterval(() => {
33
- if (!hasSignalSlots(power.onIdleStateChange))
54
+ const idleSignal = power.onIdleStateChange;
55
+ if (idleSignal === null || !hasSignalSlots(idleSignal))
34
56
  return;
35
57
  const current = backend.getSystemIdleState(idleThresholdSeconds);
36
58
  if (current !== lastIdleState) {
37
59
  lastIdleState = current;
38
- emitSignal(power.onIdleStateChange);
60
+ emitSignal(idleSignal);
39
61
  }
40
62
  }, _idlePollingIntervalMs);
41
63
  _subscriptions.set(power, () => {
@@ -49,19 +71,20 @@ export function attachPower(power, idleThresholdSeconds = 60) {
49
71
  clearInterval(idleIntervalId);
50
72
  });
51
73
  }
52
- // Allocates a Power event entity with inert signals; call attachPower to start delivery.
74
+ // Allocates a Power event entity with its signals left null. Call enablePowerSignals to allocate the
75
+ // signals to connect to, and attachPower to start delivering backend changes into them.
53
76
  export function createPower() {
54
77
  return {
55
- onChange: createSignal(),
56
- onCharging: createSignal(),
57
- onDischarging: createSignal(),
58
- onIdleStateChange: createSignal(),
59
- onLockScreen: createSignal(),
60
- onLowPowerModeChange: createSignal(),
61
- onResume: createSignal(),
62
- onSuspend: createSignal(),
63
- onThermalStateChange: createSignal(),
64
- onUnlockScreen: createSignal(),
78
+ onChange: null,
79
+ onCharging: null,
80
+ onDischarging: null,
81
+ onIdleStateChange: null,
82
+ onLockScreen: null,
83
+ onLowPowerModeChange: null,
84
+ onResume: null,
85
+ onSuspend: null,
86
+ onThermalStateChange: null,
87
+ onUnlockScreen: null,
65
88
  };
66
89
  }
67
90
  // Allocates a zeroed PowerBatteryHealth, suitable as the `out` for getPowerBatteryHealth.
@@ -268,8 +291,29 @@ export function detachPower(power) {
268
291
  export function disposePower(power) {
269
292
  detachPower(power);
270
293
  }
271
- export function enablePowerSignals() {
272
- return createPower();
294
+ // Allocates any not-yet-allocated Power signals so callers can connect to them. Idempotent: signals
295
+ // already allocated are left untouched. Pair with attachPower to begin delivery.
296
+ export function enablePowerSignals(power) {
297
+ if (power.onChange === null)
298
+ power.onChange = createSignal();
299
+ if (power.onCharging === null)
300
+ power.onCharging = createSignal();
301
+ if (power.onDischarging === null)
302
+ power.onDischarging = createSignal();
303
+ if (power.onIdleStateChange === null)
304
+ power.onIdleStateChange = createSignal();
305
+ if (power.onLockScreen === null)
306
+ power.onLockScreen = createSignal();
307
+ if (power.onLowPowerModeChange === null)
308
+ power.onLowPowerModeChange = createSignal();
309
+ if (power.onResume === null)
310
+ power.onResume = createSignal();
311
+ if (power.onSuspend === null)
312
+ power.onSuspend = createSignal();
313
+ if (power.onThermalStateChange === null)
314
+ power.onThermalStateChange = createSignal();
315
+ if (power.onUnlockScreen === null)
316
+ power.onUnlockScreen = createSignal();
273
317
  }
274
318
  export function getPowerBackend() {
275
319
  if (_backend === null)
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,11 @@
1
1
  {
2
2
  "name": "@flighthq/power",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "https://github.com/flighthq/flight.git",
7
+ "directory": "packages/power"
8
+ },
4
9
  "type": "module",
5
10
  "main": "dist/index.js",
6
11
  "types": "dist/index.d.ts",
@@ -27,8 +32,8 @@
27
32
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
28
33
  },
29
34
  "dependencies": {
30
- "@flighthq/signals": "0.1.0",
31
- "@flighthq/types": "0.1.0"
35
+ "@flighthq/signals": "0.2.0",
36
+ "@flighthq/types": "0.2.0"
32
37
  },
33
38
  "devDependencies": {
34
39
  "typescript": "^5.3.0"
package/src/power.test.ts CHANGED
@@ -144,10 +144,11 @@ describe('attachPower', () => {
144
144
  const backend = fakeBackend();
145
145
  setPowerBackend(backend);
146
146
  const power = createPower();
147
+ enablePowerSignals(power);
147
148
  let changes = 0;
148
149
  let charging = 0;
149
- connectSignal(power.onChange, () => changes++);
150
- connectSignal(power.onCharging, () => charging++);
150
+ connectSignal(power.onChange!, () => changes++);
151
+ connectSignal(power.onCharging!, () => charging++);
151
152
  attachPower(power);
152
153
  backend.charging = true;
153
154
  backend.fire();
@@ -159,10 +160,11 @@ describe('attachPower', () => {
159
160
  const backend = fakeBackend();
160
161
  setPowerBackend(backend);
161
162
  const power = createPower();
163
+ enablePowerSignals(power);
162
164
  let suspends = 0;
163
165
  let resumes = 0;
164
- connectSignal(power.onSuspend, () => suspends++);
165
- connectSignal(power.onResume, () => resumes++);
166
+ connectSignal(power.onSuspend!, () => suspends++);
167
+ connectSignal(power.onResume!, () => resumes++);
166
168
  attachPower(power);
167
169
  backend.fireSuspend();
168
170
  backend.fireResume();
@@ -174,10 +176,11 @@ describe('attachPower', () => {
174
176
  const backend = fakeBackend();
175
177
  setPowerBackend(backend);
176
178
  const power = createPower();
179
+ enablePowerSignals(power);
177
180
  let locks = 0;
178
181
  let unlocks = 0;
179
- connectSignal(power.onLockScreen, () => locks++);
180
- connectSignal(power.onUnlockScreen, () => unlocks++);
182
+ connectSignal(power.onLockScreen!, () => locks++);
183
+ connectSignal(power.onUnlockScreen!, () => unlocks++);
181
184
  attachPower(power);
182
185
  backend.fireLockScreen();
183
186
  backend.fireUnlockScreen();
@@ -189,8 +192,9 @@ describe('attachPower', () => {
189
192
  const backend = fakeBackend();
190
193
  setPowerBackend(backend);
191
194
  const power = createPower();
195
+ enablePowerSignals(power);
192
196
  let lowPowerChanges = 0;
193
- connectSignal(power.onLowPowerModeChange, () => lowPowerChanges++);
197
+ connectSignal(power.onLowPowerModeChange!, () => lowPowerChanges++);
194
198
  attachPower(power);
195
199
  backend.fireLowPowerModeChange();
196
200
  expect(lowPowerChanges).toBe(1);
@@ -200,8 +204,9 @@ describe('attachPower', () => {
200
204
  const backend = fakeBackend();
201
205
  setPowerBackend(backend);
202
206
  const power = createPower();
207
+ enablePowerSignals(power);
203
208
  let thermalChanges = 0;
204
- connectSignal(power.onThermalStateChange, () => thermalChanges++);
209
+ connectSignal(power.onThermalStateChange!, () => thermalChanges++);
205
210
  attachPower(power);
206
211
  backend.fireThermalStateChange();
207
212
  expect(thermalChanges).toBe(1);
@@ -211,8 +216,9 @@ describe('attachPower', () => {
211
216
  const backend = fakeBackend();
212
217
  setPowerBackend(backend);
213
218
  const power = createPower();
219
+ enablePowerSignals(power);
214
220
  let changes = 0;
215
- connectSignal(power.onChange, () => changes++);
221
+ connectSignal(power.onChange!, () => changes++);
216
222
  attachPower(power);
217
223
  attachPower(power);
218
224
  backend.fire();
@@ -226,8 +232,9 @@ describe('attachPower', () => {
226
232
  backend.getSystemIdleState = () => idleState as ReturnType<typeof backend.getSystemIdleState>;
227
233
  setPowerBackend(backend);
228
234
  const power = createPower();
235
+ enablePowerSignals(power);
229
236
  let idleChanges = 0;
230
- connectSignal(power.onIdleStateChange, () => idleChanges++);
237
+ connectSignal(power.onIdleStateChange!, () => idleChanges++);
231
238
  setPowerIdlePollingIntervalMs(100);
232
239
  attachPower(power, 30);
233
240
  // Change state and advance timer.
@@ -247,13 +254,14 @@ describe('attachPower', () => {
247
254
  backend.getSystemIdleState = () => idleState as ReturnType<typeof backend.getSystemIdleState>;
248
255
  setPowerBackend(backend);
249
256
  const power = createPower();
250
- // No listener connected.
257
+ enablePowerSignals(power);
258
+ // Signals enabled but no listener connected.
251
259
  setPowerIdlePollingIntervalMs(100);
252
260
  attachPower(power, 30);
253
261
  idleState = 'Idle';
254
262
  vi.advanceTimersByTime(200);
255
263
  // No signal has slots so no emission, no error.
256
- expect(power.onIdleStateChange.data).toBeNull();
264
+ expect(power.onIdleStateChange!.data).toBeNull();
257
265
  disposePower(power);
258
266
  vi.useRealTimers();
259
267
  setPowerIdlePollingIntervalMs(5000);
@@ -270,7 +278,8 @@ describe('attachPower', () => {
270
278
  };
271
279
  setPowerBackend(backend);
272
280
  const power = createPower();
273
- connectSignal(power.onIdleStateChange, () => {});
281
+ enablePowerSignals(power);
282
+ connectSignal(power.onIdleStateChange!, () => {});
274
283
  setPowerIdlePollingIntervalMs(100);
275
284
  attachPower(power, 30);
276
285
  vi.advanceTimersByTime(150);
@@ -286,18 +295,18 @@ describe('attachPower', () => {
286
295
  });
287
296
 
288
297
  describe('createPower', () => {
289
- it('creates an entity with all signals defined', () => {
298
+ it('creates an entity with all signals left null until enabled', () => {
290
299
  const power = createPower();
291
- expect(power.onChange).toBeDefined();
292
- expect(power.onCharging).toBeDefined();
293
- expect(power.onDischarging).toBeDefined();
294
- expect(power.onIdleStateChange).toBeDefined();
295
- expect(power.onLockScreen).toBeDefined();
296
- expect(power.onLowPowerModeChange).toBeDefined();
297
- expect(power.onResume).toBeDefined();
298
- expect(power.onSuspend).toBeDefined();
299
- expect(power.onThermalStateChange).toBeDefined();
300
- expect(power.onUnlockScreen).toBeDefined();
300
+ expect(power.onChange).toBeNull();
301
+ expect(power.onCharging).toBeNull();
302
+ expect(power.onDischarging).toBeNull();
303
+ expect(power.onIdleStateChange).toBeNull();
304
+ expect(power.onLockScreen).toBeNull();
305
+ expect(power.onLowPowerModeChange).toBeNull();
306
+ expect(power.onResume).toBeNull();
307
+ expect(power.onSuspend).toBeNull();
308
+ expect(power.onThermalStateChange).toBeNull();
309
+ expect(power.onUnlockScreen).toBeNull();
301
310
  });
302
311
  });
303
312
 
@@ -397,8 +406,9 @@ describe('detachPower', () => {
397
406
  const backend = fakeBackend();
398
407
  setPowerBackend(backend);
399
408
  const power = createPower();
409
+ enablePowerSignals(power);
400
410
  let changes = 0;
401
- connectSignal(power.onChange, () => changes++);
411
+ connectSignal(power.onChange!, () => changes++);
402
412
  attachPower(power);
403
413
  detachPower(power);
404
414
  backend.fire();
@@ -430,18 +440,35 @@ describe('disposePower', () => {
430
440
  });
431
441
 
432
442
  describe('enablePowerSignals', () => {
433
- it('returns a Power entity with all signals defined', () => {
434
- const power = enablePowerSignals();
435
- expect(power.onChange).toBeDefined();
436
- expect(power.onCharging).toBeDefined();
437
- expect(power.onDischarging).toBeDefined();
438
- expect(power.onIdleStateChange).toBeDefined();
439
- expect(power.onLockScreen).toBeDefined();
440
- expect(power.onLowPowerModeChange).toBeDefined();
441
- expect(power.onResume).toBeDefined();
442
- expect(power.onSuspend).toBeDefined();
443
- expect(power.onThermalStateChange).toBeDefined();
444
- expect(power.onUnlockScreen).toBeDefined();
443
+ it('allocates the null signals so callers can connect and receive emissions', () => {
444
+ const backend = fakeBackend();
445
+ setPowerBackend(backend);
446
+ const power = createPower();
447
+ expect(power.onChange).toBeNull();
448
+ enablePowerSignals(power);
449
+ expect(power.onChange).not.toBeNull();
450
+ expect(power.onCharging).not.toBeNull();
451
+ expect(power.onDischarging).not.toBeNull();
452
+ expect(power.onIdleStateChange).not.toBeNull();
453
+ expect(power.onLockScreen).not.toBeNull();
454
+ expect(power.onLowPowerModeChange).not.toBeNull();
455
+ expect(power.onResume).not.toBeNull();
456
+ expect(power.onSuspend).not.toBeNull();
457
+ expect(power.onThermalStateChange).not.toBeNull();
458
+ expect(power.onUnlockScreen).not.toBeNull();
459
+ let changes = 0;
460
+ connectSignal(power.onChange!, () => changes++);
461
+ attachPower(power);
462
+ backend.fire();
463
+ expect(changes).toBe(1);
464
+ });
465
+
466
+ it('is idempotent — a second call keeps the same signal objects', () => {
467
+ const power = createPower();
468
+ enablePowerSignals(power);
469
+ const signal = power.onChange;
470
+ enablePowerSignals(power);
471
+ expect(power.onChange).toBe(signal);
445
472
  });
446
473
  });
447
474