@omujs/omu 0.9.49 → 0.10.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.
- package/dist/address.js +1 -0
- package/dist/address.js.map +7 -0
- package/dist/api/asset/extension.js +2 -0
- package/dist/api/asset/extension.js.map +7 -0
- package/dist/api/asset/index.js +2 -0
- package/dist/api/asset/index.js.map +7 -0
- package/dist/{dts/api → api}/dashboard/extension.d.ts +9 -5
- package/dist/api/dashboard/extension.js +2 -0
- package/dist/api/dashboard/extension.js.map +7 -0
- package/dist/{dts/api → api}/dashboard/handler.d.ts +3 -3
- package/dist/api/dashboard/handler.js +1 -0
- package/dist/api/dashboard/handler.js.map +7 -0
- package/dist/api/dashboard/index.d.ts +3 -0
- package/dist/api/dashboard/index.js +2 -0
- package/dist/api/dashboard/index.js.map +7 -0
- package/dist/{dts/api → api}/dashboard/packets.d.ts +2 -12
- package/dist/api/dashboard/packets.js +2 -0
- package/dist/api/dashboard/packets.js.map +7 -0
- package/dist/{dts/api → api}/endpoint/endpoint.d.ts +2 -2
- package/dist/api/endpoint/endpoint.js +2 -0
- package/dist/api/endpoint/endpoint.js.map +7 -0
- package/dist/api/endpoint/extension.js +2 -0
- package/dist/api/endpoint/extension.js.map +7 -0
- package/dist/api/endpoint/index.js +2 -0
- package/dist/api/endpoint/index.js.map +7 -0
- package/dist/api/endpoint/packets.js +2 -0
- package/dist/api/endpoint/packets.js.map +7 -0
- package/dist/api/extension-registry.js +2 -0
- package/dist/api/extension-registry.js.map +7 -0
- package/dist/api/extension.js +2 -0
- package/dist/api/extension.js.map +7 -0
- package/dist/api/http/extension.js +2 -0
- package/dist/api/http/extension.js.map +7 -0
- package/dist/api/http/http.js +2 -0
- package/dist/api/http/http.js.map +7 -0
- package/dist/api/http/index.js +2 -0
- package/dist/api/http/index.js.map +7 -0
- package/dist/api/http/websocket.js +2 -0
- package/dist/api/http/websocket.js.map +7 -0
- package/dist/api/i18n/extension.js +2 -0
- package/dist/api/i18n/extension.js.map +7 -0
- package/dist/api/i18n/index.js +2 -0
- package/dist/api/i18n/index.js.map +7 -0
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.js +2 -0
- package/dist/api/index.js.map +7 -0
- package/dist/api/logger/extension.js +2 -0
- package/dist/api/logger/extension.js.map +7 -0
- package/dist/api/logger/index.js +2 -0
- package/dist/api/logger/index.js.map +7 -0
- package/dist/api/logger/packets.js +2 -0
- package/dist/api/logger/packets.js.map +7 -0
- package/dist/api/permission/extension.js +2 -0
- package/dist/api/permission/extension.js.map +7 -0
- package/dist/api/permission/index.js +2 -0
- package/dist/api/permission/index.js.map +7 -0
- package/dist/{dts/api → api}/permission/permission.d.ts +1 -1
- package/dist/api/permission/permission.js +2 -0
- package/dist/api/permission/permission.js.map +7 -0
- package/dist/api/plugin/extension.js +2 -0
- package/dist/api/plugin/extension.js.map +7 -0
- package/dist/api/plugin/index.js +2 -0
- package/dist/api/plugin/index.js.map +7 -0
- package/dist/api/plugin/package-info.js +1 -0
- package/dist/api/plugin/package-info.js.map +7 -0
- package/dist/{dts/api → api}/registry/extension.d.ts +1 -1
- package/dist/api/registry/extension.js +2 -0
- package/dist/api/registry/extension.js.map +7 -0
- package/dist/api/registry/index.js +2 -0
- package/dist/api/registry/index.js.map +7 -0
- package/dist/api/registry/packets.js +2 -0
- package/dist/api/registry/packets.js.map +7 -0
- package/dist/{dts/api → api}/registry/registry.d.ts +2 -2
- package/dist/api/registry/registry.js +2 -0
- package/dist/api/registry/registry.js.map +7 -0
- package/dist/api/server/extension.js +2 -0
- package/dist/api/server/extension.js.map +7 -0
- package/dist/api/server/index.js +2 -0
- package/dist/api/server/index.js.map +7 -0
- package/dist/api/session/extension.js +2 -0
- package/dist/api/session/extension.js.map +7 -0
- package/dist/api/session/index.js +2 -0
- package/dist/api/session/index.js.map +7 -0
- package/dist/api/signal/extension.js +2 -0
- package/dist/api/signal/extension.js.map +7 -0
- package/dist/api/signal/index.d.ts +1 -0
- package/dist/api/signal/index.js +2 -0
- package/dist/api/signal/index.js.map +7 -0
- package/dist/api/signal/packets.js +2 -0
- package/dist/api/signal/packets.js.map +7 -0
- package/dist/{dts/api → api}/signal/signal.d.ts +2 -2
- package/dist/api/signal/signal.js +2 -0
- package/dist/api/signal/signal.js.map +7 -0
- package/dist/api/table/extension.js +2 -0
- package/dist/api/table/extension.js.map +7 -0
- package/dist/api/table/index.js +2 -0
- package/dist/api/table/index.js.map +7 -0
- package/dist/api/table/packets.js +2 -0
- package/dist/api/table/packets.js.map +7 -0
- package/dist/{dts/api → api}/table/table.d.ts +3 -3
- package/dist/api/table/table.js +2 -0
- package/dist/api/table/table.js.map +7 -0
- package/dist/app.js +2 -0
- package/dist/app.js.map +7 -0
- package/dist/const.js +2 -0
- package/dist/const.js.map +7 -0
- package/dist/errors.js +2 -0
- package/dist/errors.js.map +7 -0
- package/dist/event/index.js +2 -0
- package/dist/event/index.js.map +7 -0
- package/dist/helper.js +2 -0
- package/dist/helper.js.map +7 -0
- package/dist/identifier.js +2 -0
- package/dist/identifier.js.map +7 -0
- package/dist/{dts/index.d.ts → index.d.ts} +3 -3
- package/dist/index.js +2 -0
- package/dist/index.js.map +7 -0
- package/dist/localization/index.js +2 -0
- package/dist/localization/index.js.map +7 -0
- package/dist/localization/locale.js +2 -0
- package/dist/localization/locale.js.map +7 -0
- package/dist/localization/localization.js +1 -0
- package/dist/localization/localization.js.map +7 -0
- package/dist/lock.js +2 -0
- package/dist/lock.js.map +7 -0
- package/dist/network/connection.js +2 -0
- package/dist/network/connection.js.map +7 -0
- package/dist/network/encryption.js +2 -0
- package/dist/network/encryption.js.map +7 -0
- package/dist/network/frame-transport.js +2 -0
- package/dist/network/frame-transport.js.map +7 -0
- package/dist/network/index.js +2 -0
- package/dist/network/index.js.map +7 -0
- package/dist/network/network.js +2 -0
- package/dist/network/network.js.map +7 -0
- package/dist/network/packet/index.js +2 -0
- package/dist/network/packet/index.js.map +7 -0
- package/dist/network/packet/packet-types.js +2 -0
- package/dist/network/packet/packet-types.js.map +7 -0
- package/dist/{dts/network → network}/packet/packet.d.ts +2 -2
- package/dist/network/packet/packet.js +2 -0
- package/dist/network/packet/packet.js.map +7 -0
- package/dist/network/websocket-transport.js +2 -0
- package/dist/network/websocket-transport.js.map +7 -0
- package/dist/omu.js +2 -0
- package/dist/omu.js.map +7 -0
- package/dist/result.js +2 -0
- package/dist/result.js.map +7 -0
- package/dist/{dts/serialize → serialize}/bytebuffer.d.ts +1 -1
- package/dist/serialize/bytebuffer.js +2 -0
- package/dist/serialize/bytebuffer.js.map +7 -0
- package/dist/serialize/index.d.ts +2 -0
- package/dist/serialize/index.js +2 -0
- package/dist/serialize/index.js.map +7 -0
- package/dist/serialize/serializer.js +2 -0
- package/dist/serialize/serializer.js.map +7 -0
- package/dist/token.js +2 -0
- package/dist/token.js.map +7 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +7 -0
- package/package.json +9 -9
- package/dist/dts/api/dashboard/index.d.ts +0 -3
- package/dist/dts/api/index.d.ts +0 -2
- package/dist/dts/api/signal/index.d.ts +0 -1
- package/dist/dts/serialize/index.d.ts +0 -2
- package/dist/dts/version.d.ts +0 -2
- package/dist/esm/address.js +0 -4
- package/dist/esm/api/asset/extension.js +0 -911
- package/dist/esm/api/asset/index.js +0 -909
- package/dist/esm/api/dashboard/extension.js +0 -1362
- package/dist/esm/api/dashboard/handler.js +0 -4
- package/dist/esm/api/dashboard/index.js +0 -1361
- package/dist/esm/api/dashboard/packets.js +0 -419
- package/dist/esm/api/endpoint/endpoint.js +0 -383
- package/dist/esm/api/endpoint/extension.js +0 -1096
- package/dist/esm/api/endpoint/index.js +0 -383
- package/dist/esm/api/endpoint/packets.js +0 -799
- package/dist/esm/api/extension-registry.js +0 -23
- package/dist/esm/api/extension.js +0 -278
- package/dist/esm/api/http/extension.js +0 -1420
- package/dist/esm/api/http/http.js +0 -448
- package/dist/esm/api/http/index.js +0 -1419
- package/dist/esm/api/http/websocket.js +0 -220
- package/dist/esm/api/i18n/extension.js +0 -1339
- package/dist/esm/api/i18n/index.js +0 -1337
- package/dist/esm/api/index.js +0 -295
- package/dist/esm/api/logger/extension.js +0 -856
- package/dist/esm/api/logger/index.js +0 -852
- package/dist/esm/api/logger/packets.js +0 -673
- package/dist/esm/api/permission/extension.js +0 -535
- package/dist/esm/api/permission/index.js +0 -294
- package/dist/esm/api/permission/permission.js +0 -294
- package/dist/esm/api/plugin/extension.js +0 -531
- package/dist/esm/api/plugin/index.js +0 -529
- package/dist/esm/api/plugin/package-info.js +0 -4
- package/dist/esm/api/registry/extension.js +0 -1286
- package/dist/esm/api/registry/index.js +0 -1285
- package/dist/esm/api/registry/packets.js +0 -694
- package/dist/esm/api/registry/registry.js +0 -383
- package/dist/esm/api/server/extension.js +0 -2140
- package/dist/esm/api/server/index.js +0 -2118
- package/dist/esm/api/session/extension.js +0 -2235
- package/dist/esm/api/session/index.js +0 -2235
- package/dist/esm/api/signal/extension.js +0 -1031
- package/dist/esm/api/signal/index.js +0 -379
- package/dist/esm/api/signal/packets.js +0 -690
- package/dist/esm/api/signal/signal.js +0 -379
- package/dist/esm/api/table/extension.js +0 -1553
- package/dist/esm/api/table/index.js +0 -1552
- package/dist/esm/api/table/packets.js +0 -904
- package/dist/esm/api/table/table.js +0 -383
- package/dist/esm/app.js +0 -264
- package/dist/esm/const.js +0 -11
- package/dist/esm/errors.js +0 -548
- package/dist/esm/event/index.js +0 -22
- package/dist/esm/helper.js +0 -15
- package/dist/esm/identifier.js +0 -266
- package/dist/esm/index.js +0 -5186
- package/dist/esm/localization/index.js +0 -742
- package/dist/esm/localization/locale.js +0 -742
- package/dist/esm/localization/localization.js +0 -4
- package/dist/esm/lock.js +0 -46
- package/dist/esm/network/connection.js +0 -293
- package/dist/esm/network/encryption.js +0 -986
- package/dist/esm/network/frame-transport.js +0 -531
- package/dist/esm/network/index.js +0 -1627
- package/dist/esm/network/network.js +0 -1368
- package/dist/esm/network/packet/index.js +0 -485
- package/dist/esm/network/packet/packet-types.js +0 -486
- package/dist/esm/network/packet/packet.js +0 -126
- package/dist/esm/network/websocket-transport.js +0 -493
- package/dist/esm/omu.js +0 -4945
- package/dist/esm/result.js +0 -68
- package/dist/esm/serialize/bytebuffer.js +0 -384
- package/dist/esm/serialize/index.js +0 -471
- package/dist/esm/serialize/serializer.js +0 -97
- package/dist/esm/token.js +0 -42
- package/dist/esm/version.js +0 -11
- package/dist/tsconfig.tsbuildinfo +0 -1
- /package/dist/{dts/address.d.ts → address.d.ts} +0 -0
- /package/dist/{dts/api → api}/asset/extension.d.ts +0 -0
- /package/dist/{dts/api → api}/asset/index.d.ts +0 -0
- /package/dist/{dts/api → api}/endpoint/extension.d.ts +0 -0
- /package/dist/{dts/api → api}/endpoint/index.d.ts +0 -0
- /package/dist/{dts/api → api}/endpoint/packets.d.ts +0 -0
- /package/dist/{dts/api → api}/extension-registry.d.ts +0 -0
- /package/dist/{dts/api → api}/extension.d.ts +0 -0
- /package/dist/{dts/api → api}/http/extension.d.ts +0 -0
- /package/dist/{dts/api → api}/http/http.d.ts +0 -0
- /package/dist/{dts/api → api}/http/index.d.ts +0 -0
- /package/dist/{dts/api → api}/http/websocket.d.ts +0 -0
- /package/dist/{dts/api → api}/i18n/extension.d.ts +0 -0
- /package/dist/{dts/api → api}/i18n/index.d.ts +0 -0
- /package/dist/{dts/api → api}/logger/extension.d.ts +0 -0
- /package/dist/{dts/api → api}/logger/index.d.ts +0 -0
- /package/dist/{dts/api → api}/logger/packets.d.ts +0 -0
- /package/dist/{dts/api → api}/permission/extension.d.ts +0 -0
- /package/dist/{dts/api → api}/permission/index.d.ts +0 -0
- /package/dist/{dts/api → api}/plugin/extension.d.ts +0 -0
- /package/dist/{dts/api → api}/plugin/index.d.ts +0 -0
- /package/dist/{dts/api → api}/plugin/package-info.d.ts +0 -0
- /package/dist/{dts/api → api}/registry/index.d.ts +0 -0
- /package/dist/{dts/api → api}/registry/packets.d.ts +0 -0
- /package/dist/{dts/api → api}/server/extension.d.ts +0 -0
- /package/dist/{dts/api → api}/server/index.d.ts +0 -0
- /package/dist/{dts/api → api}/session/extension.d.ts +0 -0
- /package/dist/{dts/api → api}/session/index.d.ts +0 -0
- /package/dist/{dts/api → api}/signal/extension.d.ts +0 -0
- /package/dist/{dts/api → api}/signal/packets.d.ts +0 -0
- /package/dist/{dts/api → api}/table/extension.d.ts +0 -0
- /package/dist/{dts/api → api}/table/index.d.ts +0 -0
- /package/dist/{dts/api → api}/table/packets.d.ts +0 -0
- /package/dist/{dts/app.d.ts → app.d.ts} +0 -0
- /package/dist/{dts/const.d.ts → const.d.ts} +0 -0
- /package/dist/{dts/errors.d.ts → errors.d.ts} +0 -0
- /package/dist/{dts/event → event}/index.d.ts +0 -0
- /package/dist/{dts/helper.d.ts → helper.d.ts} +0 -0
- /package/dist/{dts/identifier.d.ts → identifier.d.ts} +0 -0
- /package/dist/{dts/localization → localization}/index.d.ts +0 -0
- /package/dist/{dts/localization → localization}/locale.d.ts +0 -0
- /package/dist/{dts/localization → localization}/localization.d.ts +0 -0
- /package/dist/{dts/lock.d.ts → lock.d.ts} +0 -0
- /package/dist/{dts/network → network}/connection.d.ts +0 -0
- /package/dist/{dts/network → network}/encryption.d.ts +0 -0
- /package/dist/{dts/network → network}/frame-transport.d.ts +0 -0
- /package/dist/{dts/network → network}/index.d.ts +0 -0
- /package/dist/{dts/network → network}/network.d.ts +0 -0
- /package/dist/{dts/network → network}/packet/index.d.ts +0 -0
- /package/dist/{dts/network → network}/packet/packet-types.d.ts +0 -0
- /package/dist/{dts/network → network}/websocket-transport.d.ts +0 -0
- /package/dist/{dts/omu.d.ts → omu.d.ts} +0 -0
- /package/dist/{dts/result.d.ts → result.d.ts} +0 -0
- /package/dist/{dts/serialize → serialize}/serializer.d.ts +0 -0
- /package/dist/{dts/token.d.ts → token.d.ts} +0 -0
package/dist/address.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=address.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Identifier as n}from"../../identifier";import{ByteReader as u,ByteWriter as f,Serializer as o}from"../../serialize";import{EndpointType as p}from"../endpoint/endpoint.js";import{ExtensionType as I}from"../extension.js";const a=new I("asset",r=>new _(r)),m=new o(r=>{const e=new f;return e.writeString(r.id.key()),e.writeUint8Array(r.buffer),e.finish()},r=>{const e=u.fromUint8Array(r),t=n.fromKey(e.readString()),s=e.readUint8Array();return e.finish(),{id:t,buffer:s}}),A=new o(r=>{const e=new f;e.writeULEB128(r.length);for(const t of r)e.writeString(t.id.key()),e.writeUint8Array(t.buffer);return e.finish()},r=>{const e=u.fromUint8Array(r),t=e.readULEB128(),s=[];for(let i=0;i<t;i++){const l=n.fromKey(e.readString()),c=e.readUint8Array();s.push({id:l,buffer:c})}return e.finish(),s}),d=a.join("permission"),y=p.createSerialized(a,{name:"upload",requestSerializer:m,responseSerializer:o.of(n).toJson(),permissionId:d}),E=p.createSerialized(a,{name:"upload_many",requestSerializer:A,responseSerializer:o.of(n).toArray().pipe(o.json()),permissionId:d}),S=p.createSerialized(a,{name:"download",requestSerializer:o.of(n).pipe(o.json()),responseSerializer:m,permissionId:d}),h=p.createSerialized(a,{name:"download_many",requestSerializer:o.of(n).toArray().pipe(o.json()),responseSerializer:A,permissionId:d}),w=p.createJson(a,{name:"delete",requestSerializer:n,permissionId:d}),T=p.createJson(a,{name:"token_generate",permissionId:d});class _{constructor(e){this.omu=e;e.network.event.disconnected.listen(()=>{this.assetToken=void 0}),e.onReady(async()=>{e.permissions.required(d)&&await this.requestGenerateAssetToken()})}type=a;assetToken=void 0;async upload(e,t){return await this.omu.endpoints.call(y,{id:n.from(e),buffer:t})}async uploadMany(...e){return await this.omu.endpoints.call(E,e)}async download(e){const t=n.from(e);return await this.omu.endpoints.call(S,t)}async downloadMany(...e){return await this.omu.endpoints.call(h,e.map(s=>n.from(s)))}async delete(e){const t=n.from(e);await this.omu.endpoints.call(w,t)}async requestGenerateAssetToken(){const e=await this.omu.endpoints.call(T,{});this.assetToken=e.token}url(e,t){if(!this.assetToken)throw new Error("Asset token is not set");const s=n.from(e).key(),i=this.omu.network.address,l=i.secure?"https":"http",c=new URL(`${l}://${i.host}:${i.port}/asset`);return c.searchParams.set("asset_token",this.assetToken),c.searchParams.set("id",s),t?.cache==="no-cache"&&c.searchParams.set("t",Date.now().toString()),c.toString()}proxy(e){if(!this.assetToken)throw new Error("Asset token is not set");const t=this.omu.network.address,s=t.secure?"https":"http",i=new URL(`${s}://${t.host}:${t.port}/proxy`);return i.searchParams.set("asset_token",this.assetToken),i.searchParams.set("url",e),i.toString()}}export{a as ASSET_EXTENSION_TYPE,d as ASSET_PERMISSION_ID,_ as AssetExtension};
|
|
2
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/asset/extension.ts"],
|
|
4
|
+
"sourcesContent": ["import { Identifier, IntoId } from '../../identifier';\nimport { Omu } from '../../omu';\nimport { ByteReader, ByteWriter, Serializer } from '../../serialize';\nimport { EndpointType } from '../endpoint/endpoint.js';\nimport { ExtensionType } from '../extension.js';\n\nexport const ASSET_EXTENSION_TYPE: ExtensionType<AssetExtension> = new ExtensionType(\n 'asset',\n (omu: Omu) => new AssetExtension(omu),\n);\n\nexport type Asset = {\n id: Identifier;\n buffer: Uint8Array;\n};\n\nconst FILE_SERIALIZER = new Serializer<Asset, Uint8Array>(\n (file) => {\n const writer = new ByteWriter();\n writer.writeString(file.id.key());\n writer.writeUint8Array(file.buffer);\n return writer.finish();\n },\n (data) => {\n const reader = ByteReader.fromUint8Array(data);\n const identifier = Identifier.fromKey(reader.readString());\n const buffer = reader.readUint8Array();\n reader.finish();\n return { id: identifier, buffer };\n },\n);\nconst FILE_ARRAY_SERIALIZER = new Serializer<Asset[], Uint8Array>(\n (files) => {\n const writer = new ByteWriter();\n writer.writeULEB128(files.length);\n for (const file of files) {\n writer.writeString(file.id.key());\n writer.writeUint8Array(file.buffer);\n }\n return writer.finish();\n },\n (data) => {\n const reader = ByteReader.fromUint8Array(data);\n const length = reader.readULEB128();\n const files: Asset[] = [];\n for (let i = 0; i < length; i++) {\n const identifier = Identifier.fromKey(reader.readString());\n const buffer = reader.readUint8Array();\n files.push({ id: identifier, buffer });\n }\n reader.finish();\n return files;\n },\n);\n\nexport const ASSET_PERMISSION_ID: Identifier = ASSET_EXTENSION_TYPE.join('permission');\n\nconst ASSET_UPLOAD_ENDPOINT = EndpointType.createSerialized<Asset, Identifier>(\n ASSET_EXTENSION_TYPE,\n {\n name: 'upload',\n requestSerializer: FILE_SERIALIZER,\n responseSerializer: Serializer.of(Identifier).toJson(),\n permissionId: ASSET_PERMISSION_ID,\n },\n);\nconst ASSET_UPLOAD_MANY_ENDPOINT = EndpointType.createSerialized<Asset[], Identifier[]>(\n ASSET_EXTENSION_TYPE,\n {\n name: 'upload_many',\n requestSerializer: FILE_ARRAY_SERIALIZER,\n responseSerializer: Serializer.of(Identifier).toArray().pipe(Serializer.json()),\n permissionId: ASSET_PERMISSION_ID,\n },\n);\nconst ASSET_DOWNLOAD_ENDPOINT = EndpointType.createSerialized<Identifier, Asset>(\n ASSET_EXTENSION_TYPE,\n {\n name: 'download',\n requestSerializer: Serializer.of(Identifier).pipe(Serializer.json()),\n responseSerializer: FILE_SERIALIZER,\n permissionId: ASSET_PERMISSION_ID,\n },\n);\nconst ASSET_DOWNLOAD_MANY_ENDPOINT = EndpointType.createSerialized<Identifier[], Asset[]>(\n ASSET_EXTENSION_TYPE,\n {\n name: 'download_many',\n requestSerializer: Serializer.of(Identifier).toArray().pipe(Serializer.json()),\n responseSerializer: FILE_ARRAY_SERIALIZER,\n permissionId: ASSET_PERMISSION_ID,\n },\n);\nconst ASSET_DELETE_ENDPOINT = EndpointType.createJson<Identifier, null>(\n ASSET_EXTENSION_TYPE,\n {\n name: 'delete',\n requestSerializer: Identifier,\n permissionId: ASSET_PERMISSION_ID,\n },\n);\n\nconst ASSET_GENERATE_TOKEN_ENDPOINT = EndpointType.createJson<object, { token: string }>(\n ASSET_EXTENSION_TYPE,\n {\n name: 'token_generate',\n permissionId: ASSET_PERMISSION_ID,\n },\n);\n\nexport class AssetExtension {\n public readonly type: ExtensionType<AssetExtension> = ASSET_EXTENSION_TYPE;\n private assetToken: string | undefined = undefined;\n\n constructor(private readonly omu: Omu) {\n omu.network.event.disconnected.listen(() => {\n this.assetToken = undefined;\n });\n omu.onReady(async () => {\n if (omu.permissions.required(ASSET_PERMISSION_ID)) {\n await this.requestGenerateAssetToken();\n }\n });\n }\n\n public async upload(identifier: IntoId, buffer: Uint8Array): Promise<Identifier> {\n const assetIdentifier = await this.omu.endpoints.call(ASSET_UPLOAD_ENDPOINT, {\n id: Identifier.from(identifier),\n buffer,\n });\n return assetIdentifier;\n }\n\n public async uploadMany(...files: Asset[]): Promise<Identifier[]> {\n const uploaded = await this.omu.endpoints.call(ASSET_UPLOAD_MANY_ENDPOINT, files);\n return uploaded;\n }\n\n public async download(identifier: IntoId): Promise<Asset> {\n const id = Identifier.from(identifier);\n const downloaded = await this.omu.endpoints.call(ASSET_DOWNLOAD_ENDPOINT, id);\n return downloaded;\n }\n\n public async downloadMany(...identifiers: IntoId[]): Promise<Asset[]> {\n const downloaded = await this.omu.endpoints.call(\n ASSET_DOWNLOAD_MANY_ENDPOINT,\n identifiers.map((id) => Identifier.from(id)),\n );\n return downloaded;\n }\n\n public async delete(identifier: IntoId): Promise<void> {\n const id = Identifier.from(identifier);\n await this.omu.endpoints.call(ASSET_DELETE_ENDPOINT, id);\n }\n\n private async requestGenerateAssetToken() {\n const result = await this.omu.endpoints.call(ASSET_GENERATE_TOKEN_ENDPOINT, {});\n this.assetToken = result.token;\n }\n\n public url(\n id: IntoId,\n options?: { cache?: 'no-cache' },\n ): string {\n if (!this.assetToken) {\n throw new Error('Asset token is not set');\n }\n const key = Identifier.from(id).key();\n const address = this.omu.network.address;\n const protocol = address.secure ? 'https' : 'http';\n const url = new URL(`${protocol}://${address.host}:${address.port}/asset`);\n url.searchParams.set('asset_token', this.assetToken);\n url.searchParams.set('id', key);\n if (options?.cache === 'no-cache') {\n url.searchParams.set('t', Date.now().toString());\n }\n return url.toString();\n }\n\n public proxy(url: string): string {\n if (!this.assetToken) {\n throw new Error('Asset token is not set');\n }\n const address = this.omu.network.address;\n const protocol = address.secure ? 'https' : 'http';\n const proxyUrl = new URL(`${protocol}://${address.host}:${address.port}/proxy`);\n proxyUrl.searchParams.set('asset_token', this.assetToken);\n proxyUrl.searchParams.set('url', url);\n return proxyUrl.toString();\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Identifier", "ByteReader", "ByteWriter", "Serializer", "EndpointType", "ExtensionType", "ASSET_EXTENSION_TYPE", "omu", "AssetExtension", "FILE_SERIALIZER", "file", "writer", "data", "reader", "identifier", "buffer", "FILE_ARRAY_SERIALIZER", "files", "length", "ASSET_PERMISSION_ID", "ASSET_UPLOAD_ENDPOINT", "ASSET_UPLOAD_MANY_ENDPOINT", "ASSET_DOWNLOAD_ENDPOINT", "ASSET_DOWNLOAD_MANY_ENDPOINT", "ASSET_DELETE_ENDPOINT", "ASSET_GENERATE_TOKEN_ENDPOINT", "id", "identifiers", "result", "options", "key", "address", "protocol", "url", "proxyUrl"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/asset/index.ts"],
|
|
4
|
+
"sourcesContent": ["export {\n ASSET_PERMISSION_ID,\n} from './extension';\nexport type { Asset } from './extension';\n\n"],
|
|
5
|
+
"mappings": "AAAA,OACI,uBAAAA,MACG",
|
|
6
|
+
"names": ["ASSET_PERMISSION_ID"]
|
|
7
|
+
}
|
|
@@ -16,7 +16,7 @@ export declare const DASHBOARD_OPEN_APP_PERMISSION_ID: Identifier;
|
|
|
16
16
|
export declare const DASHOBARD_APP_READ_PERMISSION_ID: Identifier;
|
|
17
17
|
export declare const DASHOBARD_APP_EDIT_PERMISSION_ID: Identifier;
|
|
18
18
|
export declare const DASHBOARD_APP_INSTALL_PERMISSION_ID: Identifier;
|
|
19
|
-
export declare const
|
|
19
|
+
export declare const DASHBOARD_DRAG_DROP_PERMISSION_ID: Identifier;
|
|
20
20
|
type DragDropHandler = {
|
|
21
21
|
onEnter(fn: (event: DragEnter) => unknown): void;
|
|
22
22
|
onOver(fn: (event: DragOver) => unknown): void;
|
|
@@ -28,6 +28,9 @@ export type Cookie = {
|
|
|
28
28
|
name: string;
|
|
29
29
|
value: string;
|
|
30
30
|
};
|
|
31
|
+
export declare class CookieList extends Array<Cookie> {
|
|
32
|
+
toString(): string;
|
|
33
|
+
}
|
|
31
34
|
export type WebviewRequest = {
|
|
32
35
|
url: string;
|
|
33
36
|
script?: string;
|
|
@@ -65,6 +68,9 @@ export type WebviewEvent = {
|
|
|
65
68
|
} | {
|
|
66
69
|
type: 'cookie';
|
|
67
70
|
cookies: Cookie[];
|
|
71
|
+
} | {
|
|
72
|
+
type: 'message';
|
|
73
|
+
data: any;
|
|
68
74
|
};
|
|
69
75
|
export type WebviewEventListeners = {
|
|
70
76
|
[K in WebviewEvent['type']]?: Array<(event: Extract<WebviewEvent, {
|
|
@@ -79,7 +85,7 @@ export type WebviewEventPacket = {
|
|
|
79
85
|
export type WebviewHandle = {
|
|
80
86
|
readonly id: Identifier;
|
|
81
87
|
readonly url: string;
|
|
82
|
-
getCookies(): PromiseResult<
|
|
88
|
+
getCookies(): PromiseResult<CookieList, UserError>;
|
|
83
89
|
on<T extends WebviewEvent['type']>(key: T, callback: (event: Extract<WebviewEvent, {
|
|
84
90
|
type: T;
|
|
85
91
|
}>) => void): void;
|
|
@@ -167,12 +173,10 @@ export declare class DashboardExtension {
|
|
|
167
173
|
private executeRequestForDashboard;
|
|
168
174
|
private handlePromptRequest;
|
|
169
175
|
private handleOpenApp;
|
|
170
|
-
private handleDragDropRequest;
|
|
171
|
-
private handleDragDropReadRequest;
|
|
172
176
|
private getDashboard;
|
|
173
177
|
set(dashboard: DashboardHandler): void;
|
|
174
178
|
requestWebview(options: WebviewRequest): PromiseResult<WebviewHandle, UserError>;
|
|
175
|
-
getCookies(options: GetCookiesRequest): PromiseResult<
|
|
179
|
+
getCookies(options: GetCookiesRequest): PromiseResult<CookieList, UserError>;
|
|
176
180
|
openApp(app: App): Promise<void>;
|
|
177
181
|
installApp(app: App): Promise<AppInstallResponse>;
|
|
178
182
|
clearBlockedPrompts(): Promise<null>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{App as D}from"../../app.js";import{Identifier as h,IdentifierMap as q}from"../../identifier";import{PacketType as m}from"../../network/packet/packet.js";import{PromiseResult as w}from"../../result.js";import{Serializer as g}from"../../serialize";import{EndpointType as i}from"../endpoint/endpoint.js";import{ExtensionType as B}from"../extension.js";import{RegistryType as N}from"../registry/registry.js";import{TableType as C}from"../table/table.js";import{DragDropReadResponse as J}from"./packets.js";const o=new B("dashboard",u=>new $(u)),v=o.join("set"),L=i.createJson(o,{name:"set",requestSerializer:h,permissionId:v}),U=o.join("app","open"),j=i.createJson(o,{name:"open_app",requestSerializer:D,permissionId:U}),b=m.createJson(o,{name:"open_app",serializer:D}),Ie=o.join("app","read"),ke=o.join("app","edit"),M=o.join("app","install"),z=i.createJson(o,{name:"install_app",requestSerializer:D,permissionId:M}),_=o.join("drag_drop"),y=m.createJson(o,{name:"drag_drop_state",serializer:g.noop().field("app",D)}),S=i.createSerialized(o,{name:"drag_drop_read",requestSerializer:g.json(),responseSerializer:J,permissionId:_}),f=i.createJson(o,{name:"drag_drop_request",permissionId:_});class G extends Array{toString(){return this.map(e=>`${e.name}=${e.value}`).join("; ")}}const P=o.join("webview"),I=i.createJson(o,{name:"cookies_get",permissionId:P}),k=i.createJson(o,{name:"webview_request",permissionId:P}),O=i.createJson(o,{name:"webview_close",permissionId:P}),A=m.createJson(o,{name:"webview_event",serializer:g.noop().field("id",h).field("target",h)}),K=C.createJson(o,{name:"allowed_webview_hosts",key:u=>u.id,permissions:{all:v}}),F=i.createJson(o,{name:"host_request",permissionId:P}),x=o.join("speech_recognition"),V=N.createJson(o,{name:"speech_recognition",defaultValue:{type:"idle"},permissions:{read:x,write:v}}),H=i.createJson(o,{name:"speech_recognition_start",permissionId:x}),T=m.createJson(o,{name:"prompt_request"}),W=m.createJson(o,{name:"prompt_response"}),Q=i.createJson(o,{name:"prompt_clear_blocked"});class ${constructor(e){this.omu=e;e.network.registerPacket(b,y,A,T,W),e.network.addPacketHandler(T,s=>{this.handlePromptRequest(s)}),e.network.addPacketHandler(b,s=>{this.handleOpenApp(s)}),e.network.addPacketHandler(y,({state:s})=>{switch(s.type){case"enter":{this.dragDropListeners.enter.forEach(t=>t(s));break}case"over":{this.dragDropListeners.over.forEach(t=>t(s));break}case"drop":{this.dragDropListeners.drop.forEach(t=>t(s));break}case"leave":{this.dragDropListeners.leave.forEach(t=>t(s));break}}}),e.network.addPacketHandler(A,s=>{const t=this.webviewHandles.get(s.id);t&&t.emit(s.event)}),this.allowedHosts=e.tables.get(K),this.speechRecognition=e.registries.get(V)}type=o;dashboard=null;dragDropHandler=null;dragDropListeners={enter:[],over:[],drop:[],leave:[]};allowedHosts;speechRecognition;webviewHandles=new q;async executeRequestForDashboard(e){const s=this.getDashboard();switch(e.kind){case"app/permissions":return await s.handlePermissionRequest(e);case"app/plugins":return await s.handlePluginRequest(e);case"app/install":return await s.handleInstallApp(e);case"app/update":return await s.handleUpdateApp(e);case"index/install":return await s.handleIndexInstall(e);case"http/port":return await s.handleHttpPortRequest(e);default:throw new Error(`Unknown prompt requested: ${JSON.stringify(e)}`)}}async handlePromptRequest(e){const s=await this.executeRequestForDashboard(e);this.omu.send(W,{id:e.id,kind:e.kind,result:s})}async handleOpenApp(e){await this.getDashboard().handleOpenApp(e)}getDashboard(){if(this.dashboard===null)throw new Error("Dashboard not set");return this.dashboard}set(e){if(this.omu.permissions.require(v),this.dashboard!==null)throw new Error("Dashboard already set");this.dashboard=e,this.omu.server.apps.event.remove.listen(async t=>{for(const r of t.values()){const n=await this.allowedHosts.get(r.id.key());n&&this.allowedHosts.remove(n)}});const s=async(t,r)=>{const n=t.caller.key();if(!(await this.allowedHosts.get(n)??{id:n,hosts:[]}).hosts.includes(r))if(await e.handleHostRequest({host:r},t)==="accept"){const l=await this.allowedHosts.get(n)??{id:n,hosts:[]};l.hosts.push(r),await this.allowedHosts.update(l)}else return{type:"cancelled"};return{type:"ok",value:void 0}};this.omu.endpoints.bind(f,async(t,r)=>({ok:await this.getDashboard().handleDragDropRequest(t,r)})),this.omu.endpoints.bind(S,async(t,r)=>await this.getDashboard().handleDragDropReadRequest(t,r)),this.omu.endpoints.bind(I,async(t,r)=>{const{url:n}=t,{host:d}=new URL(n),a=await s(r,d);return a.type!=="ok"?a:await e.getCookies(t)}),this.omu.endpoints.bind(F,async(t,r)=>{const{host:n}=t;return await s(r,n)}),this.omu.endpoints.bind(k,async(t,r)=>{const n=new URL(t.url),{host:d}=n,a=await s(r,d);if(a.type!=="ok")return a;const c=async p=>{this.omu.send(A,{id:l,target:r.caller,event:p})},l=await e.createWebview(t,r,c);return{type:"ok",value:{id:l.key()}}}),this.omu.endpoints.bind(O,async(t,r)=>{const n=await e.getWebview(t,r);return n?(await e.closeWebview(t,r),{type:"ok",value:{id:n.key()}}):{type:"cancelled"}}),this.omu.endpoints.bind(H,async(t,r)=>await e.speechRecognitionStart(t,r)),this.omu.network.addTask(async()=>{if(!(await this.omu.endpoints.call(L,this.omu.app.id)).success)throw new Error("Failed to set dashboard")})}requestWebview(e){const{promise:s,resolve:t,reject:r}=w.create();return this.omu.endpoints.call(k,e).then(n=>{if(n.type!=="ok"){r(n);return}const{value:d}=n,a=h.fromKey(d.id),c={},l={id:a,url:e.url,close:async()=>{await this.omu.endpoints.call(O,{id:a.key()})},getCookies:()=>this.getCookies({url:e.url}),on:function(p,R){c[p]||(c[p]=[]),c[p].push(R)},join:async()=>{await new Promise(p=>{l.on("closed",()=>p())})}};this.webviewHandles.set(a,{handle:l,emit:function(p){const R=c[p.type];if(R)for(const E of R)E(p)}}),t(l)}),s}getCookies(e){const{promise:s,resolve:t,reject:r}=w.create();return this.omu.endpoints.call(I,e).then(n=>{if(n.type==="ok"){t(G.from(n.value));return}else r(n)}),s}async openApp(e){return await this.omu.endpoints.call(j,e)}async installApp(e){return await this.omu.endpoints.call(z,e)}async clearBlockedPrompts(){return await this.omu.endpoints.call(Q,null)}async requestDragDrop(){await this.omu.endpoints.call(f,{});const e=this.dragDropListeners,s=this.omu;return this.dragDropHandler={onEnter(t){e.enter.push(t)},onOver(t){e.over.push(t)},onDrop(t){e.drop.push(t)},onLeave(t){e.leave.push(t)},async read(t){return await s.endpoints.call(S,{drag_id:t})}},this.dragDropHandler}async notifyDropDragState(e){this.omu.send(y,e)}requestSpeechRecognition(){const{promise:e,resolve:s,reject:t}=w.create();return this.omu.endpoints.call(H,{type:"start"}).then(r=>{r.type==="ok"?s(this.speechRecognition):t(r)}),e}}export{G as CookieList,M as DASHBOARD_APP_INSTALL_PERMISSION_ID,_ as DASHBOARD_DRAG_DROP_PERMISSION_ID,o as DASHBOARD_EXTENSION_TYPE,U as DASHBOARD_OPEN_APP_PERMISSION_ID,v as DASHBOARD_SET_PERMISSION_ID,x as DASHBOARD_SPEECH_RECOGNITION_PERMISSION_ID,P as DASHBOARD_WEBVIEW_PERMISSION_ID,ke as DASHOBARD_APP_EDIT_PERMISSION_ID,Ie as DASHOBARD_APP_READ_PERMISSION_ID,$ as DashboardExtension};
|
|
2
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/dashboard/extension.ts"],
|
|
4
|
+
"sourcesContent": ["import { App, AppJson } from '../../app.js';\nimport { Identifier, IdentifierMap } from '../../identifier';\nimport { PacketType } from '../../network/packet/packet.js';\nimport { Omu } from '../../omu.js';\nimport { PromiseResult } from '../../result.js';\nimport { Serializer } from '../../serialize';\nimport { EndpointType } from '../endpoint/endpoint.js';\nimport { InvokedParams } from '../endpoint/packets.js';\nimport { ExtensionType } from '../extension.js';\nimport { PermissionTypeJson } from '../permission/permission.js';\nimport { PackageInfo } from '../plugin/package-info.js';\nimport { Registry, RegistryType } from '../registry/registry.js';\nimport { AppIndexRegistryMeta } from '../server/extension.js';\nimport type { Table } from '../table/table.js';\nimport { TableType } from '../table/table.js';\n\nimport type { DashboardHandler } from './handler.js';\nimport { AppInstallResponse, DragDrop, DragDropReadRequest, DragDropReadResponse, DragDropRequestDashboard, DragDropRequestResponse, DragEnter, DragLeave, DragOver, FileDragPacket } from './packets.js';\n\nexport const DASHBOARD_EXTENSION_TYPE: ExtensionType<DashboardExtension> = new ExtensionType(\n 'dashboard',\n (omu: Omu) => new DashboardExtension(omu),\n);\n\ntype DashboardSetResponse = {\n success: boolean;\n};\nexport const DASHBOARD_SET_PERMISSION_ID: Identifier = DASHBOARD_EXTENSION_TYPE.join('set');\nconst DASHBOARD_SET_ENDPOINT = EndpointType.createJson<Identifier, DashboardSetResponse>(\n DASHBOARD_EXTENSION_TYPE,\n {\n name: 'set',\n requestSerializer: Identifier,\n permissionId: DASHBOARD_SET_PERMISSION_ID,\n },\n);\nexport const DASHBOARD_OPEN_APP_PERMISSION_ID: Identifier = DASHBOARD_EXTENSION_TYPE.join('app', 'open');\nconst DASHBOARD_OPEN_APP_ENDPOINT = EndpointType.createJson<App, void>(DASHBOARD_EXTENSION_TYPE, {\n name: 'open_app',\n requestSerializer: App,\n permissionId: DASHBOARD_OPEN_APP_PERMISSION_ID,\n});\nconst DASHBOARD_OPEN_APP_PACKET = PacketType.createJson<App>(DASHBOARD_EXTENSION_TYPE, {\n name: 'open_app',\n serializer: App,\n});\nexport const DASHOBARD_APP_READ_PERMISSION_ID: Identifier = DASHBOARD_EXTENSION_TYPE.join('app', 'read');\nexport const DASHOBARD_APP_EDIT_PERMISSION_ID: Identifier = DASHBOARD_EXTENSION_TYPE.join('app', 'edit');\nexport const DASHBOARD_APP_INSTALL_PERMISSION_ID: Identifier = DASHBOARD_EXTENSION_TYPE.join('app', 'install');\nconst DASHBOARD_APP_INSTALL_ENDPOINT = EndpointType.createJson<App, AppInstallResponse>(DASHBOARD_EXTENSION_TYPE, {\n name: 'install_app',\n requestSerializer: App,\n permissionId: DASHBOARD_APP_INSTALL_PERMISSION_ID,\n});\nexport const DASHBOARD_DRAG_DROP_PERMISSION_ID: Identifier = DASHBOARD_EXTENSION_TYPE.join('drag_drop');\nconst DASHBOARD_DRAG_DROP_STATE_PACKET = PacketType.createJson<FileDragPacket>(DASHBOARD_EXTENSION_TYPE, {\n name: 'drag_drop_state',\n serializer: Serializer.noop<FileDragPacket>()\n .field('app', App),\n});\nconst DASHBOARD_DRAG_DROP_READ_ENDPOINT = EndpointType.createSerialized<DragDropReadRequest, DragDropReadResponse>(DASHBOARD_EXTENSION_TYPE, {\n name: 'drag_drop_read',\n requestSerializer: Serializer.json(),\n responseSerializer: DragDropReadResponse,\n permissionId: DASHBOARD_DRAG_DROP_PERMISSION_ID,\n});\nconst DASHBOARD_DRAG_DROP_REQUEST_ENDPOINT = EndpointType.createJson<DragDropRequestDashboard, DragDropRequestResponse>(DASHBOARD_EXTENSION_TYPE, {\n name: 'drag_drop_request',\n permissionId: DASHBOARD_DRAG_DROP_PERMISSION_ID,\n});\n\ntype DragDropHandler = {\n onEnter(fn: (event: DragEnter) => unknown): void;\n onOver(fn: (event: DragOver) => unknown): void;\n onDrop(fn: (event: DragDrop) => unknown): void;\n onLeave(fn: (event: DragLeave) => unknown): void;\n read(id: string): Promise<DragDropReadResponse>;\n};\n\nexport type Cookie = {\n name: string;\n value: string;\n};\n\nexport class CookieList extends Array<Cookie> {\n public toString(): string {\n return this.map(cookie => `${cookie.name}=${cookie.value}`).join('; ');\n }\n}\n\nexport type WebviewRequest = {\n url: string;\n script?: string;\n};\n\nexport type WebviewPacket = {\n id: string;\n};\n\nexport type UserResponse<T = undefined> = {\n type: 'ok';\n value: T;\n} | {\n type: 'blocked';\n} | {\n type: 'cancelled';\n};\n\nexport type UserError = Exclude<UserResponse, { type: 'ok' }>;\n\nexport type WebviewResponse = UserResponse<WebviewPacket>;\n\nexport const DASHBOARD_WEBVIEW_PERMISSION_ID: Identifier = DASHBOARD_EXTENSION_TYPE.join('webview');\n\nexport type HostRequest = {\n host: string;\n};\n\nexport type GetCookiesRequest = {\n url: string;\n};\n\nconst DASHBOARD_COOKIES_GET = EndpointType.createJson<GetCookiesRequest, UserResponse<Cookie[]>>(DASHBOARD_EXTENSION_TYPE, {\n name: 'cookies_get',\n permissionId: DASHBOARD_WEBVIEW_PERMISSION_ID,\n});\n\nconst DASHBOARD_WEBVIEW_REQUEST = EndpointType.createJson<WebviewRequest, WebviewResponse>(DASHBOARD_EXTENSION_TYPE, {\n name: 'webview_request',\n permissionId: DASHBOARD_WEBVIEW_PERMISSION_ID,\n});\n\nconst DASHBOARD_WEBVIEW_CLOSE = EndpointType.createJson<WebviewPacket, WebviewResponse>(DASHBOARD_EXTENSION_TYPE, {\n name: 'webview_close',\n permissionId: DASHBOARD_WEBVIEW_PERMISSION_ID,\n});\n\nexport type WebviewEvent = {\n type: 'closed';\n} | {\n type: 'resize';\n dimentions: {\n x: number;\n y: number;\n };\n} | {\n type: 'cookie';\n cookies: Cookie[];\n} | {\n type: 'message';\n data: any;\n};\n\nexport type WebviewEventListeners = {\n [K in WebviewEvent['type']]?: Array<(event: Extract<WebviewEvent, { type: K }>) => void>;\n};\n\nexport type WebviewEventPacket = {\n id: Identifier;\n target: Identifier;\n event: WebviewEvent;\n};\n\nexport type WebviewHandle = {\n readonly id: Identifier;\n readonly url: string;\n getCookies(): PromiseResult<CookieList, UserError>;\n on<T extends WebviewEvent['type']>(key: T, callback: (event: Extract<WebviewEvent, { type: T }>) => void): void;\n close(): Promise<void>;\n join(): Promise<void>;\n};\n\nexport type WebviewEventEmit = <T extends WebviewEvent['type']>(event: Extract<WebviewEvent, { type: T }>) => void;\n\nconst DASHBOARD_WEBVIEW_EVENT_PACKET = PacketType.createJson<WebviewEventPacket>(DASHBOARD_EXTENSION_TYPE, {\n name: 'webview_event',\n serializer: Serializer.noop<WebviewEventPacket>()\n .field('id', Identifier)\n .field('target', Identifier),\n});\n\ntype AllowedHost = {\n id: string;\n hosts: string[];\n};\n\nconst DASHBOARD_ALLOWED_WEBVIEW_HOSTS = TableType.createJson<AllowedHost>(DASHBOARD_EXTENSION_TYPE, {\n name: 'allowed_webview_hosts',\n key: (entry) => entry.id,\n permissions: { all: DASHBOARD_SET_PERMISSION_ID },\n});\n\nconst DASHBOARD_HOST_REQUEST = EndpointType.createJson<{\n host: string;\n}, UserResponse>(DASHBOARD_EXTENSION_TYPE, {\n name: 'host_request',\n permissionId: DASHBOARD_WEBVIEW_PERMISSION_ID,\n});\n\nexport const DASHBOARD_SPEECH_RECOGNITION_PERMISSION_ID: Identifier = DASHBOARD_EXTENSION_TYPE.join('speech_recognition');\n\nexport type TranscriptSegment = {\n confidence: number;\n transcript: string;\n};\n\nexport type TranscriptStatus = {\n type: 'idle';\n} | {\n type: 'result';\n timestamp: number;\n segments: TranscriptSegment[];\n} | {\n type: 'final';\n timestamp: number;\n segments: TranscriptSegment[];\n} | {\n type: 'audio_started';\n timestamp: number;\n} | {\n type: 'audio_ended';\n timestamp: number;\n};\n\nconst DASHBOARD_SPEECH_RECOGNITION = RegistryType.createJson<TranscriptStatus>(DASHBOARD_EXTENSION_TYPE, {\n name: 'speech_recognition',\n defaultValue: { type: 'idle' },\n permissions: {\n read: DASHBOARD_SPEECH_RECOGNITION_PERMISSION_ID,\n write: DASHBOARD_SET_PERMISSION_ID,\n },\n});\n\nexport type SpeechRecognitionStart = {\n type: 'start';\n};\n\nconst DASHBOARD_SPEECH_RECOGNITION_START = EndpointType.createJson<SpeechRecognitionStart, UserResponse<undefined>>(DASHBOARD_EXTENSION_TYPE, {\n name: 'speech_recognition_start',\n permissionId: DASHBOARD_SPEECH_RECOGNITION_PERMISSION_ID,\n});\n\ninterface PromptRequestBase<T extends string> {\n kind: T;\n id: string;\n}\n\nexport interface PromptRequestAppPermissions extends PromptRequestBase<'app/permissions'> {\n app: AppJson;\n permissions: PermissionTypeJson[];\n}\n\nexport interface PromptRequestAppPlugins extends PromptRequestBase<'app/plugins'> {\n app: AppJson;\n packages: PackageInfo[];\n}\n\nexport interface PromptRequestAppInstall extends PromptRequestBase<'app/install'> {\n app: AppJson;\n dependencies: Record<string, AppJson>;\n}\n\nexport interface PromptRequestAppUpdate extends PromptRequestBase<'app/update'> {\n old_app: AppJson;\n new_app: AppJson;\n dependencies: Record<string, AppJson>;\n}\n\nexport interface PromptRequestIndexInstall extends PromptRequestBase<'index/install'> {\n index_url: string;\n meta?: AppIndexRegistryMeta;\n}\n\nexport interface PortProcess {\n port: number;\n name: string;\n exe: string;\n}\n\nexport interface PromptRequestHttpPort extends PromptRequestBase<'http/port'> {\n app: AppJson;\n processes: PortProcess[];\n}\n\nexport type PromptRequest = (\n PromptRequestAppPermissions\n | PromptRequestAppPlugins\n | PromptRequestAppInstall\n | PromptRequestAppUpdate\n | PromptRequestIndexInstall\n | PromptRequestHttpPort\n);\n\nconst DASHBOARD_PROMPT_REQUEST = PacketType.createJson<PromptRequest>(DASHBOARD_EXTENSION_TYPE, {\n name: 'prompt_request',\n});\n\nexport type PromptResult = 'accept' | 'deny' | 'block';\n\ninterface PromptResponse {\n id: string;\n kind: string;\n result: PromptResult;\n}\n\nconst DASHBOARD_PROMPT_RESPONSE = PacketType.createJson<PromptResponse>(DASHBOARD_EXTENSION_TYPE, {\n name: 'prompt_response',\n});\n\nconst DASHBOARD_PROMPT_CLEAR_BLOCKED = EndpointType.createJson<null, null>(DASHBOARD_EXTENSION_TYPE, {\n name: 'prompt_clear_blocked',\n});\n\nexport class DashboardExtension {\n public readonly type: ExtensionType<DashboardExtension> = DASHBOARD_EXTENSION_TYPE;\n private dashboard: DashboardHandler | null = null;\n private dragDropHandler: DragDropHandler | null = null;\n private dragDropListeners = {\n enter: [] as Array<(state: DragEnter) => unknown>,\n over: [] as Array<(state: DragOver) => unknown>,\n drop: [] as Array<(state: DragDrop) => unknown>,\n leave: [] as Array<(state: DragLeave) => unknown>,\n };\n public readonly allowedHosts: Table<AllowedHost>;\n public readonly speechRecognition: Registry<TranscriptStatus>;\n private readonly webviewHandles: IdentifierMap<{ handle: WebviewHandle; emit: WebviewEventEmit }> = new IdentifierMap();\n\n constructor(private readonly omu: Omu) {\n omu.network.registerPacket(\n DASHBOARD_OPEN_APP_PACKET,\n DASHBOARD_DRAG_DROP_STATE_PACKET,\n DASHBOARD_WEBVIEW_EVENT_PACKET,\n DASHBOARD_PROMPT_REQUEST,\n DASHBOARD_PROMPT_RESPONSE,\n );\n omu.network.addPacketHandler(DASHBOARD_PROMPT_REQUEST, (request) => {\n this.handlePromptRequest(request);\n });\n omu.network.addPacketHandler(DASHBOARD_OPEN_APP_PACKET, (app) => {\n this.handleOpenApp(app);\n });\n omu.network.addPacketHandler(DASHBOARD_DRAG_DROP_STATE_PACKET, ({ state }) => {\n switch (state.type) {\n case 'enter': {\n this.dragDropListeners.enter.forEach((fn) => fn(state));\n break;\n }\n case 'over': {\n this.dragDropListeners.over.forEach((fn) => fn(state));\n break;\n }\n case 'drop': {\n this.dragDropListeners.drop.forEach((fn) => fn(state));\n break;\n }\n case 'leave': {\n this.dragDropListeners.leave.forEach((fn) => fn(state));\n break;\n }\n }\n });\n omu.network.addPacketHandler(DASHBOARD_WEBVIEW_EVENT_PACKET, (packet) => {\n const handle = this.webviewHandles.get(packet.id);\n if (!handle) return;\n handle.emit(packet.event);\n });\n this.allowedHosts = omu.tables.get(DASHBOARD_ALLOWED_WEBVIEW_HOSTS);\n this.speechRecognition = omu.registries.get(DASHBOARD_SPEECH_RECOGNITION);\n }\n\n private async executeRequestForDashboard(request: PromptRequest): Promise<PromptResult> {\n const dashboard = this.getDashboard();\n switch (request.kind) {\n case 'app/permissions':\n return await dashboard.handlePermissionRequest(request);\n case 'app/plugins':\n return await dashboard.handlePluginRequest(request);\n case 'app/install':\n return await dashboard.handleInstallApp(request);\n case 'app/update':\n return await dashboard.handleUpdateApp(request);\n case 'index/install':\n return await dashboard.handleIndexInstall(request);\n case 'http/port':\n return await dashboard.handleHttpPortRequest(request);\n default:\n throw new Error(`Unknown prompt requested: ${JSON.stringify(request)}`);\n }\n }\n\n private async handlePromptRequest(request: PromptRequest): Promise<void> {\n const response = await this.executeRequestForDashboard(request);\n this.omu.send(DASHBOARD_PROMPT_RESPONSE, {\n id: request.id,\n kind: request.kind,\n result: response,\n });\n }\n\n private async handleOpenApp(app: App): Promise<void> {\n const dashboard = this.getDashboard();\n await dashboard.handleOpenApp(app);\n }\n\n private getDashboard(): DashboardHandler {\n if (this.dashboard === null) {\n throw new Error('Dashboard not set');\n }\n return this.dashboard;\n }\n\n public set(dashboard: DashboardHandler): void {\n this.omu.permissions.require(DASHBOARD_SET_PERMISSION_ID);\n if (this.dashboard !== null) {\n throw new Error('Dashboard already set');\n }\n this.dashboard = dashboard;\n\n this.omu.server.apps.event.remove.listen(async (apps) => {\n for (const app of apps.values()) {\n const hosts = await this.allowedHosts.get(app.id.key());\n if (!hosts) continue;\n this.allowedHosts.remove(hosts);\n }\n });\n\n const requireHost = async (params: InvokedParams, host: string): Promise<UserResponse<undefined>> => {\n const id = params.caller.key();\n const hostEntry: AllowedHost = await this.allowedHosts.get(id) ?? { id: id, hosts: [] };\n const allowed = hostEntry.hosts.includes(host);\n if (!allowed) {\n const result = await dashboard.handleHostRequest({\n host,\n }, params);\n if (result === 'accept') {\n const hostEntry: AllowedHost = await this.allowedHosts.get(id) ?? { id: id, hosts: [] };\n hostEntry.hosts.push(host);\n await this.allowedHosts.update(hostEntry);\n } else {\n return { type: 'cancelled' };\n }\n }\n return { type: 'ok', value: undefined };\n };\n\n this.omu.endpoints.bind(DASHBOARD_DRAG_DROP_REQUEST_ENDPOINT, async (request: DragDropRequestDashboard, params): Promise<DragDropRequestResponse> => {\n const dashboard = this.getDashboard();\n const accepted = await dashboard.handleDragDropRequest(request, params);\n return {\n ok: accepted,\n };\n });\n this.omu.endpoints.bind(DASHBOARD_DRAG_DROP_READ_ENDPOINT, async (request, params): Promise<DragDropReadResponse> => {\n const dashboard = this.getDashboard();\n const response = await dashboard.handleDragDropReadRequest(request, params);\n return response;\n });\n this.omu.endpoints.bind(DASHBOARD_COOKIES_GET, async (request, params): Promise<UserResponse<Cookie[]>> => {\n const { url } = request;\n const { host } = new URL(url);\n const hostAccessResult = await requireHost(params, host);\n if (hostAccessResult.type !== 'ok') {\n return hostAccessResult;\n }\n return await dashboard.getCookies(request);\n });\n this.omu.endpoints.bind(DASHBOARD_HOST_REQUEST, async (request, params): Promise<UserResponse> => {\n const { host } = request;\n const result = await requireHost(params, host);\n return result;\n });\n this.omu.endpoints.bind(DASHBOARD_WEBVIEW_REQUEST, async (request, params): Promise<WebviewResponse> => {\n const url = new URL(request.url);\n const { host } = url;\n const hostAccessResult = await requireHost(params, host);\n if (hostAccessResult.type !== 'ok') {\n return hostAccessResult;\n }\n const emit = async (event: WebviewEvent) => {\n this.omu.send(DASHBOARD_WEBVIEW_EVENT_PACKET, {\n id,\n target: params.caller,\n event,\n });\n };\n const id = await dashboard.createWebview(request, params, emit);\n return {\n type: 'ok',\n value: {\n id: id.key(),\n },\n };\n });\n this.omu.endpoints.bind(DASHBOARD_WEBVIEW_CLOSE, async (request, params): Promise<WebviewResponse> => {\n const id = await dashboard.getWebview(request, params);\n if (!id) {\n return {\n type: 'cancelled',\n };\n }\n await dashboard.closeWebview(request, params);\n return {\n type: 'ok',\n value: {\n id: id.key(),\n },\n };\n });\n this.omu.endpoints.bind(DASHBOARD_SPEECH_RECOGNITION_START, async (request, params): Promise<UserResponse<undefined>> => {\n const result = await dashboard.speechRecognitionStart(request, params);\n return result;\n });\n this.omu.network.addTask(async () => {\n const response = await this.omu.endpoints.call(\n DASHBOARD_SET_ENDPOINT,\n this.omu.app.id,\n );\n if (!response.success) {\n throw new Error('Failed to set dashboard');\n }\n });\n }\n\n public requestWebview(options: WebviewRequest): PromiseResult<WebviewHandle, UserError> {\n const { promise, resolve, reject } = PromiseResult.create<WebviewHandle, UserError>();\n this.omu.endpoints.call(\n DASHBOARD_WEBVIEW_REQUEST,\n options,\n ).then((result) => {\n if (result.type !== 'ok') {\n reject(result);\n return;\n }\n const { value } = result;\n const id = Identifier.fromKey(value.id);\n const eventListeners: WebviewEventListeners = {};\n const handle: WebviewHandle = {\n id,\n url: options.url,\n close: async () => {\n await this.omu.endpoints.call(\n DASHBOARD_WEBVIEW_CLOSE,\n { id: id.key() },\n );\n },\n getCookies: () => this.getCookies({\n url: options.url,\n }),\n on: function <T extends WebviewEvent['type']>(key: T, callback: (event: Extract<WebviewEvent, { type: T }>) => void): void {\n if (!eventListeners[key]) {\n eventListeners[key] = [];\n }\n const listeners = eventListeners[key]!;\n listeners.push(callback);\n },\n join: async () => {\n await new Promise<void>((resolve) => {\n handle.on('closed', () => resolve());\n });\n },\n };\n this.webviewHandles.set(id, {\n handle,\n emit: function <T extends WebviewEvent['type']>(event: Extract<WebviewEvent, { type: T }>): void {\n const listeners = eventListeners[event.type];\n if (!listeners) return;\n for (const listener of listeners) {\n listener(event);\n }\n },\n });\n\n resolve(handle);\n });\n return promise;\n }\n\n public getCookies(options: GetCookiesRequest): PromiseResult<CookieList, UserError> {\n const { promise, resolve, reject } = PromiseResult.create<CookieList, UserError>();\n this.omu.endpoints.call(\n DASHBOARD_COOKIES_GET,\n options,\n ).then((response) => {\n if (response.type === 'ok') {\n resolve(CookieList.from(response.value));\n return;\n } else {\n reject(response);\n }\n });\n return promise;\n }\n\n public async openApp(app: App): Promise<void> {\n return await this.omu.endpoints.call(DASHBOARD_OPEN_APP_ENDPOINT, app);\n }\n\n public async installApp(app: App): Promise<AppInstallResponse> {\n return await this.omu.endpoints.call(DASHBOARD_APP_INSTALL_ENDPOINT, app);\n }\n\n public async clearBlockedPrompts(): Promise<null> {\n return await this.omu.endpoints.call(DASHBOARD_PROMPT_CLEAR_BLOCKED, null);\n }\n\n public async requestDragDrop(): Promise<DragDropHandler> {\n await this.omu.endpoints.call(DASHBOARD_DRAG_DROP_REQUEST_ENDPOINT, {});\n const listeners = this.dragDropListeners;\n const client = this.omu;\n this.dragDropHandler = {\n onEnter(fn) { listeners.enter.push(fn); },\n onOver(fn) { listeners.over.push(fn); },\n onDrop(fn) { listeners.drop.push(fn); },\n onLeave(fn) { listeners.leave.push(fn); },\n async read(id) { return await client.endpoints.call(DASHBOARD_DRAG_DROP_READ_ENDPOINT, { drag_id: id }); },\n };\n return this.dragDropHandler;\n }\n\n public async notifyDropDragState(packet: FileDragPacket): Promise<void> {\n this.omu.send(DASHBOARD_DRAG_DROP_STATE_PACKET, packet);\n }\n\n public requestSpeechRecognition(): PromiseResult<Registry<TranscriptStatus>, UserError> {\n const { promise, resolve, reject } = PromiseResult.create<Registry<TranscriptStatus>, UserError>();\n this.omu.endpoints.call(DASHBOARD_SPEECH_RECOGNITION_START, { type: 'start' }).then((result) => {\n if (result.type === 'ok') {\n resolve(this.speechRecognition);\n } else {\n reject(result);\n }\n });\n return promise;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["App", "Identifier", "IdentifierMap", "PacketType", "PromiseResult", "Serializer", "EndpointType", "ExtensionType", "RegistryType", "TableType", "DragDropReadResponse", "DASHBOARD_EXTENSION_TYPE", "omu", "DashboardExtension", "DASHBOARD_SET_PERMISSION_ID", "DASHBOARD_SET_ENDPOINT", "DASHBOARD_OPEN_APP_PERMISSION_ID", "DASHBOARD_OPEN_APP_ENDPOINT", "DASHBOARD_OPEN_APP_PACKET", "DASHOBARD_APP_READ_PERMISSION_ID", "DASHOBARD_APP_EDIT_PERMISSION_ID", "DASHBOARD_APP_INSTALL_PERMISSION_ID", "DASHBOARD_APP_INSTALL_ENDPOINT", "DASHBOARD_DRAG_DROP_PERMISSION_ID", "DASHBOARD_DRAG_DROP_STATE_PACKET", "DASHBOARD_DRAG_DROP_READ_ENDPOINT", "DASHBOARD_DRAG_DROP_REQUEST_ENDPOINT", "CookieList", "cookie", "DASHBOARD_WEBVIEW_PERMISSION_ID", "DASHBOARD_COOKIES_GET", "DASHBOARD_WEBVIEW_REQUEST", "DASHBOARD_WEBVIEW_CLOSE", "DASHBOARD_WEBVIEW_EVENT_PACKET", "DASHBOARD_ALLOWED_WEBVIEW_HOSTS", "entry", "DASHBOARD_HOST_REQUEST", "DASHBOARD_SPEECH_RECOGNITION_PERMISSION_ID", "DASHBOARD_SPEECH_RECOGNITION", "DASHBOARD_SPEECH_RECOGNITION_START", "DASHBOARD_PROMPT_REQUEST", "DASHBOARD_PROMPT_RESPONSE", "DASHBOARD_PROMPT_CLEAR_BLOCKED", "request", "app", "state", "fn", "packet", "handle", "dashboard", "response", "apps", "hosts", "requireHost", "params", "host", "id", "hostEntry", "url", "hostAccessResult", "emit", "event", "options", "promise", "resolve", "reject", "result", "value", "eventListeners", "key", "callback", "listeners", "listener", "client"]
|
|
7
|
+
}
|
|
@@ -2,7 +2,7 @@ import type { App } from '../../app.js';
|
|
|
2
2
|
import { Identifier } from '../../identifier';
|
|
3
3
|
import { InvokedParams } from '../endpoint/packets.js';
|
|
4
4
|
import { Cookie, GetCookiesRequest, HostRequest, PromptRequestAppInstall, PromptRequestAppPermissions, PromptRequestAppPlugins, PromptRequestAppUpdate, PromptRequestHttpPort, PromptRequestIndexInstall, PromptResult, SpeechRecognitionStart, UserResponse, WebviewEvent, WebviewPacket, WebviewRequest } from './extension.js';
|
|
5
|
-
import type {
|
|
5
|
+
import type { DragDropReadRequest, DragDropReadResponse, DragDropRequestDashboard } from './packets.js';
|
|
6
6
|
export interface DashboardHandler {
|
|
7
7
|
handlePermissionRequest(request: PromptRequestAppPermissions): Promise<PromptResult>;
|
|
8
8
|
handlePluginRequest(request: PromptRequestAppPlugins): Promise<PromptResult>;
|
|
@@ -11,8 +11,8 @@ export interface DashboardHandler {
|
|
|
11
11
|
handleIndexInstall(request: PromptRequestIndexInstall): Promise<PromptResult>;
|
|
12
12
|
handleHttpPortRequest(request: PromptRequestHttpPort): Promise<PromptResult>;
|
|
13
13
|
handleOpenApp(app: App): Promise<void>;
|
|
14
|
-
handleDragDropRequest(request: DragDropRequestDashboard): Promise<boolean>;
|
|
15
|
-
handleDragDropReadRequest(request:
|
|
14
|
+
handleDragDropRequest(request: DragDropRequestDashboard, params: InvokedParams): Promise<boolean>;
|
|
15
|
+
handleDragDropReadRequest(request: DragDropReadRequest, params: InvokedParams): Promise<DragDropReadResponse>;
|
|
16
16
|
handleHostRequest(request: HostRequest, params: InvokedParams): Promise<PromptResult>;
|
|
17
17
|
getCookies(request: GetCookiesRequest): Promise<UserResponse<Cookie[]>>;
|
|
18
18
|
createWebview(request: WebviewRequest, params: InvokedParams, emit: (event: WebviewEvent) => Promise<void>): Promise<Identifier>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=handler.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { CookieList, DASHBOARD_APP_INSTALL_PERMISSION_ID, DASHBOARD_DRAG_DROP_PERMISSION_ID as DAShBOARD_DRAG_DROP_PERMISSION_ID, DASHBOARD_OPEN_APP_PERMISSION_ID, DASHBOARD_SET_PERMISSION_ID, DASHBOARD_SPEECH_RECOGNITION_PERMISSION_ID, DASHBOARD_WEBVIEW_PERMISSION_ID, DASHOBARD_APP_EDIT_PERMISSION_ID, DASHOBARD_APP_READ_PERMISSION_ID, type Cookie, type GetCookiesRequest, type HostRequest, type PortProcess, type PromptRequest, type PromptRequestAppInstall, type PromptRequestAppPermissions, type PromptRequestAppPlugins, type PromptRequestAppUpdate, type PromptRequestHttpPort, type PromptRequestIndexInstall, type PromptResult, type SpeechRecognitionStart, type TranscriptSegment, type TranscriptStatus, type UserResponse, type WebviewEvent, type WebviewHandle, type WebviewPacket, type WebviewRequest, } from './extension.js';
|
|
2
|
+
export type { DashboardHandler } from './handler';
|
|
3
|
+
export { DragDropReadResponse, type DragDropFile, type DragDropReadRequest, type DragDropRequestDashboard, type FileData, } from './packets.js';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{CookieList as p,DASHBOARD_APP_INSTALL_PERMISSION_ID as D,DASHBOARD_DRAG_DROP_PERMISSION_ID as R,DASHBOARD_OPEN_APP_PERMISSION_ID as r,DASHBOARD_SET_PERMISSION_ID as o,DASHBOARD_SPEECH_RECOGNITION_PERMISSION_ID as s,DASHBOARD_WEBVIEW_PERMISSION_ID as I,DASHOBARD_APP_EDIT_PERMISSION_ID as P,DASHOBARD_APP_READ_PERMISSION_ID as S}from"./extension.js";import{DragDropReadResponse as A}from"./packets.js";export{p as CookieList,D as DASHBOARD_APP_INSTALL_PERMISSION_ID,r as DASHBOARD_OPEN_APP_PERMISSION_ID,o as DASHBOARD_SET_PERMISSION_ID,s as DASHBOARD_SPEECH_RECOGNITION_PERMISSION_ID,I as DASHBOARD_WEBVIEW_PERMISSION_ID,P as DASHOBARD_APP_EDIT_PERMISSION_ID,S as DASHOBARD_APP_READ_PERMISSION_ID,R as DAShBOARD_DRAG_DROP_PERMISSION_ID,A as DragDropReadResponse};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/dashboard/index.ts"],
|
|
4
|
+
"sourcesContent": ["export {\n CookieList, DASHBOARD_APP_INSTALL_PERMISSION_ID,\n DASHBOARD_DRAG_DROP_PERMISSION_ID as DAShBOARD_DRAG_DROP_PERMISSION_ID,\n DASHBOARD_OPEN_APP_PERMISSION_ID,\n DASHBOARD_SET_PERMISSION_ID,\n DASHBOARD_SPEECH_RECOGNITION_PERMISSION_ID,\n DASHBOARD_WEBVIEW_PERMISSION_ID,\n DASHOBARD_APP_EDIT_PERMISSION_ID,\n DASHOBARD_APP_READ_PERMISSION_ID, type Cookie,\n type GetCookiesRequest,\n type HostRequest,\n type PortProcess,\n type PromptRequest,\n type PromptRequestAppInstall,\n type PromptRequestAppPermissions,\n type PromptRequestAppPlugins,\n type PromptRequestAppUpdate,\n type PromptRequestHttpPort,\n type PromptRequestIndexInstall,\n type PromptResult,\n type SpeechRecognitionStart,\n type TranscriptSegment,\n type TranscriptStatus,\n type UserResponse,\n type WebviewEvent, type WebviewHandle, type WebviewPacket,\n type WebviewRequest,\n} from './extension.js';\nexport type { DashboardHandler } from './handler';\nexport {\n DragDropReadResponse,\n type DragDropFile,\n type DragDropReadRequest,\n type DragDropRequestDashboard,\n type FileData,\n} from './packets.js';\n\n"],
|
|
5
|
+
"mappings": "AAAA,OACI,cAAAA,EAAY,uCAAAC,EACyB,qCAArCC,EACA,oCAAAC,EACA,+BAAAC,EACA,8CAAAC,EACA,mCAAAC,EACA,oCAAAC,EACA,oCAAAC,MAkBG,iBAEP,OACI,wBAAAC,MAKG",
|
|
6
|
+
"names": ["CookieList", "DASHBOARD_APP_INSTALL_PERMISSION_ID", "DASHBOARD_DRAG_DROP_PERMISSION_ID", "DASHBOARD_OPEN_APP_PERMISSION_ID", "DASHBOARD_SET_PERMISSION_ID", "DASHBOARD_SPEECH_RECOGNITION_PERMISSION_ID", "DASHBOARD_WEBVIEW_PERMISSION_ID", "DASHOBARD_APP_EDIT_PERMISSION_ID", "DASHOBARD_APP_READ_PERMISSION_ID", "DragDropReadResponse"]
|
|
7
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { App
|
|
1
|
+
import { App } from '../../app.js';
|
|
2
2
|
export type AppInstallResponse = {
|
|
3
3
|
accepted: boolean;
|
|
4
4
|
};
|
|
@@ -41,12 +41,7 @@ export type FileDragPacket = {
|
|
|
41
41
|
export type DragDropReadRequest = {
|
|
42
42
|
drag_id: string;
|
|
43
43
|
};
|
|
44
|
-
export type DragDropReadRequestDashboard = {
|
|
45
|
-
request_id: string;
|
|
46
|
-
drag_id: string;
|
|
47
|
-
};
|
|
48
44
|
export type DragDropReadMeta = {
|
|
49
|
-
request_id: string;
|
|
50
45
|
drag_id: string;
|
|
51
46
|
files: readonly DragDropFile[];
|
|
52
47
|
};
|
|
@@ -62,12 +57,7 @@ export declare class DragDropReadResponse {
|
|
|
62
57
|
static serialize(data: DragDropReadResponse): Uint8Array;
|
|
63
58
|
static deserialize(data: Uint8Array): DragDropReadResponse;
|
|
64
59
|
}
|
|
65
|
-
export type
|
|
66
|
-
export type DragDropRequestDashboard = {
|
|
67
|
-
request_id: string;
|
|
68
|
-
app: AppJson;
|
|
69
|
-
};
|
|
60
|
+
export type DragDropRequestDashboard = object;
|
|
70
61
|
export type DragDropRequestResponse = {
|
|
71
|
-
request_id: string;
|
|
72
62
|
ok: boolean;
|
|
73
63
|
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{ByteReader as l,ByteWriter as y}from"../../serialize";class n{constructor(e,r,t=1){this.meta=e;this.files=r;this.version=t}static serialize(e){const r=new y;r.writeULEB128(e.version),r.writeString(JSON.stringify(e.meta)),r.writeULEB128(Object.keys(e.files).length);for(const[t,{file:i,buffer:o}]of Object.entries(e.files))r.writeString(t),r.writeString(JSON.stringify(i)),r.writeUint8Array(o);return r.finish()}static deserialize(e){const r=l.fromUint8Array(e),t=r.readULEB128(),i=JSON.parse(r.readString()),o=r.readULEB128(),a={};for(let p=0;p<o;p++){const s=r.readString(),g=JSON.parse(r.readString()),D=r.readUint8Array();a[s]={file:g,buffer:D}}return new n(i,a,t)}}export{n as DragDropReadResponse};
|
|
2
|
+
//# sourceMappingURL=packets.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/dashboard/packets.ts"],
|
|
4
|
+
"sourcesContent": ["import { App } from '../../app.js';\nimport { ByteReader, ByteWriter } from '../../serialize';\n\nexport type AppInstallResponse = {\n accepted: boolean;\n};\n\nexport type DragDropFile = {\n type: 'file' | 'directory';\n size: number;\n name: string;\n};\n\nexport type DragDropPosition = {\n x: number;\n y: number;\n};\n\nexport type DragEnter = {\n type: 'enter';\n drag_id: string;\n files: DragDropFile[];\n position: DragDropPosition;\n};\n\nexport type DragOver = {\n type: 'over';\n drag_id: string;\n position: DragDropPosition;\n};\n\nexport type DragDrop = {\n type: 'drop';\n drag_id: string;\n position: DragDropPosition;\n files: DragDropFile[];\n};\n\nexport type DragLeave = {\n type: 'leave';\n drag_id: string;\n};\n\nexport type DragState = DragEnter | DragOver | DragDrop | DragLeave;\n\nexport type FileDragPacket = {\n drag_id: string;\n app: App;\n state: DragState;\n};\n\nexport type DragDropReadRequest = {\n drag_id: string;\n};\n\nexport type DragDropReadMeta = {\n drag_id: string;\n files: readonly DragDropFile[];\n};\n\nexport type FileData = {\n file: DragDropFile;\n buffer: Uint8Array;\n};\n\nexport class DragDropReadResponse {\n constructor(\n public readonly meta: DragDropReadMeta,\n public readonly files: Record<string, FileData>,\n public readonly version: number = 1,\n ) {}\n\n public static serialize(data: DragDropReadResponse): Uint8Array {\n const writer = new ByteWriter();\n writer.writeULEB128(data.version);\n writer.writeString(JSON.stringify(data.meta));\n writer.writeULEB128(Object.keys(data.files).length);\n\n for (const [key, { file, buffer }] of Object.entries(data.files)) {\n writer.writeString(key);\n writer.writeString(JSON.stringify(file));\n writer.writeUint8Array(buffer);\n }\n\n return writer.finish();\n }\n\n public static deserialize(data: Uint8Array): DragDropReadResponse {\n const reader = ByteReader.fromUint8Array(data);\n const version = reader.readULEB128();\n const meta: DragDropReadMeta = JSON.parse(reader.readString());\n const length = reader.readULEB128();\n\n const files: Record<string, FileData> = {};\n for (let i = 0; i < length; i++) {\n const key = reader.readString();\n const file: DragDropFile = JSON.parse(reader.readString());\n const buffer = reader.readUint8Array();\n files[key] = { file, buffer };\n }\n\n return new DragDropReadResponse(\n meta,\n files,\n version,\n );\n }\n}\n\nexport type DragDropRequestDashboard = object;\n\nexport type DragDropRequestResponse = {\n ok: boolean;\n};\n"],
|
|
5
|
+
"mappings": "AACA,OAAS,cAAAA,EAAY,cAAAC,MAAkB,kBAgEhC,MAAMC,CAAqB,CAC9B,YACoBC,EACAC,EACAC,EAAkB,EACpC,CAHkB,UAAAF,EACA,WAAAC,EACA,aAAAC,CACjB,CAEH,OAAc,UAAUC,EAAwC,CAC5D,MAAMC,EAAS,IAAIN,EACnBM,EAAO,aAAaD,EAAK,OAAO,EAChCC,EAAO,YAAY,KAAK,UAAUD,EAAK,IAAI,CAAC,EAC5CC,EAAO,aAAa,OAAO,KAAKD,EAAK,KAAK,EAAE,MAAM,EAElD,SAAW,CAACE,EAAK,CAAE,KAAAC,EAAM,OAAAC,CAAO,CAAC,IAAK,OAAO,QAAQJ,EAAK,KAAK,EAC3DC,EAAO,YAAYC,CAAG,EACtBD,EAAO,YAAY,KAAK,UAAUE,CAAI,CAAC,EACvCF,EAAO,gBAAgBG,CAAM,EAGjC,OAAOH,EAAO,OAAO,CACzB,CAEA,OAAc,YAAYD,EAAwC,CAC9D,MAAMK,EAASX,EAAW,eAAeM,CAAI,EACvCD,EAAUM,EAAO,YAAY,EAC7BR,EAAyB,KAAK,MAAMQ,EAAO,WAAW,CAAC,EACvDC,EAASD,EAAO,YAAY,EAE5BP,EAAkC,CAAC,EACzC,QAASS,EAAI,EAAGA,EAAID,EAAQC,IAAK,CAC7B,MAAML,EAAMG,EAAO,WAAW,EACxBF,EAAqB,KAAK,MAAME,EAAO,WAAW,CAAC,EACnDD,EAASC,EAAO,eAAe,EACrCP,EAAMI,CAAG,EAAI,CAAE,KAAAC,EAAM,OAAAC,CAAO,CAChC,CAEA,OAAO,IAAIR,EACPC,EACAC,EACAC,CACJ,CACJ,CACJ",
|
|
6
|
+
"names": ["ByteReader", "ByteWriter", "DragDropReadResponse", "meta", "files", "version", "data", "writer", "key", "file", "buffer", "reader", "length", "i"]
|
|
7
|
+
}
|
|
@@ -6,13 +6,13 @@ export declare class EndpointType<Req = unknown, Res = unknown> {
|
|
|
6
6
|
readonly responseSerializer: Serializable<Res, Uint8Array>;
|
|
7
7
|
readonly permissionId?: Identifier | undefined;
|
|
8
8
|
constructor(id: Identifier, requestSerializer: Serializable<Req, Uint8Array>, responseSerializer: Serializable<Res, Uint8Array>, permissionId?: Identifier | undefined);
|
|
9
|
-
static createJson<Req, Res, ReqData extends JsonType = JsonType, ResData extends JsonType = JsonType>(identifier: IntoId, { name, requestSerializer, responseSerializer, permissionId
|
|
9
|
+
static createJson<Req, Res, ReqData extends JsonType = JsonType, ResData extends JsonType = JsonType>(identifier: IntoId, { name, requestSerializer, responseSerializer, permissionId }: {
|
|
10
10
|
name: string;
|
|
11
11
|
requestSerializer?: Serializable<Req, ReqData>;
|
|
12
12
|
responseSerializer?: Serializable<Res, ResData>;
|
|
13
13
|
permissionId?: IntoId;
|
|
14
14
|
}): EndpointType<Req, Res>;
|
|
15
|
-
static createSerialized<Req, Res>(identifier: IntoId, { name, requestSerializer, responseSerializer, permissionId
|
|
15
|
+
static createSerialized<Req, Res>(identifier: IntoId, { name, requestSerializer, responseSerializer, permissionId }: {
|
|
16
16
|
name: string;
|
|
17
17
|
requestSerializer: Serializable<Req, Uint8Array>;
|
|
18
18
|
responseSerializer: Serializable<Res, Uint8Array>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Identifier as s}from"../../identifier";import{Serializer as e}from"../../serialize";class t{constructor(i,n,a,o){this.id=i;this.requestSerializer=n;this.responseSerializer=a;this.permissionId=o}static createJson(i,{name:n,requestSerializer:a,responseSerializer:o,permissionId:r}){return new t(s.from(i).join(n),e.pipe(a??e.noop(),e.json()),e.pipe(o??e.noop(),e.json()),r?s.from(r):void 0)}static createSerialized(i,{name:n,requestSerializer:a,responseSerializer:o,permissionId:r}){return new t(s.from(i).join(n),a,o,r?s.from(r):void 0)}}export{t as EndpointType};
|
|
2
|
+
//# sourceMappingURL=endpoint.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/endpoint/endpoint.ts"],
|
|
4
|
+
"sourcesContent": ["import { Identifier, IntoId } from '../../identifier';\nimport { JsonType, type Serializable, Serializer } from '../../serialize';\n\nexport class EndpointType<Req = unknown, Res = unknown> {\n constructor(\n public readonly id: Identifier,\n public readonly requestSerializer: Serializable<Req, Uint8Array>,\n public readonly responseSerializer: Serializable<Res, Uint8Array>,\n public readonly permissionId?: Identifier | undefined,\n ) { }\n\n static createJson<Req, Res, ReqData extends JsonType = JsonType, ResData extends JsonType = JsonType>(\n identifier: IntoId,\n {\n name,\n requestSerializer,\n responseSerializer,\n permissionId,\n }: {\n name: string;\n requestSerializer?: Serializable<Req, ReqData>;\n responseSerializer?: Serializable<Res, ResData>;\n permissionId?: IntoId;\n },\n ): EndpointType<Req, Res> {\n return new EndpointType<Req, Res>(\n Identifier.from(identifier).join(name),\n Serializer.pipe<Req, JsonType, Uint8Array>(requestSerializer ?? Serializer.noop(), Serializer.json()),\n Serializer.pipe<Res, JsonType, Uint8Array>(responseSerializer ?? Serializer.noop(), Serializer.json()),\n permissionId ? Identifier.from(permissionId) : undefined,\n );\n }\n\n static createSerialized<Req, Res>(\n identifier: IntoId,\n {\n name,\n requestSerializer,\n responseSerializer,\n permissionId,\n }: {\n name: string;\n requestSerializer: Serializable<Req, Uint8Array>;\n responseSerializer: Serializable<Res, Uint8Array>;\n permissionId?: IntoId;\n },\n ): EndpointType<Req, Res> {\n return new EndpointType<Req, Res>(\n Identifier.from(identifier).join(name),\n requestSerializer,\n responseSerializer,\n permissionId ? Identifier.from(permissionId) : undefined,\n );\n }\n}\n\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,cAAAA,MAA0B,mBACnC,OAAsC,cAAAC,MAAkB,kBAEjD,MAAMC,CAA2C,CACpD,YACoBC,EACAC,EACAC,EACAC,EAClB,CAJkB,QAAAH,EACA,uBAAAC,EACA,wBAAAC,EACA,kBAAAC,CAChB,CAEJ,OAAO,WACHC,EACA,CACI,KAAAC,EACA,kBAAAJ,EACA,mBAAAC,EACA,aAAAC,CACJ,EAMsB,CACtB,OAAO,IAAIJ,EACPF,EAAW,KAAKO,CAAU,EAAE,KAAKC,CAAI,EACrCP,EAAW,KAAgCG,GAAqBH,EAAW,KAAK,EAAGA,EAAW,KAAK,CAAC,EACpGA,EAAW,KAAgCI,GAAsBJ,EAAW,KAAK,EAAGA,EAAW,KAAK,CAAC,EACrGK,EAAeN,EAAW,KAAKM,CAAY,EAAI,MACnD,CACJ,CAEA,OAAO,iBACHC,EACA,CACI,KAAAC,EACA,kBAAAJ,EACA,mBAAAC,EACA,aAAAC,CACJ,EAMsB,CACtB,OAAO,IAAIJ,EACPF,EAAW,KAAKO,CAAU,EAAE,KAAKC,CAAI,EACrCJ,EACAC,EACAC,EAAeN,EAAW,KAAKM,CAAY,EAAI,MACnD,CACJ,CACJ",
|
|
6
|
+
"names": ["Identifier", "Serializer", "EndpointType", "id", "requestSerializer", "responseSerializer", "permissionId", "identifier", "name"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{IdentifierMap as l}from"../../identifier";import{PacketType as s}from"../../network/packet";import{ExtensionType as u}from"../extension.js";import{EndpointInvokedPacket as f,EndpointInvokePacket as E,EndpointRegisterPacket as c,EndpointResponsePacket as p,InvokeParams as v,ResponseParams as P}from"./packets.js";const o=new u("endpoint",m=>new I(m));class I{constructor(e){this.omu=e;this.callId=Math.floor((performance.timeOrigin+performance.now())*1e3),e.network.registerPacket(k,y,w,t),e.network.addPacketHandler(w,n=>{this.handleInvoked(n)}),e.network.addPacketHandler(t,n=>{const r=this.responsePromises.get(n.params.key);if(!r)throw new Error(`Received response for unknown key ${n.params.key} (${n.params.id.key()})`);if(this.responsePromises.delete(n.params.key),n.params.error){r.reject(new Error(n.params.error));return}r.resolve(n.buffer)}),e.network.addTask(()=>this.onTask())}type=o;boundEndpoints=new l;responsePromises=new Map;callId;async handleInvoked(e){const n=this.boundEndpoints.get(e.params.id);if(!n)throw new Error(`Received invocation for unknown endpoint ${e.params.id.key()} (${e.params.key})`);try{const r=await n.handler(e);this.omu.send(t,new p(new P(e.params.id,e.params.key,null),r))}catch(r){this.omu.send(t,new p(new P(e.params.id,e.params.key,JSON.stringify(r)),new Uint8Array))}}onTask(){const e=new l;for(const[r,i]of this.boundEndpoints)e.set(r,i.type.permissionId);const n=new c(e);this.omu.send(k,n)}bind(e,n){if(this.omu.running)throw new Error("Cannot register endpoints after the client has started");if(this.boundEndpoints.has(e.id))throw new Error(`Endpoint with id ${e.id.key()} is already registered`);this.boundEndpoints.set(e.id,{type:e,handler:async({buffer:r,params:i})=>{const a=e.requestSerializer.deserialize(r),d=await n(a,i);return e.responseSerializer.serialize(d)}})}async call(e,n){const r=this.callId++,i=new Promise((d,h)=>{this.responsePromises.set(r,{resolve:d,reject:h})});this.omu.send(y,new E(new v(e.id,r),e.requestSerializer.serialize(n)));const a=await i;return e.responseSerializer.deserialize(a)}}const k=s.createSerialized(o,{name:"register",serializer:c}),y=s.createSerialized(o,{name:"invoke",serializer:E}),w=s.createSerialized(o,{name:"invoked",serializer:f}),t=s.createSerialized(o,{name:"response",serializer:p});export{o as ENDPOINT_EXTENSION_TYPE,I as EndpointExtension};
|
|
2
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/endpoint/extension.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Identifier } from '../../identifier';\nimport { IdentifierMap } from '../../identifier';\nimport { PacketType } from '../../network/packet';\nimport { Omu } from '../../omu';\nimport { ExtensionType } from '../extension.js';\n\nimport { EndpointType } from './endpoint.js';\nimport { EndpointInvokedPacket, EndpointInvokePacket, EndpointRegisterPacket, EndpointResponsePacket, InvokedParams, InvokeParams, ResponseParams } from './packets.js';\n\nexport const ENDPOINT_EXTENSION_TYPE: ExtensionType<EndpointExtension> = new ExtensionType(\n 'endpoint',\n (omu: Omu) => new EndpointExtension(omu),\n);\n\ntype CallPromise = {\n resolve: (data: Uint8Array) => void;\n reject: (error: Error) => void;\n};\n\ntype EndpointHandler = {\n type: EndpointType;\n handler: (packet: EndpointInvokedPacket) => Promise<Uint8Array>;\n};\n\nexport class EndpointExtension {\n public readonly type: ExtensionType<EndpointExtension> = ENDPOINT_EXTENSION_TYPE;\n private readonly boundEndpoints = new IdentifierMap<EndpointHandler>();\n private readonly responsePromises: Map<number, CallPromise> = new Map();\n private callId: number;\n\n constructor(private readonly omu: Omu) {\n this.callId = Math.floor((performance.timeOrigin + performance.now()) * 1000);\n omu.network.registerPacket(\n ENDPOINT_REGISTER_PACKET,\n ENDPOINT_INVOKE_PACKET,\n ENDPOINT_INVOKED_PACKET,\n ENDPOINT_RESPONSE_PACKET,\n );\n omu.network.addPacketHandler(ENDPOINT_INVOKED_PACKET, (packet) => {\n this.handleInvoked(packet);\n });\n omu.network.addPacketHandler(ENDPOINT_RESPONSE_PACKET, (packet) => {\n const promise = this.responsePromises.get(packet.params.key);\n if (!promise) {\n throw new Error(\n `Received response for unknown key ${packet.params.key} (${packet.params.id.key()})`,\n );\n }\n this.responsePromises.delete(packet.params.key);\n if (packet.params.error) {\n promise.reject(new Error(packet.params.error));\n return;\n }\n promise.resolve(packet.buffer);\n });\n omu.network.addTask(() => this.onTask());\n }\n\n private async handleInvoked(packet: EndpointInvokedPacket) {\n const endpoint = this.boundEndpoints.get(packet.params.id);\n if (!endpoint) {\n throw new Error(`Received invocation for unknown endpoint ${packet.params.id.key()} (${packet.params.key})`);\n }\n try {\n const result = await endpoint.handler(packet);\n this.omu.send(ENDPOINT_RESPONSE_PACKET, new EndpointResponsePacket(\n new ResponseParams(packet.params.id, packet.params.key, null),\n result,\n ));\n } catch (error) {\n this.omu.send(ENDPOINT_RESPONSE_PACKET, new EndpointResponsePacket(\n new ResponseParams(packet.params.id, packet.params.key, JSON.stringify(error)),\n new Uint8Array(),\n ));\n }\n }\n\n private onTask(): void {\n const endpoints = new IdentifierMap<Identifier | undefined>();\n for (const [key, endpoint] of this.boundEndpoints) {\n endpoints.set(key, endpoint.type.permissionId);\n }\n const packet = new EndpointRegisterPacket(endpoints);\n this.omu.send(ENDPOINT_REGISTER_PACKET, packet);\n }\n\n public bind<Req, Res>(\n type: EndpointType<Req, Res>,\n handler: (data: Req, params: InvokedParams) => Promise<Res>,\n ): void {\n if (this.omu.running) {\n throw new Error('Cannot register endpoints after the client has started');\n }\n if (this.boundEndpoints.has(type.id)) {\n throw new Error(`Endpoint with id ${type.id.key()} is already registered`);\n }\n this.boundEndpoints.set(type.id, { type, handler: async ({ buffer, params }) => {\n const req = type.requestSerializer.deserialize(buffer);\n const result = await handler(req, params);\n return type.responseSerializer.serialize(result);\n } });\n }\n\n public async call<Req, Res>(endpoint: EndpointType<Req, Res>, data: Req): Promise<Res> {\n const key = this.callId++;\n const promise = new Promise<Uint8Array>((resolve, reject) => {\n this.responsePromises.set(key, { resolve, reject });\n });\n this.omu.send(ENDPOINT_INVOKE_PACKET, new EndpointInvokePacket(\n new InvokeParams(endpoint.id, key),\n endpoint.requestSerializer.serialize(data),\n ));\n const response = await promise;\n return endpoint.responseSerializer.deserialize(response);\n }\n}\n\nconst ENDPOINT_REGISTER_PACKET = PacketType.createSerialized<EndpointRegisterPacket>(ENDPOINT_EXTENSION_TYPE, {\n name: 'register',\n serializer: EndpointRegisterPacket,\n});\nconst ENDPOINT_INVOKE_PACKET = PacketType.createSerialized<EndpointInvokePacket>(ENDPOINT_EXTENSION_TYPE, {\n name: 'invoke',\n serializer: EndpointInvokePacket,\n});\nconst ENDPOINT_INVOKED_PACKET = PacketType.createSerialized<EndpointInvokedPacket>(ENDPOINT_EXTENSION_TYPE, {\n name: 'invoked',\n serializer: EndpointInvokedPacket,\n});\nconst ENDPOINT_RESPONSE_PACKET = PacketType.createSerialized<EndpointResponsePacket>(ENDPOINT_EXTENSION_TYPE, {\n name: 'response',\n serializer: EndpointResponsePacket,\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["IdentifierMap", "PacketType", "ExtensionType", "EndpointInvokedPacket", "EndpointInvokePacket", "EndpointRegisterPacket", "EndpointResponsePacket", "InvokeParams", "ResponseParams", "ENDPOINT_EXTENSION_TYPE", "omu", "EndpointExtension", "ENDPOINT_REGISTER_PACKET", "ENDPOINT_INVOKE_PACKET", "ENDPOINT_INVOKED_PACKET", "ENDPOINT_RESPONSE_PACKET", "packet", "promise", "endpoint", "result", "error", "endpoints", "key", "type", "handler", "buffer", "params", "req", "data", "resolve", "reject", "response"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/endpoint/index.ts"],
|
|
4
|
+
"sourcesContent": ["export { EndpointType } from './endpoint.js';\nexport type { InvokedParams, InvokeParams } from './packets.js';\n\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,gBAAAA,MAAoB",
|
|
6
|
+
"names": ["EndpointType"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Identifier as n,IdentifierMap as m}from"../../identifier";import{ByteReader as a,ByteWriter as s}from"../../serialize";class u{constructor(e){this.endpoints=e}static serialize(e){const r=new s;r.writeULEB128(e.endpoints.size);for(const[i,t]of e.endpoints)r.writeString(i.key()),r.writeString(t?.key()??"");return r.finish()}static deserialize(e){const r=a.fromUint8Array(e),i=r.readULEB128(),t=new m;for(let d=0;d<i;d++){const b=n.fromKey(r.readString()),k=n.fromKey(r.readString());t.set(b,k)}return new u(t)}}class o{constructor(e,r,i){this.id=e;this.caller=r;this.key=i}static serialize(e){return JSON.stringify({id:e.id.key(),caller:e.caller.key(),key:e.key})}static deserialize(e){const r=JSON.parse(e);return new o(n.fromKey(r.id),n.fromKey(r.caller),r.key)}}class p{constructor(e,r){this.params=e;this.buffer=r}static serialize(e){const r=new s;return r.writeString(o.serialize(e.params)),r.writeUint8Array(e.buffer),r.finish()}static deserialize(e){const r=a.fromUint8Array(e),i=o.deserialize(r.readString()),t=r.readUint8Array();return new p(i,t)}}class c{constructor(e,r){this.id=e;this.key=r}static serialize(e){return JSON.stringify({id:e.id.key(),key:e.key})}static deserialize(e){const r=JSON.parse(e);return new c(n.fromKey(r.id),r.key)}}class y{constructor(e,r){this.params=e;this.buffer=r}static serialize(e){const r=new s;return r.writeString(c.serialize(e.params)),r.writeUint8Array(e.buffer),r.finish()}static deserialize(e){const r=a.fromUint8Array(e),i=c.deserialize(r.readString()),t=r.readUint8Array();return new y(i,t)}}class l{constructor(e,r,i){this.id=e;this.key=r;this.error=i}static serialize(e){return JSON.stringify({id:e.id.key(),key:e.key,error:e.error})}static deserialize(e){const r=JSON.parse(e);return new l(n.fromKey(r.id),r.key,r.error)}}class f{constructor(e,r){this.params=e;this.buffer=r}static serialize(e){const r=new s;return r.writeString(l.serialize(e.params)),r.writeUint8Array(e.buffer),r.finish()}static deserialize(e){const r=a.fromUint8Array(e),i=l.deserialize(r.readString()),t=r.readUint8Array();return new f(i,t)}}export{y as EndpointInvokePacket,p as EndpointInvokedPacket,u as EndpointRegisterPacket,f as EndpointResponsePacket,c as InvokeParams,o as InvokedParams,l as ResponseParams};
|
|
2
|
+
//# sourceMappingURL=packets.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/endpoint/packets.ts"],
|
|
4
|
+
"sourcesContent": ["import { Identifier, IdentifierMap } from '../../identifier';\nimport { ByteReader, ByteWriter } from '../../serialize';\n\nexport class EndpointRegisterPacket {\n constructor(\n public endpoints: IdentifierMap<Identifier | undefined>,\n ) { }\n\n public static serialize(item: EndpointRegisterPacket): Uint8Array {\n const writer = new ByteWriter();\n writer.writeULEB128(item.endpoints.size);\n for (const [key, value] of item.endpoints) {\n writer.writeString(key.key());\n writer.writeString(value?.key() ?? '');\n }\n return writer.finish();\n }\n\n public static deserialize(item: Uint8Array): EndpointRegisterPacket {\n const reader = ByteReader.fromUint8Array(item);\n const count = reader.readULEB128();\n const endpoints = new IdentifierMap<Identifier | undefined>();\n for (let i = 0; i < count; i++) {\n const key = Identifier.fromKey(reader.readString());\n const value = Identifier.fromKey(reader.readString());\n endpoints.set(key, value);\n }\n return new EndpointRegisterPacket(endpoints);\n }\n}\n\nexport class InvokedParams {\n constructor(\n public readonly id: Identifier,\n public readonly caller: Identifier,\n public readonly key: number,\n ) { }\n\n public static serialize(item: InvokedParams): string {\n return JSON.stringify({\n id: item.id.key(),\n caller: item.caller.key(),\n key: item.key,\n });\n }\n\n public static deserialize(item: string): InvokedParams {\n const data: {\n id: string;\n caller: string;\n key: number;\n } = JSON.parse(item);\n return new InvokedParams(\n Identifier.fromKey(data.id),\n Identifier.fromKey(data.caller),\n data.key,\n );\n }\n};\n\nexport class EndpointInvokedPacket {\n constructor(\n public params: InvokedParams,\n public buffer: Uint8Array,\n ) { }\n\n public static serialize(item: EndpointInvokedPacket): Uint8Array {\n const writer = new ByteWriter();\n writer.writeString(InvokedParams.serialize(item.params));\n writer.writeUint8Array(item.buffer);\n return writer.finish();\n }\n\n public static deserialize(item: Uint8Array): EndpointInvokedPacket {\n const reader = ByteReader.fromUint8Array(item);\n const params = InvokedParams.deserialize(reader.readString());\n const buffer = reader.readUint8Array();\n return new EndpointInvokedPacket(params, buffer);\n }\n}\n\nexport class InvokeParams {\n constructor(\n public readonly id: Identifier,\n public readonly key: number,\n ) { }\n\n public static serialize(item: InvokeParams): string {\n return JSON.stringify({\n id: item.id.key(),\n key: item.key,\n });\n }\n\n public static deserialize(item: string): InvokeParams {\n const data: {\n id: string;\n key: number;\n } = JSON.parse(item);\n return new InvokeParams(\n Identifier.fromKey(data.id),\n data.key,\n );\n }\n};\n\nexport class EndpointInvokePacket {\n constructor(\n public params: InvokeParams,\n public buffer: Uint8Array,\n ) { }\n\n public static serialize(item: EndpointInvokePacket): Uint8Array {\n const writer = new ByteWriter();\n writer.writeString(InvokeParams.serialize(item.params));\n writer.writeUint8Array(item.buffer);\n return writer.finish();\n }\n\n public static deserialize(item: Uint8Array): EndpointInvokePacket {\n const reader = ByteReader.fromUint8Array(item);\n const params = InvokeParams.deserialize(reader.readString());\n const buffer = reader.readUint8Array();\n return new EndpointInvokePacket(params, buffer);\n }\n}\n\nexport class ResponseParams {\n constructor(\n public readonly id: Identifier,\n public readonly key: number,\n public readonly error: string | null,\n ) { }\n\n public static serialize(item: ResponseParams): string {\n return JSON.stringify({\n id: item.id.key(),\n key: item.key,\n error: item.error,\n });\n }\n\n public static deserialize(item: string): ResponseParams {\n const data: {\n id: string;\n key: number;\n error: string | null;\n } = JSON.parse(item);\n return new ResponseParams(\n Identifier.fromKey(data.id),\n data.key,\n data.error,\n );\n }\n};\n\nexport class EndpointResponsePacket {\n constructor(\n public params: ResponseParams,\n public buffer: Uint8Array,\n ) { }\n\n public static serialize(item: EndpointResponsePacket): Uint8Array {\n const writer = new ByteWriter();\n writer.writeString(ResponseParams.serialize(item.params));\n writer.writeUint8Array(item.buffer);\n return writer.finish();\n }\n\n public static deserialize(item: Uint8Array): EndpointResponsePacket {\n const reader = ByteReader.fromUint8Array(item);\n const params = ResponseParams.deserialize(reader.readString());\n const buffer = reader.readUint8Array();\n return new EndpointResponsePacket(params, buffer);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Identifier", "IdentifierMap", "ByteReader", "ByteWriter", "EndpointRegisterPacket", "endpoints", "item", "writer", "key", "value", "reader", "count", "i", "InvokedParams", "id", "caller", "data", "EndpointInvokedPacket", "params", "buffer", "InvokeParams", "EndpointInvokePacket", "ResponseParams", "error", "EndpointResponsePacket"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
class r{constructor(e){this.omu=e}extensionMap=new Map;register(e){if(this.extensionMap.has(e.name))throw new Error(`Extension type ${e.name} already registered`);const n=e.create(this.omu);return this.extensionMap.set(e.name,n),n}}export{r as ExtensionRegistry};
|
|
2
|
+
//# sourceMappingURL=extension-registry.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/api/extension-registry.ts"],
|
|
4
|
+
"sourcesContent": ["import { Omu } from '../omu.js';\nimport type { Extension, ExtensionType } from './extension.js';\n\nexport class ExtensionRegistry {\n private readonly extensionMap: Map<string, Extension> = new Map();\n\n constructor(private readonly omu: Omu) {}\n\n register<T extends Extension>(type: ExtensionType<T>): T {\n if (this.extensionMap.has(type.name)) {\n throw new Error(`Extension type ${type.name} already registered`);\n }\n const extension = type.create(this.omu);\n this.extensionMap.set(type.name, extension);\n return extension;\n }\n}\n"],
|
|
5
|
+
"mappings": "AAGO,MAAMA,CAAkB,CAG3B,YAA6BC,EAAU,CAAV,SAAAA,CAAW,CAFvB,aAAuC,IAAI,IAI5D,SAA8BC,EAA2B,CACrD,GAAI,KAAK,aAAa,IAAIA,EAAK,IAAI,EAC/B,MAAM,IAAI,MAAM,kBAAkBA,EAAK,IAAI,qBAAqB,EAEpE,MAAMC,EAAYD,EAAK,OAAO,KAAK,GAAG,EACtC,YAAK,aAAa,IAAIA,EAAK,KAAMC,CAAS,EACnCA,CACX,CACJ",
|
|
6
|
+
"names": ["ExtensionRegistry", "omu", "type", "extension"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/api/extension.ts"],
|
|
4
|
+
"sourcesContent": ["import { Identifier } from '../identifier';\nimport { Omu } from '../omu';\n\nexport interface Extension {\n readonly type: ExtensionType;\n}\n\nexport class ExtensionType<T extends Extension = Extension> extends Identifier {\n constructor(\n public readonly name: string,\n public readonly create: (omu: Omu) => T,\n ) {\n super('ext', name);\n }\n\n public key(): string {\n return new Identifier('ext', this.name).key();\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,cAAAA,MAAkB,gBAOpB,MAAMC,UAAuDD,CAAW,CAC3E,YACoBE,EACAC,EAClB,CACE,MAAM,MAAOD,CAAI,EAHD,UAAAA,EACA,YAAAC,CAGpB,CAEO,KAAc,CACjB,OAAO,IAAIH,EAAW,MAAO,KAAK,IAAI,EAAE,IAAI,CAChD,CACJ",
|
|
6
|
+
"names": ["Identifier", "ExtensionType", "name", "create"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{textEncoder as _}from"../../const";import{PacketType as d}from"../../network/packet";import{ExtensionType as C}from"../extension";import{DataChunk as p,OmuResponse as O}from"./http";import{OmuWS as W,WSMsgType as m}from"./websocket";const a=new C("http",i=>new P(i)),G=a.join("request"),S=d.createJson(a,{name:"request_create"}),v=d.createSerialized(a,{name:"request_send",serializer:p}),H=d.createJson(a,{name:"request_close"}),E=d.createJson(a,{name:"response_create"}),g=d.createSerialized(a,{name:"response_chunk",serializer:p}),k=d.createJson(a,{name:"response_close"}),T=d.createJson(a,{name:"ws_create"}),q=d.createJson(a,{name:"ws_open"}),w=d.createSerialized(a,{name:"ws_data",serializer:p}),R=d.createJson(a,{name:"ws_close"}),b=d.createJson(a,{name:"ws_error"});function y(){let i,n;const e=new Promise((t,r)=>{i=t,n=r});if(!i||!n)throw new Error("Failed to create future");return{promise:e,resolve:i,reject:n}}class P{constructor(n){this.omu=n;n.network.registerPacket(S,v,H,E,g,k,R,T,w,q,b),n.network.addPacketHandler(E,e=>{const t=this.httpHandles[e.id];if(!t){console.warn("Received response for unknown request",e.id);return}if(t.type!=="created"){console.warn("Received response for already handled request",e.id);return}t.setResponse(e)}),n.network.addPacketHandler(g,e=>{const t=this.httpHandles[e.meta.id];if(!t){console.warn("Received response for unknown request",e.meta.id);return}if(t.type!=="receiving"){console.warn("Received chunk for non-receiving request",e.meta.id);return}t.receive(e.body)}),n.network.addPacketHandler(k,e=>{const t=this.httpHandles[e.id];if(!t){console.warn("Received response for unknown request",e.id);return}if(t.type!=="receiving"){console.warn("Received chunk for non-receiving request",e.id);return}t.close(),delete this.httpHandles[e.id]}),n.network.addPacketHandler(q,e=>{const t=this.wsHandles[e.id];if(!t){console.warn("Received response for unknown socket",e.id);return}if(t.type!=="created"){console.warn("Received response for already handled socket",e.id);return}t.handle.open(e),t.type="receiving"}),n.network.addPacketHandler(w,e=>{const t=this.wsHandles[e.meta.id];if(!t){console.warn("Received response for unknown socket",e.meta.id);return}if(t.type!=="receiving"){console.warn("Received chunk for non-receiving socket",e.meta.id);return}t.handle.dispatch(e)}),n.network.addPacketHandler(R,e=>{const t=this.wsHandles[e.id];if(!t){console.warn("Received response for unknown socket",e.id);return}t.handle.close(e),delete this.httpHandles[e.id]}),n.network.addPacketHandler(b,e=>{const t=this.wsHandles[e.id];if(!t){console.warn("Received response for unknown socket",e.id);return}t.handle.error(e),delete this.httpHandles[e.id]}),n.event.ready.listen(()=>{this.wsSendLoop()})}type=a;requestCount=0;httpHandles={};wsHandles={};wsSendQueue=[];wsSendWaitResolve=()=>{};async wsSendLoop(){for(;this.omu.running;){const n=this.wsSendQueue.shift();if(n){const e=await A(n.data),t=typeof n.data=="string"?m.TEXT:m.BINARY;this.omu.send(w,new p({id:n.id,type:t},e))}else await new Promise(e=>{this.wsSendWaitResolve=e})}}generateHeaders(n,e){const t={},r={},c=(s,o)=>{const h=s.toLowerCase(),f=r[h];f&&delete t[f],t[s]=o,r[h]=s};if(n.headers.forEach((s,o)=>{c(o,s)}),e?.headers)if(e.headers instanceof Headers)e.headers.forEach((s,o)=>{c(o,s)});else if(Array.isArray(e.headers))for(const[s,o]of e.headers)c(s,o);else for(const s in e.headers){const o=e.headers[s];c(s,o)}return t}generateId(){return this.omu.app.id.join(`${performance.timeOrigin}-${this.requestCount++}`)}async request(n,e){const t=new Request(n,e),r=this.generateId().key();if(this.omu.send(S,{id:r,header:this.generateHeaders(t,e),method:t.method,redirect:t.redirect,url:t.url}),t.body){const u=t.body.getReader();for(;;){const l=await u.read();if(l.done)break;this.omu.send(v,{meta:{id:r},body:l.value})}}this.omu.send(H,{id:r});const c=[],s=y();let o=y();const h=u=>{s.resolve(u),this.httpHandles[r]={type:"receiving",receive(l){c.push(l),o.resolve(!0),o=y()},close(){o.resolve(!1)}}};return this.httpHandles[r]={type:"created",setResponse:h},{response:await s.promise,stream:new ReadableStream({async start(u){for(;await o.promise;){const l=c.shift();if(!l)break;u.enqueue(l)}u.close()}})}}async fetch(n,e){const{response:t,stream:r}=await this.request(n,e);return new O(new Headers(t.header),t.status>=200&&t.status<300,t.redirected,t.status,t.statusText,"basic",t.url,r,!1)}async ws(n,e){const t=new Request(n,e),r=this.generateId(),c=W.create({addQueue:s=>{this.wsSendQueue.push({id:r.key(),data:s}),this.wsSendWaitResolve()},dispose:s=>{this.omu.send(R,{id:r.key(),code:s.code,reason:s.reason}),delete this.wsHandles[r.key()]}});return this.wsHandles[r.key()]={type:"created",handle:c},this.omu.send(T,{id:r.key(),header:this.generateHeaders(t,e),method:t.method,redirect:t.redirect,url:t.url}),c.ws}}async function A(i){if(typeof i=="string")return _.encode(i);if(i instanceof Blob){const n=await i.arrayBuffer();return new Uint8Array(n)}else return new Uint8Array(i)}export{a as HTTP_EXTENSION_TYPE,G as HTTP_REQUEST_PERMISSION_ID,P as HttpExtension};
|
|
2
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/http/extension.ts"],
|
|
4
|
+
"sourcesContent": ["\nimport { textEncoder } from '../../const';\nimport { Identifier } from '../../identifier';\nimport { PacketType } from '../../network/packet';\nimport { Omu } from '../../omu';\nimport { Extension, ExtensionType } from '../extension';\nimport { DataChunk, HttpRequest, OmuResponse, RequestHandle } from './http';\nimport { OmuWS, WebSocketClose, WebSocketError, WebSocketOpen, WSData, WSDataMeta, WSHandleState, WSMsgType } from './websocket';\n\nexport const HTTP_EXTENSION_TYPE: ExtensionType<HttpExtension> = new ExtensionType(\n 'http',\n (omu: Omu) => new HttpExtension(omu),\n);\n\nexport const HTTP_REQUEST_PERMISSION_ID: Identifier = HTTP_EXTENSION_TYPE.join('request');\n\nconst REQUEST_CREATE = PacketType.createJson<HttpRequest>(HTTP_EXTENSION_TYPE, {\n name: 'request_create',\n});\n\nconst REQUEST_SEND = PacketType.createSerialized<DataChunk<RequestHandle>>(HTTP_EXTENSION_TYPE, {\n name: 'request_send',\n serializer: DataChunk,\n});\n\ntype HttpRequestClose = RequestHandle;\n\nconst REQUEST_CLOSE = PacketType.createJson<HttpRequestClose>(HTTP_EXTENSION_TYPE, {\n name: 'request_close',\n});\n\ntype HttpResponse = RequestHandle & {\n header: Record<string, string>;\n status: number;\n statusText: string;\n url: string;\n history: HttpResponse[];\n redirected: boolean;\n};\n\nconst RESPONSE_CREATE = PacketType.createJson<HttpResponse>(HTTP_EXTENSION_TYPE, {\n name: 'response_create',\n});\n\nconst RESPONSE_CHUNK = PacketType.createSerialized<DataChunk<RequestHandle>>(HTTP_EXTENSION_TYPE, {\n name: 'response_chunk',\n serializer: DataChunk,\n});\n\nconst RESPONSE_CLOSE = PacketType.createJson<RequestHandle>(HTTP_EXTENSION_TYPE, {\n name: 'response_close',\n});\n\ntype HandleStateReceiving = {\n type: 'receiving';\n receive(data: Uint8Array): void;\n close(): void;\n};\n\ntype HandleStateCreated = {\n type: 'created';\n setResponse(response: HttpResponse): void;\n};\n\ntype HandleState = HandleStateCreated | HandleStateReceiving;\n\nconst WEBSOCKET_CREATE = PacketType.createJson<HttpRequest>(HTTP_EXTENSION_TYPE, {\n name: 'ws_create',\n});\n\nconst WEBSOCKET_OPEN = PacketType.createJson<WebSocketOpen>(HTTP_EXTENSION_TYPE, {\n name: 'ws_open',\n});\n\nconst WEBSOCKET_DATA = PacketType.createSerialized<DataChunk<WSDataMeta>>(HTTP_EXTENSION_TYPE, {\n name: 'ws_data',\n serializer: DataChunk,\n});\n\nconst WEBSOCKET_CLOSE = PacketType.createJson<WebSocketClose>(HTTP_EXTENSION_TYPE, {\n name: 'ws_close',\n});\n\nconst WEBSOCKET_ERROR = PacketType.createJson<WebSocketError>(HTTP_EXTENSION_TYPE, {\n name: 'ws_error',\n});\n\nfunction createFuture<T>(): {\n promise: Promise<T>;\n resolve: (value: T) => void;\n reject: (reason?: unknown) => void;\n} {\n let resolve: ((value: T) => void) | undefined = undefined;\n let reject: ((reason?: unknown) => void) | undefined = undefined;\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n if (!resolve || !reject) throw new Error('Failed to create future');\n return {\n promise,\n resolve,\n reject,\n };\n}\n\ntype WSSendTask = {\n id: string;\n data: WSData;\n};\n\nexport class HttpExtension implements Extension {\n public readonly type: ExtensionType<Extension> = HTTP_EXTENSION_TYPE;\n private requestCount: number = 0;\n\n private readonly httpHandles: Record<string, HandleState | undefined> = {};\n private readonly wsHandles: Record<string, WSHandleState> = {};\n private readonly wsSendQueue: WSSendTask[] = [];\n private wsSendWaitResolve: () => void = () => {};\n\n constructor(\n private readonly omu: Omu,\n ) {\n omu.network.registerPacket(\n REQUEST_CREATE,\n REQUEST_SEND,\n REQUEST_CLOSE,\n RESPONSE_CREATE,\n RESPONSE_CHUNK,\n RESPONSE_CLOSE,\n WEBSOCKET_CLOSE,\n WEBSOCKET_CREATE,\n WEBSOCKET_DATA,\n WEBSOCKET_OPEN,\n WEBSOCKET_ERROR,\n );\n omu.network.addPacketHandler(RESPONSE_CREATE, (packet) => {\n const handle = this.httpHandles[packet.id];\n if (!handle) {\n console.warn('Received response for unknown request', packet.id);\n return;\n }\n if (handle.type !== 'created') {\n console.warn('Received response for already handled request', packet.id);\n return;\n }\n handle.setResponse(packet);\n });\n omu.network.addPacketHandler(RESPONSE_CHUNK, (packet) => {\n const handle = this.httpHandles[packet.meta.id];\n if (!handle) {\n console.warn('Received response for unknown request', packet.meta.id);\n return;\n }\n if (handle.type !== 'receiving') {\n console.warn('Received chunk for non-receiving request', packet.meta.id);\n return;\n }\n handle.receive(packet.body);\n });\n omu.network.addPacketHandler(RESPONSE_CLOSE, (packet) => {\n const handle = this.httpHandles[packet.id];\n if (!handle) {\n console.warn('Received response for unknown request', packet.id);\n return;\n }\n if (handle.type !== 'receiving') {\n console.warn('Received chunk for non-receiving request', packet.id);\n return;\n }\n handle.close();\n delete this.httpHandles[packet.id];\n });\n omu.network.addPacketHandler(WEBSOCKET_OPEN, (packet) => {\n const handle = this.wsHandles[packet.id];\n if (!handle) {\n console.warn('Received response for unknown socket', packet.id);\n return;\n }\n if (handle.type !== 'created') {\n console.warn('Received response for already handled socket', packet.id);\n return;\n }\n handle.handle.open(packet);\n handle.type = 'receiving';\n });\n omu.network.addPacketHandler(WEBSOCKET_DATA, (packet) => {\n const handle = this.wsHandles[packet.meta.id];\n if (!handle) {\n console.warn('Received response for unknown socket', packet.meta.id);\n return;\n }\n if (handle.type !== 'receiving') {\n console.warn('Received chunk for non-receiving socket', packet.meta.id);\n return;\n }\n handle.handle.dispatch(packet);\n });\n omu.network.addPacketHandler(WEBSOCKET_CLOSE, (packet) => {\n const handle = this.wsHandles[packet.id];\n if (!handle) {\n console.warn('Received response for unknown socket', packet.id);\n return;\n }\n handle.handle.close(packet);\n delete this.httpHandles[packet.id];\n });\n omu.network.addPacketHandler(WEBSOCKET_ERROR, (packet) => {\n const handle = this.wsHandles[packet.id];\n if (!handle) {\n console.warn('Received response for unknown socket', packet.id);\n return;\n }\n handle.handle.error(packet);\n delete this.httpHandles[packet.id];\n });\n omu.event.ready.listen(() => {\n this.wsSendLoop();\n });\n }\n\n private async wsSendLoop() {\n while (this.omu.running) {\n const send = this.wsSendQueue.shift();\n if (send) {\n const array = await toUint8Array(send.data);\n const type = typeof send.data === 'string' ? WSMsgType.TEXT : WSMsgType.BINARY;\n this.omu.send(WEBSOCKET_DATA, new DataChunk({ id: send.id, type }, array));\n } else {\n await new Promise<void>((resolve) => {\n this.wsSendWaitResolve = resolve;\n });\n }\n }\n }\n\n private generateHeaders(request: Request, init?: RequestInit): Record<string, string> {\n const headers: Record<string, string> = {};\n const keys: Record<string, string> = {};\n const set = (key: string, value: string) => {\n const lowerKey = key.toLowerCase();\n const originalKey = keys[lowerKey];\n if (originalKey) {\n delete headers[originalKey];\n }\n headers[key] = value;\n keys[lowerKey] = key;\n };\n request.headers.forEach((value, key) => {\n set(key, value);\n });\n if (init?.headers) {\n if (init.headers instanceof Headers) {\n init.headers.forEach((value, key) => {\n set(key, value);\n });\n } else if (Array.isArray(init.headers)) {\n for (const [key, value] of init.headers) {\n set(key, value);\n }\n } else {\n for (const key in init.headers) {\n const value = init.headers[key];\n set(key, value);\n }\n }\n }\n return headers;\n }\n\n private generateId(): Identifier {\n return this.omu.app.id.join(`${performance.timeOrigin}-${this.requestCount++}`);\n }\n\n public async request(input: string | URL | globalThis.Request, init?: RequestInit): Promise<{ response: HttpResponse; stream: ReadableStream }> {\n const request = new Request(input, init);\n const id = this.generateId().key();\n this.omu.send(REQUEST_CREATE, {\n id,\n header: this.generateHeaders(request, init),\n method: request.method,\n redirect: request.redirect,\n url: request.url,\n });\n if (request.body) {\n const reader = request.body.getReader();\n while (true) {\n const result = await reader.read();\n if (result.done) {\n break;\n }\n this.omu.send(REQUEST_SEND, {\n meta: { id },\n body: result.value,\n });\n }\n }\n this.omu.send(REQUEST_CLOSE, { id });\n const chunks: Uint8Array[] = [];\n const responseFuture = createFuture<HttpResponse>();\n let chunkEvent = createFuture<boolean>();\n const setResponse = (response: HttpResponse) => {\n responseFuture.resolve(response);\n this.httpHandles[id] = {\n type: 'receiving',\n receive(data: Uint8Array<ArrayBufferLike>) {\n chunks.push(data);\n chunkEvent.resolve(true);\n chunkEvent = createFuture<boolean>();\n },\n close() {\n chunkEvent.resolve(false);\n },\n };\n };\n this.httpHandles[id] = {\n type: 'created',\n setResponse,\n };\n const response = await responseFuture.promise;\n return {\n response,\n stream: new ReadableStream<Uint8Array>({\n async start(controller) {\n while (await chunkEvent.promise) {\n const chunk = chunks.shift();\n if (!chunk) break;\n controller.enqueue(chunk);\n }\n controller.close();\n },\n }),\n };\n }\n\n public async fetch(input: string | URL | globalThis.Request, init?: RequestInit): Promise<OmuResponse> {\n const { response, stream } = await this.request(input, init);\n return new OmuResponse(\n new Headers(response.header),\n response.status >= 200 && response.status < 300,\n response.redirected,\n response.status,\n response.statusText,\n 'basic',\n response.url,\n stream,\n false,\n );\n }\n\n public async ws(input: string | URL | globalThis.Request, options?: {\n method?: string;\n autoclose?: boolean;\n autoping?: boolean;\n params?: Record<string, string>;\n headers?: Record<string, string>;\n }): Promise<OmuWS> {\n const request = new Request(input, options);\n const id = this.generateId();\n const handle = OmuWS.create({\n addQueue: (data) => {\n this.wsSendQueue.push({\n id: id.key(),\n data,\n });\n this.wsSendWaitResolve();\n },\n dispose: (options: { code?: number; reason?: string }) => {\n this.omu.send(WEBSOCKET_CLOSE, {\n id: id.key(),\n code: options.code,\n reason: options.reason,\n });\n delete this.wsHandles[id.key()];\n },\n });\n this.wsHandles[id.key()] = {\n type: 'created',\n handle,\n };\n this.omu.send(WEBSOCKET_CREATE, {\n id: id.key(),\n header: this.generateHeaders(request, options),\n method: request.method,\n redirect: request.redirect,\n url: request.url,\n });\n return handle.ws;\n }\n}\n\nasync function toUint8Array(data: string | ArrayBufferLike | Blob | ArrayBufferView): Promise<Uint8Array<ArrayBufferLike>> {\n if (typeof data === 'string') {\n return textEncoder.encode(data);\n } else if (data instanceof Blob) {\n const arrayBuffer = await data.arrayBuffer();\n return new Uint8Array(arrayBuffer);\n } else {\n return new Uint8Array(data as ArrayBufferLike);\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["textEncoder", "PacketType", "ExtensionType", "DataChunk", "OmuResponse", "OmuWS", "WSMsgType", "HTTP_EXTENSION_TYPE", "omu", "HttpExtension", "HTTP_REQUEST_PERMISSION_ID", "REQUEST_CREATE", "REQUEST_SEND", "REQUEST_CLOSE", "RESPONSE_CREATE", "RESPONSE_CHUNK", "RESPONSE_CLOSE", "WEBSOCKET_CREATE", "WEBSOCKET_OPEN", "WEBSOCKET_DATA", "WEBSOCKET_CLOSE", "WEBSOCKET_ERROR", "createFuture", "resolve", "reject", "promise", "res", "rej", "packet", "handle", "send", "array", "toUint8Array", "type", "request", "init", "headers", "keys", "set", "key", "value", "lowerKey", "originalKey", "input", "id", "reader", "result", "chunks", "responseFuture", "chunkEvent", "setResponse", "response", "data", "controller", "chunk", "stream", "options", "arrayBuffer"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{ByteReader as i,ByteWriter as a}from"../../serialize";class n{constructor(e,r){this.meta=e;this.body=r}static serialize(e){const r=new a;return r.writeJSON(e.meta),r.writeUint8Array(e.body),r.finish()}static deserialize(e){const r=i.fromUint8Array(e),t=r.readJSON(),s=r.readUint8Array();return new n(t,s)}}class o{constructor(e,r,t,s,y,d,u,l,p){this.headers=e;this.ok=r;this.redirected=t;this.status=s;this.statusText=y;this.type=d;this.url=u;this.body=l;this.bodyUsed=p}clone(){return new o(this.headers,this.ok,this.redirected,this.status,this.statusText,this.type,this.url,this.body,this.bodyUsed)}async arrayBuffer(){return await new Response(this.body).arrayBuffer()}blob(){return new Response(this.body).blob()}bytes(){return new Response(this.body).arrayBuffer().then(e=>new Uint8Array(e))}formData(){return new Response(this.body).formData()}json(){return new Response(this.body).json()}text(){return new Response(this.body).text()}}export{n as DataChunk,o as OmuResponse};
|
|
2
|
+
//# sourceMappingURL=http.js.map
|