insite-ws-transfers 2.0.10 → 2.0.17
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/IncomingTransfer.d.ts +10 -15
- package/dist/IncomingTransfer.d.ts.map +1 -1
- package/dist/IncomingTransport.d.ts +10 -11
- package/dist/IncomingTransport.d.ts.map +1 -1
- package/dist/OutgoingTransfer.d.ts +17 -25
- package/dist/OutgoingTransfer.d.ts.map +1 -1
- package/dist/OutgoingTransport.d.ts +7 -8
- package/dist/OutgoingTransport.d.ts.map +1 -1
- package/dist/StringStreamer.d.ts +1 -1
- package/dist/StringStreamer.d.ts.map +1 -1
- package/dist/browser/FileStreamer.d.ts +1 -1
- package/dist/browser/FileStreamer.d.ts.map +1 -1
- package/dist/browser/incoming.d.ts +8 -5
- package/dist/browser/incoming.d.ts.map +1 -1
- package/dist/browser/index.d.ts +1 -0
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +4 -4
- package/dist/browser/outgoing.d.ts +7 -4
- package/dist/browser/outgoing.d.ts.map +1 -1
- package/dist/browser/types.d.ts +18 -0
- package/dist/browser/types.d.ts.map +1 -0
- package/dist/common.d.ts +0 -3
- package/dist/common.d.ts.map +1 -1
- package/dist/node/incoming.d.ts +9 -8
- package/dist/node/incoming.d.ts.map +1 -1
- package/dist/node/index.d.ts +1 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +1 -1
- package/dist/node/index.js.map +4 -4
- package/dist/node/outgoing.d.ts +8 -5
- package/dist/node/outgoing.d.ts.map +1 -1
- package/dist/node/types.d.ts +18 -0
- package/dist/node/types.d.ts.map +1 -0
- package/dist/types.d.ts +89 -71
- package/dist/types.d.ts.map +1 -1
- package/package.json +10 -10
|
@@ -1,23 +1,17 @@
|
|
|
1
|
-
import { InSiteWebSocket } from "insite-ws/client";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
import { IncomingTransport } from "./IncomingTransport";
|
|
6
|
-
import { IncomingChunk, IncomingData, IncomingTransferProps, IncomingTransferTypes } from "./types";
|
|
7
|
-
export declare class IncomingTransfer<PT extends typeof IncomingTransport, FT extends typeof IncomingTransfer> {
|
|
1
|
+
import type { InSiteWebSocket } from "insite-ws/client";
|
|
2
|
+
import type { InSiteWebSocketServerClient } from "insite-ws/server";
|
|
3
|
+
import type { IncomingChunk, IncomingData, IncomingTransferHandles, IncomingTransferListener, IncomingTransferProps, IncomingTransferTypes, TransferTypes } from "./types";
|
|
4
|
+
export declare class IncomingTransfer<WSORWSSC extends InSiteWebSocket | InSiteWebSocketServerClient> {
|
|
8
5
|
#private;
|
|
9
|
-
constructor(
|
|
10
|
-
|
|
11
|
-
ws: InSiteWebSocket | InSiteWebSocketServerClient<any>;
|
|
12
|
-
[callArgsSymbol]: readonly [InSiteWebSocket] | readonly [InSiteWebSocketServer, InSiteWebSocketServerClient];
|
|
6
|
+
constructor(ws: Exclude<WSORWSSC, InSiteWebSocket> | InSiteWebSocket, kind: string, id: string, { type, collect, encoding, size, metadata }: IncomingTransferProps<TransferTypes>, handles: IncomingTransferHandles, listeners: Set<IncomingTransferListener<WSORWSSC, any>>);
|
|
7
|
+
ws: InSiteWebSocket | Exclude<WSORWSSC, InSiteWebSocket>;
|
|
13
8
|
kind: string;
|
|
14
9
|
id: string;
|
|
15
|
-
type:
|
|
10
|
+
type: TransferTypes;
|
|
16
11
|
collect: boolean;
|
|
17
12
|
encoding: "base64" | "buffer" | "utf8";
|
|
18
13
|
size: number;
|
|
19
14
|
metadata: Record<string, unknown>;
|
|
20
|
-
listeners: Set<import("./types").IncomingTransferListener<FT>>;
|
|
21
15
|
data?: IncomingData;
|
|
22
16
|
isAborted: boolean;
|
|
23
17
|
isAbortedBySender: boolean;
|
|
@@ -32,6 +26,7 @@ export declare class IncomingTransfer<PT extends typeof IncomingTransport, FT ex
|
|
|
32
26
|
progress: number;
|
|
33
27
|
endAt: null | number;
|
|
34
28
|
error: Error | null;
|
|
29
|
+
[key: number | string | symbol]: unknown;
|
|
35
30
|
whenSetUp(): Promise<void>;
|
|
36
31
|
confirm(): Promise<void | null>;
|
|
37
32
|
handleChunk(chunk: IncomingChunk, length?: number): void;
|
|
@@ -41,7 +36,7 @@ export declare class IncomingTransfer<PT extends typeof IncomingTransport, FT ex
|
|
|
41
36
|
serialize(): {
|
|
42
37
|
id: string;
|
|
43
38
|
kind: string;
|
|
44
|
-
type:
|
|
39
|
+
type: TransferTypes;
|
|
45
40
|
collect: boolean;
|
|
46
41
|
encoding: "base64" | "buffer" | "utf8";
|
|
47
42
|
size: number;
|
|
@@ -60,6 +55,6 @@ export declare class IncomingTransfer<PT extends typeof IncomingTransport, FT ex
|
|
|
60
55
|
endAt: number | null;
|
|
61
56
|
error: Error | null;
|
|
62
57
|
};
|
|
63
|
-
static
|
|
58
|
+
static types: IncomingTransferTypes<IncomingTransfer<InSiteWebSocket | InSiteWebSocketServerClient>, TransferTypes>;
|
|
64
59
|
}
|
|
65
60
|
//# sourceMappingURL=IncomingTransfer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IncomingTransfer.d.ts","sourceRoot":"","sources":["../src/IncomingTransfer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IncomingTransfer.d.ts","sourceRoot":"","sources":["../src/IncomingTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,KAAK,EACX,aAAa,EACb,YAAY,EACZ,uBAAuB,EACvB,wBAAwB,EAExB,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,MAAM,SAAS,CAAC;AAMjB,qBAAa,gBAAgB,CAAC,QAAQ,SAAS,eAAe,GAAG,2BAA2B;;gBAE1F,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,eAAe,EACxD,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,EACC,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,EAAE,qBAAqB,CAAC,aAAa,CAAC,EACvC,OAAO,EAAE,uBAAuB,EAChC,SAAS,EAAE,GAAG,CAAC,wBAAwB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAoBxD,EAAE,uDAAC;IAEH,IAAI,SAAC;IACL,EAAE,SAAC;IACH,IAAI,gBAAC;IACL,OAAO,UAAC;IACR,QAAQ,+BAAC;IACT,IAAI,SAAC;IACL,QAAQ,0BAAC;IAOT,IAAI,CAAC,EAAE,YAAY,CAAC;IAEpB,SAAS,UAAS;IAClB,iBAAiB,UAAS;IAC1B,mBAAmB,UAAS;IAC5B,YAAY,UAAS;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,IAAI,GAAG,MAAM,CAAQ;IAI9B,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAQ;IAC/B,cAAc,SAAK;IACnB,aAAa,SAAK;IAClB,UAAU,EAAE,IAAI,GAAG,MAAM,CAAQ;IACjC,QAAQ,SAAK;IACb,KAAK,EAAE,IAAI,GAAG,MAAM,CAAQ;IAC5B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAQ;IAE3B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAkBzC,SAAS;IAIH,OAAO;IAwBb,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,SAAe;IA4CvD,UAAU;IAqCV,KAAK,CAAC,QAAQ,UAAQ;IAStB,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,UAAO;IAoB/C,SAAS;;;;;;;;;;;;;;;;;;;;;;IA0BT,MAAM,CAAC,KAAK,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,eAAe,GAAG,2BAA2B,CAAC,EAAE,aAAa,CAAC,CAuDjH;CAEF"}
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import type { InSiteWebSocket } from "insite-ws/client";
|
|
2
|
-
import type { InSiteWebSocketServer } from "insite-ws/server";
|
|
3
|
-
import { listenersSymbol, transfersSymbol } from "./common";
|
|
2
|
+
import type { InSiteWebSocketServer, InSiteWebSocketServerClient } from "insite-ws/server";
|
|
4
3
|
import { IncomingTransfer } from "./IncomingTransfer";
|
|
5
|
-
import type { IncomingTransferListener, IncomingTransportOptions } from "./types";
|
|
6
|
-
export declare class IncomingTransport<
|
|
7
|
-
|
|
4
|
+
import type { IncomingTransferListener, IncomingTransferListenerOptions, IncomingTransportOptions, TransferTypes } from "./types";
|
|
5
|
+
export declare class IncomingTransport<WSORWSSC extends InSiteWebSocket | InSiteWebSocketServerClient, T extends IncomingTransfer<WSORWSSC>, Types extends TransferTypes = TransferTypes> {
|
|
6
|
+
#private;
|
|
7
|
+
constructor(ws: InSiteWebSocket | InSiteWebSocketServer<Exclude<WSORWSSC, InSiteWebSocket>>, options?: IncomingTransportOptions);
|
|
8
8
|
sizeLimit: number;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
removeTransferListener(kind: string, listener?: IncomingTransferListener<
|
|
13
|
-
off: (kind: string, listener?: IncomingTransferListener<
|
|
14
|
-
[transfersSymbol]: Map<string, InstanceType<FT>>;
|
|
9
|
+
addTransferListener(kind: string, listener: IncomingTransferListener<WSORWSSC, T>, options?: IncomingTransferListenerOptions): this;
|
|
10
|
+
on: (kind: string, listener: IncomingTransferListener<WSORWSSC, T>, options?: IncomingTransferListenerOptions) => this;
|
|
11
|
+
once(kind: string, listener: IncomingTransferListener<WSORWSSC, T>, options?: Omit<IncomingTransferListenerOptions, "once">): this;
|
|
12
|
+
removeTransferListener(kind: string, listener?: IncomingTransferListener<WSORWSSC, T>): this;
|
|
13
|
+
off: (kind: string, listener?: IncomingTransferListener<WSORWSSC, T>) => this;
|
|
15
14
|
private handleRequest;
|
|
16
15
|
private handleChunk;
|
|
17
16
|
private handleSent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IncomingTransport.d.ts","sourceRoot":"","sources":["../src/IncomingTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"IncomingTransport.d.ts","sourceRoot":"","sources":["../src/IncomingTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAE3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAGX,wBAAwB,EACxB,+BAA+B,EAE/B,wBAAwB,EAExB,aAAa,EACb,MAAM,SAAS,CAAC;AAGjB,qBAAa,iBAAiB,CAC7B,QAAQ,SAAS,eAAe,GAAG,2BAA2B,EAC9D,CAAC,SAAS,gBAAgB,CAAC,QAAQ,CAAC,EACpC,KAAK,SAAS,aAAa,GAAG,aAAa;;gBAE/B,EAAE,EAAE,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,OAAO,GAAE,wBAA6B;IA2BnI,SAAS,SAAC;IAIV,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,wBAAwB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,+BAA+B;IAU5H,EAAE,SAVwB,MAAM,YAAY,wBAAwB,CAAC,QAAQ,EAAE,CAAC,CAAC,YAAY,+BAA+B,UAU9F;IAE9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,wBAAwB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,+BAA+B,EAAE,MAAM,CAAC;IAI3H,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,wBAAwB,CAAC,QAAQ,EAAE,CAAC,CAAC;IAgBrF,GAAG,SAhB0B,MAAM,aAAa,wBAAwB,CAAC,QAAQ,EAAE,CAAC,CAAC,UAgBnD;IAYlC,OAAO,CAAC,aAAa;IAkCrB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,WAAW;IAMnB,MAAM,CAAC,QAAQ,0BAAoB;CAEnC"}
|
|
@@ -1,29 +1,20 @@
|
|
|
1
|
-
import { InSiteWebSocket } from "insite-ws/client";
|
|
2
|
-
import {
|
|
3
|
-
import { FileStreamer } from "./browser/FileStreamer";
|
|
4
|
-
import { callArgsSymbol } from "./common";
|
|
5
|
-
import { OutgoingTransport } from "./OutgoingTransport";
|
|
1
|
+
import type { InSiteWebSocket } from "insite-ws/client";
|
|
2
|
+
import type { InSiteWebSocketServerClient } from "insite-ws/server";
|
|
6
3
|
import { StringStreamer } from "./StringStreamer";
|
|
7
|
-
import {
|
|
8
|
-
|
|
4
|
+
import type { FileStreamer } from "./browser/FileStreamer";
|
|
5
|
+
import type { OutgoingChunk, OutgoingTransferHandles, OutgoingTransferProps, OutgoingTransferTypes, TransferTypes } from "./types";
|
|
6
|
+
export declare class OutgoingTransfer<WSORWSSC extends InSiteWebSocket | InSiteWebSocketServerClient> {
|
|
9
7
|
#private;
|
|
10
|
-
constructor(
|
|
11
|
-
|
|
12
|
-
ws: InSiteWebSocket | InSiteWebSocketServerClient<any>;
|
|
13
|
-
[callArgsSymbol]: readonly [InSiteWebSocket] | readonly [InSiteWebSocketServer, InSiteWebSocketServerClient];
|
|
8
|
+
constructor(ws: Exclude<WSORWSSC, InSiteWebSocket> | InSiteWebSocket, kind: string, { data, type, incomingType, collect, metadata, size, chunkSize, encoding, incomingEncoding, onBegin, onSenderProgress, onProgress, onEnd, onError }: OutgoingTransferProps<WSORWSSC, any, any>, handles: OutgoingTransferHandles);
|
|
9
|
+
ws: InSiteWebSocket | Exclude<WSORWSSC, InSiteWebSocket>;
|
|
14
10
|
kind: string;
|
|
15
11
|
data?: import("./types").OutgoingData | undefined;
|
|
16
|
-
type
|
|
12
|
+
type?: string;
|
|
17
13
|
collect: boolean;
|
|
18
|
-
metadata: Record<string, unknown
|
|
19
|
-
size: number;
|
|
20
|
-
encoding: "base64" | "buffer" | "utf8";
|
|
14
|
+
metadata: Record<string, unknown> | undefined;
|
|
15
|
+
size: number | null;
|
|
16
|
+
encoding: "base64" | "buffer" | "utf8" | undefined;
|
|
21
17
|
chunkSize: number;
|
|
22
|
-
onBegin?: ((this: InSiteWebSocket, transfer: InstanceType<FT>) => Promise<unknown> | unknown) | ((this: InSiteWebSocketServer, ws: InSiteWebSocketServerClient, transfer: InstanceType<FT>) => Promise<unknown> | unknown) | undefined;
|
|
23
|
-
onSenderProgress?: ((this: InSiteWebSocket, transfer: InstanceType<FT>) => Promise<unknown> | unknown) | ((this: InSiteWebSocketServer, ws: InSiteWebSocketServerClient, transfer: InstanceType<FT>) => Promise<unknown> | unknown) | undefined;
|
|
24
|
-
onProgress?: ((this: InSiteWebSocket, transfer: InstanceType<FT>) => Promise<unknown> | unknown) | ((this: InSiteWebSocketServer, ws: InSiteWebSocketServerClient, transfer: InstanceType<FT>) => Promise<unknown> | unknown) | undefined;
|
|
25
|
-
onEnd?: ((this: InSiteWebSocket, transfer: InstanceType<FT>) => Promise<unknown> | unknown) | ((this: InSiteWebSocketServer, ws: InSiteWebSocketServerClient, transfer: InstanceType<FT>) => Promise<unknown> | unknown) | undefined;
|
|
26
|
-
onError?: ((this: InSiteWebSocket, transfer: InstanceType<FT>, error: Error) => Promise<unknown> | unknown) | ((this: InSiteWebSocketServer, ws: InSiteWebSocketServerClient, transfer: InstanceType<FT>, error: Error) => Promise<unknown> | unknown) | undefined;
|
|
27
18
|
id: string;
|
|
28
19
|
isAborted: boolean;
|
|
29
20
|
isTransfered: boolean;
|
|
@@ -38,6 +29,7 @@ export declare class OutgoingTransfer<PT extends typeof OutgoingTransport, FT ex
|
|
|
38
29
|
error: Error | null;
|
|
39
30
|
stringStreamer?: StringStreamer;
|
|
40
31
|
fileStreamer?: FileStreamer;
|
|
32
|
+
[key: number | string | symbol]: unknown;
|
|
41
33
|
whenSetUp(): Promise<void>;
|
|
42
34
|
handleConfirm(confirmResponse: string): Promise<void>;
|
|
43
35
|
handleChunk: (chunk: OutgoingChunk) => void;
|
|
@@ -49,11 +41,11 @@ export declare class OutgoingTransfer<PT extends typeof OutgoingTransport, FT ex
|
|
|
49
41
|
serialize(): {
|
|
50
42
|
id: string;
|
|
51
43
|
kind: string;
|
|
52
|
-
type: string;
|
|
44
|
+
type: string | undefined;
|
|
53
45
|
collect: boolean;
|
|
54
|
-
encoding: "base64" | "buffer" | "utf8";
|
|
55
|
-
size: number;
|
|
56
|
-
metadata: Record<string, unknown
|
|
46
|
+
encoding: "base64" | "buffer" | "utf8" | undefined;
|
|
47
|
+
size: number | null;
|
|
48
|
+
metadata: Record<string, unknown> | undefined;
|
|
57
49
|
isAborted: boolean;
|
|
58
50
|
isTransfered: boolean;
|
|
59
51
|
confirmResponse: string | undefined;
|
|
@@ -66,7 +58,7 @@ export declare class OutgoingTransfer<PT extends typeof OutgoingTransport, FT ex
|
|
|
66
58
|
endAt: number | null;
|
|
67
59
|
error: Error | null;
|
|
68
60
|
};
|
|
69
|
-
static
|
|
61
|
+
static types: OutgoingTransferTypes<OutgoingTransfer<InSiteWebSocket | InSiteWebSocketServerClient>, TransferTypes>;
|
|
70
62
|
static chunkSize: number;
|
|
71
63
|
}
|
|
72
64
|
//# sourceMappingURL=OutgoingTransfer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutgoingTransfer.d.ts","sourceRoot":"","sources":["../src/OutgoingTransfer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"OutgoingTransfer.d.ts","sourceRoot":"","sources":["../src/OutgoingTransfer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EACX,aAAa,EACb,uBAAuB,EAEvB,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,MAAM,SAAS,CAAC;AASjB,qBAAa,gBAAgB,CAAC,QAAQ,SAAS,eAAe,GAAG,2BAA2B;;gBAE1F,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,eAAe,EACxD,IAAI,EAAE,MAAM,EACZ,EACC,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,OAAO,EACP,gBAAgB,EAChB,UAAU,EACV,KAAK,EACL,OAAO,EACP,EAAE,qBAAqB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,EAC5C,OAAO,EAAE,uBAAuB;IA+BjC,EAAE,uDAAC;IAEH,IAAI,SAAC;IACL,IAAI,CAAC,6CAAC;IACN,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,UAAC;IACR,QAAQ,sCAAC;IACT,IAAI,gBAAC;IACL,QAAQ,2CAAC;IACT,SAAS,SAAC;IAYV,EAAE,SAAS;IAEX,SAAS,UAAS;IAClB,YAAY,UAAS;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,IAAI,GAAG,MAAM,CAAQ;IAI9B,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAQ;IAC/B,cAAc,SAAK;IACnB,UAAU,EAAE,IAAI,GAAG,MAAM,CAAQ;IACjC,cAAc,SAAK;IACnB,QAAQ,EAAE,MAAM,CAAK;IACrB,KAAK,EAAE,IAAI,GAAG,MAAM,CAAQ;IAC5B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAQ;IAC3B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IA2BzC,SAAS;IAIH,aAAa,CAAC,eAAe,EAAE,MAAM;IAa3C,WAAW,UAAW,aAAa,UAQjC;IAkCF,IAAI,aAAoD;IAExD,cAAc,CAAC,QAAQ,EAAE,MAAM;IAOzB,eAAe;IAwBrB,KAAK,CAAC,YAAY,EAAE,MAAM;IAU1B,KAAK;IASL,SAAS;;;;;;;;;;;;;;;;;;;;IAwBT,MAAM,CAAC,KAAK,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,eAAe,GAAG,2BAA2B,CAAC,EAAE,aAAa,CAAC,CA0DjH;IAEF,MAAM,CAAC,SAAS,SAAoB;CAEpC"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { InSiteWebSocket } from "insite-ws/client";
|
|
2
|
-
import { InSiteWebSocketServer, InSiteWebSocketServerClient } from "insite-ws/server";
|
|
3
|
-
import { transfersSymbol } from "./common";
|
|
1
|
+
import type { InSiteWebSocket } from "insite-ws/client";
|
|
2
|
+
import type { InSiteWebSocketServer, InSiteWebSocketServerClient } from "insite-ws/server";
|
|
4
3
|
import { OutgoingTransfer } from "./OutgoingTransfer";
|
|
5
|
-
import { OutgoingTransferProps } from "./types";
|
|
6
|
-
export declare class OutgoingTransport<
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
transfer(ws: InSiteWebSocket |
|
|
4
|
+
import type { OutgoingTransferProps, TransferTypes } from "./types";
|
|
5
|
+
export declare class OutgoingTransport<WSORWSSC extends InSiteWebSocket | InSiteWebSocketServerClient, T extends OutgoingTransfer<WSORWSSC>, Types extends TransferTypes = TransferTypes> {
|
|
6
|
+
#private;
|
|
7
|
+
constructor(ws: InSiteWebSocket | InSiteWebSocketServer<Exclude<WSORWSSC, InSiteWebSocket>>);
|
|
8
|
+
transfer(ws: Exclude<WSORWSSC, InSiteWebSocket> | InSiteWebSocket, kind: string, props: OutgoingTransferProps<WSORWSSC, T, Types>): OutgoingTransfer<WSORWSSC>;
|
|
10
9
|
private handleConfirm;
|
|
11
10
|
private handleProgress;
|
|
12
11
|
private handleCompleted;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutgoingTransport.d.ts","sourceRoot":"","sources":["../src/OutgoingTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"OutgoingTransport.d.ts","sourceRoot":"","sources":["../src/OutgoingTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAE3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAEX,qBAAqB,EAErB,aAAa,EACb,MAAM,SAAS,CAAC;AAGjB,qBAAa,iBAAiB,CAC7B,QAAQ,SAAS,eAAe,GAAG,2BAA2B,EAC9D,CAAC,SAAS,gBAAgB,CAAC,QAAQ,CAAC,EACpC,KAAK,SAAS,aAAa,GAAG,aAAa;;gBAE/B,EAAE,EAAE,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAgC3F,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC;IAWjI,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,WAAW;IAMnB,MAAM,CAAC,QAAQ,0BAAoB;CAEnC"}
|
package/dist/StringStreamer.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringStreamer.d.ts","sourceRoot":"","sources":["../src/StringStreamer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"StringStreamer.d.ts","sourceRoot":"","sources":["../src/StringStreamer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,KAAK,QAAQ,GAAG;IACf,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACtC,CAAC;AAGF,qBAAa,cAAc;;gBACd,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB;IAYzD,MAAM,SAAC;IACP,IAAI,SAAC;IACL,SAAS,SAAC;IACV,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAKpB,SAAS,UAAS;IAElB,KAAK,CAAC,QAAQ,EAAE,QAAQ;IA2BxB,KAAK;CAML"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileStreamer.d.ts","sourceRoot":"","sources":["../../src/browser/FileStreamer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"FileStreamer.d.ts","sourceRoot":"","sources":["../../src/browser/FileStreamer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGvE,KAAK,QAAQ,GAAG;IACf,CAAC,WAAW,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3D,CAAC;AAGF,qBAAa,YAAY;;gBACZ,IAAI,EAAE,IAAI,EAAE,OAAO,GAAE,eAAoB;IAiBrD,IAAI,OAAC;IACL,IAAI,SAAC;IACL,SAAS,SAAC;IACV,UAAU,aAAC;IACX,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAKpB,SAAS,UAAS;IAElB,KAAK,CAAC,QAAQ,EAAE,QAAQ;IAmCxB,KAAK;CAML"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import type { InSiteWebSocket } from "insite-ws/client";
|
|
2
|
+
import type { InSiteWebSocketServerClient } from "insite-ws/server";
|
|
1
3
|
import { IncomingTransfer } from "../IncomingTransfer";
|
|
2
4
|
import { IncomingTransport } from "../IncomingTransport";
|
|
3
|
-
import { IncomingTransferTypes } from "../types";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import type { IncomingTransferTypes } from "../types";
|
|
6
|
+
import type { BrowserTransferTypes } from "./types";
|
|
7
|
+
export type { IncomingTransportOptions } from "../types";
|
|
8
|
+
declare class BrowserIncomingTransfer<WSORWSSC extends InSiteWebSocket | InSiteWebSocketServerClient = InSiteWebSocket> extends IncomingTransfer<WSORWSSC> {
|
|
9
|
+
static types: IncomingTransferTypes<BrowserIncomingTransfer<InSiteWebSocket>, BrowserTransferTypes>;
|
|
7
10
|
}
|
|
8
|
-
declare class BrowserIncomingTransport extends IncomingTransport<
|
|
11
|
+
declare class BrowserIncomingTransport<WSORWSSC extends InSiteWebSocket = InSiteWebSocket> extends IncomingTransport<WSORWSSC, BrowserIncomingTransfer<WSORWSSC>, BrowserTransferTypes> {
|
|
9
12
|
static Transfer: typeof BrowserIncomingTransfer;
|
|
10
13
|
}
|
|
11
14
|
export { BrowserIncomingTransfer as IncomingTransfer, BrowserIncomingTransport as IncomingTransport };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"incoming.d.ts","sourceRoot":"","sources":["../../src/browser/incoming.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"incoming.d.ts","sourceRoot":"","sources":["../../src/browser/incoming.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpD,YAAY,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAGzD,cAAM,uBAAuB,CAC5B,QAAQ,SAAS,eAAe,GAAG,2BAA2B,GAAG,eAAe,CAC/E,SAAQ,gBAAgB,CAAC,QAAQ,CAAC;IAEnC,MAAM,CAAC,KAAK,EAAE,qBAAqB,CAAC,uBAAuB,CAAC,eAAe,CAAC,EAAE,oBAAoB,CAAC,CAyBjG;CAEF;AAED,cAAM,wBAAwB,CAC7B,QAAQ,SAAS,eAAe,GAAG,eAAe,CACjD,SAAQ,iBAAiB,CAAC,QAAQ,EAAE,uBAAuB,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAE7F,MAAM,CAAC,QAAQ,iCAA2B;CAE1C;AAGD,OAAO,EACN,uBAAuB,IAAI,gBAAgB,EAC3C,wBAAwB,IAAI,iBAAiB,EAC7C,CAAC"}
|
package/dist/browser/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/browser/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var Ie=Object.defineProperty;var ae=n=>{throw TypeError(n)};var ze=(n,e,t)=>e in n?Ie(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var s=(n,e,t)=>ze(n,typeof e!="symbol"?e+"":e,t),H=(n,e,t)=>e.has(n)||ae("Cannot "+t);var r=(n,e,t)=>(H(n,e,"read from private field"),t?t.call(n):e.get(n)),h=(n,e,t)=>e.has(n)?ae("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t),l=(n,e,t,i)=>(H(n,e,"write to private field"),i?i.call(n,t):e.set(n,t),t),f=(n,e,t)=>(H(n,e,"access private method"),t);var a={request:"~t-request",confirm:"~t-confirm",chunk:"~t-c",progress:"~t-p",sent:"~t-sent",completed:"~t-completed",abort:"~t-abort",error:"~t-error"},c=Symbol("transfers"),u=Symbol("listeners"),he=10*1024*1024*1024,le=1024*256,p=Symbol("callArgs"),ce=250;var de,B,g,P,A,T,C,$,m,fe,V,X;de=p;var y=class{constructor(e,t,i,o,{type:d,collect:L,encoding:R,size:W,metadata:G}){h(this,m);s(this,"transport");s(this,"ws");s(this,de);s(this,"kind");s(this,"id");s(this,"type");s(this,"collect");s(this,"encoding");s(this,"size");s(this,"metadata");s(this,"listeners");h(this,B);s(this,"data");h(this,g);s(this,"isAborted",!1);s(this,"isAbortedBySender",!1);s(this,"isAbortedByReceiver",!1);s(this,"isTransfered",!1);s(this,"confirmResponse");s(this,"beginAt",null);h(this,P,null);h(this,A,[]);h(this,T,!1);s(this,"duration",null);s(this,"transferedSize",0);s(this,"processedSize",0);s(this,"bytesPerMs",null);s(this,"progress",0);s(this,"endAt",null);s(this,"error",null);h(this,C);h(this,$,0);this.transport=e,this.ws=t,this[p]=t.isWebSocketServerClient?[t.wss,t]:[t],this.kind=i,this.id=o,this.type=d,this.collect=!!L,this.encoding=R,this.size=W,this.metadata=G,this.listeners=this.transport[u].get(this.kind),this.transport[c].set(this.id,this),l(this,B,f(this,m,fe).call(this))}whenSetUp(){return r(this,B)}async confirm(){let e=this[p];for(let{begin:t}of this.listeners)if(await t?.call(...e,this)===!1)return this.throw("Transfer was rejected by receiver");return this.beginAt=l(this,P,Date.now()),this.ws.sendMessage(a.confirm,this.id,this.confirmResponse),l(this,C,setInterval(()=>{r(this,$)!==this.progress&&(l(this,$,this.progress),this.ws.sendMessage(a.progress,this.id,this.progress))},ce)),null}handleChunk(e,t=e.length){let i=Date.now();this.bytesPerMs=t/(i-r(this,P)),l(this,P,i),this.transferedSize+=t,r(this,A).push([e,t]),r(this,T)||(l(this,T,!0),f(this,m,V).call(this))}handleSent(){this.isTransfered=!0,this.size||(this.size=this.transferedSize),this.endAt=Date.now(),this.duration=this.endAt-this.beginAt,this.bytesPerMs=this.size/this.duration,r(this,T)||f(this,m,X).call(this)}abort(e=!1){return this.isAborted=!0,this.isAbortedBySender=e,this.isAbortedByReceiver=!e,this.throw(`Transfer is aborted by ${e?"sender":"receiver"}`,!e)}throw(e,t=!0){this.transport[c].delete(this.id),clearInterval(r(this,C)),this.error=new Error(e);let i=this[p];for(let{error:o}of this.listeners)o?.call(...i,this,this.error);t&&this.ws.sendMessage(a.error,this.id,e)}serialize(){return{id:this.id,kind:this.kind,type:this.type,collect:this.collect,encoding:this.encoding,size:this.size,metadata:this.metadata,isAborted:this.isAborted,isAbortedBySender:this.isAbortedBySender,isAbortedByReceiver:this.isAbortedByReceiver,isTransfered:this.isTransfered,confirmResponse:this.confirmResponse,beginAt:this.beginAt,duration:this.duration,transferedSize:this.transferedSize,processedSize:this.processedSize,bytesPerMs:this.bytesPerMs,progress:this.progress,endAt:this.endAt,error:this.error}}};B=new WeakMap,g=new WeakMap,P=new WeakMap,A=new WeakMap,T=new WeakMap,C=new WeakMap,$=new WeakMap,m=new WeakSet,fe=async function(){if(l(this,g,this.constructor.types[this.type]),r(this,g))await r(this,g).setup.call(this);else throw new Error(`Unknown type of transfer "${String(this.type)}"`);this.confirm()},V=async function(){let[e,t]=r(this,A).shift();r(this,g).transformChunk&&(e=await r(this,g).transformChunk.call(this,e)),this.collect&&await r(this,g).collect.call(this,e);let i=this[p];for(let{chunk:o,progress:d}of this.listeners)await(o??d)?.call(...i,this,e);this.processedSize+=t,this.size&&(this.progress=this.processedSize/this.size),r(this,A).length?f(this,m,V).call(this):(l(this,T,!1),this.isTransfered&&f(this,m,X).call(this))},X=async function(){this.progress=1,await r(this,g).done?.call(this);let e=this[p];for(let{end:t}of this.listeners)await t?.call(...e,this);clearInterval(r(this,C)),this.transport[c].delete(this.id),this.ws.sendMessage(a.completed,this.id)},s(y,"types",{object:{setup(){this.data=""},collect(e){this.data+=e},done(){this.data=JSON.parse(this.data)}},datauri:{setup(){this.collect&&(this.data="")},collect(e){this.data+=e},done(){this.collect&&(this.data=`data:${this.metadata.type};base64,${this.data}`)}},string:{setup(){this.collect&&(this.data="")},collect(e){this.data+=e}}});var pe,ge;ge=u,pe=c;var E=class{constructor(e,t={}){s(this,"sizeLimit");s(this,ge,new Map);s(this,"on",this.addTransferListener);s(this,"off",this.removeTransferListener);s(this,pe,new Map);let{sizeLimit:i=he}=t;this.sizeLimit=i,e.isWebSocketServer?(e.on(`client-message:${a.request}`,(o,...d)=>this.handleRequest(o,...d)),e.on(`client-message:${a.chunk}`,(o,...d)=>this.handleChunk(o,...d)),e.on(`client-message:${a.sent}`,(o,...d)=>this.handleSent(o,...d)),e.on(`client-message:${a.abort}`,(o,...d)=>this.handleAbort(o,...d))):(e.on(`message:${a.request}`,(...o)=>this.handleRequest(e,...o)),e.on(`message:${a.chunk}`,(...o)=>this.handleChunk(e,...o)),e.on(`message:${a.sent}`,(...o)=>this.handleSent(e,...o)),e.on(`message:${a.abort}`,(...o)=>this.handleAbort(e,...o)))}addTransferListener(e,t){return this[u].get(e)?.add(t)??this[u].set(e,new Set([t])),this}removeTransferListener(e,t){return t?this[u].get(e)?.delete(t):this[u].delete(e),this}handleRequest(e,t,i,{type:o,size:d,metadata:L,...R}){let{Transfer:W}=this.constructor;this[u].has(t)?this[c].has(i)?e.sendMessage(a.error,i,"Transfer already exists"):o in W.types?d>this.sizeLimit?e.sendMessage(a.error,i,`Transfer size (${d} bytes) exeeds limit of ${this.sizeLimit} bytes`):new W(this,e,t,i,{type:o,size:d,metadata:L,...R}):e.sendMessage(a.error,i,"Unknown type of transfer"):e.sendMessage(a.error,i,`Unknown kind of file "${t}"`)}handleChunk(e,t,i,o=i.length){this[c].get(t)?.handleChunk(i,o)}handleSent(e,t){this[c].get(t)?.handleSent()}handleAbort(e,t){this[c].get(t)?.abort(!0)}};s(E,"Transfer",y);var K=class extends y{};s(K,"types",{file:{setup(){this.collect&&(this.data="")},collect(e){this.data+=e},done(){this.collect&&this.encoding==="utf8"&&(this.data=atob(this.data))}},...y.types});var Y=class extends E{};s(Y,"Transfer",K);import{uid as We}from"@nesvet/n";var v,k,q,Z,F=class{constructor(e,t={}){h(this,q);s(this,"string");s(this,"size");s(this,"chunkSize");s(this,"listener");h(this,v,0);h(this,k,0);s(this,"isAborted",!1);this.string=e,this.size=this.string.length;let{chunkSize:i=1024*256}=t;this.chunkSize=i}start(e){this.listener=e,f(this,q,Z).call(this)}abort(){this.isAborted=!0}};v=new WeakMap,k=new WeakMap,q=new WeakSet,Z=async function(){if(!this.isAborted){l(this,k,Math.min(r(this,v)+this.chunkSize,this.size));let e=await new Promise(t=>{t(this.string.slice(r(this,v),r(this,k)))});this.isAborted||(await this.listener(e),r(this,k)<this.size&&(l(this,v,r(this,k)),f(this,q,Z).call(this)))}};var me,D,b,w,x,O,I,ue,_;me=p;var S=class{constructor(e,t,i,{data:o,type:d,incomingType:L,collect:R,metadata:W,size:G,chunkSize:be,encoding:Te,incomingEncoding:ke,onBegin:se,onSenderProgress:ie,onProgress:re,onEnd:ne,onError:oe}){h(this,I);s(this,"transport");s(this,"ws");s(this,me);s(this,"kind");s(this,"data");s(this,"type");s(this,"collect");s(this,"metadata");s(this,"size");s(this,"encoding");s(this,"chunkSize");s(this,"onBegin");s(this,"onSenderProgress");s(this,"onProgress");s(this,"onEnd");s(this,"onError");h(this,D);s(this,"id",We());h(this,b);s(this,"isAborted",!1);s(this,"isTransfered",!1);s(this,"confirmResponse");s(this,"beginAt",null);h(this,w,null);h(this,x,[]);h(this,O,!1);s(this,"duration",null);s(this,"transferedSize",0);s(this,"bytesPerMs",null);s(this,"senderProgress",0);s(this,"progress",0);s(this,"endAt",null);s(this,"error",null);s(this,"stringStreamer");s(this,"fileStreamer");s(this,"handleChunk",e=>{r(this,x).push(e),r(this,O)||(l(this,O,!0),f(this,I,_).call(this))});s(this,"sent",()=>this.ws.sendMessage(a.sent,this.id));this.transport=e,this.ws=t,this[p]=t.isWebSocketServerClient?[t.wss,t]:[t],this.kind=i,this.data=o,this.type=d,this.collect=R??!1,this.metadata=W,this.size=G??null,this.encoding=Te,this.chunkSize=be??this.constructor.chunkSize,se&&(this.onBegin=se),ie&&(this.onSenderProgress=ie),re&&(this.onProgress=re),ne&&(this.onEnd=ne),oe&&(this.onError=oe),this.transport[c].set(this.id,this),l(this,D,f(this,I,ue).call(this,L,ke))}whenSetUp(){return r(this,D)}async handleConfirm(e){this.confirmResponse=e,this.beginAt=l(this,w,Date.now());let t=this[p];await this.onBegin?.call(...t,this),r(this,b).confirm.call(this)}handleProgress(e){this.progress=e;let t=this[p];this.onProgress?.call(...t,this)}async handleCompleted(){this.isTransfered=!0,this.size||(this.size=this.transferedSize,this.senderProgress=1),this.endAt=Date.now(),this.duration=this.endAt-this.beginAt,this.bytesPerMs=this.size/this.duration,this.transport[c].delete(this.id);let e=this[p];this.progress!==1&&(this.progress=1,await this.onProgress?.call(...e,this)),this.onEnd?.call(...e,this)}throw(e){this.transport[c].delete(this.id),this.error=new Error(e);let t=this[p];this.onError?.call(...t,this,this.error)}abort(){return this.isAborted=!0,this.ws.sendMessage(a.abort,this.id),this.throw("Transfer is aborted by sender")}serialize(){return{id:this.id,kind:this.kind,type:this.type,collect:this.collect,encoding:this.encoding,size:this.size,metadata:this.metadata,isAborted:this.isAborted,isTransfered:this.isTransfered,confirmResponse:this.confirmResponse,beginAt:this.beginAt,duration:this.duration,transferedSize:this.transferedSize,bytesPerMs:this.bytesPerMs,senderProgress:this.senderProgress,progress:this.progress,endAt:this.endAt,error:this.error}}};D=new WeakMap,b=new WeakMap,w=new WeakMap,x=new WeakMap,O=new WeakMap,I=new WeakSet,ue=async function(e,t){for(let[i,o,d]of this.constructor.types)if(this.type===i||o(this.data)){this.type=i,l(this,b,d);break}if(this.type)await r(this,b).setup.call(this),delete this.data;else throw new Error("Unknown type of transfer");this.ws.sendMessage(a.request,this.kind,this.id,{type:e??this.type,collect:this.collect,encoding:t??this.encoding,size:this.size,metadata:this.metadata})},_=async function(){let e=r(this,x).shift(),t=e.length;r(this,b).transformChunk&&(e=await r(this,b).transformChunk.call(this,e)),this.ws.sendMessage(a.chunk,this.id,e,t);let i=Date.now();this.bytesPerMs=t/(i-r(this,w)),l(this,w,i),this.transferedSize+=t,this.size&&(this.senderProgress=this.transferedSize/this.size);let o=this[p];await this.onSenderProgress?.call(...o,this),r(this,x).length?f(this,I,_).call(this):(l(this,O,!1),this.senderProgress===1&&this.sent())},s(S,"types",[["object",e=>typeof e=="object",{setup(){this.stringStreamer=new F(JSON.stringify(this.data),{chunkSize:this.chunkSize}),this.collect=!0,this.size=this.stringStreamer.size,this.encoding="utf8"},confirm(){this.stringStreamer.start(this.handleChunk)}}],["datauri",e=>typeof e=="string"&&/^data:[\w-.]+\/[\w-.+,]+(?:;base64)?,/.test(e),{setup(){let[e,t]=this.data.split(/^data:|;base64,|,/).slice(1);this.stringStreamer=new F(t,{chunkSize:this.chunkSize}),this.size=this.stringStreamer.size,this.encoding="base64",this.metadata={...this.metadata,type:e}},confirm(){this.stringStreamer.start(this.handleChunk)}}],["string",e=>typeof e=="string",{setup(){this.stringStreamer=new F(this.data,{chunkSize:this.chunkSize}),this.size=this.stringStreamer.size,this.encoding||(this.encoding="utf8")},confirm(){this.stringStreamer.start(this.handleChunk)}}]]),s(S,"chunkSize",le);var Se;Se=c;var U=class{constructor(e){s(this,Se,new Map);e.isWebSocketServer?(e.on(`client-message:${a.confirm}`,(t,...i)=>this.handleConfirm(t,...i)),e.on(`client-message:${a.progress}`,(t,...i)=>this.handleProgress(t,...i)),e.on(`client-message:${a.completed}`,(t,...i)=>this.handleCompleted(t,...i)),e.on(`client-message:${a.error}`,(t,...i)=>this.handleError(t,...i))):(e.on(`message:${a.confirm}`,(...t)=>this.handleConfirm(e,...t)),e.on(`message:${a.progress}`,(...t)=>this.handleProgress(e,...t)),e.on(`message:${a.completed}`,(...t)=>this.handleCompleted(e,...t)),e.on(`message:${a.error}`,(...t)=>this.handleError(e,...t)))}transfer(e,t,i){let{Transfer:o}=this.constructor;return new o(this,e,t,i)}handleConfirm(e,t,i){this[c].get(t)?.handleConfirm(i)}handleProgress(e,t,i){this[c].get(t)?.handleProgress(i)}handleCompleted(e,t){this[c].get(t)?.handleCompleted()}handleError(e,t,i){this[c].get(t)?.throw(i)}};s(U,"Transfer",S);function ye(n){return new Promise(e=>{let t=new FileReader;t.onload=()=>e(typeof t?.result=="string"?t.result.slice(Math.max(0,t.result.indexOf(",")+1)):""),t.readAsDataURL(new Blob([n]))})}var M,z,j,ee,N,J=class{constructor(e,t={}){h(this,j);s(this,"file");s(this,"size");s(this,"chunkSize");s(this,"fileReader");s(this,"listener");h(this,M,0);h(this,z,0);s(this,"isAborted",!1);h(this,N,async()=>{if(!this.isAborted){let e=this.fileReader.result;e.length=e.byteLength,await this.listener(e),r(this,z)<this.size&&(l(this,M,r(this,z)),f(this,j,ee).call(this))}});this.file=e,this.size=this.file.size;let{chunkSize:i=1024*256}=t;this.chunkSize=i,this.fileReader=new FileReader,this.fileReader.onload=r(this,N)}start(e){this.listener=e,f(this,j,ee).call(this)}abort(){this.isAborted=!0}};M=new WeakMap,z=new WeakMap,j=new WeakSet,ee=function(){this.isAborted||(l(this,z,Math.min(r(this,M)+this.chunkSize,this.size)),this.fileReader.readAsArrayBuffer(this.file.slice(r(this,M),r(this,z))))},N=new WeakMap;var Q=class extends S{};s(Q,"types",[["file",e=>typeof e=="object"&&e instanceof File,{setup(){let e=this.data;this.fileStreamer=new J(e,{chunkSize:this.chunkSize});let t={name:e.name,type:e.type,size:e.size,modifiedAt:e.lastModified};this.metadata?Object.assign(this.metadata,t):this.metadata=t,this.size=this.fileStreamer.size,this.encoding="buffer"},confirm(){this.fileStreamer.start(this.handleChunk)},transformChunk(e){return ye(e)}}],...S.types]);var te=class extends U{};s(te,"Transfer",Q);export{K as IncomingTransfer,Y as IncomingTransport,Q as OutgoingTransfer,te as OutgoingTransport};
|
|
1
|
+
var Me=Object.defineProperty;var Ie=n=>{throw TypeError(n)};var Le=(n,e,t)=>e in n?Me(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var r=(n,e,t)=>Le(n,typeof e!="symbol"?e+"":e,t),me=(n,e,t)=>e.has(n)||Ie("Cannot "+t);var s=(n,e,t)=>(me(n,e,"read from private field"),t?t.call(n):e.get(n)),a=(n,e,t)=>e.has(n)?Ie("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t),c=(n,e,t,i)=>(me(n,e,"write to private field"),i?i.call(n,t):e.set(n,t),t),u=(n,e,t)=>(me(n,e,"access private method"),t);var f={request:"~t-request",confirm:"~t-confirm",chunk:"~t-c",progress:"~t-p",sent:"~t-sent",completed:"~t-completed",abort:"~t-abort",error:"~t-error"},Oe=10*1024*1024*1024,Ce=1024*256,ve=250;var O,C,v,Z,y,q,D,P,H,ee,W,Re,ge,ye,R=class{constructor(e,t,i,{type:o,collect:h,encoding:l,size:m,metadata:p},L,E){a(this,W);r(this,"ws");a(this,O);r(this,"kind");r(this,"id");r(this,"type");r(this,"collect");r(this,"encoding");r(this,"size");r(this,"metadata");a(this,C);a(this,v);a(this,Z);r(this,"data");a(this,y);r(this,"isAborted",!1);r(this,"isAbortedBySender",!1);r(this,"isAbortedByReceiver",!1);r(this,"isTransfered",!1);r(this,"confirmResponse");r(this,"beginAt",null);a(this,q,null);a(this,D,[]);a(this,P,!1);r(this,"duration",null);r(this,"transferedSize",0);r(this,"processedSize",0);r(this,"bytesPerMs",null);r(this,"progress",0);r(this,"endAt",null);r(this,"error",null);a(this,H);a(this,ee,0);this.ws=e,c(this,O,e.isWebSocket?[e]:[e.wss,e]),this.kind=t,this.id=i,this.type=o,this.collect=!!h,this.encoding=l,this.size=m,this.metadata=p,c(this,C,L),c(this,v,E),c(this,Z,u(this,W,Re).call(this))}whenSetUp(){return s(this,Z)}async confirm(){for(let{begin:e}of s(this,v))if(await e?.call(...s(this,O),this)===!1)return this.throw("Transfer was rejected by receiver");return this.beginAt=c(this,q,Date.now()),this.ws.sendMessage(f.confirm,this.id,this.confirmResponse),c(this,H,setInterval(()=>{s(this,ee)!==this.progress&&(c(this,ee,this.progress),this.ws.sendMessage(f.progress,this.id,this.progress))},ve)),null}handleChunk(e,t=e.length){let i=Date.now();this.bytesPerMs=t/(i-s(this,q)),c(this,q,i),this.transferedSize+=t,s(this,D).push([e,t]),s(this,P)||(c(this,P,!0),u(this,W,ge).call(this))}handleSent(){this.isTransfered=!0,this.size||(this.size=this.transferedSize),this.endAt=Date.now(),this.duration=this.endAt-this.beginAt,this.bytesPerMs=this.size/this.duration,s(this,P)||u(this,W,ye).call(this)}abort(e=!1){return this.isAborted=!0,this.isAbortedBySender=e,this.isAbortedByReceiver=!e,this.throw(`Transfer is aborted by ${e?"sender":"receiver"}`,!e)}throw(e,t=!0){s(this,C).delete(this.id),clearInterval(s(this,H)),this.error=new Error(e);for(let i of s(this,v))i.once&&s(this,C).removeListener(this.kind,i),i.error?.call(...s(this,O),this,this.error);t&&this.ws.sendMessage(f.error,this.id,e)}serialize(){return{id:this.id,kind:this.kind,type:this.type,collect:this.collect,encoding:this.encoding,size:this.size,metadata:this.metadata,isAborted:this.isAborted,isAbortedBySender:this.isAbortedBySender,isAbortedByReceiver:this.isAbortedByReceiver,isTransfered:this.isTransfered,confirmResponse:this.confirmResponse,beginAt:this.beginAt,duration:this.duration,transferedSize:this.transferedSize,processedSize:this.processedSize,bytesPerMs:this.bytesPerMs,progress:this.progress,endAt:this.endAt,error:this.error}}};O=new WeakMap,C=new WeakMap,v=new WeakMap,Z=new WeakMap,y=new WeakMap,q=new WeakMap,D=new WeakMap,P=new WeakMap,H=new WeakMap,ee=new WeakMap,W=new WeakSet,Re=async function(){if(c(this,y,this.constructor.types[this.type]),s(this,y))await s(this,y).setup.call(this);else throw new Error(`Unknown type of transfer "${String(this.type)}"`);this.confirm()},ge=async function(){let[e,t]=s(this,D).shift();s(this,y).transformChunk&&(e=await s(this,y).transformChunk.call(this,e)),this.collect&&await s(this,y).collect.call(this,e);for(let{chunk:i,progress:o}of s(this,v))await(i??o)?.call(...s(this,O),this,e);this.processedSize+=t,this.size&&(this.progress=this.processedSize/this.size),s(this,D).length?u(this,W,ge).call(this):(c(this,P,!1),this.isTransfered&&u(this,W,ye).call(this))},ye=async function(){this.progress=1,await s(this,y).done?.call(this);for(let e of s(this,v))e.once&&s(this,C).removeListener(this.kind,e),await e.end?.call(...s(this,O),this);clearInterval(s(this,H)),s(this,C).delete(this.id),this.ws.sendMessage(f.completed,this.id)},r(R,"types",{object:{setup(){this.data=""},collect(e){this.data+=e},done(){this.data=JSON.parse(this.data)}},datauri:{setup(){this.collect&&(this.data="")},collect(e){this.data+=e},done(){this.collect&&(this.data=`data:${this.metadata.type};base64,${this.data}`)}},string:{setup(){this.collect&&(this.data="")},collect(e){this.data+=e}}});var x,T,fe,te=class{constructor(e,t={}){r(this,"sizeLimit");a(this,x,new Map);r(this,"on",this.addTransferListener);r(this,"off",this.removeTransferListener);a(this,T,new Map);a(this,fe,{delete:e=>s(this,T).delete(e),removeListener:(e,t)=>this.removeTransferListener(e,t)});let{sizeLimit:i=Oe}=t;this.sizeLimit=i,e.isWebSocketServer?(e.on(`client-message:${f.request}`,(o,...h)=>this.handleRequest(o,...h)),e.on(`client-message:${f.chunk}`,(o,...h)=>this.handleChunk(o,...h)),e.on(`client-message:${f.sent}`,(o,...h)=>this.handleSent(o,...h)),e.on(`client-message:${f.abort}`,(o,...h)=>this.handleAbort(o,...h))):(e.on(`message:${f.request}`,(...o)=>this.handleRequest(e,...o)),e.on(`message:${f.chunk}`,(...o)=>this.handleChunk(e,...o)),e.on(`message:${f.sent}`,(...o)=>this.handleSent(e,...o)),e.on(`message:${f.abort}`,(...o)=>this.handleAbort(e,...o))),Object.assign(e,{onTransfer:(o,h,l)=>this.on(o,h,l),onceTransfer:(o,h,l)=>this.once(o,h,l)})}addTransferListener(e,t,i){return i?.once&&(t.once=!0),s(this,x).get(e)?.add(t)??s(this,x).set(e,new Set([t])),this}once(e,t,i){return this.addTransferListener(e,t,{...i,once:!0})}removeTransferListener(e,t){if(t){let i=s(this,x).get(e);i&&(i.delete(t),i.size||s(this,x).delete(e))}else s(this,x).delete(e);return this}handleRequest(e,t,i,{type:o,size:h,metadata:l,...m}){let{Transfer:p}=this.constructor;s(this,x).has(t)?s(this,T).has(i)?e.sendMessage(f.error,i,"Transfer already exists"):o in p.types?h>this.sizeLimit?e.sendMessage(f.error,i,`Transfer size (${h} bytes) exeeds limit of ${this.sizeLimit} bytes`):s(this,T).set(i,new p(e,t,i,{type:o,size:h,metadata:l,...m},s(this,fe),s(this,x).get(t))):e.sendMessage(f.error,i,"Unknown type of transfer"):e.sendMessage(f.error,i,`Unknown kind of file "${t}"`)}handleChunk(e,t,i,o=i.length){s(this,T).get(t)?.handleChunk(i,o)}handleSent(e,t){s(this,T).get(t)?.handleSent()}handleAbort(e,t){s(this,T).get(t)?.abort(!0)}};x=new WeakMap,T=new WeakMap,fe=new WeakMap,r(te,"Transfer",R);var le=class extends R{};r(le,"types",{file:{setup(){this.collect&&(this.data="")},collect(e){this.data+=e},done(){this.collect&&this.encoding==="utf8"&&(this.data=atob(this.data))}},...R.types});var We=class extends te{};r(We,"Transfer",le);function N(){}function Ee(n,e=0,t={}){let{leading:i=!1,trailing:o=!0}=t,{maxWait:h=1/0}=t,l,m,p,L,E,w,d,B,Y=async()=>{let F=Date.now();F>=p?(l=void 0,p=void 0,clearTimeout(m),typeof d=="function"&&await d(),S.resolve(B),S.promise.isResolved=!0,w=i):(clearTimeout(l),l=setTimeout(Y,p-F))},j=Number.isFinite(h)?()=>{d===g&&(d=!1),g(),m=setTimeout(j,h)}:null;async function g(){return B=await n.apply(L,E)}i&&typeof i=="boolean"&&(i=g),w=i,o&&typeof o=="boolean"&&(o=g),d=o;let S=Object.assign(function(...F){return E=F,L=this,p=Date.now()+e,d=o,S.promise.isResolved&&(S.promise=Object.assign(new Promise($e=>{S.resolve=$e,typeof w=="function"&&(w(),w=!1,d===g&&(d=!1)),l||(l=setTimeout(Y,e),j&&(m=setTimeout(j,h)))}),{isResolved:!1})),S.promise},{callback:n,promise:Object.assign(Promise.resolve(),{isResolved:!0}),resolve:N,run:g,clear:async F=>{clearTimeout(l),l=void 0,clearTimeout(m),S.promise.isResolved=!0,S.resolve(F?await g():B)}});return S}Ee.noop=Object.assign(()=>{},{callback:N,promise:Object.assign(Promise.resolve(),{isResolved:!0}),resolve:N,run:N,clear:N});function ze(n,e,t,i,o=!0){return Array.isArray(n)&&(n=n.length),typeof i!="string"&&(o=i??!0,i=t),(o?`${n}\xA0`:"")+ze.raw(n,e,t,i)}ze.raw=(n,e,t,i=t)=>{n=Math.abs(n);let o=n%10,h=n%100;return o===1&&h!==11?e:o>=2&&o<=4&&!(h>=12&&h<=15)?t:i};function we(n="",e=""){return`${n}${Date.now().toString(36)}${Math.round(Math.random()*Number.MAX_SAFE_INTEGER).toString(36)}${e}`}var U,A,se,xe,_=class{constructor(e,t={}){a(this,se);r(this,"string");r(this,"size");r(this,"chunkSize");r(this,"listener");a(this,U,0);a(this,A,0);r(this,"isAborted",!1);this.string=e,this.size=this.string.length;let{chunkSize:i=1024*256}=t;this.chunkSize=i}start(e){this.listener=e,u(this,se,xe).call(this)}abort(){this.isAborted=!0}};U=new WeakMap,A=new WeakMap,se=new WeakSet,xe=async function(){if(!this.isAborted){c(this,A,Math.min(s(this,U)+this.chunkSize,this.size));let e=await new Promise(t=>{t(this.string.slice(s(this,U),s(this,A)))});this.isAborted||(await this.listener(e),s(this,A)<this.size&&(c(this,U,s(this,A)),u(this,se,xe).call(this)))}};var b,J,re,ie,K,ne,oe,ae,z,Q,V,G,$,Pe,be,k=class{constructor(e,t,{data:i,type:o,incomingType:h,collect:l,metadata:m,size:p,chunkSize:L,encoding:E,incomingEncoding:w,onBegin:d,onSenderProgress:B,onProgress:Y,onEnd:j,onError:g},S){a(this,$);r(this,"ws");a(this,b);r(this,"kind");r(this,"data");r(this,"type");r(this,"collect");r(this,"metadata");r(this,"size");r(this,"encoding");r(this,"chunkSize");a(this,J);a(this,re);a(this,ie);a(this,K);a(this,ne);a(this,oe);a(this,ae);r(this,"id",we());a(this,z);r(this,"isAborted",!1);r(this,"isTransfered",!1);r(this,"confirmResponse");r(this,"beginAt",null);a(this,Q,null);a(this,V,[]);a(this,G,!1);r(this,"duration",null);r(this,"transferedSize",0);r(this,"bytesPerMs",null);r(this,"senderProgress",0);r(this,"progress",0);r(this,"endAt",null);r(this,"error",null);r(this,"stringStreamer");r(this,"fileStreamer");r(this,"handleChunk",e=>{s(this,V).push(e),s(this,G)||(c(this,G,!0),u(this,$,be).call(this))});r(this,"sent",()=>this.ws.sendMessage(f.sent,this.id));this.ws=e,c(this,b,e.isWebSocket?[e]:[e.wss,e]),this.kind=t,this.data=i,this.type=o,this.collect=l??!1,this.metadata=m,this.size=p??null,this.encoding=E,this.chunkSize=L??this.constructor.chunkSize,c(this,J,S),d&&c(this,re,d),B&&c(this,ie,B),Y&&c(this,K,Y),j&&c(this,ne,j),g&&c(this,oe,g),c(this,ae,u(this,$,Pe).call(this,h,w))}whenSetUp(){return s(this,ae)}async handleConfirm(e){this.confirmResponse=e,this.beginAt=c(this,Q,Date.now()),await s(this,re)?.call(...s(this,b),this),s(this,z).confirm.call(this)}handleProgress(e){this.progress=e,s(this,K)?.call(...s(this,b),this)}async handleCompleted(){this.isTransfered=!0,this.size||(this.size=this.transferedSize,this.senderProgress=1),this.endAt=Date.now(),this.duration=this.endAt-this.beginAt,this.bytesPerMs=this.size/this.duration,s(this,J).delete(this.id),this.progress!==1&&(this.progress=1,await s(this,K)?.call(...s(this,b),this)),s(this,ne)?.call(...s(this,b),this)}throw(e){s(this,J).delete(this.id),this.error=new Error(e),s(this,oe)?.call(...s(this,b),this,this.error)}abort(){return this.isAborted=!0,this.ws.sendMessage(f.abort,this.id),this.throw("Transfer is aborted by sender")}serialize(){return{id:this.id,kind:this.kind,type:this.type,collect:this.collect,encoding:this.encoding,size:this.size,metadata:this.metadata,isAborted:this.isAborted,isTransfered:this.isTransfered,confirmResponse:this.confirmResponse,beginAt:this.beginAt,duration:this.duration,transferedSize:this.transferedSize,bytesPerMs:this.bytesPerMs,senderProgress:this.senderProgress,progress:this.progress,endAt:this.endAt,error:this.error}}};b=new WeakMap,J=new WeakMap,re=new WeakMap,ie=new WeakMap,K=new WeakMap,ne=new WeakMap,oe=new WeakMap,ae=new WeakMap,z=new WeakMap,Q=new WeakMap,V=new WeakMap,G=new WeakMap,$=new WeakSet,Pe=async function(e,t){for(let[i,o,h]of this.constructor.types)if(this.type===i||o(this.data)){this.type=i,c(this,z,h);break}if(this.type)await s(this,z).setup.call(this),delete this.data;else throw new Error("Unknown type of transfer");this.ws.sendMessage(f.request,this.kind,this.id,{type:e??this.type,collect:this.collect,encoding:t??this.encoding,size:this.size,metadata:this.metadata})},be=async function(){let e=s(this,V).shift(),t=e.length;s(this,z).transformChunk&&(e=await s(this,z).transformChunk.call(this,e)),this.ws.sendMessage(f.chunk,this.id,e,t);let i=Date.now();this.bytesPerMs=t/(i-s(this,Q)),c(this,Q,i),this.transferedSize+=t,this.size&&(this.senderProgress=this.transferedSize/this.size),await s(this,ie)?.call(...s(this,b),this),s(this,V).length?u(this,$,be).call(this):(c(this,G,!1),this.senderProgress===1&&this.sent())},r(k,"types",[["object",e=>typeof e=="object",{setup(){this.stringStreamer=new _(JSON.stringify(this.data),{chunkSize:this.chunkSize}),this.collect=!0,this.size=this.stringStreamer.size,this.encoding="utf8"},confirm(){this.stringStreamer.start(this.handleChunk)}}],["datauri",e=>typeof e=="string"&&/^data:[\w-.]+\/[\w-.+,]+(?:;base64)?,/.test(e),{setup(){let[e,t]=this.data.split(/^data:|;base64,|,/).slice(1);this.stringStreamer=new _(t,{chunkSize:this.chunkSize}),this.size=this.stringStreamer.size,this.encoding="base64",this.metadata={...this.metadata,type:e}},confirm(){this.stringStreamer.start(this.handleChunk)}}],["string",e=>typeof e=="string",{setup(){this.stringStreamer=new _(this.data,{chunkSize:this.chunkSize}),this.size=this.stringStreamer.size,this.encoding||(this.encoding="utf8")},confirm(){this.stringStreamer.start(this.handleChunk)}}]]),r(k,"chunkSize",Ce);var I,ue,he=class{constructor(e){a(this,I,new Map);a(this,ue,{delete:e=>s(this,I).delete(e)});e.isWebSocketServer?(e.on(`client-message:${f.confirm}`,(t,...i)=>this.handleConfirm(t,...i)),e.on(`client-message:${f.progress}`,(t,...i)=>this.handleProgress(t,...i)),e.on(`client-message:${f.completed}`,(t,...i)=>this.handleCompleted(t,...i)),e.on(`client-message:${f.error}`,(t,...i)=>this.handleError(t,...i)),Object.assign(e,{transfer:(t,i,o)=>this.transfer(t,i,o)})):(e.on(`message:${f.confirm}`,(...t)=>this.handleConfirm(e,...t)),e.on(`message:${f.progress}`,(...t)=>this.handleProgress(e,...t)),e.on(`message:${f.completed}`,(...t)=>this.handleCompleted(e,...t)),e.on(`message:${f.error}`,(...t)=>this.handleError(e,...t)),Object.assign(e,{transfer:(t,i)=>this.transfer(e,t,i)}))}transfer(e,t,i){let{Transfer:o}=this.constructor,h=new o(e,t,i,s(this,ue));return s(this,I).set(h.id,h),h}handleConfirm(e,t,i){s(this,I).get(t)?.handleConfirm(i)}handleProgress(e,t,i){s(this,I).get(t)?.handleProgress(i)}handleCompleted(e,t){s(this,I).get(t)?.handleCompleted()}handleError(e,t,i){s(this,I).get(t)?.throw(i)}};I=new WeakMap,ue=new WeakMap,r(he,"Transfer",k);function Ae(n){return new Promise(e=>{let t=new FileReader;t.onload=()=>e(typeof t?.result=="string"?t.result.slice(Math.max(0,t.result.indexOf(",")+1)):""),t.readAsDataURL(new Blob([n]))})}var X,M,ce,Te,de,pe=class{constructor(e,t={}){a(this,ce);r(this,"file");r(this,"size");r(this,"chunkSize");r(this,"fileReader");r(this,"listener");a(this,X,0);a(this,M,0);r(this,"isAborted",!1);a(this,de,async()=>{if(!this.isAborted){let e=this.fileReader.result;e.length=e.byteLength,await this.listener(e),s(this,M)<this.size&&(c(this,X,s(this,M)),u(this,ce,Te).call(this))}});this.file=e,this.size=this.file.size;let{chunkSize:i=1024*256}=t;this.chunkSize=i,this.fileReader=new FileReader,this.fileReader.onload=s(this,de)}start(e){this.listener=e,u(this,ce,Te).call(this)}abort(){this.isAborted=!0}};X=new WeakMap,M=new WeakMap,ce=new WeakSet,Te=function(){this.isAborted||(c(this,M,Math.min(s(this,X)+this.chunkSize,this.size)),this.fileReader.readAsArrayBuffer(this.file.slice(s(this,X),s(this,M))))},de=new WeakMap;var Se=class extends k{};r(Se,"types",[["file",e=>typeof e=="object"&&e instanceof File,{setup(){let e=this.data;this.fileStreamer=new pe(e,{chunkSize:this.chunkSize});let t={name:e.name,type:e.type,size:e.size,modifiedAt:e.lastModified};this.metadata?Object.assign(this.metadata,t):this.metadata=t,this.size=this.fileStreamer.size,this.encoding="buffer"},confirm(){this.fileStreamer.start(this.handleChunk)},transformChunk(e){return Ae(e)}}],...k.types]);var ke=class extends he{};r(ke,"Transfer",Se);export{le as IncomingTransfer,We as IncomingTransport,Se as OutgoingTransfer,ke as OutgoingTransport};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|