@flighthq/app 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/app.d.ts +5 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +128 -188
- package/dist/app.js.map +1 -1
- 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/package.json +3 -3
- package/src/app.test.ts +118 -36
package/dist/app.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { App, AppActivationPolicy, AppBackend, AppLoginItem, AppLoginItemLike, AppPathKind, MenuItemTemplate } from '@flighthq/types/contract';
|
|
2
|
+
import type { BackendExplanation } from '@flighthq/types/contract';
|
|
2
3
|
export declare function addAppRecentDocument(path: string): void;
|
|
3
4
|
export declare function attachApp(app: App): void;
|
|
4
5
|
export declare function bounceAppDock(): number;
|
|
@@ -7,9 +8,9 @@ export declare function cancelAppDockBounce(id: number): void;
|
|
|
7
8
|
export declare function clearAppRecentDocuments(): void;
|
|
8
9
|
export declare function createApp(): App;
|
|
9
10
|
export declare function createAppLoginItem(): AppLoginItem;
|
|
10
|
-
export declare function createWebAppBackend(): AppBackend;
|
|
11
11
|
export declare function detachApp(app: App): void;
|
|
12
12
|
export declare function disposeApp(app: App): void;
|
|
13
|
+
export declare function explainAppBackend(): BackendExplanation;
|
|
13
14
|
export declare function focusApp(): void;
|
|
14
15
|
export declare function getAppBackend(): AppBackend;
|
|
15
16
|
export declare function getAppCommandLine(): readonly string[];
|
|
@@ -26,12 +27,15 @@ export declare function getAppVersion(): string;
|
|
|
26
27
|
export declare function hasAppCommandLineSwitch(name: string): boolean;
|
|
27
28
|
export declare function hasAppSingleInstanceLock(): boolean;
|
|
28
29
|
export declare function hideApp(): boolean;
|
|
30
|
+
export declare function installAppHostBackend(backend: AppBackend): void;
|
|
29
31
|
export declare function isAppHidden(): boolean;
|
|
32
|
+
export declare function observeAppHostResult(operation: string, succeeded: boolean): void;
|
|
30
33
|
export declare function quitApp(): void;
|
|
31
34
|
export declare function relaunchApp(): void;
|
|
32
35
|
export declare function releaseAppSingleInstanceLock(): void;
|
|
33
36
|
export declare function requestAppAttention(critical: boolean): number;
|
|
34
37
|
export declare function requestAppSingleInstanceLock(): boolean;
|
|
38
|
+
export declare function resetAppBackendForTest(): void;
|
|
35
39
|
export declare function setAppActivationPolicy(policy: AppActivationPolicy): void;
|
|
36
40
|
export declare function setAppBackend(backend: AppBackend | null): void;
|
|
37
41
|
export declare function setAppBadgeCount(count: number): boolean;
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,GAAG,EACH,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/app.js
CHANGED
|
@@ -68,187 +68,6 @@ export function createApp() {
|
|
|
68
68
|
export function createAppLoginItem() {
|
|
69
69
|
return { args: [], openAsHidden: false, openAtLogin: false, path: '' };
|
|
70
70
|
}
|
|
71
|
-
// Builds the default web backend over document/window/navigator. Degrades to empty strings and no-ops
|
|
72
|
-
// where the APIs are absent. A web tab is inherently single-instance, so the lock is always held.
|
|
73
|
-
export function createWebAppBackend() {
|
|
74
|
-
return {
|
|
75
|
-
addRecentDocument() {
|
|
76
|
-
// No web recent-documents list; no-op.
|
|
77
|
-
},
|
|
78
|
-
bounceDock() {
|
|
79
|
-
return -1;
|
|
80
|
-
},
|
|
81
|
-
cancelAttention() {
|
|
82
|
-
// No web attention API; no-op.
|
|
83
|
-
},
|
|
84
|
-
cancelDockBounce() {
|
|
85
|
-
// No web dock; no-op.
|
|
86
|
-
},
|
|
87
|
-
clearRecentDocuments() {
|
|
88
|
-
// No web recent-documents list; no-op.
|
|
89
|
-
},
|
|
90
|
-
focus() {
|
|
91
|
-
if (typeof window !== 'undefined') {
|
|
92
|
-
try {
|
|
93
|
-
window.focus();
|
|
94
|
-
}
|
|
95
|
-
catch {
|
|
96
|
-
// Focus may be blocked by the host; ignore.
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
getAppDirectoryPath() {
|
|
101
|
-
// Web sentinel '': a web tab has no app-identity-relative directory. Native: userData/logs/
|
|
102
|
-
// crashDumps under the per-app data root.
|
|
103
|
-
return '';
|
|
104
|
-
},
|
|
105
|
-
getAppPath() {
|
|
106
|
-
// Web sentinel '': no bundle/exe directory in a tab. Native: the application directory.
|
|
107
|
-
return '';
|
|
108
|
-
},
|
|
109
|
-
getCommandLine() {
|
|
110
|
-
// Web sentinel []: a tab has no process argv. Native: this process's command-line arguments.
|
|
111
|
-
return [];
|
|
112
|
-
},
|
|
113
|
-
getExecutablePath() {
|
|
114
|
-
// Web sentinel '': no executable in a tab. Native: the running executable's path.
|
|
115
|
-
return '';
|
|
116
|
-
},
|
|
117
|
-
getLocale() {
|
|
118
|
-
return typeof navigator !== 'undefined' ? (navigator.language ?? '') : '';
|
|
119
|
-
},
|
|
120
|
-
getPreferredSystemLanguages() {
|
|
121
|
-
if (typeof navigator !== 'undefined' && Array.isArray(navigator.languages)) {
|
|
122
|
-
return navigator.languages;
|
|
123
|
-
}
|
|
124
|
-
return [];
|
|
125
|
-
},
|
|
126
|
-
getSystemLocale() {
|
|
127
|
-
try {
|
|
128
|
-
return typeof Intl !== 'undefined' ? new Intl.DateTimeFormat().resolvedOptions().locale : '';
|
|
129
|
-
}
|
|
130
|
-
catch {
|
|
131
|
-
return '';
|
|
132
|
-
}
|
|
133
|
-
},
|
|
134
|
-
getLoginItem() {
|
|
135
|
-
// Web sentinel: a default with openAtLogin false — a tab has no launch-at-login concept.
|
|
136
|
-
// Native: the OS launch-at-login registration for this app.
|
|
137
|
-
return { args: [], openAsHidden: false, openAtLogin: false, path: '' };
|
|
138
|
-
},
|
|
139
|
-
getName() {
|
|
140
|
-
// Web: document.title stands in for the app name ('' when no document). Native: the app's
|
|
141
|
-
// display name.
|
|
142
|
-
return typeof document !== 'undefined' ? document.title : '';
|
|
143
|
-
},
|
|
144
|
-
getVersion() {
|
|
145
|
-
// Web sentinel '': a tab carries no app version. Native: the packaged app version string.
|
|
146
|
-
return '';
|
|
147
|
-
},
|
|
148
|
-
hasSingleInstanceLock() {
|
|
149
|
-
return true;
|
|
150
|
-
},
|
|
151
|
-
hideApp() {
|
|
152
|
-
// No web application-hide; no-op.
|
|
153
|
-
return false;
|
|
154
|
-
},
|
|
155
|
-
isAppHidden() {
|
|
156
|
-
return false;
|
|
157
|
-
},
|
|
158
|
-
quit() {
|
|
159
|
-
if (typeof window !== 'undefined') {
|
|
160
|
-
try {
|
|
161
|
-
window.close();
|
|
162
|
-
}
|
|
163
|
-
catch {
|
|
164
|
-
// window.close() is restricted for non-script-opened tabs; ignore.
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
},
|
|
168
|
-
relaunch() {
|
|
169
|
-
if (typeof location !== 'undefined') {
|
|
170
|
-
try {
|
|
171
|
-
location.reload();
|
|
172
|
-
}
|
|
173
|
-
catch {
|
|
174
|
-
// Reload may be blocked in some embedding contexts; ignore.
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
},
|
|
178
|
-
releaseSingleInstanceLock() {
|
|
179
|
-
// A web tab cannot relinquish a process-level lock; no-op.
|
|
180
|
-
},
|
|
181
|
-
requestAttention() {
|
|
182
|
-
return -1;
|
|
183
|
-
},
|
|
184
|
-
requestSingleInstanceLock() {
|
|
185
|
-
return true;
|
|
186
|
-
},
|
|
187
|
-
setActivationPolicy() {
|
|
188
|
-
// No macOS activation policy on web; no-op.
|
|
189
|
-
},
|
|
190
|
-
setBadgeCount(count) {
|
|
191
|
-
if (typeof navigator === 'undefined' || !('setAppBadge' in navigator))
|
|
192
|
-
return false;
|
|
193
|
-
try {
|
|
194
|
-
navigator.setAppBadge(count);
|
|
195
|
-
return true;
|
|
196
|
-
}
|
|
197
|
-
catch {
|
|
198
|
-
return false;
|
|
199
|
-
}
|
|
200
|
-
},
|
|
201
|
-
setDockBadge() {
|
|
202
|
-
// No web dock; no-op.
|
|
203
|
-
},
|
|
204
|
-
setDockMenu() {
|
|
205
|
-
// No web dock menu; a native host (Electron app.dock) is required.
|
|
206
|
-
},
|
|
207
|
-
setLoginItem() {
|
|
208
|
-
// Web tabs have no login-item concept; no-op.
|
|
209
|
-
return false;
|
|
210
|
-
},
|
|
211
|
-
setName() {
|
|
212
|
-
// Cannot rename the application from web context; no-op.
|
|
213
|
-
return false;
|
|
214
|
-
},
|
|
215
|
-
setUserModelId() {
|
|
216
|
-
// AppUserModelID is Windows-only; no-op on web.
|
|
217
|
-
return false;
|
|
218
|
-
},
|
|
219
|
-
showApp() {
|
|
220
|
-
// No web application-show; no-op.
|
|
221
|
-
return false;
|
|
222
|
-
},
|
|
223
|
-
subscribeActivate() {
|
|
224
|
-
// No web app-activate event; the listener is never called. Native: dock/taskbar re-activation.
|
|
225
|
-
return () => { };
|
|
226
|
-
},
|
|
227
|
-
subscribeAllWindowsClosed() {
|
|
228
|
-
// No web all-windows-closed event; the listener is never called. Native: last window closed.
|
|
229
|
-
return () => { };
|
|
230
|
-
},
|
|
231
|
-
subscribeOpenFile() {
|
|
232
|
-
// No web open-file event; the listener is never called. Native: OS file-open / "Open With".
|
|
233
|
-
return () => { };
|
|
234
|
-
},
|
|
235
|
-
subscribeQuitRequest(_listener) {
|
|
236
|
-
// A web tab cannot intercept the browser's quit path; the listener is never called.
|
|
237
|
-
return () => { };
|
|
238
|
-
},
|
|
239
|
-
subscribeReady(listener) {
|
|
240
|
-
// On the web the DOM is already ready by the time script runs; fire on the next microtask.
|
|
241
|
-
const id = Promise.resolve().then(() => listener());
|
|
242
|
-
void id;
|
|
243
|
-
return () => { };
|
|
244
|
-
},
|
|
245
|
-
subscribeSecondInstance() {
|
|
246
|
-
// No web second-instance event; the listener is never called. Native: another launch hands its
|
|
247
|
-
// argv to the lock holder.
|
|
248
|
-
return () => { };
|
|
249
|
-
},
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
71
|
// Stops delivery to `app` and forgets its subscription. Safe to call when not attached.
|
|
253
72
|
export function detachApp(app) {
|
|
254
73
|
const unsubscribe = _subscriptions.get(app);
|
|
@@ -262,15 +81,26 @@ export function detachApp(app) {
|
|
|
262
81
|
export function disposeApp(app) {
|
|
263
82
|
detachApp(app);
|
|
264
83
|
}
|
|
84
|
+
export function explainAppBackend() {
|
|
85
|
+
if (_custom !== null) {
|
|
86
|
+
return { conflict: _hostConflict, layer: 'custom', operation: null, viability: 'unobserved' };
|
|
87
|
+
}
|
|
88
|
+
if (_host !== null) {
|
|
89
|
+
return {
|
|
90
|
+
conflict: _hostConflict,
|
|
91
|
+
layer: 'host',
|
|
92
|
+
operation: _hostObservation !== null ? _hostObservation.operation : null,
|
|
93
|
+
viability: _hostObservation !== null ? _hostObservation.viability : 'unobserved',
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return { conflict: false, layer: 'host-not-enabled', operation: null, viability: 'unobserved' };
|
|
97
|
+
}
|
|
265
98
|
// Brings the application to the foreground.
|
|
266
99
|
export function focusApp() {
|
|
267
100
|
getAppBackend().focus();
|
|
268
101
|
}
|
|
269
|
-
// The active app backend, or a lazily-created web default. There is always a backend.
|
|
270
102
|
export function getAppBackend() {
|
|
271
|
-
|
|
272
|
-
_backend = createWebAppBackend();
|
|
273
|
-
return _backend;
|
|
103
|
+
return _custom ?? _host ?? _sentinel;
|
|
274
104
|
}
|
|
275
105
|
// The command-line arguments for this process, or [] on web.
|
|
276
106
|
export function getAppCommandLine() {
|
|
@@ -339,10 +169,24 @@ export function hasAppSingleInstanceLock() {
|
|
|
339
169
|
export function hideApp() {
|
|
340
170
|
return getAppBackend().hideApp();
|
|
341
171
|
}
|
|
172
|
+
export function installAppHostBackend(backend) {
|
|
173
|
+
if (_host !== null) {
|
|
174
|
+
if (_host !== backend)
|
|
175
|
+
_hostConflict = true;
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
_host = backend;
|
|
179
|
+
}
|
|
342
180
|
// True when the application is hidden (macOS only). Always false on web.
|
|
343
181
|
export function isAppHidden() {
|
|
344
182
|
return getAppBackend().isAppHidden();
|
|
345
183
|
}
|
|
184
|
+
export function observeAppHostResult(operation, succeeded) {
|
|
185
|
+
_hostObservation = {
|
|
186
|
+
operation,
|
|
187
|
+
viability: succeeded ? 'available' : 'runtime-api-unavailable',
|
|
188
|
+
};
|
|
189
|
+
}
|
|
346
190
|
// Quits the application.
|
|
347
191
|
export function quitApp() {
|
|
348
192
|
getAppBackend().quit();
|
|
@@ -365,14 +209,19 @@ export function requestAppAttention(critical) {
|
|
|
365
209
|
export function requestAppSingleInstanceLock() {
|
|
366
210
|
return getAppBackend().requestSingleInstanceLock();
|
|
367
211
|
}
|
|
212
|
+
export function resetAppBackendForTest() {
|
|
213
|
+
_custom = null;
|
|
214
|
+
_host = null;
|
|
215
|
+
_hostConflict = false;
|
|
216
|
+
_hostObservation = null;
|
|
217
|
+
}
|
|
368
218
|
// Sets the macOS activation policy, controlling dock presence and Command-Tab visibility. No-op on
|
|
369
219
|
// non-macOS and web.
|
|
370
220
|
export function setAppActivationPolicy(policy) {
|
|
371
221
|
getAppBackend().setActivationPolicy(policy);
|
|
372
222
|
}
|
|
373
|
-
// Installs a native host app backend; pass null to fall back to the web default.
|
|
374
223
|
export function setAppBackend(backend) {
|
|
375
|
-
|
|
224
|
+
_custom = backend;
|
|
376
225
|
}
|
|
377
226
|
// Sets the numeric application badge (taskbar overlay / dock / PWA badge). Returns false when
|
|
378
227
|
// unsupported. Canonical home for the app badge — the tray package no longer carries it.
|
|
@@ -406,6 +255,97 @@ export function setAppUserModelId(id) {
|
|
|
406
255
|
export function showApp() {
|
|
407
256
|
return getAppBackend().showApp();
|
|
408
257
|
}
|
|
409
|
-
|
|
258
|
+
const _noop = () => () => { };
|
|
259
|
+
const _sentinel = {
|
|
260
|
+
addRecentDocument() { },
|
|
261
|
+
bounceDock() {
|
|
262
|
+
return -1;
|
|
263
|
+
},
|
|
264
|
+
cancelAttention() { },
|
|
265
|
+
cancelDockBounce() { },
|
|
266
|
+
clearRecentDocuments() { },
|
|
267
|
+
focus() { },
|
|
268
|
+
getAppDirectoryPath() {
|
|
269
|
+
return '';
|
|
270
|
+
},
|
|
271
|
+
getAppPath() {
|
|
272
|
+
return '';
|
|
273
|
+
},
|
|
274
|
+
getCommandLine() {
|
|
275
|
+
return [];
|
|
276
|
+
},
|
|
277
|
+
getExecutablePath() {
|
|
278
|
+
return '';
|
|
279
|
+
},
|
|
280
|
+
getLocale() {
|
|
281
|
+
return '';
|
|
282
|
+
},
|
|
283
|
+
getLoginItem() {
|
|
284
|
+
return { args: [], openAsHidden: false, openAtLogin: false, path: '' };
|
|
285
|
+
},
|
|
286
|
+
getName() {
|
|
287
|
+
return '';
|
|
288
|
+
},
|
|
289
|
+
getPreferredSystemLanguages() {
|
|
290
|
+
return [];
|
|
291
|
+
},
|
|
292
|
+
getSystemLocale() {
|
|
293
|
+
try {
|
|
294
|
+
return typeof Intl !== 'undefined' ? new Intl.DateTimeFormat().resolvedOptions().locale : '';
|
|
295
|
+
}
|
|
296
|
+
catch {
|
|
297
|
+
return '';
|
|
298
|
+
}
|
|
299
|
+
},
|
|
300
|
+
getVersion() {
|
|
301
|
+
return '';
|
|
302
|
+
},
|
|
303
|
+
hasSingleInstanceLock() {
|
|
304
|
+
return false;
|
|
305
|
+
},
|
|
306
|
+
hideApp() {
|
|
307
|
+
return false;
|
|
308
|
+
},
|
|
309
|
+
isAppHidden() {
|
|
310
|
+
return false;
|
|
311
|
+
},
|
|
312
|
+
quit() { },
|
|
313
|
+
relaunch() { },
|
|
314
|
+
releaseSingleInstanceLock() { },
|
|
315
|
+
requestAttention() {
|
|
316
|
+
return -1;
|
|
317
|
+
},
|
|
318
|
+
requestSingleInstanceLock() {
|
|
319
|
+
return false;
|
|
320
|
+
},
|
|
321
|
+
setActivationPolicy() { },
|
|
322
|
+
setBadgeCount() {
|
|
323
|
+
return false;
|
|
324
|
+
},
|
|
325
|
+
setDockBadge() { },
|
|
326
|
+
setDockMenu() { },
|
|
327
|
+
setLoginItem() {
|
|
328
|
+
return false;
|
|
329
|
+
},
|
|
330
|
+
setName() {
|
|
331
|
+
return false;
|
|
332
|
+
},
|
|
333
|
+
setUserModelId() {
|
|
334
|
+
return false;
|
|
335
|
+
},
|
|
336
|
+
showApp() {
|
|
337
|
+
return false;
|
|
338
|
+
},
|
|
339
|
+
subscribeActivate: _noop,
|
|
340
|
+
subscribeAllWindowsClosed: _noop,
|
|
341
|
+
subscribeOpenFile: _noop,
|
|
342
|
+
subscribeQuitRequest: _noop,
|
|
343
|
+
subscribeReady: _noop,
|
|
344
|
+
subscribeSecondInstance: _noop,
|
|
345
|
+
};
|
|
346
|
+
let _custom = null;
|
|
347
|
+
let _host = null;
|
|
348
|
+
let _hostConflict = false;
|
|
349
|
+
let _hostObservation = null;
|
|
410
350
|
const _subscriptions = new WeakMap();
|
|
411
351
|
//# sourceMappingURL=app.js.map
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { addAppRecentDocument, attachApp, bounceAppDock, cancelAppAttention, cancelAppDockBounce, clearAppRecentDocuments, createApp, createAppLoginItem, detachApp, disposeApp, focusApp, getAppCommandLine, getAppCommandLineSwitch, getAppDirectoryPath, getAppExecutablePath, getAppLocale, getAppLoginItem, getAppName, getAppPath, getAppPreferredSystemLanguages, getAppSystemLocale, getAppVersion, hasAppCommandLineSwitch, hasAppSingleInstanceLock, hideApp, isAppHidden, quitApp, relaunchApp, releaseAppSingleInstanceLock, requestAppAttention, requestAppSingleInstanceLock, setAppActivationPolicy, setAppBadgeCount, setAppDockBadge, setAppDockMenu, setAppLoginItem, setAppName, setAppUserModelId, showApp, } from './contract';
|
|
1
|
+
export { addAppRecentDocument, attachApp, bounceAppDock, cancelAppAttention, cancelAppDockBounce, clearAppRecentDocuments, createApp, createAppLoginItem, detachApp, disposeApp, explainAppBackend, focusApp, getAppCommandLine, getAppCommandLineSwitch, getAppDirectoryPath, getAppExecutablePath, getAppLocale, getAppLoginItem, getAppName, getAppPath, getAppPreferredSystemLanguages, getAppSystemLocale, getAppVersion, hasAppCommandLineSwitch, hasAppSingleInstanceLock, hideApp, isAppHidden, quitApp, relaunchApp, releaseAppSingleInstanceLock, requestAppAttention, requestAppSingleInstanceLock, setAppActivationPolicy, setAppBadgeCount, setAppDockBadge, setAppDockMenu, setAppLoginItem, setAppName, setAppUserModelId, showApp, } 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,oBAAoB,EACpB,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,SAAS,EACT,kBAAkB,EAClB,SAAS,EACT,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,UAAU,EACV,UAAU,EACV,8BAA8B,EAC9B,kBAAkB,EAClB,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,OAAO,EACP,WAAW,EACX,OAAO,EACP,WAAW,EACX,4BAA4B,EAC5B,mBAAmB,EACnB,4BAA4B,EAC5B,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,OAAO,GACR,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,SAAS,EACT,kBAAkB,EAClB,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,UAAU,EACV,UAAU,EACV,8BAA8B,EAC9B,kBAAkB,EAClB,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,OAAO,EACP,WAAW,EACX,OAAO,EACP,WAAW,EACX,4BAA4B,EAC5B,mBAAmB,EACnB,4BAA4B,EAC5B,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,OAAO,GACR,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { addAppRecentDocument, attachApp, bounceAppDock, cancelAppAttention, cancelAppDockBounce, clearAppRecentDocuments, createApp, createAppLoginItem, detachApp, disposeApp, focusApp, getAppCommandLine, getAppCommandLineSwitch, getAppDirectoryPath, getAppExecutablePath, getAppLocale, getAppLoginItem, getAppName, getAppPath, getAppPreferredSystemLanguages, getAppSystemLocale, getAppVersion, hasAppCommandLineSwitch, hasAppSingleInstanceLock, hideApp, isAppHidden, quitApp, relaunchApp, releaseAppSingleInstanceLock, requestAppAttention, requestAppSingleInstanceLock, setAppActivationPolicy, setAppBadgeCount, setAppDockBadge, setAppDockMenu, setAppLoginItem, setAppName, setAppUserModelId, showApp, } from './contract';
|
|
1
|
+
export { addAppRecentDocument, attachApp, bounceAppDock, cancelAppAttention, cancelAppDockBounce, clearAppRecentDocuments, createApp, createAppLoginItem, detachApp, disposeApp, explainAppBackend, focusApp, getAppCommandLine, getAppCommandLineSwitch, getAppDirectoryPath, getAppExecutablePath, getAppLocale, getAppLoginItem, getAppName, getAppPath, getAppPreferredSystemLanguages, getAppSystemLocale, getAppVersion, hasAppCommandLineSwitch, hasAppSingleInstanceLock, hideApp, isAppHidden, quitApp, relaunchApp, releaseAppSingleInstanceLock, requestAppAttention, requestAppSingleInstanceLock, setAppActivationPolicy, setAppBadgeCount, setAppDockBadge, setAppDockMenu, setAppLoginItem, setAppName, setAppUserModelId, showApp, } 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,oBAAoB,EACpB,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,SAAS,EACT,kBAAkB,EAClB,SAAS,EACT,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,UAAU,EACV,UAAU,EACV,8BAA8B,EAC9B,kBAAkB,EAClB,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,OAAO,EACP,WAAW,EACX,OAAO,EACP,WAAW,EACX,4BAA4B,EAC5B,mBAAmB,EACnB,4BAA4B,EAC5B,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,OAAO,GACR,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,SAAS,EACT,kBAAkB,EAClB,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,UAAU,EACV,UAAU,EACV,8BAA8B,EAC9B,kBAAkB,EAClB,aAAa,EACb,uBAAuB,EACvB,wBAAwB,EACxB,OAAO,EACP,WAAW,EACX,OAAO,EACP,WAAW,EACX,4BAA4B,EAC5B,mBAAmB,EACnB,4BAA4B,EAC5B,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,OAAO,GACR,MAAM,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/app",
|
|
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/app.test.ts
CHANGED
|
@@ -10,9 +10,9 @@ import {
|
|
|
10
10
|
clearAppRecentDocuments,
|
|
11
11
|
createApp,
|
|
12
12
|
createAppLoginItem,
|
|
13
|
-
createWebAppBackend,
|
|
14
13
|
detachApp,
|
|
15
14
|
disposeApp,
|
|
15
|
+
explainAppBackend,
|
|
16
16
|
focusApp,
|
|
17
17
|
getAppBackend,
|
|
18
18
|
getAppCommandLine,
|
|
@@ -29,12 +29,15 @@ import {
|
|
|
29
29
|
hasAppCommandLineSwitch,
|
|
30
30
|
hasAppSingleInstanceLock,
|
|
31
31
|
hideApp,
|
|
32
|
+
installAppHostBackend,
|
|
32
33
|
isAppHidden,
|
|
33
34
|
quitApp,
|
|
34
35
|
relaunchApp,
|
|
35
36
|
releaseAppSingleInstanceLock,
|
|
36
37
|
requestAppAttention,
|
|
37
38
|
requestAppSingleInstanceLock,
|
|
39
|
+
observeAppHostResult,
|
|
40
|
+
resetAppBackendForTest,
|
|
38
41
|
setAppActivationPolicy,
|
|
39
42
|
setAppBackend,
|
|
40
43
|
setAppBadgeCount,
|
|
@@ -254,7 +257,7 @@ function fakeBackend(): AppBackend & {
|
|
|
254
257
|
};
|
|
255
258
|
}
|
|
256
259
|
|
|
257
|
-
afterEach(() =>
|
|
260
|
+
afterEach(() => resetAppBackendForTest());
|
|
258
261
|
|
|
259
262
|
describe('addAppRecentDocument', () => {
|
|
260
263
|
it('forwards the path to the backend', () => {
|
|
@@ -402,40 +405,6 @@ describe('createAppLoginItem', () => {
|
|
|
402
405
|
});
|
|
403
406
|
});
|
|
404
407
|
|
|
405
|
-
describe('createWebAppBackend', () => {
|
|
406
|
-
it('reads identity values without throwing', () => {
|
|
407
|
-
const backend = createWebAppBackend();
|
|
408
|
-
expect(typeof backend.getName()).toBe('string');
|
|
409
|
-
expect(typeof backend.getVersion()).toBe('string');
|
|
410
|
-
expect(typeof backend.getLocale()).toBe('string');
|
|
411
|
-
expect(backend.requestSingleInstanceLock()).toBe(true);
|
|
412
|
-
expect(backend.hasSingleInstanceLock()).toBe(true);
|
|
413
|
-
expect(backend.bounceDock()).toBe(-1);
|
|
414
|
-
expect(backend.subscribeActivate(() => {})).toBeInstanceOf(Function);
|
|
415
|
-
});
|
|
416
|
-
|
|
417
|
-
it('returns sentinel values for unavailable APIs', () => {
|
|
418
|
-
const backend = createWebAppBackend();
|
|
419
|
-
expect(backend.getAppPath()).toBe('');
|
|
420
|
-
expect(backend.getExecutablePath()).toBe('');
|
|
421
|
-
expect(backend.getCommandLine()).toEqual([]);
|
|
422
|
-
expect(backend.getLoginItem().openAtLogin).toBe(false);
|
|
423
|
-
expect(backend.hideApp()).toBe(false);
|
|
424
|
-
expect(backend.isAppHidden()).toBe(false);
|
|
425
|
-
expect(backend.requestAttention(false)).toBe(-1);
|
|
426
|
-
expect(backend.setLoginItem({})).toBe(false);
|
|
427
|
-
expect(backend.setName('X')).toBe(false);
|
|
428
|
-
expect(backend.setUserModelId('X')).toBe(false);
|
|
429
|
-
expect(backend.showApp()).toBe(false);
|
|
430
|
-
});
|
|
431
|
-
|
|
432
|
-
it('returns preferred system languages and system locale', () => {
|
|
433
|
-
const backend = createWebAppBackend();
|
|
434
|
-
expect(Array.isArray(backend.getPreferredSystemLanguages())).toBe(true);
|
|
435
|
-
expect(typeof backend.getSystemLocale()).toBe('string');
|
|
436
|
-
});
|
|
437
|
-
});
|
|
438
|
-
|
|
439
408
|
describe('detachApp', () => {
|
|
440
409
|
it('stops further delivery', () => {
|
|
441
410
|
const backend = fakeBackend();
|
|
@@ -464,6 +433,34 @@ describe('disposeApp', () => {
|
|
|
464
433
|
});
|
|
465
434
|
});
|
|
466
435
|
|
|
436
|
+
describe('explainAppBackend', () => {
|
|
437
|
+
afterEach(() => resetAppBackendForTest());
|
|
438
|
+
|
|
439
|
+
it('reports host-not-enabled when no backend is installed', () => {
|
|
440
|
+
resetAppBackendForTest();
|
|
441
|
+
const explanation = explainAppBackend();
|
|
442
|
+
expect(explanation.layer).toBe('host-not-enabled');
|
|
443
|
+
expect(explanation.conflict).toBe(false);
|
|
444
|
+
expect(explanation.viability).toBe('unobserved');
|
|
445
|
+
});
|
|
446
|
+
|
|
447
|
+
it('reports custom layer when a custom backend is set', () => {
|
|
448
|
+
setAppBackend(fakeBackend());
|
|
449
|
+
expect(explainAppBackend().layer).toBe('custom');
|
|
450
|
+
});
|
|
451
|
+
|
|
452
|
+
it('reports host layer when a host backend is installed', () => {
|
|
453
|
+
installAppHostBackend(fakeBackend());
|
|
454
|
+
expect(explainAppBackend().layer).toBe('host');
|
|
455
|
+
});
|
|
456
|
+
|
|
457
|
+
it('reports conflict when two different host backends are installed', () => {
|
|
458
|
+
installAppHostBackend(fakeBackend());
|
|
459
|
+
installAppHostBackend(fakeBackend());
|
|
460
|
+
expect(explainAppBackend().conflict).toBe(true);
|
|
461
|
+
});
|
|
462
|
+
});
|
|
463
|
+
|
|
467
464
|
describe('focusApp', () => {
|
|
468
465
|
it('focuses through the backend', () => {
|
|
469
466
|
const backend = fakeBackend();
|
|
@@ -479,6 +476,40 @@ describe('getAppBackend', () => {
|
|
|
479
476
|
});
|
|
480
477
|
});
|
|
481
478
|
|
|
479
|
+
describe('getAppBackend (sentinel)', () => {
|
|
480
|
+
it('reads identity values without throwing', () => {
|
|
481
|
+
const backend = getAppBackend();
|
|
482
|
+
expect(typeof backend.getName()).toBe('string');
|
|
483
|
+
expect(typeof backend.getVersion()).toBe('string');
|
|
484
|
+
expect(typeof backend.getLocale()).toBe('string');
|
|
485
|
+
expect(backend.requestSingleInstanceLock()).toBe(false);
|
|
486
|
+
expect(backend.hasSingleInstanceLock()).toBe(false);
|
|
487
|
+
expect(backend.bounceDock()).toBe(-1);
|
|
488
|
+
expect(backend.subscribeActivate(() => {})).toBeInstanceOf(Function);
|
|
489
|
+
});
|
|
490
|
+
|
|
491
|
+
it('returns sentinel values for unavailable APIs', () => {
|
|
492
|
+
const backend = getAppBackend();
|
|
493
|
+
expect(backend.getAppPath()).toBe('');
|
|
494
|
+
expect(backend.getExecutablePath()).toBe('');
|
|
495
|
+
expect(backend.getCommandLine()).toEqual([]);
|
|
496
|
+
expect(backend.getLoginItem().openAtLogin).toBe(false);
|
|
497
|
+
expect(backend.hideApp()).toBe(false);
|
|
498
|
+
expect(backend.isAppHidden()).toBe(false);
|
|
499
|
+
expect(backend.requestAttention(false)).toBe(-1);
|
|
500
|
+
expect(backend.setLoginItem({})).toBe(false);
|
|
501
|
+
expect(backend.setName('X')).toBe(false);
|
|
502
|
+
expect(backend.setUserModelId('X')).toBe(false);
|
|
503
|
+
expect(backend.showApp()).toBe(false);
|
|
504
|
+
});
|
|
505
|
+
|
|
506
|
+
it('returns preferred system languages and system locale', () => {
|
|
507
|
+
const backend = getAppBackend();
|
|
508
|
+
expect(Array.isArray(backend.getPreferredSystemLanguages())).toBe(true);
|
|
509
|
+
expect(typeof backend.getSystemLocale()).toBe('string');
|
|
510
|
+
});
|
|
511
|
+
});
|
|
512
|
+
|
|
482
513
|
describe('getAppCommandLine', () => {
|
|
483
514
|
it('returns the command line from the backend', () => {
|
|
484
515
|
const backend = fakeBackend();
|
|
@@ -609,6 +640,25 @@ describe('hideApp', () => {
|
|
|
609
640
|
});
|
|
610
641
|
});
|
|
611
642
|
|
|
643
|
+
describe('installAppHostBackend', () => {
|
|
644
|
+
afterEach(() => resetAppBackendForTest());
|
|
645
|
+
|
|
646
|
+
it('installs a host backend that getAppBackend returns', () => {
|
|
647
|
+
const backend = fakeBackend();
|
|
648
|
+
installAppHostBackend(backend);
|
|
649
|
+
expect(getAppBackend()).toBe(backend);
|
|
650
|
+
});
|
|
651
|
+
|
|
652
|
+
it('is first-host-wins: a second different backend sets conflict', () => {
|
|
653
|
+
const first = fakeBackend();
|
|
654
|
+
const second = fakeBackend();
|
|
655
|
+
installAppHostBackend(first);
|
|
656
|
+
installAppHostBackend(second);
|
|
657
|
+
expect(getAppBackend()).toBe(first);
|
|
658
|
+
expect(explainAppBackend().conflict).toBe(true);
|
|
659
|
+
});
|
|
660
|
+
});
|
|
661
|
+
|
|
612
662
|
describe('isAppHidden', () => {
|
|
613
663
|
it('reflects the backend hidden state', () => {
|
|
614
664
|
const backend = fakeBackend();
|
|
@@ -619,6 +669,24 @@ describe('isAppHidden', () => {
|
|
|
619
669
|
});
|
|
620
670
|
});
|
|
621
671
|
|
|
672
|
+
describe('observeAppHostResult', () => {
|
|
673
|
+
afterEach(() => resetAppBackendForTest());
|
|
674
|
+
|
|
675
|
+
it('records a successful observation', () => {
|
|
676
|
+
installAppHostBackend(fakeBackend());
|
|
677
|
+
observeAppHostResult('focus', true);
|
|
678
|
+
const explanation = explainAppBackend();
|
|
679
|
+
expect(explanation.operation).toBe('focus');
|
|
680
|
+
expect(explanation.viability).toBe('available');
|
|
681
|
+
});
|
|
682
|
+
|
|
683
|
+
it('records a failed observation', () => {
|
|
684
|
+
installAppHostBackend(fakeBackend());
|
|
685
|
+
observeAppHostResult('focus', false);
|
|
686
|
+
expect(explainAppBackend().viability).toBe('runtime-api-unavailable');
|
|
687
|
+
});
|
|
688
|
+
});
|
|
689
|
+
|
|
622
690
|
describe('quitApp', () => {
|
|
623
691
|
it('quits without throwing', () => {
|
|
624
692
|
setAppBackend(fakeBackend());
|
|
@@ -657,6 +725,20 @@ describe('requestAppSingleInstanceLock', () => {
|
|
|
657
725
|
});
|
|
658
726
|
});
|
|
659
727
|
|
|
728
|
+
describe('resetAppBackendForTest', () => {
|
|
729
|
+
it('clears all backend slots', () => {
|
|
730
|
+
const backend = fakeBackend();
|
|
731
|
+
setAppBackend(backend);
|
|
732
|
+
installAppHostBackend(fakeBackend());
|
|
733
|
+
observeAppHostResult('focus', true);
|
|
734
|
+
resetAppBackendForTest();
|
|
735
|
+
expect(getAppBackend()).not.toBe(backend);
|
|
736
|
+
expect(explainAppBackend().layer).toBe('host-not-enabled');
|
|
737
|
+
expect(explainAppBackend().conflict).toBe(false);
|
|
738
|
+
expect(explainAppBackend().viability).toBe('unobserved');
|
|
739
|
+
});
|
|
740
|
+
});
|
|
741
|
+
|
|
660
742
|
describe('setAppActivationPolicy', () => {
|
|
661
743
|
it('forwards the policy to the backend', () => {
|
|
662
744
|
const backend = fakeBackend();
|