@flighthq/host-electron 0.5.1-edge.685.f72fc7f → 0.5.1-edge.730.f29a5aa

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/README.md CHANGED
@@ -13,5 +13,5 @@ Import the supported application-facing API from `@flighthq/host-electron`. The
13
13
  This package is part of the locked-version Flight SDK graph. Applications may instead install and import `@flighthq/sdk` when package-level tree shaking is sufficient.
14
14
 
15
15
  - [Flight project](https://github.com/flighthq/flight)
16
- - [Source for @flighthq/host-electron@0.5.1-edge.685.f72fc7f](https://github.com/flighthq/flight/tree/f72fc7feaa9653d950f39c7d2fe6365f48e82e51/packages/host-electron)
17
- - [License](https://github.com/flighthq/flight/blob/f72fc7feaa9653d950f39c7d2fe6365f48e82e51/LICENSE.md)
16
+ - [Source for @flighthq/host-electron@0.5.1-edge.730.f29a5aa](https://github.com/flighthq/flight/tree/f29a5aab5db192284ce5cadf08ffae2649a598ea/packages/host-electron)
17
+ - [License](https://github.com/flighthq/flight/blob/f29a5aab5db192284ce5cadf08ffae2649a598ea/LICENSE.md)
@@ -1,3 +1,7 @@
1
- import type { ElectronApi, IpcMessageBackend } from '@flighthq/types/contract';
1
+ import type { ElectronApi, ElectronIpcRenderer, ElectronIpcTarget, IpcHandleBackend, IpcInvokeBackend, IpcMessageBackend, IpcSendBackend, IpcTargetedSendBackend } from '@flighthq/types/contract';
2
+ export declare function createElectronIpcHandleBackend(electron: ElectronApi): IpcHandleBackend;
3
+ export declare function createElectronIpcInvokeBackend(ipcRenderer: ElectronIpcRenderer): IpcInvokeBackend;
2
4
  export declare function createElectronIpcMessageBackend(electron: ElectronApi): IpcMessageBackend;
5
+ export declare function createElectronIpcSendBackend(ipcRenderer: ElectronIpcRenderer): IpcSendBackend;
6
+ export declare function createElectronIpcTargetedSendBackend<Target extends ElectronIpcTarget = ElectronIpcTarget>(): IpcTargetedSendBackend<Target>;
3
7
  //# sourceMappingURL=electronIpc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"electronIpc.d.ts","sourceRoot":"","sources":["../src/electronIpc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAwB,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AASrG,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,WAAW,GAAG,iBAAiB,CAWxF"}
1
+ {"version":3,"file":"electronIpc.d.ts","sourceRoot":"","sources":["../src/electronIpc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EAEjB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,WAAW,GAAG,gBAAgB,CAatF;AAED,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,mBAAmB,GAAG,gBAAgB,CAMjG;AAED,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,WAAW,GAAG,iBAAiB,CASxF;AAED,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,mBAAmB,GAAG,cAAc,CAM7F;AAED,wBAAgB,oCAAoC,CAClD,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,KACjD,sBAAsB,CAAC,MAAM,CAAC,CAMlC"}
@@ -1,16 +1,31 @@
1
1
  import { createEntity } from '@flighthq/entity/contract';
2
- // The Electron main-process IPC provider. It offers exactly what ipcMain can really do from this side:
3
- // receive messages a renderer sent. The previous backend also declared `send` (a documented no-op) and
4
- // `invoke` (resolving to `undefined`), which made the seam offer two operations no host performed.
5
- //
6
- // The platform supports main→renderer send, targeted send, invoke and handle. Flight has not built them,
7
- // and they are NOT members of this slot: each needs a specific `webContents` target or a request/response
8
- // pair, so each is a distinct capability with its own provider rather than a method hung here.
2
+ // Electron's process sides expose different capability vectors. These constructors keep the slots
3
+ // independent so a renderer host carries send/invoke while a main host carries message/handle/targetedSend.
4
+ export function createElectronIpcHandleBackend(electron) {
5
+ const ipcMain = electron.ipcMain;
6
+ return createEntity({
7
+ handle(channel, handler) {
8
+ ipcMain.handle(channel, (_event, ...args) => handler(...args));
9
+ let active = true;
10
+ return () => {
11
+ if (!active)
12
+ return;
13
+ active = false;
14
+ ipcMain.removeHandler(channel);
15
+ };
16
+ },
17
+ });
18
+ }
19
+ export function createElectronIpcInvokeBackend(ipcRenderer) {
20
+ return createEntity({
21
+ invoke(channel, args) {
22
+ return ipcRenderer.invoke(channel, ...args);
23
+ },
24
+ });
25
+ }
9
26
  export function createElectronIpcMessageBackend(electron) {
10
27
  const ipcMain = electron.ipcMain;
11
28
  return createEntity({
12
- // The per-subscription cleanup owns everything this call acquired — which is why the slot declares
13
- // no provider-level destroy: ipcMain itself is the caller's, not this backend's, to tear down.
14
29
  subscribe(channel, listener) {
15
30
  const handler = (_event, ...args) => listener(args);
16
31
  ipcMain.on(channel, handler);
@@ -18,4 +33,18 @@ export function createElectronIpcMessageBackend(electron) {
18
33
  },
19
34
  });
20
35
  }
36
+ export function createElectronIpcSendBackend(ipcRenderer) {
37
+ return createEntity({
38
+ send(channel, args) {
39
+ ipcRenderer.send(channel, ...args);
40
+ },
41
+ });
42
+ }
43
+ export function createElectronIpcTargetedSendBackend() {
44
+ return createEntity({
45
+ send(target, channel, args) {
46
+ target.send(channel, ...args);
47
+ },
48
+ });
49
+ }
21
50
  //# sourceMappingURL=electronIpc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"electronIpc.js","sourceRoot":"","sources":["../src/electronIpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,uGAAuG;AACvG,uGAAuG;AACvG,mGAAmG;AACnG,EAAE;AACF,yGAAyG;AACzG,0GAA0G;AAC1G,+FAA+F;AAC/F,MAAM,UAAU,+BAA+B,CAAC,QAAqB;IACnE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IACjC,OAAO,YAAY,CAA0C;QAC3D,mGAAmG;QACnG,+FAA+F;QAC/F,SAAS,CAAC,OAAe,EAAE,QAA4C;YACrE,MAAM,OAAO,GAAG,CAAC,MAAe,EAAE,GAAG,IAAe,EAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC9E,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7B,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"electronIpc.js","sourceRoot":"","sources":["../src/electronIpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAazD,kGAAkG;AAClG,4GAA4G;AAE5G,MAAM,UAAU,8BAA8B,CAAC,QAAqB;IAClE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IACjC,OAAO,YAAY,CAAyC;QAC1D,MAAM,CAAC,OAAO,EAAE,OAAO;YACrB,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YAC/D,IAAI,MAAM,GAAG,IAAI,CAAC;YAClB,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,MAAM;oBAAE,OAAO;gBACpB,MAAM,GAAG,KAAK,CAAC;gBACf,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,WAAgC;IAC7E,OAAO,YAAY,CAAyC;QAC1D,MAAM,CAAC,OAAO,EAAE,IAAI;YAClB,OAAO,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAC9C,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,QAAqB;IACnE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IACjC,OAAO,YAAY,CAA0C;QAC3D,SAAS,CAAC,OAAO,EAAE,QAAQ;YACzB,MAAM,OAAO,GAAG,CAAC,MAAe,EAAE,GAAG,IAAe,EAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC9E,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7B,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,WAAgC;IAC3E,OAAO,YAAY,CAAuC;QACxD,IAAI,CAAC,OAAO,EAAE,IAAI;YAChB,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QACrC,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oCAAoC;IAGlD,OAAO,YAAY,CAAuD;QACxE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI;YACxB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAChC,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1,7 +1,3 @@
1
- import type { ElectronApi, MenuApplicationBackend, MenuPopupBackend, MenuSelectBackend } from '@flighthq/types/contract';
2
- export declare function createElectronMenuBackends(electron: ElectronApi): {
3
- application: MenuApplicationBackend;
4
- popup: MenuPopupBackend;
5
- select: MenuSelectBackend;
6
- };
1
+ import type { ElectronApi, ElectronMenuCapabilities } from '@flighthq/types/contract';
2
+ export declare function createElectronMenuBackends(electron: ElectronApi): ElectronMenuCapabilities;
7
3
  //# sourceMappingURL=electronMenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"electronMenu.d.ts","sourceRoot":"","sources":["../src/electronMenu.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAclC,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,WAAW,GAAG;IACjE,WAAW,EAAE,sBAAsB,CAAC;IACpC,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,EAAE,iBAAiB,CAAC;CAC3B,CA2CA"}
1
+ {"version":3,"file":"electronMenu.d.ts","sourceRoot":"","sources":["../src/electronMenu.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,wBAAwB,EAKzB,MAAM,0BAA0B,CAAC;AAclC,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,WAAW,GAAG,wBAAwB,CA2C1F"}
@@ -13,7 +13,7 @@ import { toElectronTemplate } from './electronMenuTemplate';
13
13
  export function createElectronMenuBackends(electron) {
14
14
  let selectListener = null;
15
15
  let destroyed = false;
16
- return {
16
+ return createEntity({
17
17
  application: createEntity({
18
18
  // Provider lifecycle: releases the OS menu this provider installed. It deliberately does NOT end
19
19
  // select subscriptions — those are ended by their own unsubscribe.
@@ -53,6 +53,6 @@ export function createElectronMenuBackends(electron) {
53
53
  };
54
54
  },
55
55
  }),
56
- };
56
+ });
57
57
  }
58
58
  //# sourceMappingURL=electronMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"electronMenu.js","sourceRoot":"","sources":["../src/electronMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAQzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,qGAAqG;AACrG,yGAAyG;AACzG,yGAAyG;AACzG,kFAAkF;AAClF,EAAE;AACF,mGAAmG;AACnG,0GAA0G;AAC1G,kGAAkG;AAClG,qGAAqG;AACrG,4CAA4C;AAC5C,MAAM,UAAU,0BAA0B,CAAC,QAAqB;IAK9D,IAAI,cAAc,GAAkC,IAAI,CAAC;IACzD,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,OAAO;QACL,WAAW,EAAE,YAAY,CAAyB;YAChD,iGAAiG;YACjG,mEAAmE;YACnE,OAAO;gBACL,IAAI,SAAS;oBAAE,OAAO;gBACtB,SAAS,GAAG,IAAI,CAAC;gBACjB,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YACD,kBAAkB,CAAC,KAAK;gBACtB,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAC9B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACzF,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC;QACF,KAAK,EAAE,YAAY,CAAmB;YACpC,iGAAiG;YACjG,gGAAgG;YAChG,+CAA+C;YAC/C,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;gBACf,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,EAAE;oBAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC7F,IAAI,CAAC;wBACH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBACvB,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;SACF,CAAC;QACF,MAAM,EAAE,YAAY,CAAoB;YACtC,SAAS,CAAC,QAAQ;gBAChB,cAAc,GAAG,QAAQ,CAAC;gBAC1B,OAAO,GAAG,EAAE;oBACV,IAAI,cAAc,KAAK,QAAQ;wBAAE,cAAc,GAAG,IAAI,CAAC;gBACzD,CAAC,CAAC;YACJ,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"electronMenu.js","sourceRoot":"","sources":["../src/electronMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAUzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,qGAAqG;AACrG,yGAAyG;AACzG,yGAAyG;AACzG,kFAAkF;AAClF,EAAE;AACF,mGAAmG;AACnG,0GAA0G;AAC1G,kGAAkG;AAClG,qGAAqG;AACrG,4CAA4C;AAC5C,MAAM,UAAU,0BAA0B,CAAC,QAAqB;IAC9D,IAAI,cAAc,GAAkC,IAAI,CAAC;IACzD,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,OAAO,YAAY,CAAC;QAClB,WAAW,EAAE,YAAY,CAA+C;YACtE,iGAAiG;YACjG,mEAAmE;YACnE,OAAO;gBACL,IAAI,SAAS;oBAAE,OAAO;gBACtB,SAAS,GAAG,IAAI,CAAC;gBACjB,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YACD,kBAAkB,CAAC,KAAK;gBACtB,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAC9B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CACzF,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC;QACF,KAAK,EAAE,YAAY,CAAyC;YAC1D,iGAAiG;YACjG,gGAAgG;YAChG,+CAA+C;YAC/C,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;gBACf,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,EAAE;oBAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC7F,IAAI,CAAC;wBACH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBACvB,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;SACF,CAAC;QACF,MAAM,EAAE,YAAY,CAA0C;YAC5D,SAAS,CAAC,QAAQ;gBAChB,cAAc,GAAG,QAAQ,CAAC;gBAC1B,OAAO,GAAG,EAAE;oBACV,IAAI,cAAc,KAAK,QAAQ;wBAAE,cAAc,GAAG,IAAI,CAAC;gBACzD,CAAC,CAAC;YACJ,CAAC;SACF,CAAC;KACH,CAAC,CAAC;AACL,CAAC"}
@@ -1,12 +1,3 @@
1
- import type { ElectronApi, PowerBatteryHealthBackend, PowerChangeBackend, PowerIdleBackend, PowerKeepAwakeBackend, PowerSessionLockBackend, PowerStatusBackend, PowerSuspensionBackend, PowerThermalBackend } from '@flighthq/types/contract';
2
- export declare function createElectronPowerBackends(electron: ElectronApi): {
3
- batteryHealth: PowerBatteryHealthBackend;
4
- change: PowerChangeBackend;
5
- idle: PowerIdleBackend;
6
- keepAwake: PowerKeepAwakeBackend;
7
- sessionLock: PowerSessionLockBackend;
8
- status: PowerStatusBackend;
9
- suspension: PowerSuspensionBackend;
10
- thermal?: PowerThermalBackend;
11
- };
1
+ import type { ElectronApi, ElectronPowerCapabilities } from '@flighthq/types/contract';
2
+ export declare function createElectronPowerBackends(electron: ElectronApi): ElectronPowerCapabilities;
12
3
  //# sourceMappingURL=electronPower.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"electronPower.d.ts","sourceRoot":"","sources":["../src/electronPower.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EAEX,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAGhB,qBAAqB,EAGrB,uBAAuB,EAEvB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EAEpB,MAAM,0BAA0B,CAAC;AAQlC,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,WAAW,GAAG;IAClE,aAAa,EAAE,yBAAyB,CAAC;IACzC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,qBAAqB,CAAC;IACjC,WAAW,EAAE,uBAAuB,CAAC;IACrC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,sBAAsB,CAAC;IACnC,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B,CA0HA"}
1
+ {"version":3,"file":"electronPower.d.ts","sourceRoot":"","sources":["../src/electronPower.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,yBAAyB,EAiB1B,MAAM,0BAA0B,CAAC;AAQlC,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,WAAW,GAAG,yBAAyB,CA0H5F"}
@@ -9,7 +9,7 @@ export function createElectronPowerBackends(electron) {
9
9
  const powerMonitor = electron.powerMonitor;
10
10
  const powerSaveBlocker = electron.powerSaveBlocker;
11
11
  let blockerId = -1;
12
- const backends = {
12
+ const backends = createEntity({
13
13
  // The main process reports no battery detail, so every field stays at the domain's unknown
14
14
  // encoding. The slot exists because Electron IS the host that would carry it once available.
15
15
  batteryHealth: createEntity({
@@ -106,14 +106,14 @@ export function createElectronPowerBackends(electron) {
106
106
  return () => powerMonitor.removeListener('suspend', listener);
107
107
  },
108
108
  }),
109
- };
109
+ });
110
110
  // ★ THE SLOT EXISTS ONLY IF THE STATE IS READABLE. Electron's thermal-state-change event carries no
111
111
  // payload, so an installed API without getCurrentThermalState could only announce that something
112
112
  // unobservable had changed. Where the getter is absent the slot is OMITTED and the gap is real,
113
113
  // rather than shipping a void event whose state is permanently 'Unknown'.
114
114
  if (typeof powerMonitor.getCurrentThermalState !== 'function')
115
115
  return backends;
116
- return {
116
+ return createEntity({
117
117
  ...backends,
118
118
  thermal: createEntity({
119
119
  getThermalState() {
@@ -126,7 +126,7 @@ export function createElectronPowerBackends(electron) {
126
126
  return () => powerMonitor.removeListener('thermal-state-change', onChange);
127
127
  },
128
128
  }),
129
- };
129
+ });
130
130
  }
131
131
  function readThermalState(powerMonitor) {
132
132
  const state = powerMonitor.getCurrentThermalState?.();
@@ -1 +1 @@
1
- {"version":3,"file":"electronPower.js","sourceRoot":"","sources":["../src/electronPower.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"electronPower.js","sourceRoot":"","sources":["../src/electronPower.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAsBzD,sGAAsG;AACtG,uGAAuG;AACvG,6BAA6B;AAC7B,EAAE;AACF,sGAAsG;AACtG,2DAA2D;AAC3D,MAAM,UAAU,2BAA2B,CAAC,QAAqB;IAC/D,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;IAC3C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;IACnD,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;IAEnB,MAAM,QAAQ,GAA+C,YAAY,CAAC;QACxE,2FAA2F;QAC3F,6FAA6F;QAC7F,aAAa,EAAE,YAAY,CAAkD;YAC3E,gBAAgB,CAAC,GAAuB;gBACtC,OAAO,GAAG,CAAC;YACb,CAAC;SACF,CAAC;QACF,MAAM,EAAE,YAAY,CAA2C;YAC7D,SAAS,CAAC,QAAoB;gBAC5B,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;gBACxC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACnC,OAAO,GAAG,EAAE;oBACV,YAAY,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;oBACpD,YAAY,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACjD,CAAC,CAAC;YACJ,CAAC;SACF,CAAC;QACF,IAAI,EAAE,YAAY,CAAyC;YACzD,YAAY,CAAC,gBAAwB;gBACnC,OAAO,WAAW,CAAC,YAAY,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACxE,CAAC;YACD,kBAAkB;gBAChB,OAAO,YAAY,CAAC,iBAAiB,EAAE,CAAC;YAC1C,CAAC;SACF,CAAC;QACF,mGAAmG;QACnG,mDAAmD;QACnD,SAAS,EAAE,YAAY,CAA8C;YACnE,OAAO,CAAC,IAAwB;gBAC9B,IAAI,SAAS,IAAI,CAAC;oBAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7D,IAAI,CAAC;oBACH,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAChC,IAAI,KAAK,sBAAsB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,uBAAuB,CACrF,CAAC;oBACF,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3C,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;YACD,OAAO;gBACL,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;oBACnB,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACjC,SAAS,GAAG,CAAC,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,QAAQ;gBACN,OAAO,SAAS,IAAI,CAAC,CAAC;YACxB,CAAC;YACD,OAAO;gBACL,IAAI,SAAS,GAAG,CAAC;oBAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;gBAClE,IAAI,CAAC;oBACH,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnC,CAAC;gBAAC,MAAM,CAAC;oBACP,0DAA0D;oBAC1D,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC/C,CAAC;gBACD,SAAS,GAAG,CAAC,CAAC,CAAC;gBACf,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,CAAC;SACF,CAAC;QACF,WAAW,EAAE,YAAY,CAAgD;YACvE,aAAa,CAAC,QAAoB;gBAChC,YAAY,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBACzC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YACpE,CAAC;YACD,eAAe,CAAC,QAAoB;gBAClC,YAAY,CAAC,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;gBAC3C,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YACtE,CAAC;SACF,CAAC;QACF,MAAM,EAAE,YAAY,CAA2C;YAC7D,SAAS,CAAC,GAAgB;gBACxB,MAAM,SAAS,GAAG,YAAY,CAAC,cAAc,KAAK,IAAI,CAAC;gBACvD,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;gBACtB,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;gBACtB,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;gBACzB,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;gBACzB,GAAG,CAAC,UAAU,GAAG,CAAC,SAAS,CAAC;gBAC5B,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;gBACvB,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC;gBAC5B,GAAG,CAAC,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;gBAClD,OAAO,GAAG,CAAC;YACb,CAAC;SACF,CAAC;QACF,UAAU,EAAE,YAAY,CAA+C;YACrE,eAAe,CAAC,QAAoB;gBAClC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACpC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC/D,CAAC;YACD,gBAAgB,CAAC,QAAoB;gBACnC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBACrC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAChE,CAAC;SACF,CAAC;KACH,CAAC,CAAC;IAEH,oGAAoG;IACpG,iGAAiG;IACjG,gGAAgG;IAChG,0EAA0E;IAC1E,IAAI,OAAO,YAAY,CAAC,sBAAsB,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAC;IAE/E,OAAO,YAAY,CAAC;QAClB,GAAG,QAAQ;QACX,OAAO,EAAE,YAAY,CAA4C;YAC/D,eAAe;gBACb,OAAO,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACxC,CAAC;YACD,2BAA2B,CAAC,QAA4C;gBACtE,oFAAoF;gBACpF,MAAM,QAAQ,GAAG,GAAS,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;gBACtE,YAAY,CAAC,EAAE,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;gBAClD,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;YAC7E,CAAC;SACF,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,YAAyC;IACjE,MAAM,KAAK,GAAG,YAAY,CAAC,sBAAsB,EAAE,EAAE,CAAC;IACtD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACpC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,KAAK,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAC5C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,KAA+C;IAClE,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACxC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC1D,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,9 +1,9 @@
1
- import type { DesktopOsProfile, ElectronApi, ElectronAppCapabilitiesFor, ElectronBackendOptions, ElectronProtocolCapabilities, ElectronTrayCapabilitiesFor, HasClipboardBookmark, HasClipboardFormats, HasClipboardImage, HasClipboardText, HasDialogDirectoryOpen, HasDialogFileOpen, HasDialogFileSave, HasDialogMessage, HasNotificationAction, HasNotificationClick, HasNotificationClose, HasNotificationDelivery, HasNotificationDismiss, HasNotificationLifecycle, HasNotificationReceived, HasNotificationReply, HasIpcMessage, HasScreenChange, HasScreenQuery, HasShortcutQuery, HasShortcutTrigger, HasUpdaterCommand, HasMenuApplication, HasMenuPopup, HasMenuSelect, HasStorageLocal, HasShellBeep, HasShellExternal, HasShellPathOpen, HasShellPathReveal, HasShellTrash, HasWindowAttach, HasWindowOpen, Host } from '@flighthq/types/contract';
1
+ import type { DesktopOsProfile, ElectronApi, ElectronAppCapabilitiesFor, ElectronBackendOptions, ElectronIpcTarget, ElectronProtocolCapabilities, ElectronTrayCapabilitiesFor, HasClipboardBookmark, HasClipboardFormats, HasClipboardImage, HasClipboardText, HasDialogDirectoryOpen, HasDialogFileOpen, HasDialogFileSave, HasDialogMessage, HasNotificationAction, HasNotificationClick, HasNotificationClose, HasNotificationDelivery, HasNotificationDismiss, HasNotificationLifecycle, HasNotificationReceived, HasNotificationReply, HasIpcHandle, HasIpcMessage, HasIpcTargetedSend, HasScreenChange, HasScreenQuery, HasShortcutQuery, HasShortcutTrigger, HasUpdaterCommand, HasMenuApplication, HasMenuPopup, HasMenuSelect, HasStorageLocal, HasShellBeep, HasShellExternal, HasShellPathOpen, HasShellPathReveal, HasShellTrash, HasWindowAttach, HasWindowOpen, Host } from '@flighthq/types/contract';
2
2
  type ElectronHost<Profile extends DesktopOsProfile> = Host & {
3
3
  readonly app: ElectronAppCapabilitiesFor<Profile>;
4
4
  readonly protocol: ElectronProtocolCapabilities;
5
5
  readonly tray: ElectronTrayCapabilitiesFor<Profile>;
6
- } & HasClipboardBookmark & HasClipboardFormats & HasClipboardImage & HasClipboardText & HasDialogDirectoryOpen & HasDialogFileOpen & HasDialogFileSave & HasDialogMessage & HasNotificationClick & HasNotificationClose & HasNotificationDelivery & HasNotificationDismiss & HasNotificationLifecycle & HasNotificationReceived & HasMenuApplication & HasMenuPopup & HasIpcMessage & HasMenuSelect & HasScreenChange & HasScreenQuery & HasShortcutQuery & HasShortcutTrigger & HasStorageLocal & HasUpdaterCommand & HasShellBeep & HasShellExternal & HasShellPathOpen & HasShellPathReveal & HasShellTrash & HasWindowAttach & HasWindowOpen;
6
+ } & HasClipboardBookmark & HasClipboardFormats & HasClipboardImage & HasClipboardText & HasDialogDirectoryOpen & HasDialogFileOpen & HasDialogFileSave & HasDialogMessage & HasNotificationClick & HasNotificationClose & HasNotificationDelivery & HasNotificationDismiss & HasNotificationLifecycle & HasNotificationReceived & HasMenuApplication & HasMenuPopup & HasIpcHandle & HasIpcMessage & HasIpcTargetedSend<ElectronIpcTarget> & HasMenuSelect & HasScreenChange & HasScreenQuery & HasShortcutQuery & HasShortcutTrigger & HasStorageLocal & HasUpdaterCommand & HasShellBeep & HasShellExternal & HasShellPathOpen & HasShellPathReveal & HasShellTrash & HasWindowAttach & HasWindowOpen;
7
7
  type ElectronMacosHost = ElectronHost<'macos'> & HasNotificationAction & HasNotificationReply;
8
8
  export declare function registerElectronBackends(electron: ElectronApi, options: Readonly<ElectronBackendOptions> & {
9
9
  readonly platform: 'macos';
@@ -1 +1 @@
1
- {"version":3,"file":"electronRegister.d.ts","sourceRoot":"","sources":["../src/electronRegister.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,0BAA0B,EAC1B,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,EAE3B,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,aAAa,EACb,IAAI,EACL,MAAM,0BAA0B,CAAC;AAwBlC,KAAK,YAAY,CAAC,OAAO,SAAS,gBAAgB,IAAI,IAAI,GAAG;IAC3D,QAAQ,CAAC,GAAG,EAAE,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,4BAA4B,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC,OAAO,CAAC,CAAC;CACrD,GAAG,oBAAoB,GACtB,mBAAmB,GACnB,iBAAiB,GACjB,gBAAgB,GAChB,sBAAsB,GACtB,iBAAiB,GACjB,iBAAiB,GACjB,gBAAgB,GAChB,oBAAoB,GACpB,oBAAoB,GACpB,uBAAuB,GACvB,sBAAsB,GACtB,wBAAwB,GACxB,uBAAuB,GACvB,kBAAkB,GAClB,YAAY,GACZ,aAAa,GACb,aAAa,GACb,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,eAAe,GACf,iBAAiB,GACjB,YAAY,GACZ,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,aAAa,GACb,eAAe,GACf,aAAa,CAAC;AAEhB,KAAK,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;AAa9F,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GACzE,iBAAiB,CAAC;AACrB,wBAAgB,wBAAwB,CAAC,OAAO,SAAS,OAAO,GAAG,SAAS,EAC1E,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GACzE,YAAY,CAAC,OAAO,CAAC,CAAC;AACzB,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG;IAC1C,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;CACrC,GACA,YAAY,CAAC,gBAAgB,CAAC,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"electronRegister.d.ts","sourceRoot":"","sources":["../src/electronRegister.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,0BAA0B,EAC1B,sBAAsB,EACtB,iBAAiB,EACjB,4BAA4B,EAC5B,2BAA2B,EAE3B,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,aAAa,EACb,IAAI,EACL,MAAM,0BAA0B,CAAC;AA4BlC,KAAK,YAAY,CAAC,OAAO,SAAS,gBAAgB,IAAI,IAAI,GAAG;IAC3D,QAAQ,CAAC,GAAG,EAAE,0BAA0B,CAAC,OAAO,CAAC,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,4BAA4B,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAC,OAAO,CAAC,CAAC;CACrD,GAAG,oBAAoB,GACtB,mBAAmB,GACnB,iBAAiB,GACjB,gBAAgB,GAChB,sBAAsB,GACtB,iBAAiB,GACjB,iBAAiB,GACjB,gBAAgB,GAChB,oBAAoB,GACpB,oBAAoB,GACpB,uBAAuB,GACvB,sBAAsB,GACtB,wBAAwB,GACxB,uBAAuB,GACvB,kBAAkB,GAClB,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,kBAAkB,CAAC,iBAAiB,CAAC,GACrC,aAAa,GACb,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,eAAe,GACf,iBAAiB,GACjB,YAAY,GACZ,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,aAAa,GACb,eAAe,GACf,aAAa,CAAC;AAEhB,KAAK,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;AAa9F,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GACzE,iBAAiB,CAAC;AACrB,wBAAgB,wBAAwB,CAAC,OAAO,SAAS,OAAO,GAAG,SAAS,EAC1E,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GACzE,YAAY,CAAC,OAAO,CAAC,CAAC;AACzB,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG;IAC1C,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;CACrC,GACA,YAAY,CAAC,gBAAgB,CAAC,GAAG,iBAAiB,CAAC"}
@@ -2,7 +2,7 @@ import { createEntity } from '@flighthq/entity/contract';
2
2
  import { createElectronAppCapabilities } from './electronApp';
3
3
  import { createElectronClipboardBackend } from './electronClipboard';
4
4
  import { createElectronDirectoryOpenDialogBackend, createElectronFileOpenDialogBackend, createElectronFileSaveDialogBackend, createElectronMessageDialogBackend, } from './electronDialog';
5
- import { createElectronIpcMessageBackend } from './electronIpc';
5
+ import { createElectronIpcHandleBackend, createElectronIpcMessageBackend, createElectronIpcTargetedSendBackend, } from './electronIpc';
6
6
  import { createElectronMenuBackends } from './electronMenu';
7
7
  import { createElectronNotificationCapabilities } from './electronNotification';
8
8
  import { createElectronPlatformBackend } from './electronPlatform';
@@ -26,7 +26,11 @@ export function registerElectronBackends(electron, options) {
26
26
  };
27
27
  const notification = createElectronNotificationCapabilities(electron, options);
28
28
  const screen = createElectronScreenCapabilities(electron);
29
- const ipc = { message: createElectronIpcMessageBackend(electron) };
29
+ const ipc = {
30
+ handle: createElectronIpcHandleBackend(electron),
31
+ message: createElectronIpcMessageBackend(electron),
32
+ targetedSend: createElectronIpcTargetedSendBackend(),
33
+ };
30
34
  const query = createElectronShortcutQueryBackend(electron);
31
35
  const trigger = createElectronShortcutTriggerBackend(electron);
32
36
  const menu = createElectronMenuBackends(electron);
@@ -1 +1 @@
1
- {"version":3,"file":"electronRegister.js","sourceRoot":"","sources":["../src/electronRegister.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"electronRegister.js","sourceRoot":"","sources":["../src/electronRegister.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flighthq/host-electron",
3
- "version": "0.5.1-edge.685.f72fc7f",
3
+ "version": "0.5.1-edge.730.f29a5aa",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,25 +38,25 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/entity": "0.5.1-edge.685.f72fc7f",
42
- "@flighthq/app": "0.5.1-edge.685.f72fc7f",
43
- "@flighthq/application": "0.5.1-edge.685.f72fc7f",
44
- "@flighthq/clipboard": "0.5.1-edge.685.f72fc7f",
45
- "@flighthq/dialog": "0.5.1-edge.685.f72fc7f",
46
- "@flighthq/ipc": "0.5.1-edge.685.f72fc7f",
47
- "@flighthq/menu": "0.5.1-edge.685.f72fc7f",
48
- "@flighthq/notification": "0.5.1-edge.685.f72fc7f",
49
- "@flighthq/platform": "0.5.1-edge.685.f72fc7f",
50
- "@flighthq/power": "0.5.1-edge.685.f72fc7f",
51
- "@flighthq/protocol": "0.5.1-edge.685.f72fc7f",
52
- "@flighthq/shell": "0.5.1-edge.685.f72fc7f",
53
- "@flighthq/screen": "0.5.1-edge.685.f72fc7f",
54
- "@flighthq/shortcut": "0.5.1-edge.685.f72fc7f",
55
- "@flighthq/signals": "0.5.1-edge.685.f72fc7f",
56
- "@flighthq/storage": "0.5.1-edge.685.f72fc7f",
57
- "@flighthq/tray": "0.5.1-edge.685.f72fc7f",
58
- "@flighthq/types": "0.5.1-edge.685.f72fc7f",
59
- "@flighthq/updater": "0.5.1-edge.685.f72fc7f"
41
+ "@flighthq/entity": "0.5.1-edge.730.f29a5aa",
42
+ "@flighthq/app": "0.5.1-edge.730.f29a5aa",
43
+ "@flighthq/application": "0.5.1-edge.730.f29a5aa",
44
+ "@flighthq/clipboard": "0.5.1-edge.730.f29a5aa",
45
+ "@flighthq/dialog": "0.5.1-edge.730.f29a5aa",
46
+ "@flighthq/ipc": "0.5.1-edge.730.f29a5aa",
47
+ "@flighthq/menu": "0.5.1-edge.730.f29a5aa",
48
+ "@flighthq/notification": "0.5.1-edge.730.f29a5aa",
49
+ "@flighthq/platform": "0.5.1-edge.730.f29a5aa",
50
+ "@flighthq/power": "0.5.1-edge.730.f29a5aa",
51
+ "@flighthq/protocol": "0.5.1-edge.730.f29a5aa",
52
+ "@flighthq/shell": "0.5.1-edge.730.f29a5aa",
53
+ "@flighthq/screen": "0.5.1-edge.730.f29a5aa",
54
+ "@flighthq/shortcut": "0.5.1-edge.730.f29a5aa",
55
+ "@flighthq/signals": "0.5.1-edge.730.f29a5aa",
56
+ "@flighthq/storage": "0.5.1-edge.730.f29a5aa",
57
+ "@flighthq/tray": "0.5.1-edge.730.f29a5aa",
58
+ "@flighthq/types": "0.5.1-edge.730.f29a5aa",
59
+ "@flighthq/updater": "0.5.1-edge.730.f29a5aa"
60
60
  },
61
61
  "devDependencies": {
62
62
  "typescript": "^5.3.0"
@@ -1,27 +1,97 @@
1
- import type { ElectronApi, Entity } from '@flighthq/types/contract';
1
+ import type { ElectronApi, ElectronIpcRenderer, ElectronIpcTarget, Entity } from '@flighthq/types/contract';
2
2
  import { EntityRuntimeKey } from '@flighthq/types/contract';
3
3
 
4
- import { createElectronIpcMessageBackend } from './electronIpc';
4
+ import {
5
+ createElectronIpcHandleBackend,
6
+ createElectronIpcInvokeBackend,
7
+ createElectronIpcMessageBackend,
8
+ createElectronIpcSendBackend,
9
+ createElectronIpcTargetedSendBackend,
10
+ } from './electronIpc';
5
11
 
6
12
  function fakeElectron(): {
7
- electron: ElectronApi;
8
13
  channels: Map<string, Set<(event: unknown, ...args: unknown[]) => void>>;
14
+ electron: ElectronApi;
15
+ handlers: Map<string, (event: unknown, ...args: unknown[]) => unknown>;
9
16
  } {
10
17
  const channels = new Map<string, Set<(event: unknown, ...args: unknown[]) => void>>();
18
+ const handlers = new Map<string, (event: unknown, ...args: unknown[]) => unknown>();
11
19
  const electron = {
12
20
  ipcMain: {
21
+ handle: (channel: string, listener: (event: unknown, ...args: unknown[]) => unknown) => {
22
+ handlers.set(channel, listener);
23
+ },
13
24
  on: (channel: string, listener: (event: unknown, ...args: unknown[]) => void) => {
14
25
  if (!channels.has(channel)) channels.set(channel, new Set());
15
26
  channels.get(channel)?.add(listener);
16
27
  },
28
+ removeHandler: (channel: string) => {
29
+ handlers.delete(channel);
30
+ },
17
31
  removeListener: (channel: string, listener: (event: unknown, ...args: unknown[]) => void) => {
18
32
  channels.get(channel)?.delete(listener);
19
33
  },
20
34
  },
21
35
  } as unknown as ElectronApi;
22
- return { electron, channels };
36
+ return { channels, electron, handlers };
23
37
  }
24
38
 
39
+ function fakeRenderer(): {
40
+ invocations: Array<{ readonly args: readonly unknown[]; readonly channel: string }>;
41
+ renderer: ElectronIpcRenderer;
42
+ sent: Array<{ readonly args: readonly unknown[]; readonly channel: string }>;
43
+ } {
44
+ const invocations: Array<{ readonly args: readonly unknown[]; readonly channel: string }> = [];
45
+ const sent: Array<{ readonly args: readonly unknown[]; readonly channel: string }> = [];
46
+ return {
47
+ invocations,
48
+ renderer: {
49
+ invoke(channel, ...args) {
50
+ invocations.push({ args, channel });
51
+ return Promise.resolve({ args, channel });
52
+ },
53
+ send(channel, ...args) {
54
+ sent.push({ args, channel });
55
+ },
56
+ },
57
+ sent,
58
+ };
59
+ }
60
+
61
+ describe('createElectronIpcHandleBackend', () => {
62
+ it('registers a main-process handler, drops the event, and releases it idempotently', async () => {
63
+ const { electron, handlers } = fakeElectron();
64
+ const backend = createElectronIpcHandleBackend(electron);
65
+ const stop = backend.handle('double', (value) => (value as number) * 2);
66
+
67
+ expect(await handlers.get('double')?.({ sender: 1 }, 4)).toBe(8);
68
+
69
+ stop();
70
+ stop();
71
+ expect(handlers.has('double')).toBe(false);
72
+ });
73
+
74
+ it('returns an Entity', () => {
75
+ const backend: Entity = createElectronIpcHandleBackend(fakeElectron().electron);
76
+ expect(EntityRuntimeKey in backend).toBe(true);
77
+ });
78
+ });
79
+
80
+ describe('createElectronIpcInvokeBackend', () => {
81
+ it('invokes from the renderer with spread arguments and returns the response', async () => {
82
+ const { invocations, renderer } = fakeRenderer();
83
+ const backend = createElectronIpcInvokeBackend(renderer);
84
+
85
+ await expect(backend.invoke('compute', [1, 2])).resolves.toEqual({ args: [1, 2], channel: 'compute' });
86
+ expect(invocations).toEqual([{ args: [1, 2], channel: 'compute' }]);
87
+ });
88
+
89
+ it('returns an Entity', () => {
90
+ const backend: Entity = createElectronIpcInvokeBackend(fakeRenderer().renderer);
91
+ expect(EntityRuntimeKey in backend).toBe(true);
92
+ });
93
+ });
94
+
25
95
  describe('createElectronIpcMessageBackend', () => {
26
96
  it('returns an Entity in both runtime and type', () => {
27
97
  const backend: Entity = createElectronIpcMessageBackend(fakeElectron().electron);
@@ -49,13 +119,9 @@ describe('createElectronIpcMessageBackend', () => {
49
119
  expect(channels.get('ping')?.size).toBe(1);
50
120
  });
51
121
 
52
- // ★ The deleted operations must not come back as members. Electron genuinely supports main-to-renderer
53
- // send, targeted send, invoke and handle — but none is built, and declaring them here would offer
54
- // operations no provider performs, which is what the old backend did with a no-op send and an
55
- // undefined-resolving invoke.
56
- it('exposes subscribe alone, with no unbuilt operations', () => {
122
+ it('remains independent from the other IPC capabilities', () => {
57
123
  const backend = createElectronIpcMessageBackend(fakeElectron().electron);
58
- expect(Object.keys(backend).filter((k) => k !== 'constructor')).toEqual(['subscribe']);
124
+ expect(Object.keys(backend).filter((key) => key !== 'constructor')).toEqual(['subscribe']);
59
125
  expect('send' in backend).toBe(false);
60
126
  expect('invoke' in backend).toBe(false);
61
127
  expect('handle' in backend).toBe(false);
@@ -63,3 +129,41 @@ describe('createElectronIpcMessageBackend', () => {
63
129
  expect('destroy' in backend).toBe(false);
64
130
  });
65
131
  });
132
+
133
+ describe('createElectronIpcSendBackend', () => {
134
+ it('sends from the renderer with spread arguments', () => {
135
+ const { renderer, sent } = fakeRenderer();
136
+ const backend = createElectronIpcSendBackend(renderer);
137
+
138
+ backend.send('log', ['hello', 7]);
139
+
140
+ expect(sent).toEqual([{ args: ['hello', 7], channel: 'log' }]);
141
+ });
142
+
143
+ it('returns an Entity', () => {
144
+ const backend: Entity = createElectronIpcSendBackend(fakeRenderer().renderer);
145
+ expect(EntityRuntimeKey in backend).toBe(true);
146
+ });
147
+ });
148
+
149
+ describe('createElectronIpcTargetedSendBackend', () => {
150
+ it('keeps the target generic and delegates to its Electron send seam', () => {
151
+ const sent: Array<{ readonly args: readonly unknown[]; readonly channel: string }> = [];
152
+ const target: ElectronIpcTarget & { readonly label: string } = {
153
+ label: 'preview',
154
+ send(channel, ...args) {
155
+ sent.push({ args, channel });
156
+ },
157
+ };
158
+ const backend = createElectronIpcTargetedSendBackend<typeof target>();
159
+
160
+ backend.send(target, 'refresh', [1, 2]);
161
+
162
+ expect(sent).toEqual([{ args: [1, 2], channel: 'refresh' }]);
163
+ });
164
+
165
+ it('returns an Entity', () => {
166
+ const backend: Entity = createElectronIpcTargetedSendBackend<ElectronIpcTarget>();
167
+ expect(EntityRuntimeKey in backend).toBe(true);
168
+ });
169
+ });
@@ -1,5 +1,6 @@
1
1
  import type { MenuApplicationBackend, MenuPopupBackend, MenuSelectBackend } from '@flighthq/types/contract';
2
2
  import type { ElectronApi, ElectronMenu, ElectronMenuItemOptions } from '@flighthq/types/contract';
3
+ import { EntityRuntimeKey } from '@flighthq/types/contract';
3
4
 
4
5
  import { createElectronMenuBackends } from './electronMenu';
5
6
 
@@ -48,6 +49,12 @@ function clickItem(built: ElectronMenuItemOptions[][], id: string): void {
48
49
  }
49
50
 
50
51
  describe('createElectronMenuBackends', () => {
52
+ it('returns an Entity-composed capability bundle and providers', () => {
53
+ const capabilities = createElectronMenuBackends(fakeElectron().electron);
54
+ expect(EntityRuntimeKey in capabilities).toBe(true);
55
+ for (const provider of Object.values(capabilities)) expect(EntityRuntimeKey in provider).toBe(true);
56
+ });
57
+
51
58
  it('builds and applies the application menu and reports clicks via subscribeSelect', () => {
52
59
  const { electron, built, applied } = fakeElectron();
53
60
  const backend = _slots(electron);
@@ -57,8 +57,8 @@ function fakeElectron(options: { onBatteryPower?: boolean; startId?: number; the
57
57
  describe('createElectronPowerBackends', () => {
58
58
  it('returns Entity-composed slots', () => {
59
59
  const slots = createElectronPowerBackends(fakeElectron({}).electron);
60
- expect(EntityRuntimeKey in slots.status).toBe(true);
61
- expect(EntityRuntimeKey in slots.keepAwake).toBe(true);
60
+ expect(EntityRuntimeKey in slots).toBe(true);
61
+ for (const provider of Object.values(slots)) expect(EntityRuntimeKey in provider).toBe(true);
62
62
  });
63
63
 
64
64
  it('getStatus reports no battery level and infers charging from AC power', () => {
@@ -60,6 +60,9 @@ describe('registerElectronBackends', () => {
60
60
  expect(host.dialog.message.confirm).toBeTypeOf('function');
61
61
  expect(host.notification.delivery.notify).toBeTypeOf('function');
62
62
  expect(host.notification.close.closeAllNotifications).toBeTypeOf('function');
63
+ expect(host.ipc.handle.handle).toBeTypeOf('function');
64
+ expect(host.ipc.message.subscribe).toBeTypeOf('function');
65
+ expect(host.ipc.targetedSend.send).toBeTypeOf('function');
63
66
  expect(EntityRuntimeKey in host.shortcut.query).toBe(true);
64
67
  expect(EntityRuntimeKey in host.shortcut.trigger).toBe(true);
65
68
  expect(EntityRuntimeKey in host.updater.command).toBe(true);