insite-ws-transfers 2.0.16 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,10 @@
1
- import type { InSiteWebSocket } from "insite-ws/client";
2
- import type { InSiteWebSocketServerClient } from "insite-ws/server";
3
- import type { IncomingChunk, IncomingData, IncomingTransferListener, IncomingTransferProps, IncomingTransferTypes, TransferHandles, TransferTypes } from "./types";
4
- export declare class IncomingTransfer<WSORWSSC extends InSiteWebSocket | InSiteWebSocketServerClient> {
1
+ import type { WS } from "insite-ws/client";
2
+ import type { WSServerClient } from "insite-ws/server";
3
+ import type { IncomingChunk, IncomingData, IncomingTransferHandles, IncomingTransferListener, IncomingTransferProps, IncomingTransferTypes, TransferTypes } from "./types";
4
+ export declare class IncomingTransfer<WSORWSSC extends WS | WSServerClient> {
5
5
  #private;
6
- constructor(ws: Exclude<WSORWSSC, InSiteWebSocket> | InSiteWebSocket, kind: string, id: string, { type, collect, encoding, size, metadata }: IncomingTransferProps<TransferTypes>, handles: TransferHandles, listeners: Set<IncomingTransferListener<WSORWSSC, any>>);
7
- ws: InSiteWebSocket | Exclude<WSORWSSC, InSiteWebSocket>;
6
+ constructor(ws: Exclude<WSORWSSC, WS> | WS, kind: string, id: string, { type, collect, encoding, size, metadata }: IncomingTransferProps<TransferTypes>, handles: IncomingTransferHandles, listeners: Set<IncomingTransferListener<WSORWSSC, any>>);
7
+ ws: WS | Exclude<WSORWSSC, WS>;
8
8
  kind: string;
9
9
  id: string;
10
10
  type: TransferTypes;
@@ -18,13 +18,13 @@ export declare class IncomingTransfer<WSORWSSC extends InSiteWebSocket | InSiteW
18
18
  isAbortedByReceiver: boolean;
19
19
  isTransfered: boolean;
20
20
  confirmResponse?: string;
21
- beginAt: null | number;
22
- duration: null | number;
21
+ beginAt: number | null;
22
+ duration: number | null;
23
23
  transferedSize: number;
24
24
  processedSize: number;
25
- bytesPerMs: null | number;
25
+ bytesPerMs: number | null;
26
26
  progress: number;
27
- endAt: null | number;
27
+ endAt: number | null;
28
28
  error: Error | null;
29
29
  [key: number | string | symbol]: unknown;
30
30
  whenSetUp(): Promise<void>;
@@ -55,6 +55,6 @@ export declare class IncomingTransfer<WSORWSSC extends InSiteWebSocket | InSiteW
55
55
  endAt: number | null;
56
56
  error: Error | null;
57
57
  };
58
- static types: IncomingTransferTypes<IncomingTransfer<InSiteWebSocket | InSiteWebSocketServerClient>, TransferTypes>;
58
+ static types: IncomingTransferTypes<IncomingTransfer<WS | WSServerClient>, TransferTypes>;
59
59
  }
60
60
  //# sourceMappingURL=IncomingTransfer.d.ts.map
@@ -1 +1 @@
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,wBAAwB,EAExB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,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,eAAe,EACxB,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;IAiCV,KAAK,CAAC,QAAQ,UAAQ;IAStB,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,UAAO;IAgB/C,SAAS;;;;;;;;;;;;;;;;;;;;;;IA0BT,MAAM,CAAC,KAAK,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,eAAe,GAAG,2BAA2B,CAAC,EAAE,aAAa,CAAC,CAuDjH;CAEF"}
1
+ {"version":3,"file":"IncomingTransfer.d.ts","sourceRoot":"","sources":["../src/IncomingTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,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,cAAc;;gBAEhE,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,EAC9B,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,6BAAC;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,MAAM,GAAG,IAAI,CAAQ;IAI9B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC/B,cAAc,SAAK;IACnB,aAAa,SAAK;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IACjC,QAAQ,SAAK;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,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,cAAc,CAAC,EAAE,aAAa,CAAC,CAuDvF;CAEF"}
@@ -1,13 +1,14 @@
1
- import type { InSiteWebSocket } from "insite-ws/client";
2
- import type { InSiteWebSocketServer, InSiteWebSocketServerClient } from "insite-ws/server";
1
+ import type { WS } from "insite-ws/client";
2
+ import type { WSServer, WSServerClient } from "insite-ws/server";
3
3
  import { IncomingTransfer } from "./IncomingTransfer";
4
- import type { IncomingTransferListener, IncomingTransportOptions, TransferTypes } from "./types";
5
- export declare class IncomingTransport<WSORWSSC extends InSiteWebSocket | InSiteWebSocketServerClient, T extends IncomingTransfer<WSORWSSC>, Types extends TransferTypes = TransferTypes> {
4
+ import type { IncomingTransferListener, IncomingTransferListenerOptions, IncomingTransportOptions, TransferTypes } from "./types";
5
+ export declare class IncomingTransport<WSORWSSC extends WS | WSServerClient, T extends IncomingTransfer<WSORWSSC>, Types extends TransferTypes = TransferTypes> {
6
6
  #private;
7
- constructor(ws: InSiteWebSocket | InSiteWebSocketServer<Exclude<WSORWSSC, InSiteWebSocket>>, options?: IncomingTransportOptions);
7
+ constructor(ws: WS | WSServer<Exclude<WSORWSSC, WS>>, options?: IncomingTransportOptions);
8
8
  sizeLimit: number;
9
- addTransferListener(kind: string, listener: IncomingTransferListener<WSORWSSC, T>): this;
10
- on: (kind: string, listener: IncomingTransferListener<WSORWSSC, T>) => this;
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;
11
12
  removeTransferListener(kind: string, listener?: IncomingTransferListener<WSORWSSC, T>): this;
12
13
  off: (kind: string, listener?: IncomingTransferListener<WSORWSSC, T>) => this;
13
14
  private handleRequest;
@@ -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,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAE3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAEX,wBAAwB,EAExB,wBAAwB,EAGxB,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;IAsBnI,SAAS,SAAC;IAIV,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,wBAAwB,CAAC,QAAQ,EAAE,CAAC,CAAC;IAOjF,EAAE,SAPwB,MAAM,YAAY,wBAAwB,CAAC,QAAQ,EAAE,CAAC,CAAC,UAOnD;IAE9B,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,wBAAwB,CAAC,QAAQ,EAAE,CAAC,CAAC;IASrF,GAAG,SAT0B,MAAM,aAAa,wBAAwB,CAAC,QAAQ,EAAE,CAAC,CAAC,UASnD;IAUlC,OAAO,CAAC,aAAa;IAkCrB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,WAAW;IAMnB,MAAM,CAAC,QAAQ,0BAAoB;CAEnC"}
1
+ {"version":3,"file":"IncomingTransport.d.ts","sourceRoot":"","sources":["../src/IncomingTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEjE,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,cAAc,EACpC,CAAC,SAAS,gBAAgB,CAAC,QAAQ,CAAC,EACpC,KAAK,SAAS,aAAa,GAAG,aAAa;;gBAE/B,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,GAAE,wBAA6B;IA2B5F,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,12 +1,12 @@
1
- import type { InSiteWebSocket } from "insite-ws/client";
2
- import type { InSiteWebSocketServerClient } from "insite-ws/server";
1
+ import type { WS } from "insite-ws/client";
2
+ import type { WSServerClient } from "insite-ws/server";
3
3
  import { StringStreamer } from "./StringStreamer";
4
4
  import type { FileStreamer } from "./browser/FileStreamer";
5
- import type { OutgoingChunk, OutgoingTransferProps, OutgoingTransferTypes, TransferHandles, TransferTypes } from "./types";
6
- export declare class OutgoingTransfer<WSORWSSC extends InSiteWebSocket | InSiteWebSocketServerClient> {
5
+ import type { OutgoingChunk, OutgoingTransferHandles, OutgoingTransferProps, OutgoingTransferTypes, TransferTypes } from "./types";
6
+ export declare class OutgoingTransfer<WSORWSSC extends WS | WSServerClient> {
7
7
  #private;
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: TransferHandles);
9
- ws: InSiteWebSocket | Exclude<WSORWSSC, InSiteWebSocket>;
8
+ constructor(ws: Exclude<WSORWSSC, WS> | WS, kind: string, { data, type, incomingType, collect, metadata, size, chunkSize, encoding, incomingEncoding, onBegin, onSenderProgress, onProgress, onEnd, onError }: OutgoingTransferProps<WSORWSSC, any, any>, handles: OutgoingTransferHandles);
9
+ ws: WS | Exclude<WSORWSSC, WS>;
10
10
  kind: string;
11
11
  data?: import("./types").OutgoingData | undefined;
12
12
  type?: string;
@@ -19,13 +19,13 @@ export declare class OutgoingTransfer<WSORWSSC extends InSiteWebSocket | InSiteW
19
19
  isAborted: boolean;
20
20
  isTransfered: boolean;
21
21
  confirmResponse?: string;
22
- beginAt: null | number;
23
- duration: null | number;
22
+ beginAt: number | null;
23
+ duration: number | null;
24
24
  transferedSize: number;
25
- bytesPerMs: null | number;
25
+ bytesPerMs: number | null;
26
26
  senderProgress: number;
27
27
  progress: number;
28
- endAt: null | number;
28
+ endAt: number | null;
29
29
  error: Error | null;
30
30
  stringStreamer?: StringStreamer;
31
31
  fileStreamer?: FileStreamer;
@@ -58,7 +58,7 @@ export declare class OutgoingTransfer<WSORWSSC extends InSiteWebSocket | InSiteW
58
58
  endAt: number | null;
59
59
  error: Error | null;
60
60
  };
61
- static types: OutgoingTransferTypes<OutgoingTransfer<InSiteWebSocket | InSiteWebSocketServerClient>, TransferTypes>;
61
+ static types: OutgoingTransferTypes<OutgoingTransfer<WS | WSServerClient>, TransferTypes>;
62
62
  static chunkSize: number;
63
63
  }
64
64
  //# sourceMappingURL=OutgoingTransfer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OutgoingTransfer.d.ts","sourceRoot":"","sources":["../src/OutgoingTransfer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAGpE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EACX,aAAa,EAEb,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,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,eAAe;IA+BzB,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
+ {"version":3,"file":"OutgoingTransfer.d.ts","sourceRoot":"","sources":["../src/OutgoingTransfer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,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,cAAc;;gBAEhE,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,EAC9B,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,6BAAC;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,MAAM,GAAG,IAAI,CAAQ;IAI9B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC/B,cAAc,SAAK;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IACjC,cAAc,SAAK;IACnB,QAAQ,EAAE,MAAM,CAAK;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,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,cAAc,CAAC,EAAE,aAAa,CAAC,CA0DvF;IAEF,MAAM,CAAC,SAAS,SAAoB;CAEpC"}
@@ -1,11 +1,11 @@
1
- import type { InSiteWebSocket } from "insite-ws/client";
2
- import type { InSiteWebSocketServer, InSiteWebSocketServerClient } from "insite-ws/server";
1
+ import type { WS } from "insite-ws/client";
2
+ import type { WSServer, WSServerClient } from "insite-ws/server";
3
3
  import { OutgoingTransfer } from "./OutgoingTransfer";
4
4
  import type { OutgoingTransferProps, TransferTypes } from "./types";
5
- export declare class OutgoingTransport<WSORWSSC extends InSiteWebSocket | InSiteWebSocketServerClient, T extends OutgoingTransfer<WSORWSSC>, Types extends TransferTypes = TransferTypes> {
5
+ export declare class OutgoingTransport<WSORWSSC extends WS | WSServerClient, T extends OutgoingTransfer<WSORWSSC>, Types extends TransferTypes = TransferTypes> {
6
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>;
7
+ constructor(ws: WS | WSServer<Exclude<WSORWSSC, WS>>);
8
+ transfer(ws: Exclude<WSORWSSC, WS> | WS, kind: string, props: OutgoingTransferProps<WSORWSSC, T, Types>): OutgoingTransfer<WSORWSSC>;
9
9
  private handleConfirm;
10
10
  private handleProgress;
11
11
  private handleCompleted;
@@ -1 +1 @@
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,EAAE,qBAAqB,EAA0B,aAAa,EAAE,MAAM,SAAS,CAAC;AAG5F,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;IAsB3F,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"}
1
+ {"version":3,"file":"OutgoingTransport.d.ts","sourceRoot":"","sources":["../src/OutgoingTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEjE,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,cAAc,EACpC,CAAC,SAAS,gBAAgB,CAAC,QAAQ,CAAC,EACpC,KAAK,SAAS,aAAa,GAAG,aAAa;;gBAE/B,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAgCpD,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;IAWvG,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,WAAW;IAMnB,MAAM,CAAC,QAAQ,0BAAoB;CAEnC"}
@@ -1,14 +1,14 @@
1
- import type { InSiteWebSocket } from "insite-ws/client";
2
- import type { InSiteWebSocketServerClient } from "insite-ws/server";
1
+ import type { WS } from "insite-ws/client";
2
+ import type { WSServerClient } from "insite-ws/server";
3
3
  import { IncomingTransfer } from "../IncomingTransfer";
4
4
  import { IncomingTransport } from "../IncomingTransport";
5
5
  import type { IncomingTransferTypes } from "../types";
6
6
  import type { BrowserTransferTypes } from "./types";
7
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>;
8
+ declare class BrowserIncomingTransfer<WSORWSSC extends WS | WSServerClient = WS> extends IncomingTransfer<WSORWSSC> {
9
+ static types: IncomingTransferTypes<BrowserIncomingTransfer<WS>, BrowserTransferTypes>;
10
10
  }
11
- declare class BrowserIncomingTransport<WSORWSSC extends InSiteWebSocket = InSiteWebSocket> extends IncomingTransport<WSORWSSC, BrowserIncomingTransfer<WSORWSSC>, BrowserTransferTypes> {
11
+ declare class BrowserIncomingTransport<WSORWSSC extends WS = WS> extends IncomingTransport<WSORWSSC, BrowserIncomingTransfer<WSORWSSC>, BrowserTransferTypes> {
12
12
  static Transfer: typeof BrowserIncomingTransfer;
13
13
  }
14
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,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"}
1
+ {"version":3,"file":"incoming.d.ts","sourceRoot":"","sources":["../../src/browser/incoming.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,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;AAGpD,YAAY,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAGzD,cAAM,uBAAuB,CAC5B,QAAQ,SAAS,EAAE,GAAG,cAAc,GAAG,EAAE,CACxC,SAAQ,gBAAgB,CAAC,QAAQ,CAAC;IAEnC,MAAM,CAAC,KAAK,EAAE,qBAAqB,CAAC,uBAAuB,CAAC,EAAE,CAAC,EAAE,oBAAoB,CAAC,CAyBpF;CAEF;AAED,cAAM,wBAAwB,CAC7B,QAAQ,SAAS,EAAE,GAAG,EAAE,CACvB,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"}
@@ -1,3 +1,4 @@
1
1
  export * from "./incoming";
2
2
  export * from "./outgoing";
3
+ export type { WithOnTransfer, WithOptionalOnTransfer, WithOptionalTransfer, WithTransfer } from "./types";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -1,2 +1,2 @@
1
- var Me=Object.defineProperty;var Ie=n=>{throw TypeError(n)};var Ee=(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)=>Ee(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),h=(n,e,t,i)=>(me(n,e,"write to private field"),i?i.call(n,t):e.set(n,t),t),f=(n,e,t)=>(me(n,e,"access private method"),t);var c={request:"~t-request",confirm:"~t-confirm",chunk:"~t-c",progress:"~t-p",sent:"~t-sent",completed:"~t-completed",abort:"~t-abort",error:"~t-error"},Ce=10*1024*1024*1024,Oe=1024*256,ve=250;var C,F,O,Z,y,q,D,R,H,ee,x,ze,ge,ye,v=class{constructor(e,t,i,{type:o,collect:l,encoding:u,size:m,metadata:p},M,E){a(this,x);r(this,"ws");a(this,C);r(this,"kind");r(this,"id");r(this,"type");r(this,"collect");r(this,"encoding");r(this,"size");r(this,"metadata");a(this,F);a(this,O);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,R,!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,h(this,C,e.isWebSocket?[e]:[e.wss,e]),this.kind=t,this.id=i,this.type=o,this.collect=!!l,this.encoding=u,this.size=m,this.metadata=p,h(this,F,M),h(this,O,E),h(this,Z,f(this,x,ze).call(this))}whenSetUp(){return s(this,Z)}async confirm(){for(let{begin:e}of s(this,O))if(await e?.call(...s(this,C),this)===!1)return this.throw("Transfer was rejected by receiver");return this.beginAt=h(this,q,Date.now()),this.ws.sendMessage(c.confirm,this.id,this.confirmResponse),h(this,H,setInterval(()=>{s(this,ee)!==this.progress&&(h(this,ee,this.progress),this.ws.sendMessage(c.progress,this.id,this.progress))},ve)),null}handleChunk(e,t=e.length){let i=Date.now();this.bytesPerMs=t/(i-s(this,q)),h(this,q,i),this.transferedSize+=t,s(this,D).push([e,t]),s(this,R)||(h(this,R,!0),f(this,x,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,R)||f(this,x,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,F).delete(this.id),clearInterval(s(this,H)),this.error=new Error(e);for(let{error:i}of s(this,O))i?.call(...s(this,C),this,this.error);t&&this.ws.sendMessage(c.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}}};C=new WeakMap,F=new WeakMap,O=new WeakMap,Z=new WeakMap,y=new WeakMap,q=new WeakMap,D=new WeakMap,R=new WeakMap,H=new WeakMap,ee=new WeakMap,x=new WeakSet,ze=async function(){if(h(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,O))await(i??o)?.call(...s(this,C),this,e);this.processedSize+=t,this.size&&(this.progress=this.processedSize/this.size),s(this,D).length?f(this,x,ge).call(this):(h(this,R,!1),this.isTransfered&&f(this,x,ye).call(this))},ye=async function(){this.progress=1,await s(this,y).done?.call(this);for(let{end:e}of s(this,O))await e?.call(...s(this,C),this);clearInterval(s(this,H)),s(this,F).delete(this.id),this.ws.sendMessage(c.completed,this.id)},r(v,"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 b,k,le,te=class{constructor(e,t={}){r(this,"sizeLimit");a(this,b,new Map);r(this,"on",this.addTransferListener);r(this,"off",this.removeTransferListener);a(this,k,new Map);a(this,le,{delete:e=>s(this,k).delete(e)});let{sizeLimit:i=Ce}=t;this.sizeLimit=i,e.isWebSocketServer?(e.on(`client-message:${c.request}`,(o,...l)=>this.handleRequest(o,...l)),e.on(`client-message:${c.chunk}`,(o,...l)=>this.handleChunk(o,...l)),e.on(`client-message:${c.sent}`,(o,...l)=>this.handleSent(o,...l)),e.on(`client-message:${c.abort}`,(o,...l)=>this.handleAbort(o,...l))):(e.on(`message:${c.request}`,(...o)=>this.handleRequest(e,...o)),e.on(`message:${c.chunk}`,(...o)=>this.handleChunk(e,...o)),e.on(`message:${c.sent}`,(...o)=>this.handleSent(e,...o)),e.on(`message:${c.abort}`,(...o)=>this.handleAbort(e,...o)))}addTransferListener(e,t){return s(this,b).get(e)?.add(t)??s(this,b).set(e,new Set([t])),this}removeTransferListener(e,t){return t?s(this,b).get(e)?.delete(t):s(this,b).delete(e),this}handleRequest(e,t,i,{type:o,size:l,metadata:u,...m}){let{Transfer:p}=this.constructor;s(this,b).has(t)?s(this,k).has(i)?e.sendMessage(c.error,i,"Transfer already exists"):o in p.types?l>this.sizeLimit?e.sendMessage(c.error,i,`Transfer size (${l} bytes) exeeds limit of ${this.sizeLimit} bytes`):s(this,k).set(i,new p(e,t,i,{type:o,size:l,metadata:u,...m},s(this,le),s(this,b).get(t))):e.sendMessage(c.error,i,"Unknown type of transfer"):e.sendMessage(c.error,i,`Unknown kind of file "${t}"`)}handleChunk(e,t,i,o=i.length){s(this,k).get(t)?.handleChunk(i,o)}handleSent(e,t){s(this,k).get(t)?.handleSent()}handleAbort(e,t){s(this,k).get(t)?.abort(!0)}};b=new WeakMap,k=new WeakMap,le=new WeakMap,r(te,"Transfer",v);var fe=class extends v{};r(fe,"types",{file:{setup(){this.collect&&(this.data="")},collect(e){this.data+=e},done(){this.collect&&this.encoding==="utf8"&&(this.data=atob(this.data))}},...v.types});var xe=class extends te{};r(xe,"Transfer",fe);function N(){}function Le(n,e=0,t={}){let{leading:i=!1,trailing:o=!0}=t,{maxWait:l=1/0}=t,u,m,p,M,E,w,d,L,Y=async()=>{let B=Date.now();B>=p?(u=void 0,p=void 0,clearTimeout(m),typeof d=="function"&&await d(),S.resolve(L),S.promise.isResolved=!0,w=i):(clearTimeout(u),u=setTimeout(Y,p-B))},j=Number.isFinite(l)?()=>{d===g&&(d=!1),g(),m=setTimeout(j,l)}:null;async function g(){return L=await n.apply(M,E)}i&&typeof i=="boolean"&&(i=g),w=i,o&&typeof o=="boolean"&&(o=g),d=o;let S=Object.assign(function(...B){return E=B,M=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)),u||(u=setTimeout(Y,e),j&&(m=setTimeout(j,l)))}),{isResolved:!1})),S.promise},{callback:n,promise:Object.assign(Promise.resolve(),{isResolved:!0}),resolve:N,run:g,clear:async B=>{clearTimeout(u),u=void 0,clearTimeout(m),S.promise.isResolved=!0,S.resolve(B?await g():L)}});return S}Le.noop=Object.assign(()=>{},{callback:N,promise:Object.assign(Promise.resolve(),{isResolved:!0}),resolve:N,run:N,clear:N});function we(n,e,t,i,o=!0){return Array.isArray(n)&&(n=n.length),typeof i!="string"&&(o=i??!0,i=t),(o?`${n}\xA0`:"")+we.raw(n,e,t,i)}we.raw=(n,e,t,i=t)=>{n=Math.abs(n);let o=n%10,l=n%100;return o===1&&l!==11?e:o>=2&&o<=4&&!(l>=12&&l<=15)?t:i};function Re(n="",e=""){return`${n}${Date.now().toString(36)}${Math.round(Math.random()*Number.MAX_SAFE_INTEGER).toString(36)}${e}`}var U,A,se,We,_=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,f(this,se,We).call(this)}abort(){this.isAborted=!0}};U=new WeakMap,A=new WeakMap,se=new WeakSet,We=async function(){if(!this.isAborted){h(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&&(h(this,U,s(this,A)),f(this,se,We).call(this)))}};var W,J,re,ie,Q,ne,oe,ae,z,G,K,X,P,Ae,be,T=class{constructor(e,t,{data:i,type:o,incomingType:l,collect:u,metadata:m,size:p,chunkSize:M,encoding:E,incomingEncoding:w,onBegin:d,onSenderProgress:L,onProgress:Y,onEnd:j,onError:g},S){a(this,P);r(this,"ws");a(this,W);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,Q);a(this,ne);a(this,oe);a(this,ae);r(this,"id",Re());a(this,z);r(this,"isAborted",!1);r(this,"isTransfered",!1);r(this,"confirmResponse");r(this,"beginAt",null);a(this,G,null);a(this,K,[]);a(this,X,!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,K).push(e),s(this,X)||(h(this,X,!0),f(this,P,be).call(this))});r(this,"sent",()=>this.ws.sendMessage(c.sent,this.id));this.ws=e,h(this,W,e.isWebSocket?[e]:[e.wss,e]),this.kind=t,this.data=i,this.type=o,this.collect=u??!1,this.metadata=m,this.size=p??null,this.encoding=E,this.chunkSize=M??this.constructor.chunkSize,h(this,J,S),d&&h(this,re,d),L&&h(this,ie,L),Y&&h(this,Q,Y),j&&h(this,ne,j),g&&h(this,oe,g),h(this,ae,f(this,P,Ae).call(this,l,w))}whenSetUp(){return s(this,ae)}async handleConfirm(e){this.confirmResponse=e,this.beginAt=h(this,G,Date.now()),await s(this,re)?.call(...s(this,W),this),s(this,z).confirm.call(this)}handleProgress(e){this.progress=e,s(this,Q)?.call(...s(this,W),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,Q)?.call(...s(this,W),this)),s(this,ne)?.call(...s(this,W),this)}throw(e){s(this,J).delete(this.id),this.error=new Error(e),s(this,oe)?.call(...s(this,W),this,this.error)}abort(){return this.isAborted=!0,this.ws.sendMessage(c.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}}};W=new WeakMap,J=new WeakMap,re=new WeakMap,ie=new WeakMap,Q=new WeakMap,ne=new WeakMap,oe=new WeakMap,ae=new WeakMap,z=new WeakMap,G=new WeakMap,K=new WeakMap,X=new WeakMap,P=new WeakSet,Ae=async function(e,t){for(let[i,o,l]of this.constructor.types)if(this.type===i||o(this.data)){this.type=i,h(this,z,l);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(c.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,K).shift(),t=e.length;s(this,z).transformChunk&&(e=await s(this,z).transformChunk.call(this,e)),this.ws.sendMessage(c.chunk,this.id,e,t);let i=Date.now();this.bytesPerMs=t/(i-s(this,G)),h(this,G,i),this.transferedSize+=t,this.size&&(this.senderProgress=this.transferedSize/this.size),await s(this,ie)?.call(...s(this,W),this),s(this,K).length?f(this,P,be).call(this):(h(this,X,!1),this.senderProgress===1&&this.sent())},r(T,"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(T,"chunkSize",Oe);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:${c.confirm}`,(t,...i)=>this.handleConfirm(t,...i)),e.on(`client-message:${c.progress}`,(t,...i)=>this.handleProgress(t,...i)),e.on(`client-message:${c.completed}`,(t,...i)=>this.handleCompleted(t,...i)),e.on(`client-message:${c.error}`,(t,...i)=>this.handleError(t,...i))):(e.on(`message:${c.confirm}`,(...t)=>this.handleConfirm(e,...t)),e.on(`message:${c.progress}`,(...t)=>this.handleProgress(e,...t)),e.on(`message:${c.completed}`,(...t)=>this.handleCompleted(e,...t)),e.on(`message:${c.error}`,(...t)=>this.handleError(e,...t)))}transfer(e,t,i){let{Transfer:o}=this.constructor,l=new o(e,t,i,s(this,ue));return s(this,I).set(l.id,l),l}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",T);function Pe(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 V,$,ce,ke,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,V,0);a(this,$,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,$)<this.size&&(h(this,V,s(this,$)),f(this,ce,ke).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,f(this,ce,ke).call(this)}abort(){this.isAborted=!0}};V=new WeakMap,$=new WeakMap,ce=new WeakSet,ke=function(){this.isAborted||(h(this,$,Math.min(s(this,V)+this.chunkSize,this.size)),this.fileReader.readAsArrayBuffer(this.file.slice(s(this,V),s(this,$))))},de=new WeakMap;var Se=class extends T{};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 Pe(e)}}],...T.types]);var Te=class extends he{};r(Te,"Transfer",Se);export{fe as IncomingTransfer,xe as IncomingTransport,Se as OutgoingTransfer,Te as OutgoingTransport};
1
+ var Me=Object.defineProperty;var Ce=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),Se=(n,e,t)=>e.has(n)||Ce("Cannot "+t);var s=(n,e,t)=>(Se(n,e,"read from private field"),t?t.call(n):e.get(n)),a=(n,e,t)=>e.has(n)?Ce("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t),f=(n,e,t,i)=>(Se(n,e,"write to private field"),i?i.call(n,t):e.set(n,t),t),u=(n,e,t)=>(Se(n,e,"access private method"),t);var l={request:"~t-request",confirm:"~t-confirm",chunk:"~t-c",progress:"~t-p",sent:"~t-sent",completed:"~t-completed",abort:"~t-abort",error:"~t-error"},ve=10*1024*1024*1024,ke=1024*256,Re=250;var v,k,R,Z,y,q,D,A,H,ee,W,ze,ge,ye,z=class{constructor(e,t,i,{type:o,collect:h,encoding:c,size:S,metadata:p},L,E){a(this,W);r(this,"ws");a(this,v);r(this,"kind");r(this,"id");r(this,"type");r(this,"collect");r(this,"encoding");r(this,"size");r(this,"metadata");a(this,k);a(this,R);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,A,!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,f(this,v,e.isWebSocket?[e]:[e.wss,e]),this.kind=t,this.id=i,this.type=o,this.collect=!!h,this.encoding=c,this.size=S,this.metadata=p,f(this,k,L),f(this,R,E),f(this,Z,u(this,W,ze).call(this))}whenSetUp(){return s(this,Z)}async confirm(){for(let{begin:e}of s(this,R))if(await e?.call(...s(this,v),this)===!1)return this.throw("Transfer was rejected by receiver");return this.beginAt=f(this,q,Date.now()),this.ws.sendMessage(l.confirm,this.id,this.confirmResponse),f(this,H,setInterval(()=>{s(this,ee)!==this.progress&&(f(this,ee,this.progress),this.ws.sendMessage(l.progress,this.id,this.progress))},Re)),null}handleChunk(e,t=e.length){let i=Date.now();this.bytesPerMs=t/(i-s(this,q)),f(this,q,i),this.transferedSize+=t,s(this,D).push([e,t]),s(this,A)||(f(this,A,!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,A)||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,k).delete(this.id),clearInterval(s(this,H)),this.error=new Error(e);for(let i of s(this,R))i.once&&s(this,k).removeListener(this.kind,i),i.error?.call(...s(this,v),this,this.error);t&&this.ws.sendMessage(l.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}}};v=new WeakMap,k=new WeakMap,R=new WeakMap,Z=new WeakMap,y=new WeakMap,q=new WeakMap,D=new WeakMap,A=new WeakMap,H=new WeakMap,ee=new WeakMap,W=new WeakSet,ze=async function(){if(f(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,R))await(i??o)?.call(...s(this,v),this,e);this.processedSize+=t,this.size&&(this.progress=this.processedSize/this.size),s(this,D).length?u(this,W,ge).call(this):(f(this,A,!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,R))e.once&&s(this,k).removeListener(this.kind,e),await e.end?.call(...s(this,v),this);clearInterval(s(this,H)),s(this,k).delete(this.id),this.ws.sendMessage(l.completed,this.id)},r(z,"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,O,le,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,O,new Map);a(this,le,{delete:e=>s(this,O).delete(e),removeListener:(e,t)=>this.removeTransferListener(e,t)});let{sizeLimit:i=ve}=t;this.sizeLimit=i,e.isWebSocketServer?(e.on(`client-message:${l.request}`,(o,...h)=>this.handleRequest(o,...h)),e.on(`client-message:${l.chunk}`,(o,...h)=>this.handleChunk(o,...h)),e.on(`client-message:${l.sent}`,(o,...h)=>this.handleSent(o,...h)),e.on(`client-message:${l.abort}`,(o,...h)=>this.handleAbort(o,...h))):(e.on(`message:${l.request}`,(...o)=>this.handleRequest(e,...o)),e.on(`message:${l.chunk}`,(...o)=>this.handleChunk(e,...o)),e.on(`message:${l.sent}`,(...o)=>this.handleSent(e,...o)),e.on(`message:${l.abort}`,(...o)=>this.handleAbort(e,...o))),Object.assign(e,{onTransfer:(o,h,c)=>this.on(o,h,c),onceTransfer:(o,h,c)=>this.once(o,h,c)})}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:c,...S}){let{Transfer:p}=this.constructor;s(this,x).has(t)?s(this,O).has(i)?e.sendMessage(l.error,i,"Transfer already exists"):o in p.types?h>this.sizeLimit?e.sendMessage(l.error,i,`Transfer size (${h} bytes) exeeds limit of ${this.sizeLimit} bytes`):s(this,O).set(i,new p(e,t,i,{type:o,size:h,metadata:c,...S},s(this,le),s(this,x).get(t))):e.sendMessage(l.error,i,"Unknown type of transfer"):e.sendMessage(l.error,i,`Unknown kind of file "${t}"`)}handleChunk(e,t,i,o=i.length){s(this,O).get(t)?.handleChunk(i,o)}handleSent(e,t){s(this,O).get(t)?.handleSent()}handleAbort(e,t){s(this,O).get(t)?.abort(!0)}};x=new WeakMap,O=new WeakMap,le=new WeakMap,r(te,"Transfer",z);var ce=class extends z{};r(ce,"types",{file:{setup(){this.collect&&(this.data="")},collect(e){this.data+=e},done(){this.collect&&this.encoding==="utf8"&&(this.data=atob(this.data))}},...z.types});var We=class extends te{};r(We,"Transfer",ce);function N(){}function Ee(n,e=0,t={}){let{leading:i=!1,trailing:o=!0}=t,{maxWait:h=1/0}=t,c,S,p,L,E,P,d,B,Y=async()=>{let F=Date.now();F>=p?(c=void 0,p=void 0,clearTimeout(S),typeof d=="function"&&await d(),m.resolve(B),m.promise.isResolved=!0,P=i):(clearTimeout(c),c=setTimeout(Y,p-F))},j=Number.isFinite(h)?()=>{d===g&&(d=!1),g(),S=setTimeout(j,h)}:null;async function g(){return B=await n.apply(L,E)}i&&typeof i=="boolean"&&(i=g),P=i,o&&typeof o=="boolean"&&(o=g),d=o;let m=Object.assign(function(...F){return E=F,L=this,p=Date.now()+e,d=o,m.promise.isResolved&&(m.promise=Object.assign(new Promise($e=>{m.resolve=$e,typeof P=="function"&&(P(),P=!1,d===g&&(d=!1)),c||(c=setTimeout(Y,e),j&&(S=setTimeout(j,h)))}),{isResolved:!1})),m.promise},{callback:n,promise:Object.assign(Promise.resolve(),{isResolved:!0}),resolve:N,run:g,clear:async F=>{clearTimeout(c),c=void 0,clearTimeout(S),m.promise.isResolved=!0,m.resolve(F?await g():B)}});return m}Ee.noop=Object.assign(()=>{},{callback:N,promise:Object.assign(Promise.resolve(),{isResolved:!0}),resolve:N,run:N,clear:N});function we(n,e,t,i,o=!0){return Array.isArray(n)&&(n=n.length),typeof i!="string"&&(o=i??!0,i=t),(o?`${n}\xA0`:"")+we.raw(n,e,t,i)}we.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 Pe(n="",e=""){return`${n}${Date.now().toString(36)}${Math.round(Math.random()*Number.MAX_SAFE_INTEGER).toString(36)}${e}`}var U,I,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,I,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,I=new WeakMap,se=new WeakSet,xe=async function(){if(!this.isAborted){f(this,I,Math.min(s(this,U)+this.chunkSize,this.size));let e=await new Promise(t=>{t(this.string.slice(s(this,U),s(this,I)))});this.isAborted||(await this.listener(e),s(this,I)<this.size&&(f(this,U,s(this,I)),u(this,se,xe).call(this)))}};var T,J,re,ie,K,ne,oe,ae,w,Q,V,G,$,Ae,Te,b=class{constructor(e,t,{data:i,type:o,incomingType:h,collect:c,metadata:S,size:p,chunkSize:L,encoding:E,incomingEncoding:P,onBegin:d,onSenderProgress:B,onProgress:Y,onEnd:j,onError:g},m){a(this,$);r(this,"ws");a(this,T);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",Pe());a(this,w);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)||(f(this,G,!0),u(this,$,Te).call(this))});r(this,"sent",()=>this.ws.sendMessage(l.sent,this.id));this.ws=e,f(this,T,e.isWebSocket?[e]:[e.wss,e]),this.kind=t,this.data=i,this.type=o,this.collect=c??!1,this.metadata=S,this.size=p??null,this.encoding=E,this.chunkSize=L??this.constructor.chunkSize,f(this,J,m),d&&f(this,re,d),B&&f(this,ie,B),Y&&f(this,K,Y),j&&f(this,ne,j),g&&f(this,oe,g),f(this,ae,u(this,$,Ae).call(this,h,P))}whenSetUp(){return s(this,ae)}async handleConfirm(e){this.confirmResponse=e,this.beginAt=f(this,Q,Date.now()),await s(this,re)?.call(...s(this,T),this),s(this,w).confirm.call(this)}handleProgress(e){this.progress=e,s(this,K)?.call(...s(this,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,s(this,J).delete(this.id),this.progress!==1&&(this.progress=1,await s(this,K)?.call(...s(this,T),this)),s(this,ne)?.call(...s(this,T),this)}throw(e){s(this,J).delete(this.id),this.error=new Error(e),s(this,oe)?.call(...s(this,T),this,this.error)}abort(){return this.isAborted=!0,this.ws.sendMessage(l.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}}};T=new WeakMap,J=new WeakMap,re=new WeakMap,ie=new WeakMap,K=new WeakMap,ne=new WeakMap,oe=new WeakMap,ae=new WeakMap,w=new WeakMap,Q=new WeakMap,V=new WeakMap,G=new WeakMap,$=new WeakSet,Ae=async function(e,t){for(let[i,o,h]of this.constructor.types)if(this.type===i||o(this.data)){this.type=i,f(this,w,h);break}if(this.type)await s(this,w).setup.call(this),delete this.data;else throw new Error("Unknown type of transfer");this.ws.sendMessage(l.request,this.kind,this.id,{type:e??this.type,collect:this.collect,encoding:t??this.encoding,size:this.size,metadata:this.metadata})},Te=async function(){let e=s(this,V).shift(),t=e.length;s(this,w).transformChunk&&(e=await s(this,w).transformChunk.call(this,e)),this.ws.sendMessage(l.chunk,this.id,e,t);let i=Date.now();this.bytesPerMs=t/(i-s(this,Q)),f(this,Q,i),this.transferedSize+=t,this.size&&(this.senderProgress=this.transferedSize/this.size),await s(this,ie)?.call(...s(this,T),this),s(this,V).length?u(this,$,Te).call(this):(f(this,G,!1),this.senderProgress===1&&this.sent())},r(b,"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(b,"chunkSize",ke);var C,ue,he=class{constructor(e){a(this,C,new Map);a(this,ue,{delete:e=>s(this,C).delete(e)});e.isWebSocketServer?(e.on(`client-message:${l.confirm}`,(t,...i)=>this.handleConfirm(t,...i)),e.on(`client-message:${l.progress}`,(t,...i)=>this.handleProgress(t,...i)),e.on(`client-message:${l.completed}`,(t,...i)=>this.handleCompleted(t,...i)),e.on(`client-message:${l.error}`,(t,...i)=>this.handleError(t,...i)),Object.assign(e,{transfer:(t,i,o)=>this.transfer(t,i,o)})):(e.on(`message:${l.confirm}`,(...t)=>this.handleConfirm(e,...t)),e.on(`message:${l.progress}`,(...t)=>this.handleProgress(e,...t)),e.on(`message:${l.completed}`,(...t)=>this.handleCompleted(e,...t)),e.on(`message:${l.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,C).set(h.id,h),h}handleConfirm(e,t,i){s(this,C).get(t)?.handleConfirm(i)}handleProgress(e,t,i){s(this,C).get(t)?.handleProgress(i)}handleCompleted(e,t){s(this,C).get(t)?.handleCompleted()}handleError(e,t,i){s(this,C).get(t)?.throw(i)}};C=new WeakMap,ue=new WeakMap,r(he,"Transfer",b);function Ie(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,fe,Oe,de,pe=class{constructor(e,t={}){a(this,fe);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&&(f(this,X,s(this,M)),u(this,fe,Oe).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,fe,Oe).call(this)}abort(){this.isAborted=!0}};X=new WeakMap,M=new WeakMap,fe=new WeakSet,Oe=function(){this.isAborted||(f(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 me=class extends b{};r(me,"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 Ie(e)}}],...b.types]);var be=class extends he{};r(be,"Transfer",me);export{ce as IncomingTransfer,We as IncomingTransport,me as OutgoingTransfer,be as OutgoingTransport};
2
2
  //# sourceMappingURL=index.js.map