@flighthq/host-electron 0.1.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.
Files changed (94) hide show
  1. package/dist/electronApp.d.ts +4 -0
  2. package/dist/electronApp.d.ts.map +1 -0
  3. package/dist/electronApp.js +184 -0
  4. package/dist/electronApp.js.map +1 -0
  5. package/dist/electronClipboard.d.ts +4 -0
  6. package/dist/electronClipboard.d.ts.map +1 -0
  7. package/dist/electronClipboard.js +211 -0
  8. package/dist/electronClipboard.js.map +1 -0
  9. package/dist/electronDialog.d.ts +4 -0
  10. package/dist/electronDialog.d.ts.map +1 -0
  11. package/dist/electronDialog.js +85 -0
  12. package/dist/electronDialog.js.map +1 -0
  13. package/dist/electronIpc.d.ts +4 -0
  14. package/dist/electronIpc.d.ts.map +1 -0
  15. package/dist/electronIpc.js +21 -0
  16. package/dist/electronIpc.js.map +1 -0
  17. package/dist/electronMenu.d.ts +4 -0
  18. package/dist/electronMenu.d.ts.map +1 -0
  19. package/dist/electronMenu.js +59 -0
  20. package/dist/electronMenu.js.map +1 -0
  21. package/dist/electronModule.d.ts +368 -0
  22. package/dist/electronModule.d.ts.map +1 -0
  23. package/dist/electronModule.js +12 -0
  24. package/dist/electronModule.js.map +1 -0
  25. package/dist/electronNotification.d.ts +4 -0
  26. package/dist/electronNotification.d.ts.map +1 -0
  27. package/dist/electronNotification.js +134 -0
  28. package/dist/electronNotification.js.map +1 -0
  29. package/dist/electronPlatform.d.ts +4 -0
  30. package/dist/electronPlatform.d.ts.map +1 -0
  31. package/dist/electronPlatform.js +30 -0
  32. package/dist/electronPlatform.js.map +1 -0
  33. package/dist/electronPower.d.ts +4 -0
  34. package/dist/electronPower.d.ts.map +1 -0
  35. package/dist/electronPower.js +92 -0
  36. package/dist/electronPower.js.map +1 -0
  37. package/dist/electronProtocol.d.ts +4 -0
  38. package/dist/electronProtocol.d.ts.map +1 -0
  39. package/dist/electronProtocol.js +55 -0
  40. package/dist/electronProtocol.js.map +1 -0
  41. package/dist/electronRegister.d.ts +6 -0
  42. package/dist/electronRegister.d.ts.map +1 -0
  43. package/dist/electronRegister.js +62 -0
  44. package/dist/electronRegister.js.map +1 -0
  45. package/dist/electronScreen.d.ts +4 -0
  46. package/dist/electronScreen.d.ts.map +1 -0
  47. package/dist/electronScreen.js +68 -0
  48. package/dist/electronScreen.js.map +1 -0
  49. package/dist/electronShell.d.ts +4 -0
  50. package/dist/electronShell.d.ts.map +1 -0
  51. package/dist/electronShell.js +105 -0
  52. package/dist/electronShell.js.map +1 -0
  53. package/dist/electronShortcut.d.ts +4 -0
  54. package/dist/electronShortcut.d.ts.map +1 -0
  55. package/dist/electronShortcut.js +40 -0
  56. package/dist/electronShortcut.js.map +1 -0
  57. package/dist/electronStorage.d.ts +4 -0
  58. package/dist/electronStorage.d.ts.map +1 -0
  59. package/dist/electronStorage.js +75 -0
  60. package/dist/electronStorage.js.map +1 -0
  61. package/dist/electronTray.d.ts +4 -0
  62. package/dist/electronTray.d.ts.map +1 -0
  63. package/dist/electronTray.js +164 -0
  64. package/dist/electronTray.js.map +1 -0
  65. package/dist/electronUpdater.d.ts +4 -0
  66. package/dist/electronUpdater.d.ts.map +1 -0
  67. package/dist/electronUpdater.js +113 -0
  68. package/dist/electronUpdater.js.map +1 -0
  69. package/dist/electronWindow.d.ts +7 -0
  70. package/dist/electronWindow.d.ts.map +1 -0
  71. package/dist/electronWindow.js +417 -0
  72. package/dist/electronWindow.js.map +1 -0
  73. package/dist/index.d.ts +19 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/index.js +19 -0
  76. package/dist/index.js.map +1 -0
  77. package/package.json +54 -0
  78. package/src/electronApp.test.ts +141 -0
  79. package/src/electronClipboard.test.ts +86 -0
  80. package/src/electronDialog.test.ts +95 -0
  81. package/src/electronIpc.test.ts +47 -0
  82. package/src/electronMenu.test.ts +85 -0
  83. package/src/electronNotification.test.ts +97 -0
  84. package/src/electronPlatform.test.ts +28 -0
  85. package/src/electronPower.test.ts +110 -0
  86. package/src/electronProtocol.test.ts +63 -0
  87. package/src/electronRegister.test.ts +57 -0
  88. package/src/electronScreen.test.ts +92 -0
  89. package/src/electronShell.test.ts +67 -0
  90. package/src/electronShortcut.test.ts +56 -0
  91. package/src/electronStorage.test.ts +70 -0
  92. package/src/electronTray.test.ts +107 -0
  93. package/src/electronUpdater.test.ts +117 -0
  94. package/src/electronWindow.test.ts +217 -0
@@ -0,0 +1,164 @@
1
+ // Maps Flight's TrayBackend onto Electron's Tray module. Flight identifies trays by an opaque numeric
2
+ // id; the seam keeps an id→record map (the ElectronTray plus the title/tooltip/menu it cannot read
3
+ // back) and a single event listener. Every tray, on creation, attaches click handlers that forward a
4
+ // TrayEventData to whatever listener subscribe has installed, so trays created after subscribe still
5
+ // report events. Electron's icon is required, so a missing icon becomes ''.
6
+ export function createElectronTrayBackend(electron) {
7
+ const trays = new Map();
8
+ let nextId = 0;
9
+ // The single tray event listener, owned by this backend and set via subscribe.
10
+ let eventListener = null;
11
+ const emit = (id, type) => {
12
+ const record = trays.get(id);
13
+ eventListener?.({
14
+ altKey: false,
15
+ bounds: record ? toBounds(record.tray) : null,
16
+ ctrlKey: false,
17
+ dropFiles: null,
18
+ dropText: null,
19
+ id,
20
+ metaKey: false,
21
+ position: null,
22
+ shiftKey: false,
23
+ type,
24
+ });
25
+ };
26
+ return {
27
+ create(options) {
28
+ const id = nextId++;
29
+ const tray = new electron.Tray(options.icon ?? '');
30
+ const record = { tray, title: '', tooltip: '', menu: null };
31
+ if (options.tooltip !== undefined) {
32
+ tray.setToolTip(options.tooltip);
33
+ record.tooltip = options.tooltip;
34
+ }
35
+ if (options.title !== undefined) {
36
+ tray.setTitle(options.title);
37
+ record.title = options.title;
38
+ }
39
+ // Attach handlers now so trays created after subscribe still deliver events.
40
+ tray.on('click', () => emit(id, 'click'));
41
+ tray.on('right-click', () => emit(id, 'rightClick'));
42
+ tray.on('double-click', () => emit(id, 'doubleClick'));
43
+ trays.set(id, record);
44
+ return id;
45
+ },
46
+ destroy(id) {
47
+ const record = trays.get(id);
48
+ if (!record)
49
+ return;
50
+ record.tray.destroy();
51
+ trays.delete(id);
52
+ },
53
+ displayBalloon(id, options) {
54
+ trays.get(id)?.tray.displayBalloon({
55
+ icon: options.icon,
56
+ iconType: options.iconType,
57
+ title: options.title,
58
+ content: options.text,
59
+ largeIcon: options.largeIcon,
60
+ noSound: options.noSound,
61
+ respectQuietTime: options.respectQuietTime,
62
+ });
63
+ },
64
+ removeBalloon(id) {
65
+ trays.get(id)?.tray.removeBalloon();
66
+ },
67
+ getBounds(id) {
68
+ const record = trays.get(id);
69
+ return record ? toBounds(record.tray) : null;
70
+ },
71
+ getCapabilities() {
72
+ return { balloon: true, bounds: true, clickEvents: true, dropFiles: false, pressedIcon: true, title: true };
73
+ },
74
+ getTitle(id) {
75
+ return trays.get(id)?.title ?? '';
76
+ },
77
+ getTooltip(id) {
78
+ return trays.get(id)?.tooltip ?? '';
79
+ },
80
+ isDestroyed(id) {
81
+ const record = trays.get(id);
82
+ return record ? record.tray.isDestroyed() : true;
83
+ },
84
+ listIds() {
85
+ return [...trays.keys()];
86
+ },
87
+ popUpContextMenu(id, position) {
88
+ const record = trays.get(id);
89
+ if (!record)
90
+ return;
91
+ record.tray.popUpContextMenu(record.menu ?? undefined, position ? { x: position.x, y: position.y } : undefined);
92
+ },
93
+ setContextMenu(id, items) {
94
+ const record = trays.get(id);
95
+ if (!record)
96
+ return;
97
+ const menu = electron.Menu.buildFromTemplate(toElectronTemplate(items));
98
+ record.menu = menu;
99
+ record.tray.setContextMenu(menu);
100
+ },
101
+ setIcon(id, icon) {
102
+ trays.get(id)?.tray.setImage(icon);
103
+ },
104
+ setIgnoreDoubleClickEvents(id, ignore) {
105
+ trays.get(id)?.tray.setIgnoreDoubleClickEvents(ignore);
106
+ },
107
+ setPressedIcon(id, icon) {
108
+ trays.get(id)?.tray.setPressedImage(icon);
109
+ },
110
+ setTemplate() {
111
+ // Electron sets template-ness on the nativeImage, not the tray; this seam takes string icons, so
112
+ // template marking is a no-op here (use iconTemplate at create time on a real nativeImage host).
113
+ },
114
+ setTitle(id, title) {
115
+ const record = trays.get(id);
116
+ if (!record)
117
+ return;
118
+ record.tray.setTitle(title);
119
+ record.title = title;
120
+ },
121
+ setTooltip(id, tooltip) {
122
+ const record = trays.get(id);
123
+ if (!record)
124
+ return;
125
+ record.tray.setToolTip(tooltip);
126
+ record.tooltip = tooltip;
127
+ },
128
+ subscribe(listener) {
129
+ eventListener = listener;
130
+ return () => {
131
+ if (eventListener === listener)
132
+ eventListener = null;
133
+ };
134
+ },
135
+ };
136
+ }
137
+ function toBounds(tray) {
138
+ try {
139
+ const bounds = tray.getBounds();
140
+ return { x: bounds.x, y: bounds.y, width: bounds.width, height: bounds.height };
141
+ }
142
+ catch {
143
+ return null;
144
+ }
145
+ }
146
+ // Recursively maps Flight menu templates to Electron menu options for a tray context menu. Tray menus
147
+ // carry no select callback in this seam — selection is reported through the menu backend's listener.
148
+ function toElectronTemplate(items) {
149
+ return items.map((item) => {
150
+ const options = {
151
+ id: item.id,
152
+ label: item.label,
153
+ type: item.type,
154
+ role: item.role,
155
+ accelerator: item.accelerator,
156
+ enabled: item.enabled,
157
+ checked: item.checked,
158
+ };
159
+ if (item.submenu)
160
+ options.submenu = toElectronTemplate(item.submenu);
161
+ return options;
162
+ });
163
+ }
164
+ //# sourceMappingURL=electronTray.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electronTray.js","sourceRoot":"","sources":["../src/electronTray.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { UpdaterBackend } from '@flighthq/types';
2
+ import type { ElectronApi } from './electronModule';
3
+ export declare function createElectronUpdaterBackend(electron: ElectronApi): UpdaterBackend;
4
+ //# sourceMappingURL=electronUpdater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electronUpdater.d.ts","sourceRoot":"","sources":["../src/electronUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,cAAc,EAA+B,MAAM,iBAAiB,CAAC;AAE/F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAOpD,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,WAAW,GAAG,cAAc,CA0FlF"}
@@ -0,0 +1,113 @@
1
+ // Maps Flight's UpdaterBackend onto Electron's built-in autoUpdater (Squirrel). The built-in updater
2
+ // auto-downloads on check and emits no progress event, so downloadUpdate folds into checkForUpdates
3
+ // and subscribeDownloadProgress is inert. Channels, config, signature verification, cancel, rollback,
4
+ // staging, and verification are electron-updater concepts the built-in updater lacks — they are honest
5
+ // no-ops / inert subscriptions here. electron-updater would expose the richer surface.
6
+ export function createElectronUpdaterBackend(electron) {
7
+ const autoUpdater = electron.autoUpdater;
8
+ let channel = '';
9
+ let config = { allowPrerelease: false, autoDownload: true, autoInstallOnAppQuit: true };
10
+ return {
11
+ setFeedUrl(url) {
12
+ autoUpdater.setFeedUrl({ url });
13
+ },
14
+ checkForUpdates() {
15
+ autoUpdater.checkForUpdates();
16
+ },
17
+ downloadUpdate() {
18
+ // The built-in autoUpdater downloads automatically once a check finds an update.
19
+ autoUpdater.checkForUpdates();
20
+ },
21
+ cancelDownload() {
22
+ // The built-in autoUpdater has no cancelable download; no-op.
23
+ },
24
+ quitAndInstall() {
25
+ autoUpdater.quitAndInstall();
26
+ },
27
+ rollback() {
28
+ // The built-in autoUpdater cannot roll back an installed update; no-op.
29
+ },
30
+ getChannel() {
31
+ return channel;
32
+ },
33
+ setChannel(next) {
34
+ // Tracked for getChannel; the built-in autoUpdater has no channel switch of its own.
35
+ channel = next;
36
+ },
37
+ getConfig() {
38
+ return config;
39
+ },
40
+ setConfig(next) {
41
+ // Tracked for getConfig; the built-in autoUpdater always auto-downloads regardless.
42
+ config = next;
43
+ },
44
+ setSignatureConfig() {
45
+ // The built-in autoUpdater verifies via the OS code-signing chain, not a Flight signature config; no-op.
46
+ },
47
+ subscribeChecking(listener) {
48
+ autoUpdater.on('checking-for-update', listener);
49
+ return () => autoUpdater.removeListener('checking-for-update', listener);
50
+ },
51
+ subscribeUpdateAvailable(listener) {
52
+ const handler = (...args) => listener(toUpdateInfo(args));
53
+ autoUpdater.on('update-available', handler);
54
+ return () => autoUpdater.removeListener('update-available', handler);
55
+ },
56
+ subscribeUpdateNotAvailable(listener) {
57
+ autoUpdater.on('update-not-available', listener);
58
+ return () => autoUpdater.removeListener('update-not-available', listener);
59
+ },
60
+ subscribeDownloadProgress() {
61
+ // The built-in autoUpdater emits no progress event; electron-updater would. Inert unsubscribe.
62
+ return () => { };
63
+ },
64
+ subscribeUpdateDownloaded(listener) {
65
+ const handler = (...args) => listener(toUpdateInfo(args));
66
+ autoUpdater.on('update-downloaded', handler);
67
+ return () => autoUpdater.removeListener('update-downloaded', handler);
68
+ },
69
+ subscribeError(listener) {
70
+ const handler = (...args) => {
71
+ const raw = args[0];
72
+ const message = typeof raw === 'object' ? (raw?.message ?? '') : String(raw ?? '');
73
+ const error = { kind: 'Network', message };
74
+ listener(error);
75
+ };
76
+ autoUpdater.on('error', handler);
77
+ return () => autoUpdater.removeListener('error', handler);
78
+ },
79
+ subscribeUpdateCancelled() {
80
+ // No cancel concept in the built-in updater; inert unsubscribe.
81
+ return () => { };
82
+ },
83
+ subscribeUpdateRolledBack() {
84
+ // No rollback concept in the built-in updater; inert unsubscribe.
85
+ return () => { };
86
+ },
87
+ subscribeUpdateStaging() {
88
+ // No staging concept in the built-in updater; inert unsubscribe.
89
+ return () => { };
90
+ },
91
+ subscribeUpdateVerified() {
92
+ // No explicit verification event in the built-in updater; inert unsubscribe.
93
+ return () => { };
94
+ },
95
+ };
96
+ }
97
+ // Electron emits (event, releaseNotes, releaseName, releaseDate) for update-available/downloaded. The
98
+ // fields electron-updater would supply (delta, size, mandatory, OS floor, sha512, rollout) are unknown
99
+ // here and carry their sentinels.
100
+ function toUpdateInfo(args) {
101
+ return {
102
+ version: String(args[2] ?? ''),
103
+ notes: String(args[1] ?? ''),
104
+ releaseDate: String(args[3] ?? ''),
105
+ deltaFromVersion: null,
106
+ downloadSizeBytes: -1,
107
+ isMandatory: false,
108
+ minimumOsVersion: null,
109
+ sha512: '',
110
+ stagedRolloutPercent: 100,
111
+ };
112
+ }
113
+ //# sourceMappingURL=electronUpdater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electronUpdater.js","sourceRoot":"","sources":["../src/electronUpdater.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ApplicationWindow, WindowBackend } from '@flighthq/types';
2
+ import type { ElectronApi, ElectronBrowserWindow } from './electronModule';
3
+ export declare function createElectronWindowBackend(electron: ElectronApi): WindowBackend;
4
+ export declare function getApplicationWindowForElectronId(id: number): ApplicationWindow | null;
5
+ export declare function getElectronBrowserWindow(win: Readonly<ApplicationWindow>): ElectronBrowserWindow | null;
6
+ export declare function getElectronWindowId(win: Readonly<ApplicationWindow>): number;
7
+ //# sourceMappingURL=electronWindow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"electronWindow.d.ts","sourceRoot":"","sources":["../src/electronWindow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAExE,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAQ3E,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,WAAW,GAAG,aAAa,CA0UhF;AAID,wBAAgB,iCAAiC,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAEtF;AAKD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,qBAAqB,GAAG,IAAI,CAEvG;AAKD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAE5E"}