@omujs/omu 0.9.47 → 0.9.49
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/dts/api/asset/extension.d.ts +25 -0
- package/dist/dts/api/asset/index.d.ts +2 -0
- package/dist/dts/api/dashboard/extension.d.ts +183 -0
- package/{src/api/dashboard/handler.ts → dist/dts/api/dashboard/handler.d.ts} +0 -2
- package/dist/dts/api/dashboard/index.d.ts +3 -0
- package/dist/dts/api/dashboard/packets.d.ts +73 -0
- package/dist/dts/api/endpoint/endpoint.d.ts +21 -0
- package/dist/dts/api/endpoint/extension.d.ts +17 -0
- package/{src/api/endpoint/index.ts → dist/dts/api/endpoint/index.d.ts} +0 -1
- package/dist/dts/api/endpoint/packets.d.ts +51 -0
- package/dist/dts/api/extension-registry.d.ts +8 -0
- package/dist/dts/api/extension.d.ts +11 -0
- package/dist/dts/api/http/extension.d.ts +41 -0
- package/dist/dts/api/http/http.d.ts +36 -0
- package/{src/api/http/index.ts → dist/dts/api/http/index.d.ts} +0 -1
- package/dist/dts/api/http/websocket.d.ts +125 -0
- package/dist/dts/api/i18n/extension.d.ts +19 -0
- package/{src/api/i18n/index.ts → dist/dts/api/i18n/index.d.ts} +0 -1
- package/{src/api/index.ts → dist/dts/api/index.d.ts} +0 -1
- package/dist/dts/api/logger/extension.d.ts +25 -0
- package/dist/dts/api/logger/index.d.ts +1 -0
- package/dist/dts/api/logger/packets.d.ts +18 -0
- package/dist/dts/api/permission/extension.d.ts +19 -0
- package/{src/api/permission/index.ts → dist/dts/api/permission/index.d.ts} +0 -1
- package/dist/dts/api/permission/permission.d.ts +25 -0
- package/dist/dts/api/plugin/extension.d.ts +43 -0
- package/{src/api/plugin/index.ts → dist/dts/api/plugin/index.d.ts} +0 -1
- package/{src/api/plugin/package-info.ts → dist/dts/api/plugin/package-info.d.ts} +0 -7
- package/dist/dts/api/registry/extension.d.ts +23 -0
- package/{src/api/registry/index.ts → dist/dts/api/registry/index.d.ts} +0 -1
- package/dist/dts/api/registry/packets.d.ts +20 -0
- package/{src/api/registry/registry.ts → dist/dts/api/registry/registry.d.ts} +11 -53
- package/dist/dts/api/server/extension.d.ts +61 -0
- package/dist/dts/api/server/index.d.ts +1 -0
- package/dist/dts/api/session/extension.d.ts +52 -0
- package/dist/dts/api/session/index.d.ts +1 -0
- package/dist/dts/api/signal/extension.d.ts +19 -0
- package/dist/dts/api/signal/packets.d.ts +21 -0
- package/dist/dts/api/signal/signal.d.ts +33 -0
- package/dist/dts/api/table/extension.d.ts +26 -0
- package/{src/api/table/index.ts → dist/dts/api/table/index.d.ts} +0 -1
- package/dist/dts/api/table/packets.d.ts +65 -0
- package/dist/dts/api/table/table.d.ts +75 -0
- package/dist/dts/app.d.ts +49 -0
- package/dist/dts/const.d.ts +2 -0
- package/dist/dts/errors.d.ts +36 -0
- package/dist/dts/event/index.d.ts +6 -0
- package/dist/dts/helper.d.ts +10 -0
- package/dist/dts/identifier.d.ts +51 -0
- package/dist/dts/index.d.ts +36 -0
- package/{src/localization/index.ts → dist/dts/localization/index.d.ts} +0 -1
- package/dist/dts/localization/locale.d.ts +735 -0
- package/{src/localization/localization.ts → dist/dts/localization/localization.d.ts} +0 -2
- package/dist/dts/lock.d.ts +6 -0
- package/dist/dts/network/connection.d.ts +17 -0
- package/dist/dts/network/encryption.d.ts +38 -0
- package/dist/dts/network/frame-transport.d.ts +22 -0
- package/{src/network/index.ts → dist/dts/network/index.d.ts} +0 -1
- package/dist/dts/network/network.d.ts +59 -0
- package/{src/network/packet/index.ts → dist/dts/network/packet/index.d.ts} +0 -1
- package/dist/dts/network/packet/packet-types.d.ts +84 -0
- package/dist/dts/network/packet/packet.d.ts +25 -0
- package/dist/dts/network/websocket-transport.d.ts +24 -0
- package/dist/dts/omu.d.ts +61 -0
- package/dist/dts/result.d.ts +26 -0
- package/dist/dts/serialize/bytebuffer.d.ts +73 -0
- package/dist/dts/serialize/serializer.d.ts +26 -0
- package/dist/dts/token.d.ts +14 -0
- package/dist/dts/version.d.ts +2 -0
- package/dist/esm/address.js +4 -0
- package/dist/esm/api/asset/extension.js +911 -0
- package/dist/esm/api/asset/index.js +909 -0
- package/dist/esm/api/dashboard/extension.js +1362 -0
- package/dist/esm/api/dashboard/handler.js +4 -0
- package/dist/esm/api/dashboard/index.js +1361 -0
- package/dist/esm/api/dashboard/packets.js +419 -0
- package/dist/esm/api/endpoint/endpoint.js +383 -0
- package/dist/esm/api/endpoint/extension.js +1096 -0
- package/dist/esm/api/endpoint/index.js +383 -0
- package/dist/esm/api/endpoint/packets.js +799 -0
- package/dist/esm/api/extension-registry.js +23 -0
- package/dist/esm/api/extension.js +278 -0
- package/dist/esm/api/http/extension.js +1420 -0
- package/dist/esm/api/http/http.js +448 -0
- package/dist/esm/api/http/index.js +1419 -0
- package/dist/esm/api/http/websocket.js +220 -0
- package/dist/esm/api/i18n/extension.js +1339 -0
- package/dist/esm/api/i18n/index.js +1337 -0
- package/dist/esm/api/index.js +295 -0
- package/dist/esm/api/logger/extension.js +856 -0
- package/dist/esm/api/logger/index.js +852 -0
- package/dist/esm/api/logger/packets.js +673 -0
- package/dist/esm/api/permission/extension.js +535 -0
- package/dist/esm/api/permission/index.js +294 -0
- package/dist/esm/api/permission/permission.js +294 -0
- package/dist/esm/api/plugin/extension.js +531 -0
- package/dist/esm/api/plugin/index.js +529 -0
- package/dist/esm/api/plugin/package-info.js +4 -0
- package/dist/esm/api/registry/extension.js +1286 -0
- package/dist/esm/api/registry/index.js +1285 -0
- package/dist/esm/api/registry/packets.js +694 -0
- package/dist/esm/api/registry/registry.js +383 -0
- package/dist/esm/api/server/extension.js +2140 -0
- package/dist/esm/api/server/index.js +2118 -0
- package/dist/esm/api/session/extension.js +2235 -0
- package/dist/esm/api/session/index.js +2235 -0
- package/dist/esm/api/signal/extension.js +1031 -0
- package/dist/esm/api/signal/index.js +379 -0
- package/dist/esm/api/signal/packets.js +690 -0
- package/dist/esm/api/signal/signal.js +379 -0
- package/dist/esm/api/table/extension.js +1553 -0
- package/dist/esm/api/table/index.js +1552 -0
- package/dist/esm/api/table/packets.js +904 -0
- package/dist/esm/api/table/table.js +383 -0
- package/dist/esm/app.js +264 -0
- package/dist/esm/const.js +11 -0
- package/dist/esm/errors.js +548 -0
- package/dist/esm/event/index.js +22 -0
- package/dist/esm/helper.js +15 -0
- package/dist/esm/identifier.js +266 -0
- package/dist/esm/index.js +5186 -0
- package/dist/esm/localization/index.js +742 -0
- package/dist/esm/localization/locale.js +742 -0
- package/dist/esm/localization/localization.js +4 -0
- package/dist/esm/lock.js +46 -0
- package/dist/esm/network/connection.js +293 -0
- package/dist/esm/network/encryption.js +986 -0
- package/dist/esm/network/frame-transport.js +531 -0
- package/dist/esm/network/index.js +1627 -0
- package/dist/esm/network/network.js +1368 -0
- package/dist/esm/network/packet/index.js +485 -0
- package/dist/esm/network/packet/packet-types.js +486 -0
- package/dist/esm/network/packet/packet.js +126 -0
- package/dist/esm/network/websocket-transport.js +493 -0
- package/dist/esm/omu.js +4945 -0
- package/dist/esm/result.js +68 -0
- package/dist/esm/serialize/bytebuffer.js +384 -0
- package/dist/esm/serialize/index.js +471 -0
- package/dist/esm/serialize/serializer.js +97 -0
- package/dist/esm/token.js +42 -0
- package/dist/esm/version.js +11 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +4 -1
- package/CHANGELOG.md +0 -1837
- package/src/api/asset/extension.ts +0 -193
- package/src/api/asset/index.ts +0 -5
- package/src/api/dashboard/extension.ts +0 -651
- package/src/api/dashboard/index.ts +0 -38
- package/src/api/dashboard/packets.ts +0 -126
- package/src/api/endpoint/endpoint.ts +0 -56
- package/src/api/endpoint/extension.ts +0 -133
- package/src/api/endpoint/packets.ts +0 -176
- package/src/api/extension-registry.ts +0 -17
- package/src/api/extension.ts +0 -19
- package/src/api/http/extension.ts +0 -401
- package/src/api/http/http.ts +0 -79
- package/src/api/http/websocket.ts +0 -283
- package/src/api/i18n/extension.ts +0 -65
- package/src/api/logger/extension.ts +0 -75
- package/src/api/logger/index.ts +0 -4
- package/src/api/logger/packets.ts +0 -38
- package/src/api/permission/extension.ts +0 -107
- package/src/api/permission/permission.ts +0 -53
- package/src/api/plugin/extension.ts +0 -100
- package/src/api/registry/extension.ts +0 -326
- package/src/api/registry/packets.ts +0 -64
- package/src/api/server/extension.ts +0 -155
- package/src/api/server/index.ts +0 -11
- package/src/api/session/extension.ts +0 -205
- package/src/api/session/index.ts +0 -7
- package/src/api/signal/extension.ts +0 -125
- package/src/api/signal/packets.ts +0 -61
- package/src/api/signal/signal.ts +0 -67
- package/src/api/table/extension.ts +0 -554
- package/src/api/table/packets.ts +0 -252
- package/src/api/table/table.ts +0 -113
- package/src/app.ts +0 -95
- package/src/const.ts +0 -2
- package/src/errors.ts +0 -70
- package/src/event/index.ts +0 -18
- package/src/helper.ts +0 -16
- package/src/identifier.ts +0 -256
- package/src/index.ts +0 -87
- package/src/localization/locale.ts +0 -737
- package/src/lock.ts +0 -43
- package/src/network/connection.ts +0 -45
- package/src/network/encryption.ts +0 -221
- package/src/network/frame-transport.ts +0 -186
- package/src/network/network.ts +0 -322
- package/src/network/packet/packet-types.ts +0 -164
- package/src/network/packet/packet.ts +0 -55
- package/src/network/websocket-transport.ts +0 -123
- package/src/omu.ts +0 -156
- package/src/result.ts +0 -78
- package/src/serialize/bytebuffer.ts +0 -432
- package/src/serialize/serializer.ts +0 -149
- package/src/token.ts +0 -39
- package/src/version.ts +0 -2
- package/tsconfig.json +0 -18
- /package/{src/address.ts → dist/dts/address.d.ts} +0 -0
- /package/{src/api/signal/index.ts → dist/dts/api/signal/index.d.ts} +0 -0
- /package/{src/serialize/index.ts → dist/dts/serialize/index.d.ts} +0 -0
|
@@ -1,651 +0,0 @@
|
|
|
1
|
-
import { App, AppJson } from '../../app.js';
|
|
2
|
-
import { Identifier, IdentifierMap } from '../../identifier';
|
|
3
|
-
import { PacketType } from '../../network/packet/packet.js';
|
|
4
|
-
import { Omu } from '../../omu.js';
|
|
5
|
-
import { PromiseResult } from '../../result.js';
|
|
6
|
-
import { Serializer } from '../../serialize';
|
|
7
|
-
import { EndpointType } from '../endpoint/endpoint.js';
|
|
8
|
-
import { InvokedParams } from '../endpoint/packets.js';
|
|
9
|
-
import { ExtensionType } from '../extension.js';
|
|
10
|
-
import { PermissionTypeJson } from '../permission/permission.js';
|
|
11
|
-
import { PackageInfo } from '../plugin/package-info.js';
|
|
12
|
-
import { Registry, RegistryType } from '../registry/registry.js';
|
|
13
|
-
import { AppIndexRegistryMeta } from '../server/extension.js';
|
|
14
|
-
import type { Table } from '../table/table.js';
|
|
15
|
-
import { TableType } from '../table/table.js';
|
|
16
|
-
|
|
17
|
-
import type { DashboardHandler } from './handler.js';
|
|
18
|
-
import { AppInstallResponse, DragDrop, DragDropReadRequest, DragDropReadRequestDashboard, DragDropReadResponse, DragDropRequest, DragDropRequestDashboard, DragDropRequestResponse, DragEnter, DragLeave, DragOver, FileDragPacket } from './packets.js';
|
|
19
|
-
|
|
20
|
-
export const DASHBOARD_EXTENSION_TYPE: ExtensionType<DashboardExtension> = new ExtensionType(
|
|
21
|
-
'dashboard',
|
|
22
|
-
(omu: Omu) => new DashboardExtension(omu),
|
|
23
|
-
);
|
|
24
|
-
|
|
25
|
-
type DashboardSetResponse = {
|
|
26
|
-
success: boolean;
|
|
27
|
-
};
|
|
28
|
-
export const DASHBOARD_SET_PERMISSION_ID: Identifier = DASHBOARD_EXTENSION_TYPE.join('set');
|
|
29
|
-
const DASHBOARD_SET_ENDPOINT = EndpointType.createJson<Identifier, DashboardSetResponse>(
|
|
30
|
-
DASHBOARD_EXTENSION_TYPE,
|
|
31
|
-
{
|
|
32
|
-
name: 'set',
|
|
33
|
-
requestSerializer: Identifier,
|
|
34
|
-
permissionId: DASHBOARD_SET_PERMISSION_ID,
|
|
35
|
-
},
|
|
36
|
-
);
|
|
37
|
-
export const DASHBOARD_OPEN_APP_PERMISSION_ID: Identifier = DASHBOARD_EXTENSION_TYPE.join('app', 'open');
|
|
38
|
-
const DASHBOARD_OPEN_APP_ENDPOINT = EndpointType.createJson<App, void>(DASHBOARD_EXTENSION_TYPE, {
|
|
39
|
-
name: 'open_app',
|
|
40
|
-
requestSerializer: App,
|
|
41
|
-
permissionId: DASHBOARD_OPEN_APP_PERMISSION_ID,
|
|
42
|
-
});
|
|
43
|
-
const DASHBOARD_OPEN_APP_PACKET = PacketType.createJson<App>(DASHBOARD_EXTENSION_TYPE, {
|
|
44
|
-
name: 'open_app',
|
|
45
|
-
serializer: App,
|
|
46
|
-
});
|
|
47
|
-
export const DASHOBARD_APP_READ_PERMISSION_ID: Identifier = DASHBOARD_EXTENSION_TYPE.join('app', 'read');
|
|
48
|
-
export const DASHOBARD_APP_EDIT_PERMISSION_ID: Identifier = DASHBOARD_EXTENSION_TYPE.join('app', 'edit');
|
|
49
|
-
export const DASHBOARD_APP_INSTALL_PERMISSION_ID: Identifier = DASHBOARD_EXTENSION_TYPE.join('app', 'install');
|
|
50
|
-
const DASHBOARD_APP_INSTALL_ENDPOINT = EndpointType.createJson<App, AppInstallResponse>(DASHBOARD_EXTENSION_TYPE, {
|
|
51
|
-
name: 'install_app',
|
|
52
|
-
requestSerializer: App,
|
|
53
|
-
permissionId: DASHBOARD_APP_INSTALL_PERMISSION_ID,
|
|
54
|
-
});
|
|
55
|
-
export const DAShBOARD_DRAG_DROP_PERMISSION_ID: Identifier = DASHBOARD_EXTENSION_TYPE.join('drag_drop');
|
|
56
|
-
const DASHBOARD_DRAG_DROP_STATE_PACKET = PacketType.createJson<FileDragPacket>(DASHBOARD_EXTENSION_TYPE, {
|
|
57
|
-
name: 'drag_drop_state',
|
|
58
|
-
serializer: Serializer.noop<FileDragPacket>()
|
|
59
|
-
.field('app', App),
|
|
60
|
-
});
|
|
61
|
-
const DASHBOARD_DRAG_DROP_READ_ENDPOINT = EndpointType.createSerialized<DragDropReadRequest, DragDropReadResponse>(DASHBOARD_EXTENSION_TYPE, {
|
|
62
|
-
name: 'drag_drop_read',
|
|
63
|
-
requestSerializer: Serializer.json(),
|
|
64
|
-
responseSerializer: DragDropReadResponse,
|
|
65
|
-
});
|
|
66
|
-
const DASHBOARD_DRAG_DROP_READ_REQUEST_PACKET = PacketType.createJson<DragDropReadRequestDashboard>(DASHBOARD_EXTENSION_TYPE, {
|
|
67
|
-
name: 'drag_drop_read_request',
|
|
68
|
-
});
|
|
69
|
-
const DASHBOARD_DRAG_DROP_READ_RESPONSE_PACKET = PacketType.createSerialized<DragDropReadResponse>(DASHBOARD_EXTENSION_TYPE, {
|
|
70
|
-
name: 'drag_drop_read_response',
|
|
71
|
-
serializer: DragDropReadResponse,
|
|
72
|
-
});
|
|
73
|
-
const DASHBOARD_DRAG_DROP_REQUEST_ENDPOINT = EndpointType.createJson<DragDropRequest, DragDropRequestResponse>(DASHBOARD_EXTENSION_TYPE, {
|
|
74
|
-
name: 'drag_drop_request',
|
|
75
|
-
permissionId: DAShBOARD_DRAG_DROP_PERMISSION_ID,
|
|
76
|
-
});
|
|
77
|
-
const DASHBOARD_DRAG_DROP_REQUEST_PACKET = PacketType.createJson<DragDropRequestDashboard>(DASHBOARD_EXTENSION_TYPE, {
|
|
78
|
-
name: 'drag_drop_request',
|
|
79
|
-
});
|
|
80
|
-
const DASHBOARD_DRAG_DROP_REQUEST_APPROVAL_PACKET = PacketType.createJson<DragDropRequestResponse>(DASHBOARD_EXTENSION_TYPE, {
|
|
81
|
-
name: 'drag_drop_request_approval',
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
type DragDropHandler = {
|
|
85
|
-
onEnter(fn: (event: DragEnter) => unknown): void;
|
|
86
|
-
onOver(fn: (event: DragOver) => unknown): void;
|
|
87
|
-
onDrop(fn: (event: DragDrop) => unknown): void;
|
|
88
|
-
onLeave(fn: (event: DragLeave) => unknown): void;
|
|
89
|
-
read(id: string): Promise<DragDropReadResponse>;
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
export type Cookie = {
|
|
93
|
-
name: string;
|
|
94
|
-
value: string;
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
export type WebviewRequest = {
|
|
98
|
-
url: string;
|
|
99
|
-
script?: string;
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
export type WebviewPacket = {
|
|
103
|
-
id: string;
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
export type UserResponse<T = undefined> = {
|
|
107
|
-
type: 'ok';
|
|
108
|
-
value: T;
|
|
109
|
-
} | {
|
|
110
|
-
type: 'blocked';
|
|
111
|
-
} | {
|
|
112
|
-
type: 'cancelled';
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
export type UserError = Exclude<UserResponse, { type: 'ok' }>;
|
|
116
|
-
|
|
117
|
-
export type WebviewResponse = UserResponse<WebviewPacket>;
|
|
118
|
-
|
|
119
|
-
export const DASHBOARD_WEBVIEW_PERMISSION_ID: Identifier = DASHBOARD_EXTENSION_TYPE.join('webview');
|
|
120
|
-
|
|
121
|
-
export type HostRequest = {
|
|
122
|
-
host: string;
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
export type GetCookiesRequest = {
|
|
126
|
-
url: string;
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
const DASHBOARD_COOKIES_GET = EndpointType.createJson<GetCookiesRequest, UserResponse<Cookie[]>>(DASHBOARD_EXTENSION_TYPE, {
|
|
130
|
-
name: 'cookies_get',
|
|
131
|
-
permissionId: DASHBOARD_WEBVIEW_PERMISSION_ID,
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
const DASHBOARD_WEBVIEW_REQUEST = EndpointType.createJson<WebviewRequest, WebviewResponse>(DASHBOARD_EXTENSION_TYPE, {
|
|
135
|
-
name: 'webview_request',
|
|
136
|
-
permissionId: DASHBOARD_WEBVIEW_PERMISSION_ID,
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
const DASHBOARD_WEBVIEW_CLOSE = EndpointType.createJson<WebviewPacket, WebviewResponse>(DASHBOARD_EXTENSION_TYPE, {
|
|
140
|
-
name: 'webview_close',
|
|
141
|
-
permissionId: DASHBOARD_WEBVIEW_PERMISSION_ID,
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
export type WebviewEvent = {
|
|
145
|
-
type: 'closed';
|
|
146
|
-
} | {
|
|
147
|
-
type: 'resize';
|
|
148
|
-
dimentions: {
|
|
149
|
-
x: number;
|
|
150
|
-
y: number;
|
|
151
|
-
};
|
|
152
|
-
} | {
|
|
153
|
-
type: 'cookie';
|
|
154
|
-
cookies: Cookie[];
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
export type WebviewEventListeners = {
|
|
158
|
-
[K in WebviewEvent['type']]?: Array<(event: Extract<WebviewEvent, { type: K }>) => void>;
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
export type WebviewEventPacket = {
|
|
162
|
-
id: Identifier;
|
|
163
|
-
target: Identifier;
|
|
164
|
-
event: WebviewEvent;
|
|
165
|
-
};
|
|
166
|
-
|
|
167
|
-
export type WebviewHandle = {
|
|
168
|
-
readonly id: Identifier;
|
|
169
|
-
readonly url: string;
|
|
170
|
-
getCookies(): PromiseResult<Cookie[], UserError>;
|
|
171
|
-
on<T extends WebviewEvent['type']>(key: T, callback: (event: Extract<WebviewEvent, { type: T }>) => void): void;
|
|
172
|
-
close(): Promise<void>;
|
|
173
|
-
join(): Promise<void>;
|
|
174
|
-
};
|
|
175
|
-
|
|
176
|
-
export type WebviewEventEmit = <T extends WebviewEvent['type']>(event: Extract<WebviewEvent, { type: T }>) => void;
|
|
177
|
-
|
|
178
|
-
const DASHBOARD_WEBVIEW_EVENT_PACKET = PacketType.createJson<WebviewEventPacket>(DASHBOARD_EXTENSION_TYPE, {
|
|
179
|
-
name: 'webview_event',
|
|
180
|
-
serializer: Serializer.noop<WebviewEventPacket>()
|
|
181
|
-
.field('id', Identifier)
|
|
182
|
-
.field('target', Identifier),
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
type AllowedHost = {
|
|
186
|
-
id: string;
|
|
187
|
-
hosts: string[];
|
|
188
|
-
};
|
|
189
|
-
|
|
190
|
-
const DASHBOARD_ALLOWED_WEBVIEW_HOSTS = TableType.createJson<AllowedHost>(DASHBOARD_EXTENSION_TYPE, {
|
|
191
|
-
name: 'allowed_webview_hosts',
|
|
192
|
-
key: (entry) => entry.id,
|
|
193
|
-
permissions: { all: DASHBOARD_SET_PERMISSION_ID },
|
|
194
|
-
});
|
|
195
|
-
|
|
196
|
-
const DASHBOARD_HOST_REQUEST = EndpointType.createJson<{
|
|
197
|
-
host: string;
|
|
198
|
-
}, UserResponse>(DASHBOARD_EXTENSION_TYPE, {
|
|
199
|
-
name: 'host_request',
|
|
200
|
-
permissionId: DASHBOARD_WEBVIEW_PERMISSION_ID,
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
export const DASHBOARD_SPEECH_RECOGNITION_PERMISSION_ID: Identifier = DASHBOARD_EXTENSION_TYPE.join('speech_recognition');
|
|
204
|
-
|
|
205
|
-
export type TranscriptSegment = {
|
|
206
|
-
confidence: number;
|
|
207
|
-
transcript: string;
|
|
208
|
-
};
|
|
209
|
-
|
|
210
|
-
export type TranscriptStatus = {
|
|
211
|
-
type: 'idle';
|
|
212
|
-
} | {
|
|
213
|
-
type: 'result';
|
|
214
|
-
timestamp: number;
|
|
215
|
-
segments: TranscriptSegment[];
|
|
216
|
-
} | {
|
|
217
|
-
type: 'final';
|
|
218
|
-
timestamp: number;
|
|
219
|
-
segments: TranscriptSegment[];
|
|
220
|
-
} | {
|
|
221
|
-
type: 'audio_started';
|
|
222
|
-
timestamp: number;
|
|
223
|
-
} | {
|
|
224
|
-
type: 'audio_ended';
|
|
225
|
-
timestamp: number;
|
|
226
|
-
};
|
|
227
|
-
|
|
228
|
-
const DASHBOARD_SPEECH_RECOGNITION = RegistryType.createJson<TranscriptStatus>(DASHBOARD_EXTENSION_TYPE, {
|
|
229
|
-
name: 'speech_recognition',
|
|
230
|
-
defaultValue: { type: 'idle' },
|
|
231
|
-
permissions: {
|
|
232
|
-
read: DASHBOARD_SPEECH_RECOGNITION_PERMISSION_ID,
|
|
233
|
-
write: DASHBOARD_SET_PERMISSION_ID,
|
|
234
|
-
},
|
|
235
|
-
});
|
|
236
|
-
|
|
237
|
-
export type SpeechRecognitionStart = {
|
|
238
|
-
type: 'start';
|
|
239
|
-
};
|
|
240
|
-
|
|
241
|
-
const DASHBOARD_SPEECH_RECOGNITION_START = EndpointType.createJson<SpeechRecognitionStart, UserResponse<undefined>>(DASHBOARD_EXTENSION_TYPE, {
|
|
242
|
-
name: 'speech_recognition_start',
|
|
243
|
-
permissionId: DASHBOARD_SPEECH_RECOGNITION_PERMISSION_ID,
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
interface PromptRequestBase<T extends string> {
|
|
247
|
-
kind: T;
|
|
248
|
-
id: string;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
export interface PromptRequestAppPermissions extends PromptRequestBase<'app/permissions'> {
|
|
252
|
-
app: AppJson;
|
|
253
|
-
permissions: PermissionTypeJson[];
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
export interface PromptRequestAppPlugins extends PromptRequestBase<'app/plugins'> {
|
|
257
|
-
app: AppJson;
|
|
258
|
-
packages: PackageInfo[];
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
export interface PromptRequestAppInstall extends PromptRequestBase<'app/install'> {
|
|
262
|
-
app: AppJson;
|
|
263
|
-
dependencies: Record<string, AppJson>;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
export interface PromptRequestAppUpdate extends PromptRequestBase<'app/update'> {
|
|
267
|
-
old_app: AppJson;
|
|
268
|
-
new_app: AppJson;
|
|
269
|
-
dependencies: Record<string, AppJson>;
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
export interface PromptRequestIndexInstall extends PromptRequestBase<'index/install'> {
|
|
273
|
-
index_url: string;
|
|
274
|
-
meta?: AppIndexRegistryMeta;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
export interface PortProcess {
|
|
278
|
-
port: number;
|
|
279
|
-
name: string;
|
|
280
|
-
exe: string;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
export interface PromptRequestHttpPort extends PromptRequestBase<'http/port'> {
|
|
284
|
-
app: AppJson;
|
|
285
|
-
processes: PortProcess[];
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
export type PromptRequest = (
|
|
289
|
-
PromptRequestAppPermissions
|
|
290
|
-
| PromptRequestAppPlugins
|
|
291
|
-
| PromptRequestAppInstall
|
|
292
|
-
| PromptRequestAppUpdate
|
|
293
|
-
| PromptRequestIndexInstall
|
|
294
|
-
| PromptRequestHttpPort
|
|
295
|
-
);
|
|
296
|
-
|
|
297
|
-
const DASHBOARD_PROMPT_REQUEST = PacketType.createJson<PromptRequest>(DASHBOARD_EXTENSION_TYPE, {
|
|
298
|
-
name: 'prompt_request',
|
|
299
|
-
});
|
|
300
|
-
|
|
301
|
-
export type PromptResult = 'accept' | 'deny' | 'block';
|
|
302
|
-
|
|
303
|
-
interface PromptResponse {
|
|
304
|
-
id: string;
|
|
305
|
-
kind: string;
|
|
306
|
-
result: PromptResult;
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
const DASHBOARD_PROMPT_RESPONSE = PacketType.createJson<PromptResponse>(DASHBOARD_EXTENSION_TYPE, {
|
|
310
|
-
name: 'prompt_response',
|
|
311
|
-
});
|
|
312
|
-
|
|
313
|
-
const DASHBOARD_PROMPT_CLEAR_BLOCKED = EndpointType.createJson<null, null>(DASHBOARD_EXTENSION_TYPE, {
|
|
314
|
-
name: 'prompt_clear_blocked',
|
|
315
|
-
});
|
|
316
|
-
|
|
317
|
-
export class DashboardExtension {
|
|
318
|
-
public readonly type: ExtensionType<DashboardExtension> = DASHBOARD_EXTENSION_TYPE;
|
|
319
|
-
private dashboard: DashboardHandler | null = null;
|
|
320
|
-
private dragDropHandler: DragDropHandler | null = null;
|
|
321
|
-
private dragDropListeners = {
|
|
322
|
-
enter: [] as Array<(state: DragEnter) => unknown>,
|
|
323
|
-
over: [] as Array<(state: DragOver) => unknown>,
|
|
324
|
-
drop: [] as Array<(state: DragDrop) => unknown>,
|
|
325
|
-
leave: [] as Array<(state: DragLeave) => unknown>,
|
|
326
|
-
};
|
|
327
|
-
public readonly allowedHosts: Table<AllowedHost>;
|
|
328
|
-
public readonly speechRecognition: Registry<TranscriptStatus>;
|
|
329
|
-
private readonly webviewHandles: IdentifierMap<{ handle: WebviewHandle; emit: WebviewEventEmit }> = new IdentifierMap();
|
|
330
|
-
|
|
331
|
-
constructor(private readonly omu: Omu) {
|
|
332
|
-
omu.network.registerPacket(
|
|
333
|
-
DASHBOARD_OPEN_APP_PACKET,
|
|
334
|
-
DASHBOARD_DRAG_DROP_STATE_PACKET,
|
|
335
|
-
DASHBOARD_DRAG_DROP_READ_REQUEST_PACKET,
|
|
336
|
-
DASHBOARD_DRAG_DROP_READ_RESPONSE_PACKET,
|
|
337
|
-
DASHBOARD_DRAG_DROP_REQUEST_PACKET,
|
|
338
|
-
DASHBOARD_DRAG_DROP_REQUEST_APPROVAL_PACKET,
|
|
339
|
-
DASHBOARD_WEBVIEW_EVENT_PACKET,
|
|
340
|
-
DASHBOARD_PROMPT_REQUEST,
|
|
341
|
-
DASHBOARD_PROMPT_RESPONSE,
|
|
342
|
-
);
|
|
343
|
-
omu.network.addPacketHandler(DASHBOARD_PROMPT_REQUEST, (request) => {
|
|
344
|
-
this.handlePromptRequest(request);
|
|
345
|
-
});
|
|
346
|
-
omu.network.addPacketHandler(DASHBOARD_OPEN_APP_PACKET, (app) => {
|
|
347
|
-
this.handleOpenApp(app);
|
|
348
|
-
});
|
|
349
|
-
omu.network.addPacketHandler(DASHBOARD_DRAG_DROP_REQUEST_PACKET, (request) => {
|
|
350
|
-
this.handleDragDropRequest(request);
|
|
351
|
-
});
|
|
352
|
-
omu.network.addPacketHandler(DASHBOARD_DRAG_DROP_STATE_PACKET, ({ state }) => {
|
|
353
|
-
switch (state.type) {
|
|
354
|
-
case 'enter': {
|
|
355
|
-
this.dragDropListeners.enter.forEach((fn) => fn(state));
|
|
356
|
-
break;
|
|
357
|
-
}
|
|
358
|
-
case 'over': {
|
|
359
|
-
this.dragDropListeners.over.forEach((fn) => fn(state));
|
|
360
|
-
break;
|
|
361
|
-
}
|
|
362
|
-
case 'drop': {
|
|
363
|
-
this.dragDropListeners.drop.forEach((fn) => fn(state));
|
|
364
|
-
break;
|
|
365
|
-
}
|
|
366
|
-
case 'leave': {
|
|
367
|
-
this.dragDropListeners.leave.forEach((fn) => fn(state));
|
|
368
|
-
break;
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
});
|
|
372
|
-
omu.network.addPacketHandler(DASHBOARD_DRAG_DROP_READ_REQUEST_PACKET, (request) => {
|
|
373
|
-
this.handleDragDropReadRequest(request);
|
|
374
|
-
});
|
|
375
|
-
omu.network.addPacketHandler(DASHBOARD_WEBVIEW_EVENT_PACKET, (packet) => {
|
|
376
|
-
const handle = this.webviewHandles.get(packet.id);
|
|
377
|
-
if (!handle) return;
|
|
378
|
-
handle.emit(packet.event);
|
|
379
|
-
});
|
|
380
|
-
this.allowedHosts = omu.tables.get(DASHBOARD_ALLOWED_WEBVIEW_HOSTS);
|
|
381
|
-
this.speechRecognition = omu.registries.get(DASHBOARD_SPEECH_RECOGNITION);
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
private async executeRequestForDashboard(request: PromptRequest): Promise<PromptResult> {
|
|
385
|
-
const dashboard = this.getDashboard();
|
|
386
|
-
switch (request.kind) {
|
|
387
|
-
case 'app/permissions':
|
|
388
|
-
return await dashboard.handlePermissionRequest(request);
|
|
389
|
-
case 'app/plugins':
|
|
390
|
-
return await dashboard.handlePluginRequest(request);
|
|
391
|
-
case 'app/install':
|
|
392
|
-
return await dashboard.handleInstallApp(request);
|
|
393
|
-
case 'app/update':
|
|
394
|
-
return await dashboard.handleUpdateApp(request);
|
|
395
|
-
case 'index/install':
|
|
396
|
-
return await dashboard.handleIndexInstall(request);
|
|
397
|
-
case 'http/port':
|
|
398
|
-
return await dashboard.handleHttpPortRequest(request);
|
|
399
|
-
default:
|
|
400
|
-
throw new Error(`Unknown prompt requested: ${JSON.stringify(request)}`);
|
|
401
|
-
}
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
private async handlePromptRequest(request: PromptRequest): Promise<void> {
|
|
405
|
-
const response = await this.executeRequestForDashboard(request);
|
|
406
|
-
this.omu.send(DASHBOARD_PROMPT_RESPONSE, {
|
|
407
|
-
id: request.id,
|
|
408
|
-
kind: request.kind,
|
|
409
|
-
result: response,
|
|
410
|
-
});
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
private async handleOpenApp(app: App): Promise<void> {
|
|
414
|
-
const dashboard = this.getDashboard();
|
|
415
|
-
await dashboard.handleOpenApp(app);
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
private async handleDragDropRequest(request: DragDropRequestDashboard): Promise<void> {
|
|
419
|
-
const dashboard = this.getDashboard();
|
|
420
|
-
const accepted = await dashboard.handleDragDropRequest(request);
|
|
421
|
-
this.omu.send(DASHBOARD_DRAG_DROP_REQUEST_APPROVAL_PACKET, {
|
|
422
|
-
ok: accepted,
|
|
423
|
-
request_id: request.request_id,
|
|
424
|
-
});
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
private async handleDragDropReadRequest(request: DragDropReadRequestDashboard): Promise<void> {
|
|
428
|
-
const dashboard = this.getDashboard();
|
|
429
|
-
const response = await dashboard.handleDragDropReadRequest(request);
|
|
430
|
-
this.omu.send(DASHBOARD_DRAG_DROP_READ_RESPONSE_PACKET, response);
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
private getDashboard(): DashboardHandler {
|
|
434
|
-
if (this.dashboard === null) {
|
|
435
|
-
throw new Error('Dashboard not set');
|
|
436
|
-
}
|
|
437
|
-
return this.dashboard;
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
public set(dashboard: DashboardHandler): void {
|
|
441
|
-
this.omu.permissions.require(DASHBOARD_SET_PERMISSION_ID);
|
|
442
|
-
if (this.dashboard !== null) {
|
|
443
|
-
throw new Error('Dashboard already set');
|
|
444
|
-
}
|
|
445
|
-
this.dashboard = dashboard;
|
|
446
|
-
|
|
447
|
-
this.omu.server.apps.event.remove.listen(async (apps) => {
|
|
448
|
-
for (const app of apps.values()) {
|
|
449
|
-
const hosts = await this.allowedHosts.get(app.id.key());
|
|
450
|
-
if (!hosts) continue;
|
|
451
|
-
this.allowedHosts.remove(hosts);
|
|
452
|
-
}
|
|
453
|
-
});
|
|
454
|
-
|
|
455
|
-
const requireHost = async (params: InvokedParams, host: string): Promise<UserResponse<undefined>> => {
|
|
456
|
-
const id = params.caller.key();
|
|
457
|
-
const hostEntry: AllowedHost = await this.allowedHosts.get(id) ?? { id: id, hosts: [] };
|
|
458
|
-
const allowed = hostEntry.hosts.includes(host);
|
|
459
|
-
if (!allowed) {
|
|
460
|
-
const result = await dashboard.handleHostRequest({
|
|
461
|
-
host,
|
|
462
|
-
}, params);
|
|
463
|
-
if (result === 'accept') {
|
|
464
|
-
const hostEntry: AllowedHost = await this.allowedHosts.get(id) ?? { id: id, hosts: [] };
|
|
465
|
-
hostEntry.hosts.push(host);
|
|
466
|
-
await this.allowedHosts.update(hostEntry);
|
|
467
|
-
} else {
|
|
468
|
-
return { type: 'cancelled' };
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
return { type: 'ok', value: undefined };
|
|
472
|
-
};
|
|
473
|
-
|
|
474
|
-
this.omu.endpoints.bind(DASHBOARD_COOKIES_GET, async (request, params): Promise<UserResponse<Cookie[]>> => {
|
|
475
|
-
const { url } = request;
|
|
476
|
-
const { host } = new URL(url);
|
|
477
|
-
const hostAccessResult = await requireHost(params, host);
|
|
478
|
-
if (hostAccessResult.type !== 'ok') {
|
|
479
|
-
return hostAccessResult;
|
|
480
|
-
}
|
|
481
|
-
return await dashboard.getCookies(request);
|
|
482
|
-
});
|
|
483
|
-
this.omu.endpoints.bind(DASHBOARD_HOST_REQUEST, async (request, params): Promise<UserResponse> => {
|
|
484
|
-
const { host } = request;
|
|
485
|
-
const result = await requireHost(params, host);
|
|
486
|
-
return result;
|
|
487
|
-
});
|
|
488
|
-
this.omu.endpoints.bind(DASHBOARD_WEBVIEW_REQUEST, async (request, params): Promise<WebviewResponse> => {
|
|
489
|
-
const url = new URL(request.url);
|
|
490
|
-
const { host } = url;
|
|
491
|
-
const hostAccessResult = await requireHost(params, host);
|
|
492
|
-
if (hostAccessResult.type !== 'ok') {
|
|
493
|
-
return hostAccessResult;
|
|
494
|
-
}
|
|
495
|
-
const emit = async (event: WebviewEvent) => {
|
|
496
|
-
this.omu.send(DASHBOARD_WEBVIEW_EVENT_PACKET, {
|
|
497
|
-
id,
|
|
498
|
-
target: params.caller,
|
|
499
|
-
event,
|
|
500
|
-
});
|
|
501
|
-
};
|
|
502
|
-
const id = await dashboard.createWebview(request, params, emit);
|
|
503
|
-
return {
|
|
504
|
-
type: 'ok',
|
|
505
|
-
value: {
|
|
506
|
-
id: id.key(),
|
|
507
|
-
},
|
|
508
|
-
};
|
|
509
|
-
});
|
|
510
|
-
this.omu.endpoints.bind(DASHBOARD_WEBVIEW_CLOSE, async (request, params): Promise<WebviewResponse> => {
|
|
511
|
-
const id = await dashboard.getWebview(request, params);
|
|
512
|
-
if (!id) {
|
|
513
|
-
return {
|
|
514
|
-
type: 'cancelled',
|
|
515
|
-
};
|
|
516
|
-
}
|
|
517
|
-
await dashboard.closeWebview(request, params);
|
|
518
|
-
return {
|
|
519
|
-
type: 'ok',
|
|
520
|
-
value: {
|
|
521
|
-
id: id.key(),
|
|
522
|
-
},
|
|
523
|
-
};
|
|
524
|
-
});
|
|
525
|
-
this.omu.endpoints.bind(DASHBOARD_SPEECH_RECOGNITION_START, async (request, params): Promise<UserResponse<undefined>> => {
|
|
526
|
-
const result = await dashboard.speechRecognitionStart(request, params);
|
|
527
|
-
return result;
|
|
528
|
-
});
|
|
529
|
-
this.omu.network.addTask(async () => {
|
|
530
|
-
const response = await this.omu.endpoints.call(
|
|
531
|
-
DASHBOARD_SET_ENDPOINT,
|
|
532
|
-
this.omu.app.id,
|
|
533
|
-
);
|
|
534
|
-
if (!response.success) {
|
|
535
|
-
throw new Error('Failed to set dashboard');
|
|
536
|
-
}
|
|
537
|
-
});
|
|
538
|
-
}
|
|
539
|
-
|
|
540
|
-
public requestWebview(options: WebviewRequest): PromiseResult<WebviewHandle, UserError> {
|
|
541
|
-
const { promise, resolve, reject } = PromiseResult.create<WebviewHandle, UserError>();
|
|
542
|
-
this.omu.endpoints.call(
|
|
543
|
-
DASHBOARD_WEBVIEW_REQUEST,
|
|
544
|
-
options,
|
|
545
|
-
).then((result) => {
|
|
546
|
-
if (result.type !== 'ok') {
|
|
547
|
-
reject(result);
|
|
548
|
-
return;
|
|
549
|
-
}
|
|
550
|
-
const { value } = result;
|
|
551
|
-
const id = Identifier.fromKey(value.id);
|
|
552
|
-
const eventListeners: WebviewEventListeners = {};
|
|
553
|
-
const handle: WebviewHandle = {
|
|
554
|
-
id,
|
|
555
|
-
url: options.url,
|
|
556
|
-
close: async () => {
|
|
557
|
-
await this.omu.endpoints.call(
|
|
558
|
-
DASHBOARD_WEBVIEW_CLOSE,
|
|
559
|
-
{ id: id.key() },
|
|
560
|
-
);
|
|
561
|
-
},
|
|
562
|
-
getCookies: () => this.getCookies({
|
|
563
|
-
url: options.url,
|
|
564
|
-
}),
|
|
565
|
-
on: function <T extends WebviewEvent['type']>(key: T, callback: (event: Extract<WebviewEvent, { type: T }>) => void): void {
|
|
566
|
-
if (!eventListeners[key]) {
|
|
567
|
-
eventListeners[key] = [];
|
|
568
|
-
}
|
|
569
|
-
const listeners = eventListeners[key]!;
|
|
570
|
-
listeners.push(callback);
|
|
571
|
-
},
|
|
572
|
-
join: async () => {
|
|
573
|
-
await new Promise<void>((resolve) => {
|
|
574
|
-
handle.on('closed', () => resolve());
|
|
575
|
-
});
|
|
576
|
-
},
|
|
577
|
-
};
|
|
578
|
-
this.webviewHandles.set(id, {
|
|
579
|
-
handle,
|
|
580
|
-
emit: function <T extends WebviewEvent['type']>(event: Extract<WebviewEvent, { type: T }>): void {
|
|
581
|
-
const listeners = eventListeners[event.type];
|
|
582
|
-
if (!listeners) return;
|
|
583
|
-
for (const listener of listeners) {
|
|
584
|
-
listener(event);
|
|
585
|
-
}
|
|
586
|
-
},
|
|
587
|
-
});
|
|
588
|
-
|
|
589
|
-
resolve(handle);
|
|
590
|
-
});
|
|
591
|
-
return promise;
|
|
592
|
-
}
|
|
593
|
-
|
|
594
|
-
public getCookies(options: GetCookiesRequest): PromiseResult<Cookie[], UserError> {
|
|
595
|
-
const { promise, resolve, reject } = PromiseResult.create<Cookie[], UserError>();
|
|
596
|
-
this.omu.endpoints.call(
|
|
597
|
-
DASHBOARD_COOKIES_GET,
|
|
598
|
-
options,
|
|
599
|
-
).then((response) => {
|
|
600
|
-
if (response.type === 'ok') {
|
|
601
|
-
resolve(response.value);
|
|
602
|
-
return;
|
|
603
|
-
} else {
|
|
604
|
-
reject(response);
|
|
605
|
-
}
|
|
606
|
-
});
|
|
607
|
-
return promise;
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
public async openApp(app: App): Promise<void> {
|
|
611
|
-
return await this.omu.endpoints.call(DASHBOARD_OPEN_APP_ENDPOINT, app);
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
public async installApp(app: App): Promise<AppInstallResponse> {
|
|
615
|
-
return await this.omu.endpoints.call(DASHBOARD_APP_INSTALL_ENDPOINT, app);
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
public async clearBlockedPrompts(): Promise<null> {
|
|
619
|
-
return await this.omu.endpoints.call(DASHBOARD_PROMPT_CLEAR_BLOCKED, null);
|
|
620
|
-
}
|
|
621
|
-
|
|
622
|
-
public async requestDragDrop(): Promise<DragDropHandler> {
|
|
623
|
-
await this.omu.endpoints.call(DASHBOARD_DRAG_DROP_REQUEST_ENDPOINT, {});
|
|
624
|
-
const listeners = this.dragDropListeners;
|
|
625
|
-
const client = this.omu;
|
|
626
|
-
this.dragDropHandler = {
|
|
627
|
-
onEnter(fn) { listeners.enter.push(fn); },
|
|
628
|
-
onOver(fn) { listeners.over.push(fn); },
|
|
629
|
-
onDrop(fn) { listeners.drop.push(fn); },
|
|
630
|
-
onLeave(fn) { listeners.leave.push(fn); },
|
|
631
|
-
async read(id) { return await client.endpoints.call(DASHBOARD_DRAG_DROP_READ_ENDPOINT, { drag_id: id }); },
|
|
632
|
-
};
|
|
633
|
-
return this.dragDropHandler;
|
|
634
|
-
}
|
|
635
|
-
|
|
636
|
-
public async notifyDropDragState(packet: FileDragPacket): Promise<void> {
|
|
637
|
-
this.omu.send(DASHBOARD_DRAG_DROP_STATE_PACKET, packet);
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
public requestSpeechRecognition(): PromiseResult<Registry<TranscriptStatus>, UserError> {
|
|
641
|
-
const { promise, resolve, reject } = PromiseResult.create<Registry<TranscriptStatus>, UserError>();
|
|
642
|
-
this.omu.endpoints.call(DASHBOARD_SPEECH_RECOGNITION_START, { type: 'start' }).then((result) => {
|
|
643
|
-
if (result.type === 'ok') {
|
|
644
|
-
resolve(this.speechRecognition);
|
|
645
|
-
} else {
|
|
646
|
-
reject(result);
|
|
647
|
-
}
|
|
648
|
-
});
|
|
649
|
-
return promise;
|
|
650
|
-
}
|
|
651
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
export {
|
|
2
|
-
Cookie,
|
|
3
|
-
DASHBOARD_APP_INSTALL_PERMISSION_ID,
|
|
4
|
-
DAShBOARD_DRAG_DROP_PERMISSION_ID,
|
|
5
|
-
DASHBOARD_OPEN_APP_PERMISSION_ID,
|
|
6
|
-
DASHBOARD_SET_PERMISSION_ID,
|
|
7
|
-
DASHBOARD_SPEECH_RECOGNITION_PERMISSION_ID,
|
|
8
|
-
DASHBOARD_WEBVIEW_PERMISSION_ID,
|
|
9
|
-
DASHOBARD_APP_EDIT_PERMISSION_ID,
|
|
10
|
-
DASHOBARD_APP_READ_PERMISSION_ID,
|
|
11
|
-
GetCookiesRequest,
|
|
12
|
-
HostRequest,
|
|
13
|
-
UserResponse,
|
|
14
|
-
WebviewPacket,
|
|
15
|
-
WebviewRequest,
|
|
16
|
-
type PortProcess,
|
|
17
|
-
type PromptRequest,
|
|
18
|
-
type PromptRequestAppInstall,
|
|
19
|
-
type PromptRequestAppPermissions,
|
|
20
|
-
type PromptRequestAppPlugins,
|
|
21
|
-
type PromptRequestAppUpdate,
|
|
22
|
-
type PromptRequestHttpPort,
|
|
23
|
-
type PromptRequestIndexInstall,
|
|
24
|
-
type PromptResult,
|
|
25
|
-
type SpeechRecognitionStart,
|
|
26
|
-
type TranscriptSegment,
|
|
27
|
-
type TranscriptStatus,
|
|
28
|
-
type WebviewEvent,
|
|
29
|
-
} from './extension.js';
|
|
30
|
-
export type { DashboardHandler } from './handler';
|
|
31
|
-
export {
|
|
32
|
-
DragDropFile,
|
|
33
|
-
DragDropReadRequestDashboard,
|
|
34
|
-
DragDropReadResponse,
|
|
35
|
-
DragDropRequestDashboard,
|
|
36
|
-
FileData,
|
|
37
|
-
} from './packets.js';
|
|
38
|
-
|