@based/client 5.3.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/src/Emitter.js +4 -3
  2. package/dist/src/Emitter.js.map +1 -1
  3. package/dist/src/incoming/index.js +39 -1
  4. package/dist/src/incoming/index.js.map +1 -1
  5. package/dist/src/incoming/protocol.js +3 -1
  6. package/dist/src/incoming/protocol.js.map +1 -1
  7. package/dist/src/index.d.ts +11 -8
  8. package/dist/src/index.js +26 -22
  9. package/dist/src/index.js.map +1 -1
  10. package/dist/src/index_original.d.ts +11 -8
  11. package/dist/src/outgoing/index.d.ts +2 -0
  12. package/dist/src/outgoing/index.js +54 -2
  13. package/dist/src/outgoing/index.js.map +1 -1
  14. package/dist/src/outgoing/protocol.d.ts +5 -1
  15. package/dist/src/outgoing/protocol.js +85 -5
  16. package/dist/src/outgoing/protocol.js.map +1 -1
  17. package/dist/src/stream/browser.d.ts +5 -2
  18. package/dist/src/stream/browser.js +12 -20
  19. package/dist/src/stream/browser.js.map +1 -1
  20. package/dist/src/stream/browserStream.d.ts +3 -0
  21. package/dist/src/stream/browserStream.js +86 -0
  22. package/dist/src/stream/browserStream.js.map +1 -0
  23. package/dist/src/stream/fetch.js.map +1 -1
  24. package/dist/src/stream/index.d.ts +4 -1
  25. package/dist/src/stream/index.js +30 -10
  26. package/dist/src/stream/index.js.map +1 -1
  27. package/dist/src/stream/nodeStream.d.ts +5 -5
  28. package/dist/src/stream/nodeStream.js +109 -68
  29. package/dist/src/stream/nodeStream.js.map +1 -1
  30. package/dist/src/stream/types.d.ts +26 -8
  31. package/dist/src/stream/types.js.map +1 -1
  32. package/dist/src/stream/upload.d.ts +7 -0
  33. package/dist/src/stream/upload.js +28 -0
  34. package/dist/src/stream/upload.js.map +1 -0
  35. package/dist/src/stream/uploadFileBrowser.js.map +1 -1
  36. package/dist/src/types/error.d.ts +37 -0
  37. package/dist/src/types/error.js +50 -0
  38. package/dist/src/types/error.js.map +1 -0
  39. package/dist/src/types/index.d.ts +8 -7
  40. package/dist/src/types/index.js +8 -7
  41. package/dist/src/types/index.js.map +1 -1
  42. package/dist/src/types/stream.d.ts +20 -0
  43. package/dist/src/types/stream.js +2 -0
  44. package/dist/src/types/stream.js.map +1 -0
  45. package/dist/src/websocket/index.js +1 -1
  46. package/dist/src/websocket/index.js.map +1 -1
  47. package/package.json +6 -4
@@ -17,7 +17,9 @@ const encodeHeader = (type, isDeflate, len) => {
17
17
  // 4 = auth
18
18
  // 5 = subscribeChannel
19
19
  // 6 = publishChannel
20
- // 7 = unsubscribeChannel
20
+ // 7.0 = unsubscribeChannel
21
+ // 7.1 = register stream
22
+ // 7.2 = chunk
21
23
  // isDeflate (1 bit)
22
24
  // len (28 bits)
23
25
  // @ts-ignore
@@ -77,11 +79,12 @@ export const encodeSubscribeChannelMessage = (id, o) => {
77
79
  // Type 5 = subscribe
78
80
  // | 4 header | 8 id | 1 name length | * name | * payload |
79
81
  // Type 7 = unsubscribe
80
- // | 4 header | 8 id |
82
+ // | 4 header | 1 = 0 | 8 id |
81
83
  if (type === 7) {
82
- const buff = createBuffer(type, false, 12);
83
- storeUint8(buff, id, 4, 8);
84
- return { buffers: [buff], len: 12 };
84
+ const buff = createBuffer(type, false, 13);
85
+ storeUint8(buff, 0, 4, 1);
86
+ storeUint8(buff, id, 5, 8);
87
+ return { buffers: [buff], len: 13 };
85
88
  }
86
89
  const n = encoder.encode(name);
87
90
  len += 1 + n.length;
@@ -175,4 +178,81 @@ export const encodeAuthMessage = (authState) => {
175
178
  }
176
179
  return buff;
177
180
  };
181
+ export const encodeStreamMessage = (f) => {
182
+ const [subType, reqId] = f;
183
+ // Type 7.1 Start stream
184
+ // | 4 header | 1 subType = 1 | 3 reqId | 4 content-size | 1 nameLen | 1 mimeLen | 1 fnNameLen | 1 extensionLength | name | mime | fnName | extension | payload
185
+ if (subType === 1) {
186
+ const [, , contentSize, name, mimeType, extension, fnName, payload] = f;
187
+ let sLen = 16;
188
+ let len = sLen;
189
+ const nameEncoded = encoder.encode(name);
190
+ len += nameEncoded.length;
191
+ const [isDeflate, p] = encodePayload(payload);
192
+ if (p) {
193
+ len += p.length;
194
+ }
195
+ const mimeTypeEncoded = encoder.encode(mimeType);
196
+ len += mimeTypeEncoded.length;
197
+ const fnNameEncoded = encoder.encode(fnName);
198
+ len += fnNameEncoded.length;
199
+ const extensionEncoded = encoder.encode(extension);
200
+ len += extensionEncoded.length;
201
+ const buff = createBuffer(7, isDeflate, len, sLen);
202
+ storeUint8(buff, 1, 4, 1);
203
+ storeUint8(buff, reqId, 5, 3);
204
+ storeUint8(buff, contentSize, 8, 4);
205
+ storeUint8(buff, nameEncoded.length, 12, 1);
206
+ storeUint8(buff, mimeTypeEncoded.length, 13, 1);
207
+ storeUint8(buff, fnNameEncoded.length, 14, 1);
208
+ storeUint8(buff, extensionEncoded.length, 15, 1);
209
+ if (p) {
210
+ return {
211
+ buffers: [
212
+ buff,
213
+ nameEncoded,
214
+ mimeTypeEncoded,
215
+ fnNameEncoded,
216
+ extensionEncoded,
217
+ p,
218
+ ],
219
+ len,
220
+ };
221
+ }
222
+ return {
223
+ buffers: [
224
+ buff,
225
+ nameEncoded,
226
+ mimeTypeEncoded,
227
+ fnNameEncoded,
228
+ extensionEncoded,
229
+ ],
230
+ len,
231
+ };
232
+ }
233
+ else if (subType === 2) {
234
+ // Type 7.2 Chunk
235
+ // | 4 header | 1 subType = 2 | 3 reqId | 1 seqId | content
236
+ let sLen = 9;
237
+ let len = sLen;
238
+ const [, , seqId, chunk] = f;
239
+ // only deflate is it makes sense
240
+ let isDeflate = false;
241
+ let processed = chunk;
242
+ if (chunk.length > 150) {
243
+ processed = deflateSync(chunk);
244
+ len += processed.length;
245
+ isDeflate = true;
246
+ }
247
+ else {
248
+ len += chunk.length;
249
+ }
250
+ const buff = createBuffer(7, isDeflate, len, sLen);
251
+ storeUint8(buff, 2, 4, 1);
252
+ storeUint8(buff, reqId, 5, 3);
253
+ storeUint8(buff, seqId, 8, 1);
254
+ return { buffers: [buff, processed], len };
255
+ }
256
+ return { buffers: [], len: 0 };
257
+ };
178
258
  //# sourceMappingURL=protocol.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/outgoing/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/outgoing/protocol.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  import { BasedClient } from '../index.js';
2
- import { StreamFunctionOpts } from './types.js';
3
- declare const _default: (client: BasedClient, name: string, options: StreamFunctionOpts, progressListener?: (progress: number) => void) => Promise<any>;
2
+ import { StreamFunctionContents } from './types.js';
3
+ export declare const isStreaming: {
4
+ streaming: boolean;
5
+ };
6
+ declare const _default: (client: BasedClient, name: string, options: StreamFunctionContents, progressListener?: (progress: number) => void) => Promise<any>;
4
7
  export default _default;
@@ -1,33 +1,25 @@
1
- import { isFileContents, isStreamFunctionPath, isStreamFunctionStream, } from './types.js';
2
- import uploadFileBrowser from './uploadFileBrowser.js';
3
- import fetch from './fetch.js';
1
+ import { isFileContents } from './types.js';
2
+ import { uploadFile } from './browserStream.js';
3
+ export const isStreaming = { streaming: false };
4
+ // will get browser stream as well
4
5
  export default async (client, name, options, progressListener) => {
5
- if (isStreamFunctionPath(options)) {
6
- return;
7
- }
8
- if (isStreamFunctionStream(options)) {
9
- return;
10
- }
11
- if (options.contents instanceof ArrayBuffer) {
6
+ if (options.contents instanceof ArrayBuffer ||
7
+ typeof options.contents === 'string') {
12
8
  options.contents = new global.Blob([options.contents], {
13
9
  type: options.mimeType || 'text/plain',
14
10
  });
15
- // want to stream this XHR browser / stream + http nodejs
16
- return fetch(client, name, options);
17
- }
18
- if (isFileContents(options)) {
19
- return uploadFileBrowser(client, name, options, progressListener);
20
11
  }
21
12
  if (options.contents instanceof global.Blob) {
22
13
  if (!options.mimeType) {
23
14
  options.mimeType = options.contents.type;
24
15
  }
25
- // want to stream this XHR browser / stream + http nodejs
26
- return fetch(client, name, options);
16
+ options.contents = new File([options.contents], options.fileName || 'blob', { type: options.contents.type });
27
17
  }
28
- if (typeof options.contents === 'string') {
29
- // want to stream this XHR browser / stream + http nodejs
30
- return fetch(client, name, options);
18
+ if (isFileContents(options)) {
19
+ if (!options.size) {
20
+ options.size = options.contents.size;
21
+ }
22
+ return uploadFile(client, name, options, progressListener);
31
23
  }
32
24
  throw new Error(`Invalid opts for file api ${name} ${JSON.stringify(options, null, 2)}`);
33
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/stream/browser.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EAEd,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,YAAY,CAAA;AACnB,OAAO,iBAAiB,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,MAAM,YAAY,CAAA;AAE9B,eAAe,KAAK,EAClB,MAAmB,EACnB,IAAY,EACZ,OAA2B,EAC3B,gBAA6C,EAC/B,EAAE;IAChB,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAM;IACR,CAAC;IAED,IAAI,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAM;IACR,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,YAAY,WAAW,EAAE,CAAC;QAC5C,OAAO,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACrD,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,YAAY;SACvC,CAAC,CAAA;QACF,yDAAyD;QACzD,OAAO,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC;IAED,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAA;IACnE,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,YAAY,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA;QAC1C,CAAC;QAED,yDAAyD;QACzD,OAAO,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC;IAED,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACzC,yDAAyD;QACzD,OAAO,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,IAAI,KAAK,CACb,6BAA6B,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CACxE,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/stream/browser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAA0B,MAAM,YAAY,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AAE/C,kCAAkC;AAElC,eAAe,KAAK,EAClB,MAAmB,EACnB,IAAY,EACZ,OAA+B,EAC/B,gBAA6C,EAC/B,EAAE;IAChB,IACE,OAAO,CAAC,QAAQ,YAAY,WAAW;QACvC,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,EACpC,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACrD,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,YAAY;SACvC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,YAAY,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA;QAC1C,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,IAAI,IAAI,CACzB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAClB,OAAO,CAAC,QAAQ,IAAI,MAAM,EAC1B,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAChC,CAAA;IACH,CAAC;IAED,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA;QACtC,CAAC;QACD,OAAO,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAA;IAC5D,CAAC;IAED,MAAM,IAAI,KAAK,CACb,6BAA6B,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CACxE,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { StreamFunctionContents } from './types.js';
2
+ import { BasedClient } from '../index.js';
3
+ export declare const uploadFile: (client: BasedClient, name: string, options: StreamFunctionContents<File>, progressListener?: (p: number, bytes: number) => void) => Promise<any>;
@@ -0,0 +1,86 @@
1
+ import { addStreamChunk, addStreamRegister } from '../outgoing/index.js';
2
+ const waitForChunk = (reader) => {
3
+ return new Promise((resolve) => {
4
+ reader.addEventListener('loadend', (e) => {
5
+ console.log('loaded?');
6
+ resolve(new Uint8Array(reader.result));
7
+ });
8
+ });
9
+ };
10
+ export const uploadFile = async (client, name, options, progressListener) => {
11
+ if (!(options.contents instanceof File)) {
12
+ throw new Error('File Contents has to be an instance of "File"');
13
+ }
14
+ if (!client.connected) {
15
+ await client.once('connect');
16
+ }
17
+ let reqId = ++client.streamRequestId;
18
+ if (reqId > 16777215) {
19
+ reqId = client.streamRequestId = 0;
20
+ }
21
+ let seqId = 0;
22
+ addStreamRegister(client, reqId, options.size, options.fileName, options.mimeType, options.extension, name, options.payload);
23
+ const useDeflate = !(options.mimeType
24
+ ? /image|video|x-zip/i.test(options.mimeType)
25
+ : options.extension
26
+ ? /(mp4|avi|mov|zip|jpg|jpeg|png|gif|mkv)/i.test(options.extension)
27
+ : false);
28
+ // 100kb
29
+ const smallest = 100000;
30
+ // 10mb
31
+ const maxSize = 1000000 * 10;
32
+ // 1mb
33
+ const medium = 1000000 * 1;
34
+ let readSize = Math.min(medium, options.size);
35
+ if (options.size < medium * 5) {
36
+ readSize = Math.min(smallest, options.size);
37
+ }
38
+ else if (options.size > medium * 100) {
39
+ readSize = maxSize;
40
+ }
41
+ let streamHandler;
42
+ const waitForStream = () => {
43
+ return new Promise((resolve) => {
44
+ streamHandler[2] = (seqId, code, maxChunkSize) => {
45
+ if (maxChunkSize) {
46
+ readSize = maxChunkSize;
47
+ }
48
+ resolve({ seqId, maxChunkSize, code });
49
+ };
50
+ });
51
+ };
52
+ async function* loadFileInChunks(file) {
53
+ let totalBytes = 0;
54
+ while (totalBytes < file.size) {
55
+ const end = Math.min(totalBytes + file.size, totalBytes + readSize);
56
+ const chunk = file.slice(totalBytes, end);
57
+ const reader = new FileReader();
58
+ reader.readAsArrayBuffer(chunk);
59
+ const result = await waitForChunk(reader);
60
+ if (seqId === 255) {
61
+ seqId = 0;
62
+ }
63
+ addStreamChunk(client, reqId, ++seqId, result, useDeflate);
64
+ await waitForStream();
65
+ totalBytes += chunk.size;
66
+ yield totalBytes;
67
+ }
68
+ yield totalBytes;
69
+ }
70
+ let id = Math.random().toString(16);
71
+ const dcHandler = () => {
72
+ console.error('CLIENT DC -> ABORT STREAM', Date.now(), id);
73
+ };
74
+ client.once('disconnect', dcHandler);
75
+ return new Promise(async (resolve, reject) => {
76
+ streamHandler = [resolve, reject, () => { }];
77
+ client.streamFunctionResponseListeners.set(reqId, streamHandler);
78
+ for await (const read of loadFileInChunks(options.contents)) {
79
+ if (progressListener) {
80
+ progressListener(read / options.size, read);
81
+ }
82
+ }
83
+ client.off('disconnect', dcHandler);
84
+ });
85
+ };
86
+ //# sourceMappingURL=browserStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserStream.js","sourceRoot":"","sources":["../../../src/stream/browserStream.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/stream/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,eAAe,EAAE,MAAM,aAAa,CAAA;AAE1D,OAAO,KAAK,MAAM,cAAc,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,SAAS,MAAM,aAAa,CAAA;AAEnC,eAAe,KAAK,EAClB,MAAmB,EACnB,IAAY,EACZ,OAA+B,EACjB,EAAE;IAChB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC9B,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAE9C,MAAM,OAAO,GAAkB;QAC7B,cAAc,EAAE,OAAO,CAAC,QAAQ,IAAI,YAAY;QAChD,aAAa,EAAE,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC;KACjD,CAAA;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAA;IAC5C,CAAC;IAED,IAAI,CAAC,GAAG,EAAE,CAAA;IACV,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC,GAAG,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE;QAC/C,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,UAAU;QACjB,OAAO;QACP,aAAa;QACb,IAAI,EAAE,OAAO,CAAC,QAAQ;KACvB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAExB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;IAEd,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/stream/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,eAAe,EAAE,MAAM,aAAa,CAAA;AAE1D,OAAO,KAAK,MAAM,cAAc,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,SAAS,MAAM,aAAa,CAAA;AAEnC,eAAe,KAAK,EAClB,MAAmB,EACnB,IAAY,EACZ,OAA+B,EACjB,EAAE;IAChB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;QACrB,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;KAC7B;IAED,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAE9C,MAAM,OAAO,GAAkB;QAC7B,cAAc,EAAE,OAAO,CAAC,QAAQ,IAAI,YAAY;QAChD,aAAa,EAAE,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC;KACjD,CAAA;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE;QACpB,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAA;KAC3C;IAED,IAAI,CAAC,GAAG,EAAE,CAAA;IACV,IAAI,OAAO,CAAC,OAAO,EAAE;QACnB,CAAC,GAAG,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;KAC1C;IAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE;QAC/C,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,UAAU;QACjB,OAAO;QACP,aAAa;QACb,IAAI,EAAE,OAAO,CAAC,QAAQ;KACvB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAExB,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;KAC1B;IAAC,OAAO,CAAC,EAAE,GAAE;IAEd,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
@@ -1,4 +1,7 @@
1
1
  import { BasedClient } from '../index.js';
2
2
  import { StreamFunctionOpts } from './types.js';
3
- declare const _default: (client: BasedClient, name: string, options: StreamFunctionOpts, _progressListener?: (progress: number) => void) => Promise<any>;
3
+ export declare const isStreaming: {
4
+ streaming: boolean;
5
+ };
6
+ declare const _default: (client: BasedClient, name: string, options: StreamFunctionOpts, progressListener?: (progress: number, bytes: number) => void) => Promise<any>;
4
7
  export default _default;
@@ -1,20 +1,40 @@
1
1
  import { isStreamFunctionPath, isStreamFunctionStream, } from './types.js';
2
- import fetch from './fetch.js';
2
+ import { Readable } from 'node:stream';
3
3
  import { uploadFilePath, uploadFileStream } from './nodeStream.js';
4
- export default async (client, name, options, _progressListener) => {
4
+ import { Buffer } from 'node:buffer';
5
+ export const isStreaming = { streaming: false };
6
+ async function* generateChunks(bytes) {
7
+ // 100kb (bit arbitrary)
8
+ const readBytes = 100000;
9
+ let index = 0;
10
+ while (index * readBytes < bytes.byteLength) {
11
+ const buf = bytes.slice(index * readBytes, Math.min(bytes.byteLength, (index + 1) * readBytes));
12
+ index++;
13
+ yield Buffer.from(buf);
14
+ }
15
+ }
16
+ const createReadableStreamFromContents = (bytes) => {
17
+ return Readable.from(generateChunks(bytes));
18
+ };
19
+ export default async (client, name, options, progressListener) => {
5
20
  if (isStreamFunctionPath(options)) {
6
- return uploadFilePath(client, name, options);
21
+ return uploadFilePath(client, name, options, progressListener);
7
22
  }
8
23
  if (isStreamFunctionStream(options)) {
9
- return uploadFileStream(client, name, options);
24
+ return uploadFileStream(client, name, options, progressListener);
25
+ }
26
+ if (options.contents instanceof Buffer) {
27
+ options.contents = new Uint8Array(options.contents.buffer, options.contents.byteOffset, options.contents.length);
10
28
  }
11
- if (options.contents instanceof ArrayBuffer) {
12
- options.contents = global.Buffer.from(options.contents);
13
- return fetch(client, name, options);
29
+ if (typeof options.contents === 'string') {
30
+ options.contents = new TextEncoder().encode(options.contents);
14
31
  }
15
- if (typeof options.contents === 'string' ||
16
- options.contents instanceof global.Buffer) {
17
- return fetch(client, name, options);
32
+ if (options.contents instanceof Uint8Array) {
33
+ return uploadFileStream(client, name, {
34
+ ...options,
35
+ size: options.contents.byteLength,
36
+ contents: createReadableStreamFromContents(options.contents),
37
+ }, progressListener);
18
38
  }
19
39
  throw new Error(`Invalid opts for file api ${name} ${JSON.stringify(options, null, 2)}`);
20
40
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stream/index.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,MAAM,YAAY,CAAA;AAC9B,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAElE,eAAe,KAAK,EAClB,MAAmB,EACnB,IAAY,EACZ,OAA2B,EAC3B,iBAA8C,EAChC,EAAE;IAChB,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAC9C,CAAC;IAED,IAAI,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IAChD,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,YAAY,WAAW,EAAE,CAAC;QAC5C,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QACvD,OAAO,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC;IAED,IACE,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;QACpC,OAAO,CAAC,QAAQ,YAAY,MAAM,CAAC,MAAM,EACzC,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,IAAI,KAAK,CACb,6BAA6B,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CACxE,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stream/index.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;AAE/C,KAAK,SAAS,CAAC,CAAC,cAAc,CAAC,KAAiB;IAC9C,wBAAwB;IACxB,MAAM,SAAS,GAAG,MAAM,CAAA;IACxB,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,OAAO,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CACrB,KAAK,GAAG,SAAS,EACjB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CACpD,CAAA;QACD,KAAK,EAAE,CAAA;QACP,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxB,CAAC;AACH,CAAC;AAED,MAAM,gCAAgC,GAAG,CAAC,KAAiB,EAAY,EAAE;IACvE,OAAO,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;AAC7C,CAAC,CAAA;AAED,eAAe,KAAK,EAClB,MAAmB,EACnB,IAAY,EACZ,OAA2B,EAC3B,gBAA4D,EAC9C,EAAE;IAChB,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAA;IAChE,CAAC;IAED,IAAI,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAA;IAClE,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,YAAY,MAAM,EAAE,CAAC;QACvC,OAAO,CAAC,QAAQ,GAAG,IAAI,UAAU,CAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,EACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,EAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CACxB,CAAA;IACH,CAAC;IAED,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACzC,OAAO,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC/D,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,YAAY,UAAU,EAAE,CAAC;QAC3C,OAAO,gBAAgB,CACrB,MAAM,EACN,IAAI,EACJ;YACE,GAAG,OAAO;YACV,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU;YACjC,QAAQ,EAAE,gCAAgC,CAAC,OAAO,CAAC,QAAQ,CAAC;SAC7D,EACD,gBAAgB,CACjB,CAAA;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,6BAA6B,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CACxE,CAAA;AACH,CAAC,CAAA"}
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import { Readable } from 'stream';
3
- import { StreamFunctionPath, StreamFunctionStream } from './types.js';
4
- import { BasedClient } from '../index.js';
2
+ import { Readable } from "stream";
3
+ import { StreamFunctionPath, StreamFunctionStream } from "./types.js";
4
+ import { BasedClient } from "../index.js";
5
5
  export declare const isStream: (contents: any) => contents is Readable;
6
- export declare const uploadFilePath: (client: BasedClient, name: string, options: StreamFunctionPath) => Promise<any>;
7
- export declare const uploadFileStream: (client: BasedClient, name: string, options: StreamFunctionStream) => Promise<any>;
6
+ export declare const uploadFilePath: (client: BasedClient, name: string, options: StreamFunctionPath, progressListener?: (p: number, bytes: number) => void) => Promise<any>;
7
+ export declare const uploadFileStream: (client: BasedClient, name: string, options: StreamFunctionStream, progressListener?: (p: number, bytes: number) => void) => Promise<any>;
@@ -1,12 +1,7 @@
1
- import { Readable } from 'stream';
2
- import { request } from 'http';
3
- import { request as sslRequest } from 'https';
4
- import fs from 'fs';
5
- import { promisify } from 'util';
6
- import { encodeAuthState } from '../index.js';
7
- import parseOpts from '@based/opts';
8
- import { serializeQuery } from '@saulx/utils';
9
- import { convertDataToBasedError } from '@based/errors';
1
+ import { Readable, Writable } from "stream";
2
+ import fs from "fs";
3
+ import { promisify } from "util";
4
+ import { addStreamChunk, addStreamRegister } from "../outgoing/index.js";
10
5
  const stat = promisify(fs.stat);
11
6
  const checkFile = async (path) => {
12
7
  try {
@@ -20,8 +15,7 @@ const checkFile = async (path) => {
20
15
  export const isStream = (contents) => {
21
16
  return contents instanceof Readable;
22
17
  };
23
- const parseUrlRe = /^(?:(tcp|wss?|https?):\/\/)?([a-z0-9.-]*)(?::(\d+))?$/;
24
- export const uploadFilePath = async (client, name, options) => {
18
+ export const uploadFilePath = async (client, name, options, progressListener) => {
25
19
  const info = await checkFile(options.path);
26
20
  if (info) {
27
21
  return uploadFileStream(client, name, {
@@ -31,75 +25,122 @@ export const uploadFilePath = async (client, name, options) => {
31
25
  size: info.size,
32
26
  payload: options.payload,
33
27
  serverKey: options.serverKey,
34
- });
28
+ }, progressListener);
35
29
  }
36
30
  else {
37
31
  throw new Error(`File does not exist ${options.path}`);
38
32
  }
39
33
  };
40
- const streamRequest = (stream, name, url, headers, query) => {
41
- const [, protocol, host, port] = parseUrlRe.exec(url);
42
- // query
43
- const httpOptions = {
44
- port,
45
- host: host,
46
- path: '/' + name + query,
47
- method: 'POST',
48
- headers,
49
- };
50
- return new Promise((resolve, reject) => {
51
- const incomingReady = (incomingReq) => {
52
- const s = [];
53
- incomingReq.on('data', (c) => {
54
- s.push(c.toString());
55
- });
56
- incomingReq.once('end', () => {
57
- const result = s.join('');
58
- try {
59
- const parsed = JSON.parse(result);
60
- if ('code' in parsed && 'error' in parsed) {
61
- reject(convertDataToBasedError({
62
- code: parsed.code,
63
- message: parsed.error,
64
- }));
65
- return;
66
- }
67
- resolve(parsed);
68
- }
69
- catch (err) { }
70
- resolve(result);
71
- });
72
- };
73
- const req = protocol === 'wss' || protocol === 'https'
74
- ? sslRequest(httpOptions, incomingReady)
75
- : request(httpOptions, incomingReady);
76
- stream.pipe(req);
77
- });
78
- };
79
- export const uploadFileStream = async (client, name, options) => {
34
+ export const uploadFileStream = async (client, name, options, progressListener) => {
80
35
  if (!(options.contents instanceof Readable)) {
81
36
  throw new Error('File Contents has to be an instance of "Readable"');
82
37
  }
83
38
  if (!client.connected) {
84
- await client.once('connect');
39
+ await client.once("connect");
85
40
  }
86
- // key is something special
87
- const url = await parseOpts(client.opts, true);
88
- const headers = {
89
- 'Content-Length': String(options.size),
90
- 'Content-Type': options.mimeType || 'text/plain',
91
- Authorization: encodeAuthState(client.authState),
92
- };
93
- if (options.fileName) {
94
- headers['Content-Name'] = options.fileName;
41
+ let reqId = ++client.streamRequestId;
42
+ if (reqId > 16777215) {
43
+ reqId = client.streamRequestId = 0;
95
44
  }
96
- if (!options.mimeType && options.extension) {
97
- headers['Content-Extension'] = options.extension;
45
+ let seqId = 0;
46
+ addStreamRegister(client, reqId, options.size, options.fileName, options.mimeType, options.extension, name, options.payload);
47
+ const useDeflate = !(options.mimeType
48
+ ? /image|video|x-zip/i.test(options.mimeType)
49
+ : options.extension
50
+ ? /(mp4|avi|mov|zip|jpg|jpeg|png|gif|mkv)/i.test(options.extension)
51
+ : false);
52
+ // 100kb
53
+ const smallest = 100000;
54
+ // 10mb
55
+ const maxSize = 1000000 * 10;
56
+ // 1mb
57
+ const medium = 1000000 * 1;
58
+ let readSize = Math.min(medium, options.size);
59
+ if (options.size < medium * 5) {
60
+ readSize = Math.min(smallest, options.size);
98
61
  }
99
- let q = '';
100
- if (options.payload) {
101
- q = '?' + serializeQuery(options.payload);
62
+ else if (options.size > medium * 100) {
63
+ readSize = maxSize;
102
64
  }
103
- return streamRequest(options.contents, name, url, headers, q);
65
+ let bufferSize = 0;
66
+ let nextHandler;
67
+ let chunks = [];
68
+ let lastReceived = 0;
69
+ let totalBytes = 0;
70
+ let streamHandler;
71
+ const wr = new Writable({
72
+ write: function (c, encoding, next) {
73
+ if (c.byteLength > maxSize) {
74
+ console.warn("CHUNK SIZE LARGER THEN MAX SIZE NOT HANDLED YET", c.byteLength, maxSize);
75
+ }
76
+ bufferSize += c.byteLength;
77
+ chunks.push(c);
78
+ if (bufferSize >= readSize || totalBytes + bufferSize === options.size) {
79
+ nextHandler = next;
80
+ if (seqId > 0) {
81
+ if (lastReceived === seqId) {
82
+ // Client is slower then server (most common)
83
+ nextChunk(undefined);
84
+ }
85
+ // Else server is slower then client e.g. transcoding etc
86
+ }
87
+ else {
88
+ setTimeout(nextChunk, 0);
89
+ }
90
+ }
91
+ else {
92
+ next();
93
+ }
94
+ },
95
+ });
96
+ const nextChunk = (receivedSeqId, code, maxChunkSize) => {
97
+ if (receivedSeqId !== undefined) {
98
+ if (maxChunkSize) {
99
+ // set readSize if sefver is busy
100
+ readSize = maxChunkSize;
101
+ }
102
+ lastReceived = receivedSeqId;
103
+ }
104
+ if (!nextHandler) {
105
+ return;
106
+ }
107
+ if (code === 1) {
108
+ progressListener(1, options.size);
109
+ }
110
+ else {
111
+ const n = new Uint8Array(bufferSize);
112
+ let c = 0;
113
+ for (const b of chunks) {
114
+ n.set(b, c);
115
+ c += b.length;
116
+ }
117
+ if (progressListener) {
118
+ progressListener(totalBytes / options.size, totalBytes);
119
+ }
120
+ totalBytes += bufferSize;
121
+ if (seqId === 255) {
122
+ seqId = 0;
123
+ }
124
+ addStreamChunk(client, reqId, ++seqId, n, useDeflate);
125
+ bufferSize = 0;
126
+ chunks = [];
127
+ nextHandler();
128
+ nextHandler = undefined;
129
+ }
130
+ };
131
+ options.contents.pipe(wr);
132
+ let id = Math.random().toString(16);
133
+ const dcHandler = () => {
134
+ // HANDLE THIS
135
+ console.error("CLIENT DC -> ABORT STREAM", Date.now(), id);
136
+ };
137
+ client.once("disconnect", dcHandler);
138
+ options.contents.on("end", () => {
139
+ client.off("disconnect", dcHandler);
140
+ });
141
+ return new Promise((resolve, reject) => {
142
+ streamHandler = [resolve, reject, nextChunk];
143
+ client.streamFunctionResponseListeners.set(reqId, streamHandler);
144
+ });
104
145
  };
105
146
  //# sourceMappingURL=nodeStream.js.map