@flighthq/host-tauri 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 (64) hide show
  1. package/dist/index.d.ts +13 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +13 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/tauriApp.d.ts +4 -0
  6. package/dist/tauriApp.d.ts.map +1 -0
  7. package/dist/tauriApp.js +159 -0
  8. package/dist/tauriApp.js.map +1 -0
  9. package/dist/tauriClipboard.d.ts +4 -0
  10. package/dist/tauriClipboard.d.ts.map +1 -0
  11. package/dist/tauriClipboard.js +108 -0
  12. package/dist/tauriClipboard.js.map +1 -0
  13. package/dist/tauriDialog.d.ts +4 -0
  14. package/dist/tauriDialog.d.ts.map +1 -0
  15. package/dist/tauriDialog.js +83 -0
  16. package/dist/tauriDialog.js.map +1 -0
  17. package/dist/tauriMenu.d.ts +4 -0
  18. package/dist/tauriMenu.d.ts.map +1 -0
  19. package/dist/tauriMenu.js +68 -0
  20. package/dist/tauriMenu.js.map +1 -0
  21. package/dist/tauriModule.d.ts +213 -0
  22. package/dist/tauriModule.d.ts.map +1 -0
  23. package/dist/tauriModule.js +25 -0
  24. package/dist/tauriModule.js.map +1 -0
  25. package/dist/tauriNotification.d.ts +4 -0
  26. package/dist/tauriNotification.d.ts.map +1 -0
  27. package/dist/tauriNotification.js +102 -0
  28. package/dist/tauriNotification.js.map +1 -0
  29. package/dist/tauriPlatform.d.ts +4 -0
  30. package/dist/tauriPlatform.d.ts.map +1 -0
  31. package/dist/tauriPlatform.js +33 -0
  32. package/dist/tauriPlatform.js.map +1 -0
  33. package/dist/tauriRegister.d.ts +3 -0
  34. package/dist/tauriRegister.d.ts.map +1 -0
  35. package/dist/tauriRegister.js +44 -0
  36. package/dist/tauriRegister.js.map +1 -0
  37. package/dist/tauriShell.d.ts +4 -0
  38. package/dist/tauriShell.d.ts.map +1 -0
  39. package/dist/tauriShell.js +67 -0
  40. package/dist/tauriShell.js.map +1 -0
  41. package/dist/tauriShortcut.d.ts +4 -0
  42. package/dist/tauriShortcut.d.ts.map +1 -0
  43. package/dist/tauriShortcut.js +53 -0
  44. package/dist/tauriShortcut.js.map +1 -0
  45. package/dist/tauriTray.d.ts +4 -0
  46. package/dist/tauriTray.d.ts.map +1 -0
  47. package/dist/tauriTray.js +167 -0
  48. package/dist/tauriTray.js.map +1 -0
  49. package/dist/tauriWindow.d.ts +4 -0
  50. package/dist/tauriWindow.d.ts.map +1 -0
  51. package/dist/tauriWindow.js +166 -0
  52. package/dist/tauriWindow.js.map +1 -0
  53. package/package.json +48 -0
  54. package/src/tauriApp.test.ts +80 -0
  55. package/src/tauriClipboard.test.ts +69 -0
  56. package/src/tauriDialog.test.ts +83 -0
  57. package/src/tauriMenu.test.ts +129 -0
  58. package/src/tauriNotification.test.ts +59 -0
  59. package/src/tauriPlatform.test.ts +56 -0
  60. package/src/tauriRegister.test.ts +67 -0
  61. package/src/tauriShell.test.ts +63 -0
  62. package/src/tauriShortcut.test.ts +77 -0
  63. package/src/tauriTray.test.ts +123 -0
  64. package/src/tauriWindow.test.ts +144 -0
@@ -0,0 +1,213 @@
1
+ export interface TauriApi {
2
+ app: TauriAppModule;
3
+ clipboard: TauriClipboardManager;
4
+ dialog: TauriDialogPlugin;
5
+ globalShortcut: TauriGlobalShortcutPlugin;
6
+ menu: TauriMenuModule;
7
+ notification: TauriNotificationPlugin;
8
+ opener: TauriOpenerPlugin;
9
+ os: TauriOsModule;
10
+ process: TauriProcessPlugin;
11
+ tray: TauriTrayModule;
12
+ window: TauriWindowModule;
13
+ }
14
+ export interface TauriAppModule {
15
+ getName(): Promise<string>;
16
+ getVersion(): Promise<string>;
17
+ hide(): Promise<void>;
18
+ show(): Promise<void>;
19
+ }
20
+ export interface TauriProcessPlugin {
21
+ exit(code?: number): Promise<void>;
22
+ relaunch(): Promise<void>;
23
+ }
24
+ export interface TauriClipboardManager {
25
+ clear(): Promise<void>;
26
+ readText(): Promise<string>;
27
+ writeText(text: string): Promise<void>;
28
+ }
29
+ export interface TauriDialogFilter {
30
+ extensions: string[];
31
+ name: string;
32
+ }
33
+ export interface TauriDialogOpenOptions {
34
+ defaultPath?: string;
35
+ directory?: boolean;
36
+ filters?: TauriDialogFilter[];
37
+ multiple?: boolean;
38
+ title?: string;
39
+ }
40
+ export interface TauriDialogSaveOptions {
41
+ defaultPath?: string;
42
+ filters?: TauriDialogFilter[];
43
+ title?: string;
44
+ }
45
+ export interface TauriDialogMessageOptions {
46
+ cancelLabel?: string;
47
+ kind?: 'info' | 'warning' | 'error';
48
+ okLabel?: string;
49
+ title?: string;
50
+ }
51
+ export interface TauriDialogPlugin {
52
+ ask(message: string, options?: Readonly<TauriDialogMessageOptions>): Promise<boolean>;
53
+ confirm(message: string, options?: Readonly<TauriDialogMessageOptions>): Promise<boolean>;
54
+ message(message: string, options?: Readonly<TauriDialogMessageOptions>): Promise<void>;
55
+ open(options?: Readonly<TauriDialogOpenOptions>): Promise<string | string[] | null>;
56
+ save(options?: Readonly<TauriDialogSaveOptions>): Promise<string | null>;
57
+ }
58
+ export type TauriNotificationPermission = 'default' | 'denied' | 'granted';
59
+ export interface TauriNotificationOptions {
60
+ body?: string;
61
+ icon?: string;
62
+ title: string;
63
+ }
64
+ export interface TauriNotificationPlugin {
65
+ isPermissionGranted(): Promise<boolean>;
66
+ requestPermission(): Promise<TauriNotificationPermission>;
67
+ sendNotification(options: Readonly<TauriNotificationOptions>): void;
68
+ }
69
+ export interface TauriOpenerPlugin {
70
+ openPath(path: string, openWith?: string): Promise<void>;
71
+ openUrl(url: string, openWith?: string): Promise<void>;
72
+ revealItemInDir(path: string): Promise<void>;
73
+ }
74
+ export interface TauriOsModule {
75
+ arch(): string;
76
+ locale(): string | null;
77
+ platform(): string;
78
+ version(): string;
79
+ }
80
+ export interface TauriShortcutEvent {
81
+ shortcut: string;
82
+ state: string;
83
+ }
84
+ export interface TauriGlobalShortcutPlugin {
85
+ isRegistered(shortcut: string): Promise<boolean>;
86
+ register(shortcut: string, handler: (event: Readonly<TauriShortcutEvent>) => void): Promise<void>;
87
+ unregister(shortcut: string): Promise<void>;
88
+ unregisterAll(): Promise<void>;
89
+ }
90
+ export interface TauriMenuModule {
91
+ Menu: TauriMenuFactory;
92
+ MenuItem: TauriMenuItemFactory;
93
+ PredefinedMenuItem: TauriPredefinedMenuItemFactory;
94
+ Submenu: TauriSubmenuFactory;
95
+ }
96
+ export interface TauriMenuFactory {
97
+ 'new'(options?: Readonly<TauriMenuOptions>): Promise<TauriMenu>;
98
+ }
99
+ export interface TauriMenuItemFactory {
100
+ 'new'(options?: Readonly<TauriMenuItemOptions>): Promise<TauriMenuItemHandle>;
101
+ }
102
+ export interface TauriSubmenuFactory {
103
+ 'new'(options?: Readonly<TauriSubmenuOptions>): Promise<TauriMenuItemHandle>;
104
+ }
105
+ export interface TauriPredefinedMenuItemFactory {
106
+ 'new'(options: Readonly<TauriPredefinedMenuItemOptions>): Promise<TauriMenuItemHandle>;
107
+ }
108
+ export interface TauriMenuOptions {
109
+ items?: TauriMenuItemHandle[];
110
+ }
111
+ export interface TauriMenuItemOptions {
112
+ accelerator?: string;
113
+ action?: (id: string) => void;
114
+ enabled?: boolean;
115
+ id?: string;
116
+ text?: string;
117
+ }
118
+ export interface TauriSubmenuOptions {
119
+ enabled?: boolean;
120
+ items?: TauriMenuItemHandle[];
121
+ text?: string;
122
+ }
123
+ export interface TauriPredefinedMenuItemOptions {
124
+ item: string;
125
+ }
126
+ export interface TauriMenuItemHandle {
127
+ readonly id: string;
128
+ }
129
+ export interface TauriMenu {
130
+ popup(at?: Readonly<TauriPhysicalPositionLike>): Promise<void>;
131
+ setAsAppMenu(): Promise<unknown>;
132
+ }
133
+ export interface TauriTrayModule {
134
+ TrayIcon: TauriTrayIconFactory;
135
+ }
136
+ export interface TauriTrayIconFactory {
137
+ 'new'(options?: Readonly<TauriTrayIconOptions>): Promise<TauriTrayIcon>;
138
+ }
139
+ export interface TauriTrayIconOptions {
140
+ action?: (event: Readonly<TauriTrayIconEvent>) => void;
141
+ icon?: string;
142
+ menu?: TauriMenu;
143
+ title?: string;
144
+ tooltip?: string;
145
+ }
146
+ export interface TauriTrayIconEvent {
147
+ button?: string;
148
+ type: string;
149
+ }
150
+ export interface TauriTrayIcon {
151
+ close(): Promise<void>;
152
+ setIcon(icon: string | null): Promise<void>;
153
+ setMenu(menu: TauriMenu | null): Promise<void>;
154
+ setTitle(title: string | null): Promise<void>;
155
+ setTooltip(tooltip: string | null): Promise<void>;
156
+ }
157
+ export interface TauriWindowModule {
158
+ getCurrentWindow(): TauriWindow;
159
+ LogicalPosition: TauriLogicalPositionConstructor;
160
+ LogicalSize: TauriLogicalSizeConstructor;
161
+ }
162
+ export interface TauriLogicalPositionConstructor {
163
+ new (x: number, y: number): TauriPhysicalPositionLike;
164
+ }
165
+ export interface TauriLogicalSizeConstructor {
166
+ new (width: number, height: number): TauriLogicalSizeLike;
167
+ }
168
+ export interface TauriPhysicalPositionLike {
169
+ readonly x: number;
170
+ readonly y: number;
171
+ }
172
+ export interface TauriLogicalSizeLike {
173
+ readonly height: number;
174
+ readonly width: number;
175
+ }
176
+ export type TauriUnlisten = () => void;
177
+ export interface TauriWindow {
178
+ center(): Promise<void>;
179
+ close(): Promise<void>;
180
+ hide(): Promise<void>;
181
+ maximize(): Promise<void>;
182
+ minimize(): Promise<void>;
183
+ onCloseRequested(handler: (event: TauriCloseRequestedEvent) => void): Promise<TauriUnlisten>;
184
+ onFocusChanged(handler: (event: {
185
+ payload: boolean;
186
+ }) => void): Promise<TauriUnlisten>;
187
+ onMoved(handler: (event: {
188
+ payload: TauriPhysicalPositionLike;
189
+ }) => void): Promise<TauriUnlisten>;
190
+ onResized(handler: (event: {
191
+ payload: TauriLogicalSizeLike;
192
+ }) => void): Promise<TauriUnlisten>;
193
+ requestUserAttention(kind: number | null): Promise<void>;
194
+ setAlwaysOnTop(alwaysOnTop: boolean): Promise<void>;
195
+ setContentProtected(protected_: boolean): Promise<void>;
196
+ setFocus(): Promise<void>;
197
+ setFullscreen(fullscreen: boolean): Promise<void>;
198
+ setIcon(icon: string): Promise<void>;
199
+ setMaxSize(size: TauriLogicalSizeLike | null): Promise<void>;
200
+ setMinSize(size: TauriLogicalSizeLike | null): Promise<void>;
201
+ setPosition(position: TauriPhysicalPositionLike): Promise<void>;
202
+ setResizable(resizable: boolean): Promise<void>;
203
+ setShadow(enable: boolean): Promise<void>;
204
+ setSize(size: TauriLogicalSizeLike): Promise<void>;
205
+ setSkipTaskbar(skip: boolean): Promise<void>;
206
+ setTitle(title: string): Promise<void>;
207
+ show(): Promise<void>;
208
+ unmaximize(): Promise<void>;
209
+ }
210
+ export interface TauriCloseRequestedEvent {
211
+ preventDefault(): void;
212
+ }
213
+ //# sourceMappingURL=tauriModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tauriModule.d.ts","sourceRoot":"","sources":["../src/tauriModule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ // The precise slice of the Tauri (v2) JavaScript API — `@tauri-apps/api` plus its official plugins —
2
+ // that Flight's host backends call. The real Tauri modules satisfy this structurally, so a consumer
3
+ // aggregates them and passes the object directly:
4
+ //
5
+ // import * as app from '@tauri-apps/api/app';
6
+ // import * as window from '@tauri-apps/api/window';
7
+ // import * as menu from '@tauri-apps/api/menu';
8
+ // import * as tray from '@tauri-apps/api/tray';
9
+ // import * as clipboard from '@tauri-apps/plugin-clipboard-manager';
10
+ // import * as dialog from '@tauri-apps/plugin-dialog';
11
+ // import * as notification from '@tauri-apps/plugin-notification';
12
+ // import * as opener from '@tauri-apps/plugin-opener';
13
+ // import * as os from '@tauri-apps/plugin-os';
14
+ // import * as globalShortcut from '@tauri-apps/plugin-global-shortcut';
15
+ // import * as process from '@tauri-apps/plugin-process';
16
+ // registerTauriBackends({ app, window, menu, tray, clipboard, dialog, notification, opener, os, globalShortcut, process });
17
+ //
18
+ // Typing it here (rather than importing `@tauri-apps/*`) keeps this package dependency-free and unit
19
+ // testable with a fake — and documents exactly which Tauri surface the seams require, which is the real
20
+ // coupling between Flight and a Tauri host. Members are intentionally minimal; widen only when a backend
21
+ // needs more. Note the wide async/sync gap: most Tauri calls are Promise-based, while several Flight
22
+ // seams (window/shortcut/app getters/menu install/tray create) are synchronous. Those adapters call the
23
+ // async Tauri method fire-and-forget and mirror state locally — see each adapter for the exact contract.
24
+ export {};
25
+ //# sourceMappingURL=tauriModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tauriModule.js","sourceRoot":"","sources":["../src/tauriModule.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,oGAAoG;AACpG,kDAAkD;AAClD,EAAE;AACF,gDAAgD;AAChD,sDAAsD;AACtD,kDAAkD;AAClD,kDAAkD;AAClD,uEAAuE;AACvE,yDAAyD;AACzD,qEAAqE;AACrE,yDAAyD;AACzD,iDAAiD;AACjD,0EAA0E;AAC1E,2DAA2D;AAC3D,8HAA8H;AAC9H,EAAE;AACF,qGAAqG;AACrG,wGAAwG;AACxG,yGAAyG;AACzG,qGAAqG;AACrG,wGAAwG;AACxG,yGAAyG"}
@@ -0,0 +1,4 @@
1
+ import type { NotificationBackend } from '@flighthq/types';
2
+ import type { TauriApi } from './tauriModule';
3
+ export declare function createTauriNotificationBackend(tauri: TauriApi): NotificationBackend;
4
+ //# sourceMappingURL=tauriNotification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tauriNotification.d.ts","sourceRoot":"","sources":["../src/tauriNotification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAoD,MAAM,iBAAiB,CAAC;AAE7G,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQ9C,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,QAAQ,GAAG,mBAAmB,CA4FnF"}
@@ -0,0 +1,102 @@
1
+ // Maps Flight's NotificationBackend onto Tauri's `@tauri-apps/plugin-notification`. `notify` shows a
2
+ // notification via the fire-and-forget `sendNotification` and resolves the request's id (Tauri returns
3
+ // no handle, so there is nothing to close/update/enumerate later). `requestPermission` maps directly;
4
+ // the sync `getPermission` is served from a value prefetched once at construction (async→sync bridge),
5
+ // so it may read 'default' until that first probe resolves. Actions, scheduling, active-list, update,
6
+ // and close are outside the modeled Tauri surface and report the contract sentinels ('' / [] / no-op).
7
+ export function createTauriNotificationBackend(tauri) {
8
+ const notification = tauri.notification;
9
+ let nextId = 0;
10
+ // Sync getPermission has no async escape; prefetch the granted state once and cache it.
11
+ let cachedPermission = 'default';
12
+ notification
13
+ .isPermissionGranted()
14
+ .then((granted) => {
15
+ cachedPermission = granted ? 'granted' : 'default';
16
+ })
17
+ .catch(() => {
18
+ /* leave the 'default' sentinel */
19
+ });
20
+ return {
21
+ async notify(request) {
22
+ const id = request.id ?? `notification-${nextId++}`;
23
+ try {
24
+ notification.sendNotification({ title: request.title, body: request.body, icon: request.icon });
25
+ return id;
26
+ }
27
+ catch {
28
+ return '';
29
+ }
30
+ },
31
+ async requestPermission() {
32
+ try {
33
+ const permission = await notification.requestPermission();
34
+ cachedPermission = permission === 'granted' ? 'granted' : permission === 'denied' ? 'denied' : 'default';
35
+ return cachedPermission;
36
+ }
37
+ catch {
38
+ return 'denied';
39
+ }
40
+ },
41
+ getPermission() {
42
+ return cachedPermission;
43
+ },
44
+ isSupported() {
45
+ return true;
46
+ },
47
+ getCapabilities() {
48
+ return {
49
+ actions: false,
50
+ channels: false,
51
+ coldStart: false,
52
+ image: false,
53
+ listActive: false,
54
+ scheduling: false,
55
+ textReply: false,
56
+ };
57
+ },
58
+ async getLaunchNotification() {
59
+ return null;
60
+ },
61
+ async getActiveNotifications() {
62
+ return [];
63
+ },
64
+ async getPendingNotifications() {
65
+ return [];
66
+ },
67
+ async scheduleNotification() {
68
+ // Local scheduling is not wired through this adapter; report unsupported via the '' sentinel.
69
+ return '';
70
+ },
71
+ cancelScheduledNotification() {
72
+ // No scheduling — nothing to cancel.
73
+ },
74
+ closeNotification() {
75
+ // Tauri returns no handle from sendNotification, so there is nothing to dismiss by id.
76
+ },
77
+ closeAllNotifications() {
78
+ // No handle tracking — nothing to dismiss.
79
+ },
80
+ async updateNotification() {
81
+ // Tauri has no in-place update; report not applied.
82
+ return false;
83
+ },
84
+ subscribeClick() {
85
+ // Click delivery is not wired through this adapter; inert unsubscribe.
86
+ return () => { };
87
+ },
88
+ subscribeAction() {
89
+ return () => { };
90
+ },
91
+ subscribeDismiss() {
92
+ return () => { };
93
+ },
94
+ subscribeReply() {
95
+ return () => { };
96
+ },
97
+ subscribeShow() {
98
+ return () => { };
99
+ },
100
+ };
101
+ }
102
+ //# sourceMappingURL=tauriNotification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tauriNotification.js","sourceRoot":"","sources":["../src/tauriNotification.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { PlatformBackend } from '@flighthq/types';
2
+ import type { TauriApi } from './tauriModule';
3
+ export declare function createTauriPlatformBackend(tauri: TauriApi): PlatformBackend;
4
+ //# sourceMappingURL=tauriPlatform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tauriPlatform.d.ts","sourceRoot":"","sources":["../src/tauriPlatform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,iBAAiB,CAAC;AAErE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAM9C,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,QAAQ,GAAG,eAAe,CAc3E"}
@@ -0,0 +1,33 @@
1
+ // Maps Flight's PlatformBackend onto Tauri's `@tauri-apps/plugin-os`. In Tauri v2 the os plugin's
2
+ // accessors are synchronous (resolved from values injected at startup), so the sync getInfo maps
3
+ // cleanly. Writes into caller-owned `out` so callers control allocation; unset fields keep the
4
+ // pre-populated web defaults the platform package supplies.
5
+ export function createTauriPlatformBackend(tauri) {
6
+ const os = tauri.os;
7
+ return {
8
+ getInfo(out) {
9
+ out.name = toPlatformName(os.platform());
10
+ out.kind = 'desktop';
11
+ out.version = os.version();
12
+ out.arch = os.arch();
13
+ out.locale = os.locale() ?? '';
14
+ out.isTouch = false;
15
+ out.runtime = 'tauri';
16
+ return out;
17
+ },
18
+ };
19
+ }
20
+ function toPlatformName(platform) {
21
+ if (platform === 'windows')
22
+ return 'windows';
23
+ if (platform === 'macos')
24
+ return 'macos';
25
+ if (platform === 'linux')
26
+ return 'linux';
27
+ if (platform === 'ios')
28
+ return 'ios';
29
+ if (platform === 'android')
30
+ return 'android';
31
+ return 'unknown';
32
+ }
33
+ //# sourceMappingURL=tauriPlatform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tauriPlatform.js","sourceRoot":"","sources":["../src/tauriPlatform.ts"],"names":[],"mappings":"AAIA,kGAAkG;AAClG,iGAAiG;AACjG,+FAA+F;AAC/F,4DAA4D;AAC5D,MAAM,UAAU,0BAA0B,CAAC,KAAe;IACxD,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IACpB,OAAO;QACL,OAAO,CAAC,GAAG;YACT,GAAG,CAAC,IAAI,GAAG,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YACzC,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC;YACrB,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YACrB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;YAC/B,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;YACpB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;YACtB,OAAO,GAAG,CAAC;QACb,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACrC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC7C,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { TauriApi } from './tauriModule';
2
+ export declare function registerTauriBackends(tauri: TauriApi): void;
3
+ //# sourceMappingURL=tauriRegister.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tauriRegister.d.ts","sourceRoot":"","sources":["../src/tauriRegister.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAmB9C,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAW3D"}
@@ -0,0 +1,44 @@
1
+ import { setAppBackend } from '@flighthq/app';
2
+ import { setWindowBackend } from '@flighthq/application';
3
+ import { setClipboardBackend } from '@flighthq/clipboard';
4
+ import { setDialogBackend } from '@flighthq/dialog';
5
+ import { setMenuBackend } from '@flighthq/menu';
6
+ import { setNotificationBackend } from '@flighthq/notification';
7
+ import { setPlatformBackend } from '@flighthq/platform';
8
+ import { setShellBackend } from '@flighthq/shell';
9
+ import { setShortcutBackend } from '@flighthq/shortcut';
10
+ import { setTrayBackend } from '@flighthq/tray';
11
+ import { createTauriAppBackend } from './tauriApp';
12
+ import { createTauriClipboardBackend } from './tauriClipboard';
13
+ import { createTauriDialogBackend } from './tauriDialog';
14
+ import { createTauriMenuBackend } from './tauriMenu';
15
+ import { createTauriNotificationBackend } from './tauriNotification';
16
+ import { createTauriPlatformBackend } from './tauriPlatform';
17
+ import { createTauriShellBackend } from './tauriShell';
18
+ import { createTauriShortcutBackend } from './tauriShortcut';
19
+ import { createTauriTrayBackend } from './tauriTray';
20
+ import { createTauriWindowBackend } from './tauriWindow';
21
+ // Installs every Tauri host backend into its capability package in one call. Run this once at app
22
+ // startup, passing an object that aggregates the Tauri v2 JS API modules and plugins the seams use:
23
+ //
24
+ // import * as app from '@tauri-apps/api/app';
25
+ // // …import the other modules/plugins…
26
+ // registerTauriBackends({ app, window, menu, tray, clipboard, dialog, notification, opener, os, globalShortcut, process });
27
+ //
28
+ // After this, the covered platform/app/window seams resolve to their Tauri implementations instead of
29
+ // the web defaults. Seams Tauri does not cover here (storage, protocol, updater, ipc, power, screen)
30
+ // are intentionally left registered to their web defaults — a Tauri app runs in a webview, so those
31
+ // defaults (e.g. localStorage) keep working. Each set*Backend(null) reverts one capability to web.
32
+ export function registerTauriBackends(tauri) {
33
+ setPlatformBackend(createTauriPlatformBackend(tauri));
34
+ setAppBackend(createTauriAppBackend(tauri));
35
+ setWindowBackend(createTauriWindowBackend(tauri));
36
+ setDialogBackend(createTauriDialogBackend(tauri));
37
+ setClipboardBackend(createTauriClipboardBackend(tauri));
38
+ setMenuBackend(createTauriMenuBackend(tauri));
39
+ setTrayBackend(createTauriTrayBackend(tauri));
40
+ setShortcutBackend(createTauriShortcutBackend(tauri));
41
+ setNotificationBackend(createTauriNotificationBackend(tauri));
42
+ setShellBackend(createTauriShellBackend(tauri));
43
+ }
44
+ //# sourceMappingURL=tauriRegister.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tauriRegister.js","sourceRoot":"","sources":["../src/tauriRegister.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,kGAAkG;AAClG,oGAAoG;AACpG,EAAE;AACF,gDAAgD;AAChD,0CAA0C;AAC1C,8HAA8H;AAC9H,EAAE;AACF,sGAAsG;AACtG,qGAAqG;AACrG,oGAAoG;AACpG,mGAAmG;AACnG,MAAM,UAAU,qBAAqB,CAAC,KAAe;IACnD,kBAAkB,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,aAAa,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5C,gBAAgB,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,gBAAgB,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,mBAAmB,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,cAAc,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,cAAc,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,kBAAkB,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,sBAAsB,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,eAAe,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ShellBackend } from '@flighthq/types';
2
+ import type { TauriApi } from './tauriModule';
3
+ export declare function createTauriShellBackend(tauri: TauriApi): ShellBackend;
4
+ //# sourceMappingURL=tauriShell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tauriShell.d.ts","sourceRoot":"","sources":["../src/tauriShell.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAO9C,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,QAAQ,GAAG,YAAY,CAwDrE"}
@@ -0,0 +1,67 @@
1
+ // Maps Flight's ShellBackend onto Tauri's async `@tauri-apps/plugin-opener`. Opening a URL or path in
2
+ // the OS default handler and revealing a file in the file manager map directly; async operations
3
+ // resolve to false on failure rather than throwing (expected-failure surfaces). Tauri exposes no trash
4
+ // operation, no Windows .lnk shortcut read/write, and no system beep, so those methods report the
5
+ // contract sentinels (false / [] / null / no-op).
6
+ export function createTauriShellBackend(tauri) {
7
+ const opener = tauri.opener;
8
+ return {
9
+ async openExternal(url) {
10
+ try {
11
+ await opener.openUrl(url);
12
+ return true;
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ },
18
+ async openPath(path) {
19
+ try {
20
+ await opener.openPath(path);
21
+ return true;
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ },
27
+ async openPathResult(path) {
28
+ // Tauri's opener rejects with an error on failure; surface its message, '' on success.
29
+ try {
30
+ await opener.openPath(path);
31
+ return '';
32
+ }
33
+ catch (error) {
34
+ return error instanceof Error ? error.message : String(error);
35
+ }
36
+ },
37
+ async showItemInFolder(path) {
38
+ try {
39
+ await opener.revealItemInDir(path);
40
+ return true;
41
+ }
42
+ catch {
43
+ return false;
44
+ }
45
+ },
46
+ async moveToTrash() {
47
+ // Tauri's opener has no trash operation; report unsupported.
48
+ return false;
49
+ },
50
+ async moveItemsToTrash(paths) {
51
+ // No trash operation — report per-path failure without pretending success.
52
+ return paths.map(() => false);
53
+ },
54
+ async readShortcutLink() {
55
+ // Tauri has no Windows .lnk shortcut reader; report null.
56
+ return null;
57
+ },
58
+ async writeShortcutLink() {
59
+ // Tauri has no Windows .lnk shortcut writer; report unsupported.
60
+ return false;
61
+ },
62
+ beep() {
63
+ // Tauri exposes no system beep; no-op.
64
+ },
65
+ };
66
+ }
67
+ //# sourceMappingURL=tauriShell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tauriShell.js","sourceRoot":"","sources":["../src/tauriShell.ts"],"names":[],"mappings":"AAIA,sGAAsG;AACtG,iGAAiG;AACjG,uGAAuG;AACvG,kGAAkG;AAClG,kDAAkD;AAClD,MAAM,UAAU,uBAAuB,CAAC,KAAe;IACrD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,OAAO;QACL,KAAK,CAAC,YAAY,CAAC,GAAG;YACpB,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC1B,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,IAAI;YACjB,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC5B,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,KAAK,CAAC,cAAc,CAAC,IAAI;YACvB,uFAAuF;YACvF,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACZ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QACD,KAAK,CAAC,gBAAgB,CAAC,IAAI;YACzB,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBACnC,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,KAAK,CAAC,WAAW;YACf,6DAA6D;YAC7D,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,CAAC,gBAAgB,CAAC,KAAK;YAC1B,2EAA2E;YAC3E,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QACD,KAAK,CAAC,gBAAgB;YACpB,0DAA0D;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,CAAC,iBAAiB;YACrB,iEAAiE;YACjE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI;YACF,uCAAuC;QACzC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ShortcutBackend } from '@flighthq/types';
2
+ import type { TauriApi } from './tauriModule';
3
+ export declare function createTauriShortcutBackend(tauri: TauriApi): ShortcutBackend;
4
+ //# sourceMappingURL=tauriShortcut.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tauriShortcut.d.ts","sourceRoot":"","sources":["../src/tauriShortcut.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQ9C,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,QAAQ,GAAG,eAAe,CA4C3E"}
@@ -0,0 +1,53 @@
1
+ // Maps Flight's ShortcutBackend onto Tauri's `@tauri-apps/plugin-global-shortcut`. The seam is
2
+ // synchronous (register returns a boolean now) while every Tauri call is async, so the adapter fires
3
+ // register/unregister and forgets, optimistically reporting success and mirroring the registered set in
4
+ // a local Set — that Set is what getRegistered/isRegistered read (synchronously). Tauri's handler fires
5
+ // for both press and release; the adapter filters to 'Pressed' so a keypress delivers one ShortcutEvent.
6
+ // Per-accelerator and global enable toggles have no Tauri equivalent, so they report their sentinels.
7
+ export function createTauriShortcutBackend(tauri) {
8
+ const globalShortcut = tauri.globalShortcut;
9
+ const registered = new Set();
10
+ return {
11
+ getRegistered() {
12
+ return [...registered];
13
+ },
14
+ isRegistered(accelerator) {
15
+ return registered.has(accelerator);
16
+ },
17
+ register(accelerator, listener) {
18
+ // Optimistic: mirror the registration now and fire the async Tauri register; on rejection, drop
19
+ // it from the mirror so getRegistered/isRegistered stay honest.
20
+ registered.add(accelerator);
21
+ globalShortcut
22
+ .register(accelerator, (event) => {
23
+ if (event.state === 'Pressed')
24
+ listener({ accelerator });
25
+ })
26
+ .catch(() => {
27
+ registered.delete(accelerator);
28
+ });
29
+ return true;
30
+ },
31
+ setAllEnabled() {
32
+ // Tauri has no enable/disable toggle; a caller must unregister/re-register. Reported as a no-op.
33
+ },
34
+ setEnabled() {
35
+ // Tauri has no per-accelerator enable toggle; report unsupported via false.
36
+ return false;
37
+ },
38
+ unregister(accelerator) {
39
+ registered.delete(accelerator);
40
+ globalShortcut.unregister(accelerator).catch(() => {
41
+ /* already unregistered or never registered */
42
+ });
43
+ return true;
44
+ },
45
+ unregisterAll() {
46
+ registered.clear();
47
+ globalShortcut.unregisterAll().catch(() => {
48
+ /* nothing registered */
49
+ });
50
+ },
51
+ };
52
+ }
53
+ //# sourceMappingURL=tauriShortcut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tauriShortcut.js","sourceRoot":"","sources":["../src/tauriShortcut.ts"],"names":[],"mappings":"AAIA,+FAA+F;AAC/F,qGAAqG;AACrG,wGAAwG;AACxG,wGAAwG;AACxG,yGAAyG;AACzG,sGAAsG;AACtG,MAAM,UAAU,0BAA0B,CAAC,KAAe;IACxD,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,OAAO;QACL,aAAa;YACX,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;QACzB,CAAC;QACD,YAAY,CAAC,WAAW;YACtB,OAAO,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;QACD,QAAQ,CAAC,WAAW,EAAE,QAAQ;YAC5B,gGAAgG;YAChG,gEAAgE;YAChE,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC5B,cAAc;iBACX,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC/B,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;oBAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;YAC3D,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE;gBACV,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YACL,OAAO,IAAI,CAAC;QACd,CAAC;QACD,aAAa;YACX,iGAAiG;QACnG,CAAC;QACD,UAAU;YACR,4EAA4E;YAC5E,OAAO,KAAK,CAAC;QACf,CAAC;QACD,UAAU,CAAC,WAAW;YACpB,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC/B,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBAChD,8CAA8C;YAChD,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,aAAa;YACX,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,cAAc,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBACxC,wBAAwB;YAC1B,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { TrayBackend } from '@flighthq/types';
2
+ import type { TauriApi } from './tauriModule';
3
+ export declare function createTauriTrayBackend(tauri: TauriApi): TrayBackend;
4
+ //# sourceMappingURL=tauriTray.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tauriTray.d.ts","sourceRoot":"","sources":["../src/tauriTray.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,WAAW,EAAgC,MAAM,iBAAiB,CAAC;AAEnG,OAAO,KAAK,EAAE,QAAQ,EAA0D,MAAM,eAAe,CAAC;AAUtG,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,GAAG,WAAW,CAyHnE"}