@based/client 4.8.10 → 5.0.0-alpha.1
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/{Emitter.d.ts → src/Emitter.d.ts} +1 -2
- package/dist/{Emitter.js → src/Emitter.js} +2 -4
- package/dist/src/Emitter.js.map +1 -0
- package/dist/{authState → src/authState}/parseAuthState.d.ts +1 -2
- package/dist/src/authState/parseAuthState.js +44 -0
- package/dist/src/authState/parseAuthState.js.map +1 -0
- package/dist/src/authState/updateAuthState.d.ts +3 -0
- package/dist/src/authState/updateAuthState.js +11 -0
- package/dist/src/authState/updateAuthState.js.map +1 -0
- package/dist/src/channel/cleanUp.d.ts +2 -0
- package/dist/{channel → src/channel}/cleanUp.js +3 -7
- package/dist/src/channel/cleanUp.js.map +1 -0
- package/dist/{channel → src/channel}/index.d.ts +2 -4
- package/dist/{channel → src/channel}/index.js +15 -15
- package/dist/src/channel/index.js.map +1 -0
- package/dist/{genObserveId.d.ts → src/genObserveId.d.ts} +0 -1
- package/dist/src/genObserveId.js +8 -0
- package/dist/src/genObserveId.js.map +1 -0
- package/dist/{getTargetInfo.d.ts → src/getTargetInfo.d.ts} +1 -2
- package/dist/{getTargetInfo.js → src/getTargetInfo.js} +1 -5
- package/dist/src/getTargetInfo.js.map +1 -0
- package/dist/{incoming → src/incoming}/index.d.ts +1 -2
- package/dist/{incoming → src/incoming}/index.js +74 -146
- package/dist/src/incoming/index.js.map +1 -0
- package/dist/{incoming → src/incoming}/protocol.d.ts +1 -2
- package/dist/{incoming → src/incoming}/protocol.js +8 -18
- package/dist/src/incoming/protocol.js.map +1 -0
- package/dist/{index.d.ts → src/index.d.ts} +27 -27
- package/dist/{index.js → src/index.js} +92 -103
- package/dist/src/index.js.map +1 -0
- package/dist/{index_original.d.ts → src/index_original.d.ts} +27 -27
- package/dist/{outgoing → src/outgoing}/index.d.ts +2 -3
- package/dist/src/outgoing/index.js +197 -0
- package/dist/src/outgoing/index.js.map +1 -0
- package/dist/{outgoing → src/outgoing}/protocol.d.ts +4 -6
- package/dist/{outgoing → src/outgoing}/protocol.js +22 -64
- package/dist/src/outgoing/protocol.js.map +1 -0
- package/dist/{persistentStorage/index.d.ts → src/persistentStorage/browser.d.ts} +4 -5
- package/dist/src/persistentStorage/browser.js +182 -0
- package/dist/src/persistentStorage/browser.js.map +1 -0
- package/dist/src/persistentStorage/constants.d.ts +4 -0
- package/dist/src/persistentStorage/constants.js +5 -0
- package/dist/src/persistentStorage/constants.js.map +1 -0
- package/dist/src/persistentStorage/index.d.ts +6 -0
- package/dist/src/persistentStorage/index.js +128 -0
- package/dist/src/persistentStorage/index.js.map +1 -0
- package/dist/src/persistentStorage/node.d.ts +6 -0
- package/dist/src/persistentStorage/node.js +86 -0
- package/dist/src/persistentStorage/node.js.map +1 -0
- package/dist/{query → src/query}/index.d.ts +2 -3
- package/dist/{query → src/query}/index.js +19 -18
- package/dist/src/query/index.js.map +1 -0
- package/dist/src/ssr.d.ts +6 -0
- package/dist/src/ssr.js +11 -0
- package/dist/src/ssr.js.map +1 -0
- package/dist/{stream/index.d.ts → src/stream/browser.d.ts} +2 -3
- package/dist/src/stream/browser.js +34 -0
- package/dist/src/stream/browser.js.map +1 -0
- package/dist/{stream → src/stream}/fetch.d.ts +2 -3
- package/dist/src/stream/fetch.js +34 -0
- package/dist/src/stream/fetch.js.map +1 -0
- package/dist/src/stream/index.d.ts +4 -0
- package/dist/src/stream/index.js +21 -0
- package/dist/src/stream/index.js.map +1 -0
- package/dist/{stream → src/stream}/nodeStream.d.ts +3 -4
- package/dist/{stream → src/stream}/nodeStream.js +23 -32
- package/dist/src/stream/nodeStream.js.map +1 -0
- package/dist/{stream → src/stream}/types.d.ts +3 -2
- package/dist/src/stream/types.js +18 -0
- package/dist/src/stream/types.js.map +1 -0
- package/dist/{stream → src/stream}/uploadFileBrowser.d.ts +2 -3
- package/dist/{stream → src/stream}/uploadFileBrowser.js +12 -18
- package/dist/src/stream/uploadFileBrowser.js.map +1 -0
- package/dist/{types → src/types}/auth.d.ts +0 -1
- package/dist/src/types/auth.js +2 -0
- package/dist/{types → src/types}/auth.js.map +1 -1
- package/dist/src/types/cache.d.ts +6 -0
- package/dist/src/types/cache.js +2 -0
- package/dist/{types → src/types}/cache.js.map +1 -1
- package/dist/{types → src/types}/channel.d.ts +1 -2
- package/dist/src/types/channel.js +2 -0
- package/dist/{types → src/types}/channel.js.map +1 -1
- package/dist/{types → src/types}/error.d.ts +1 -2
- package/dist/{types → src/types}/error.js +7 -10
- package/dist/src/types/error.js.map +1 -0
- package/dist/src/types/events.d.ts +9 -0
- package/dist/src/types/events.js +2 -0
- package/dist/{types → src/types}/events.js.map +1 -1
- package/dist/{types → src/types}/functions.d.ts +1 -2
- package/dist/src/types/functions.js +2 -0
- package/dist/{types → src/types}/functions.js.map +1 -1
- package/dist/{types → src/types}/generic.d.ts +0 -1
- package/dist/src/types/generic.js +2 -0
- package/dist/{types → src/types}/generic.js.map +1 -1
- package/dist/src/types/index.d.ts +8 -0
- package/dist/src/types/index.js +9 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/{types → src/types}/observe.d.ts +1 -2
- package/dist/src/types/observe.js +2 -0
- package/dist/{types → src/types}/observe.js.map +1 -1
- package/dist/{websocket → src/websocket}/index.d.ts +2 -3
- package/dist/{websocket → src/websocket}/index.js +9 -14
- package/dist/src/websocket/index.js.map +1 -0
- package/dist/{websocket → src/websocket}/types.d.ts +0 -1
- package/dist/src/websocket/types.js +6 -0
- package/dist/src/websocket/types.js.map +1 -0
- package/dist/{websocket → src/websocket}/urlLoader.d.ts +0 -1
- package/dist/src/websocket/urlLoader.js +11 -0
- package/dist/{websocket → src/websocket}/urlLoader.js.map +1 -1
- package/package.json +37 -28
- package/dist/Emitter.d.ts.map +0 -1
- package/dist/Emitter.js.map +0 -1
- package/dist/authState/parseAuthState.d.ts.map +0 -1
- package/dist/authState/parseAuthState.js +0 -51
- package/dist/authState/parseAuthState.js.map +0 -1
- package/dist/authState/updateAuthState.d.ts +0 -4
- package/dist/authState/updateAuthState.d.ts.map +0 -1
- package/dist/authState/updateAuthState.js +0 -15
- package/dist/authState/updateAuthState.js.map +0 -1
- package/dist/channel/cleanUp.d.ts +0 -3
- package/dist/channel/cleanUp.d.ts.map +0 -1
- package/dist/channel/cleanUp.js.map +0 -1
- package/dist/channel/index.d.ts.map +0 -1
- package/dist/channel/index.js.map +0 -1
- package/dist/genObserveId.d.ts.map +0 -1
- package/dist/genObserveId.js +0 -12
- package/dist/genObserveId.js.map +0 -1
- package/dist/getTargetInfo.d.ts.map +0 -1
- package/dist/getTargetInfo.js.map +0 -1
- package/dist/incoming/debug.d.ts +0 -10
- package/dist/incoming/debug.d.ts.map +0 -1
- package/dist/incoming/debug.js +0 -132
- package/dist/incoming/debug.js.map +0 -1
- package/dist/incoming/index.d.ts.map +0 -1
- package/dist/incoming/index.js.map +0 -1
- package/dist/incoming/protocol.d.ts.map +0 -1
- package/dist/incoming/protocol.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/outgoing/debug.d.ts +0 -9
- package/dist/outgoing/debug.d.ts.map +0 -1
- package/dist/outgoing/debug.js +0 -70
- package/dist/outgoing/debug.js.map +0 -1
- package/dist/outgoing/index.d.ts.map +0 -1
- package/dist/outgoing/index.js +0 -231
- package/dist/outgoing/index.js.map +0 -1
- package/dist/outgoing/protocol.d.ts.map +0 -1
- package/dist/outgoing/protocol.js.map +0 -1
- package/dist/persistentStorage/browser.d.ts +0 -6
- package/dist/persistentStorage/browser.d.ts.map +0 -1
- package/dist/persistentStorage/browser.js +0 -178
- package/dist/persistentStorage/browser.js.map +0 -1
- package/dist/persistentStorage/index.d.ts.map +0 -1
- package/dist/persistentStorage/index.js +0 -61
- package/dist/persistentStorage/index.js.map +0 -1
- package/dist/persistentStorage/node.d.ts +0 -7
- package/dist/persistentStorage/node.d.ts.map +0 -1
- package/dist/persistentStorage/node.js +0 -104
- package/dist/persistentStorage/node.js.map +0 -1
- package/dist/query/index.d.ts.map +0 -1
- package/dist/query/index.js.map +0 -1
- package/dist/stream/fetch.d.ts.map +0 -1
- package/dist/stream/fetch.js +0 -38
- package/dist/stream/fetch.js.map +0 -1
- package/dist/stream/index.d.ts.map +0 -1
- package/dist/stream/index.js +0 -65
- package/dist/stream/index.js.map +0 -1
- package/dist/stream/nodeStream.d.ts.map +0 -1
- package/dist/stream/nodeStream.js.map +0 -1
- package/dist/stream/types.d.ts.map +0 -1
- package/dist/stream/types.js +0 -8
- package/dist/stream/types.js.map +0 -1
- package/dist/stream/uploadFileBrowser.d.ts.map +0 -1
- package/dist/stream/uploadFileBrowser.js.map +0 -1
- package/dist/types/auth.d.ts.map +0 -1
- package/dist/types/auth.js +0 -3
- package/dist/types/cache.d.ts +0 -7
- package/dist/types/cache.d.ts.map +0 -1
- package/dist/types/cache.js +0 -3
- package/dist/types/channel.d.ts.map +0 -1
- package/dist/types/channel.js +0 -3
- package/dist/types/error.d.ts.map +0 -1
- package/dist/types/error.js.map +0 -1
- package/dist/types/events.d.ts +0 -35
- package/dist/types/events.d.ts.map +0 -1
- package/dist/types/events.js +0 -3
- package/dist/types/functions.d.ts.map +0 -1
- package/dist/types/functions.js +0 -3
- package/dist/types/generic.d.ts.map +0 -1
- package/dist/types/generic.js +0 -3
- package/dist/types/index.d.ts +0 -7
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -23
- package/dist/types/index.js.map +0 -1
- package/dist/types/observe.d.ts.map +0 -1
- package/dist/types/observe.js +0 -3
- package/dist/websocket/index.d.ts.map +0 -1
- package/dist/websocket/index.js.map +0 -1
- package/dist/websocket/types.d.ts.map +0 -1
- package/dist/websocket/types.js +0 -7
- package/dist/websocket/types.js.map +0 -1
- package/dist/websocket/urlLoader.d.ts.map +0 -1
- package/dist/websocket/urlLoader.js +0 -13
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { join } from 'path';
|
|
2
|
+
import gzip from 'zlib';
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import { promisify } from 'util';
|
|
5
|
+
const writeFile = promisify(fs.writeFile);
|
|
6
|
+
const rm = promisify(fs.rm);
|
|
7
|
+
const compress = promisify(gzip.gzip);
|
|
8
|
+
export const store = async (client) => {
|
|
9
|
+
try {
|
|
10
|
+
clearTimeout(client.storageBeingWritten);
|
|
11
|
+
client.storageBeingWritten = null;
|
|
12
|
+
const file = join(client.storagePath, 'based-' + client.storageEnvKey + '.storage');
|
|
13
|
+
const cache = [];
|
|
14
|
+
client.cache.forEach((c, id) => {
|
|
15
|
+
if (c.p) {
|
|
16
|
+
cache.push(id, c.c, c.v);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const f = { cache };
|
|
20
|
+
if (client.authState.persistent) {
|
|
21
|
+
f.authState = client.authState;
|
|
22
|
+
}
|
|
23
|
+
client.storageBeingWritten = null;
|
|
24
|
+
await writeFile(file, await compress(JSON.stringify(f)));
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
console.error(' [Based-client] Cannot update persistent storage', client.storagePath);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const writeToStorage = (client) => {
|
|
31
|
+
if (!client.storageBeingWritten) {
|
|
32
|
+
client.storageBeingWritten = setTimeout(() => store(client), 5e3);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
export const initStorageNode = async (client) => {
|
|
36
|
+
const file = join(client.storagePath, 'based-' + client.storageEnvKey + '.storage');
|
|
37
|
+
try {
|
|
38
|
+
const s = fs.statSync(file);
|
|
39
|
+
if (s) {
|
|
40
|
+
try {
|
|
41
|
+
const r = fs.readFileSync(file);
|
|
42
|
+
const unpacked = gzip.gunzipSync(r);
|
|
43
|
+
const c = JSON.parse(unpacked.toString());
|
|
44
|
+
for (let i = 0; i < c.cache.length - 2; i += 3) {
|
|
45
|
+
client.cache.set(c.cache[i], {
|
|
46
|
+
c: c.cache[i + 1],
|
|
47
|
+
v: c.cache[i + 2],
|
|
48
|
+
p: true,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
if (c.authState) {
|
|
52
|
+
client.setAuthState(c.authState).catch(() => {
|
|
53
|
+
console.error(' [Based-client] Invalid authState');
|
|
54
|
+
clearStorageNode(client);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
console.error(' [Based-client] Corrupt persistent storage - clear');
|
|
60
|
+
await clearStorageNode(client);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
const x = await compress(JSON.stringify({ cache: [] }));
|
|
65
|
+
await writeFile(file, x).catch((err) => {
|
|
66
|
+
if (err) {
|
|
67
|
+
console.error(' [Based-client] Failed creating persistent storage, cannot write file');
|
|
68
|
+
client.storagePath = null;
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch (err) { }
|
|
74
|
+
};
|
|
75
|
+
export const clearStorageNode = async (client) => {
|
|
76
|
+
const file = join(client.storagePath, 'based-' + client.storageEnvKey + '.storage');
|
|
77
|
+
clearTimeout(client.storageBeingWritten);
|
|
78
|
+
return rm(file);
|
|
79
|
+
};
|
|
80
|
+
export const removeStorageNode = (client, _key) => {
|
|
81
|
+
writeToStorage(client);
|
|
82
|
+
};
|
|
83
|
+
export const setStorageNode = (client, _key, _value) => {
|
|
84
|
+
writeToStorage(client);
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/persistentStorage/node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ObserveDataListener, ObserveErrorListener, CloseObserve } from '../types';
|
|
2
|
-
import { BasedClient } from '
|
|
1
|
+
import { ObserveDataListener, ObserveErrorListener, CloseObserve } from '../types/index.js';
|
|
2
|
+
import { BasedClient } from '../index.js';
|
|
3
3
|
export declare class BasedQuery<P = any, K = any> {
|
|
4
4
|
id: number;
|
|
5
5
|
query: P;
|
|
@@ -15,4 +15,3 @@ export declare class BasedQuery<P = any, K = any> {
|
|
|
15
15
|
getWhen(condition: (data: any, checksum: number) => boolean): Promise<K>;
|
|
16
16
|
get(): Promise<K>;
|
|
17
17
|
}
|
|
18
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const outgoing_1 = require("../outgoing");
|
|
5
|
-
const genObserveId_1 = require("../genObserveId");
|
|
6
|
-
const persistentStorage_1 = require("../persistentStorage");
|
|
1
|
+
import { addObsToQueue, addObsCloseToQueue, addGetToQueue, } from '../outgoing/index.js';
|
|
2
|
+
import { genObserveId } from '../genObserveId.js';
|
|
3
|
+
import { removeStorage, setStorage } from '../persistentStorage/index.js';
|
|
7
4
|
// Can extend this as a query builder
|
|
8
5
|
// TODO: maybe add user bound as option (will clear / set on a-state chage)
|
|
9
|
-
class BasedQuery {
|
|
6
|
+
export class BasedQuery {
|
|
7
|
+
id;
|
|
8
|
+
query;
|
|
9
|
+
name;
|
|
10
|
+
client;
|
|
11
|
+
persistent;
|
|
10
12
|
constructor(client, name, payload, opts) {
|
|
11
13
|
this.query = payload;
|
|
12
|
-
this.id =
|
|
14
|
+
this.id = genObserveId(name, payload);
|
|
13
15
|
this.client = client;
|
|
14
16
|
this.name = name;
|
|
15
17
|
this.persistent = opts?.persistent || false;
|
|
@@ -19,7 +21,7 @@ class BasedQuery {
|
|
|
19
21
|
}
|
|
20
22
|
clearCache() {
|
|
21
23
|
if (this.persistent) {
|
|
22
|
-
|
|
24
|
+
removeStorage(this.client, '@based-cache-' + this.id);
|
|
23
25
|
}
|
|
24
26
|
this.client.cache.delete(this.id);
|
|
25
27
|
}
|
|
@@ -40,14 +42,14 @@ class BasedQuery {
|
|
|
40
42
|
persistent: this.persistent || false,
|
|
41
43
|
idCnt: 1,
|
|
42
44
|
});
|
|
43
|
-
|
|
45
|
+
addObsToQueue(this.client, this.name, this.id, this.query, cachedData?.c || 0);
|
|
44
46
|
}
|
|
45
47
|
else {
|
|
46
48
|
const obs = this.client.observeState.get(this.id);
|
|
47
49
|
if (this.persistent && !obs.persistent) {
|
|
48
50
|
obs.persistent = true;
|
|
49
51
|
if (cachedData) {
|
|
50
|
-
|
|
52
|
+
setStorage(this.client, '@based-cache-' + this.id, cachedData);
|
|
51
53
|
}
|
|
52
54
|
}
|
|
53
55
|
subscriberId = ++obs.idCnt;
|
|
@@ -57,7 +59,7 @@ class BasedQuery {
|
|
|
57
59
|
});
|
|
58
60
|
}
|
|
59
61
|
if (cachedData) {
|
|
60
|
-
onData(cachedData.
|
|
62
|
+
onData(cachedData.v, cachedData.c);
|
|
61
63
|
}
|
|
62
64
|
return () => {
|
|
63
65
|
const obs = this.client.observeState.get(this.id);
|
|
@@ -65,7 +67,7 @@ class BasedQuery {
|
|
|
65
67
|
obs.subscribers.delete(subscriberId);
|
|
66
68
|
if (obs.subscribers.size === 0) {
|
|
67
69
|
this.client.observeState.delete(this.id);
|
|
68
|
-
|
|
70
|
+
addObsCloseToQueue(this.client, this.id);
|
|
69
71
|
}
|
|
70
72
|
}
|
|
71
73
|
else {
|
|
@@ -92,22 +94,21 @@ class BasedQuery {
|
|
|
92
94
|
this.client.getState.set(this.id, []);
|
|
93
95
|
const cachedData = this.client.cache.get(this.id);
|
|
94
96
|
if (this.client.observeState.has(this.id)) {
|
|
95
|
-
if (this.client.
|
|
96
|
-
const [type] = this.client.
|
|
97
|
+
if (this.client.oQ.has(this.id)) {
|
|
98
|
+
const [type] = this.client.oQ.get(this.id);
|
|
97
99
|
if (type === 1) {
|
|
98
100
|
this.client.getState.get(this.id).push([resolve, reject]);
|
|
99
101
|
return;
|
|
100
102
|
}
|
|
101
103
|
}
|
|
102
104
|
if (cachedData) {
|
|
103
|
-
resolve(cachedData.
|
|
105
|
+
resolve(cachedData.v);
|
|
104
106
|
return;
|
|
105
107
|
}
|
|
106
108
|
}
|
|
107
109
|
this.client.getState.get(this.id).push([resolve, reject]);
|
|
108
|
-
|
|
110
|
+
addGetToQueue(this.client, this.name, this.id, this.query, cachedData?.c || 0);
|
|
109
111
|
});
|
|
110
112
|
}
|
|
111
113
|
}
|
|
112
|
-
exports.BasedQuery = BasedQuery;
|
|
113
114
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/query/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BasedClient } from './index.js';
|
|
2
|
+
import { CacheValue } from './types/cache.js';
|
|
3
|
+
export declare const createCacheObject: (client: BasedClient) => {
|
|
4
|
+
[key: string]: CacheValue;
|
|
5
|
+
};
|
|
6
|
+
export declare const createCacheScriptTag: (client: BasedClient) => string;
|
package/dist/src/ssr.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const createCacheObject = (client) => {
|
|
2
|
+
const m = {};
|
|
3
|
+
client.cache.forEach((v, k) => {
|
|
4
|
+
m[k] = v;
|
|
5
|
+
});
|
|
6
|
+
return m;
|
|
7
|
+
};
|
|
8
|
+
export const createCacheScriptTag = (client) => {
|
|
9
|
+
return `<script>window.__basedcache__=${JSON.stringify(createCacheObject(client))}</script>`;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=ssr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssr.js","sourceRoot":"","sources":["../../src/ssr.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,MAAmB,EAGnB,EAAE;IACF,MAAM,CAAC,GAAQ,EAAE,CAAA;IACjB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC5B,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACV,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAmB,EAAU,EAAE;IAClE,OAAO,iCAAiC,IAAI,CAAC,SAAS,CACpD,iBAAiB,CAAC,MAAM,CAAC,CAC1B,WAAW,CAAA;AACd,CAAC,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { BasedClient } from '
|
|
2
|
-
import { StreamFunctionOpts } from './types';
|
|
1
|
+
import { BasedClient } from '../index.js';
|
|
2
|
+
import { StreamFunctionOpts } from './types.js';
|
|
3
3
|
declare const _default: (client: BasedClient, name: string, options: StreamFunctionOpts, progressListener?: (progress: number) => void) => Promise<any>;
|
|
4
4
|
export default _default;
|
|
5
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { isFileContents, isStreamFunctionPath, isStreamFunctionStream, } from './types.js';
|
|
2
|
+
import uploadFileBrowser from './uploadFileBrowser.js';
|
|
3
|
+
import fetch from './fetch.js';
|
|
4
|
+
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) {
|
|
12
|
+
options.contents = new global.Blob([options.contents], {
|
|
13
|
+
type: options.mimeType || 'text/plain',
|
|
14
|
+
});
|
|
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
|
+
}
|
|
21
|
+
if (options.contents instanceof global.Blob) {
|
|
22
|
+
if (!options.mimeType) {
|
|
23
|
+
options.mimeType = options.contents.type;
|
|
24
|
+
}
|
|
25
|
+
// want to stream this XHR browser / stream + http nodejs
|
|
26
|
+
return fetch(client, name, options);
|
|
27
|
+
}
|
|
28
|
+
if (typeof options.contents === 'string') {
|
|
29
|
+
// want to stream this XHR browser / stream + http nodejs
|
|
30
|
+
return fetch(client, name, options);
|
|
31
|
+
}
|
|
32
|
+
throw new Error(`Invalid opts for file api ${name} ${JSON.stringify(options, null, 2)}`);
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +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;QACjC,OAAM;KACP;IAED,IAAI,sBAAsB,CAAC,OAAO,CAAC,EAAE;QACnC,OAAM;KACP;IAED,IAAI,OAAO,CAAC,QAAQ,YAAY,WAAW,EAAE;QAC3C,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;KACpC;IAED,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;QAC3B,OAAO,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAA;KAClE;IAED,IAAI,OAAO,CAAC,QAAQ,YAAY,MAAM,CAAC,IAAI,EAAE;QAC3C,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACrB,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAA;SACzC;QAED,yDAAyD;QACzD,OAAO,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;KACpC;IAED,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;QACxC,yDAAyD;QACzD,OAAO,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;KACpC;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,5 +1,4 @@
|
|
|
1
|
-
import { BasedClient } from '
|
|
2
|
-
import { StreamFunctionContents } from './types';
|
|
1
|
+
import { BasedClient } from '../index.js';
|
|
2
|
+
import { StreamFunctionContents } from './types.js';
|
|
3
3
|
declare const _default: (client: BasedClient, name: string, options: StreamFunctionContents) => Promise<any>;
|
|
4
4
|
export default _default;
|
|
5
|
-
//# sourceMappingURL=fetch.d.ts.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { encodeAuthState } from '../index.js';
|
|
2
|
+
import fetch from '@based/fetch';
|
|
3
|
+
import { serializeQuery } from '@saulx/utils';
|
|
4
|
+
import parseOpts from '@based/opts';
|
|
5
|
+
export default async (client, name, options) => {
|
|
6
|
+
if (!client.connected) {
|
|
7
|
+
await client.once('connect');
|
|
8
|
+
}
|
|
9
|
+
const url = await parseOpts(client.opts, true);
|
|
10
|
+
const headers = {
|
|
11
|
+
'Content-Type': options.mimeType || 'text/plain',
|
|
12
|
+
Authorization: encodeAuthState(client.authState),
|
|
13
|
+
};
|
|
14
|
+
if (options.fileName) {
|
|
15
|
+
headers['Content-Name'] = options.fileName;
|
|
16
|
+
}
|
|
17
|
+
let q = '';
|
|
18
|
+
if (options.payload) {
|
|
19
|
+
q = '?' + serializeQuery(options.payload);
|
|
20
|
+
}
|
|
21
|
+
// @ts-ignore
|
|
22
|
+
const result = await fetch(url + '/' + name + q, {
|
|
23
|
+
method: 'POST',
|
|
24
|
+
cache: 'no-cache',
|
|
25
|
+
headers,
|
|
26
|
+
body: options.contents,
|
|
27
|
+
}).then((t) => t.text());
|
|
28
|
+
try {
|
|
29
|
+
return JSON.parse(result);
|
|
30
|
+
}
|
|
31
|
+
catch (e) { }
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=fetch.js.map
|
|
@@ -0,0 +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;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,aAAa;IACb,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,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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
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>;
|
|
4
|
+
export default _default;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { isStreamFunctionPath, isStreamFunctionStream, } from './types.js';
|
|
2
|
+
import fetch from './fetch.js';
|
|
3
|
+
import { uploadFilePath, uploadFileStream } from './nodeStream.js';
|
|
4
|
+
export default async (client, name, options, _progressListener) => {
|
|
5
|
+
if (isStreamFunctionPath(options)) {
|
|
6
|
+
return uploadFilePath(client, name, options);
|
|
7
|
+
}
|
|
8
|
+
if (isStreamFunctionStream(options)) {
|
|
9
|
+
return uploadFileStream(client, name, options);
|
|
10
|
+
}
|
|
11
|
+
if (options.contents instanceof ArrayBuffer) {
|
|
12
|
+
options.contents = global.Buffer.from(options.contents);
|
|
13
|
+
return fetch(client, name, options);
|
|
14
|
+
}
|
|
15
|
+
if (typeof options.contents === 'string' ||
|
|
16
|
+
options.contents instanceof global.Buffer) {
|
|
17
|
+
return fetch(client, name, options);
|
|
18
|
+
}
|
|
19
|
+
throw new Error(`Invalid opts for file api ${name} ${JSON.stringify(options, null, 2)}`);
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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;QACjC,OAAO,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;KAC7C;IAED,IAAI,sBAAsB,CAAC,OAAO,CAAC,EAAE;QACnC,OAAO,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;KAC/C;IAED,IAAI,OAAO,CAAC,QAAQ,YAAY,WAAW,EAAE;QAC3C,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;KACpC;IAED,IACE,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;QACpC,OAAO,CAAC,QAAQ,YAAY,MAAM,CAAC,MAAM,EACzC;QACA,OAAO,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;KACpC;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,8 +1,7 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
import { Readable } from 'stream';
|
|
3
|
-
import { StreamFunctionPath, StreamFunctionStream } from './types';
|
|
4
|
-
import { BasedClient } from '
|
|
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
6
|
export declare const uploadFilePath: (client: BasedClient, name: string, options: StreamFunctionPath) => Promise<any>;
|
|
7
7
|
export declare const uploadFileStream: (client: BasedClient, name: string, options: StreamFunctionStream) => Promise<any>;
|
|
8
|
-
//# sourceMappingURL=nodeStream.d.ts.map
|
|
@@ -1,19 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
const util_1 = require("util");
|
|
12
|
-
const __1 = require("..");
|
|
13
|
-
const opts_1 = __importDefault(require("@based/opts"));
|
|
14
|
-
const error_1 = require("../types/error");
|
|
15
|
-
const utils_1 = require("@saulx/utils");
|
|
16
|
-
const stat = (0, util_1.promisify)(fs_1.default.stat);
|
|
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 { convertDataToBasedError } from '../types/index.js';
|
|
9
|
+
import { serializeQuery } from '@saulx/utils';
|
|
10
|
+
const stat = promisify(fs.stat);
|
|
17
11
|
const checkFile = async (path) => {
|
|
18
12
|
try {
|
|
19
13
|
const s = await stat(path);
|
|
@@ -23,16 +17,15 @@ const checkFile = async (path) => {
|
|
|
23
17
|
}
|
|
24
18
|
catch (err) { }
|
|
25
19
|
};
|
|
26
|
-
const isStream = (contents) => {
|
|
27
|
-
return contents instanceof
|
|
20
|
+
export const isStream = (contents) => {
|
|
21
|
+
return contents instanceof Readable;
|
|
28
22
|
};
|
|
29
|
-
exports.isStream = isStream;
|
|
30
23
|
const parseUrlRe = /^(?:(tcp|wss?|https?):\/\/)?([a-z0-9.-]*)(?::(\d+))?$/;
|
|
31
|
-
const uploadFilePath = async (client, name, options) => {
|
|
24
|
+
export const uploadFilePath = async (client, name, options) => {
|
|
32
25
|
const info = await checkFile(options.path);
|
|
33
26
|
if (info) {
|
|
34
|
-
return
|
|
35
|
-
contents:
|
|
27
|
+
return uploadFileStream(client, name, {
|
|
28
|
+
contents: fs.createReadStream(options.path),
|
|
36
29
|
mimeType: options.mimeType,
|
|
37
30
|
extension: options.path.match(/\.(.*?)$/)?.[1],
|
|
38
31
|
size: info.size,
|
|
@@ -44,7 +37,6 @@ const uploadFilePath = async (client, name, options) => {
|
|
|
44
37
|
throw new Error(`File does not exist ${options.path}`);
|
|
45
38
|
}
|
|
46
39
|
};
|
|
47
|
-
exports.uploadFilePath = uploadFilePath;
|
|
48
40
|
const streamRequest = (stream, name, url, headers, query) => {
|
|
49
41
|
const [, protocol, host, port] = parseUrlRe.exec(url);
|
|
50
42
|
// query
|
|
@@ -66,7 +58,7 @@ const streamRequest = (stream, name, url, headers, query) => {
|
|
|
66
58
|
try {
|
|
67
59
|
const parsed = JSON.parse(result);
|
|
68
60
|
if ('code' in parsed && 'error' in parsed) {
|
|
69
|
-
reject(
|
|
61
|
+
reject(convertDataToBasedError({
|
|
70
62
|
code: parsed.code,
|
|
71
63
|
message: parsed.error,
|
|
72
64
|
}));
|
|
@@ -79,24 +71,24 @@ const streamRequest = (stream, name, url, headers, query) => {
|
|
|
79
71
|
});
|
|
80
72
|
};
|
|
81
73
|
const req = protocol === 'wss' || protocol === 'https'
|
|
82
|
-
? (
|
|
83
|
-
:
|
|
74
|
+
? sslRequest(httpOptions, incomingReady)
|
|
75
|
+
: request(httpOptions, incomingReady);
|
|
84
76
|
stream.pipe(req);
|
|
85
77
|
});
|
|
86
78
|
};
|
|
87
|
-
const uploadFileStream = async (client, name, options) => {
|
|
88
|
-
if (!(options.contents instanceof
|
|
79
|
+
export const uploadFileStream = async (client, name, options) => {
|
|
80
|
+
if (!(options.contents instanceof Readable)) {
|
|
89
81
|
throw new Error('File Contents has to be an instance of "Readable"');
|
|
90
82
|
}
|
|
91
83
|
if (!client.connected) {
|
|
92
84
|
await client.once('connect');
|
|
93
85
|
}
|
|
94
86
|
// key is something special
|
|
95
|
-
const url = await (
|
|
87
|
+
const url = await parseOpts(client.opts, true);
|
|
96
88
|
const headers = {
|
|
97
89
|
'Content-Length': String(options.size),
|
|
98
90
|
'Content-Type': options.mimeType || 'text/plain',
|
|
99
|
-
Authorization:
|
|
91
|
+
Authorization: encodeAuthState(client.authState),
|
|
100
92
|
};
|
|
101
93
|
if (options.fileName) {
|
|
102
94
|
headers['Content-Name'] = options.fileName;
|
|
@@ -106,9 +98,8 @@ const uploadFileStream = async (client, name, options) => {
|
|
|
106
98
|
}
|
|
107
99
|
let q = '';
|
|
108
100
|
if (options.payload) {
|
|
109
|
-
q = '?' +
|
|
101
|
+
q = '?' + serializeQuery(options.payload);
|
|
110
102
|
}
|
|
111
103
|
return streamRequest(options.contents, name, url, headers, q);
|
|
112
104
|
};
|
|
113
|
-
exports.uploadFileStream = uploadFileStream;
|
|
114
105
|
//# sourceMappingURL=nodeStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeStream.js","sourceRoot":"","sources":["../../../src/stream/nodeStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
export type ReadableStream = {
|
|
3
3
|
pipe: (x: any) => ReadableStream;
|
|
4
4
|
};
|
|
@@ -35,4 +35,5 @@ export type StreamHeaders = {
|
|
|
35
35
|
'Content-Name'?: string;
|
|
36
36
|
Authorization: string;
|
|
37
37
|
};
|
|
38
|
-
|
|
38
|
+
export declare const isStreamFunctionPath: (options: StreamFunctionOpts) => options is StreamFunctionPath;
|
|
39
|
+
export declare const isStreamFunctionStream: (options: StreamFunctionOpts) => options is StreamFunctionStream;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const isFileContents = (contents) => {
|
|
2
|
+
return contents.contents instanceof File;
|
|
3
|
+
};
|
|
4
|
+
const isStream = (stream) => {
|
|
5
|
+
return (stream !== null &&
|
|
6
|
+
typeof stream === 'object' &&
|
|
7
|
+
typeof stream.pipe === 'function' &&
|
|
8
|
+
stream.readable !== false &&
|
|
9
|
+
typeof stream._read === 'function' &&
|
|
10
|
+
typeof stream._readableState === 'object');
|
|
11
|
+
};
|
|
12
|
+
export const isStreamFunctionPath = (options) => {
|
|
13
|
+
return 'path' in options && typeof options.path === 'string';
|
|
14
|
+
};
|
|
15
|
+
export const isStreamFunctionStream = (options) => {
|
|
16
|
+
return 'contents' in options && isStream(options.contents);
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/stream/types.ts"],"names":[],"mappings":"AAkBA,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,QAAgC,EACU,EAAE;IAC5C,OAAO,QAAQ,CAAC,QAAQ,YAAY,IAAI,CAAA;AAC1C,CAAC,CAAA;AAiCD,MAAM,QAAQ,GAAG,CAAC,MAAW,EAAW,EAAE;IACxC,OAAO,CACL,MAAM,KAAK,IAAI;QACf,OAAO,MAAM,KAAK,QAAQ;QAC1B,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU;QACjC,MAAM,CAAC,QAAQ,KAAK,KAAK;QACzB,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU;QAClC,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ,CAC1C,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,OAA2B,EACI,EAAE;IACjC,OAAO,MAAM,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAA;AAC9D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,OAA2B,EACM,EAAE;IACnC,OAAO,UAAU,IAAI,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;AAC5D,CAAC,CAAA"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { BasedClient } from '
|
|
2
|
-
import { StreamFunctionContents, ProgressListener } from './types';
|
|
1
|
+
import { BasedClient } from '../index.js';
|
|
2
|
+
import { StreamFunctionContents, ProgressListener } from './types.js';
|
|
3
3
|
export declare const isStreaming: {
|
|
4
4
|
streaming: boolean;
|
|
5
5
|
};
|
|
6
6
|
declare const _default: (client: BasedClient, functionName: string, options: StreamFunctionContents<File>, progressListener?: ProgressListener) => Promise<unknown>;
|
|
7
7
|
export default _default;
|
|
8
|
-
//# sourceMappingURL=uploadFileBrowser.d.ts.map
|
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.isStreaming = void 0;
|
|
7
|
-
const __1 = require("..");
|
|
8
|
-
const opts_1 = __importDefault(require("@based/opts"));
|
|
9
|
-
const error_1 = require("../types/error");
|
|
1
|
+
import { encodeAuthState } from '../index.js';
|
|
2
|
+
import parseOpts from '@based/opts';
|
|
3
|
+
import { convertDataToBasedError, BasedErrorCode } from '../types/index.js';
|
|
10
4
|
const inProgress = {};
|
|
11
|
-
|
|
5
|
+
export const isStreaming = {
|
|
12
6
|
streaming: false,
|
|
13
7
|
};
|
|
14
8
|
const queue = {};
|
|
@@ -20,10 +14,10 @@ const reject = (err, q) => {
|
|
|
20
14
|
const drainQueue = (client, functionName, authorization) => {
|
|
21
15
|
if (!inProgress[functionName]) {
|
|
22
16
|
inProgress[functionName] = true;
|
|
23
|
-
|
|
17
|
+
isStreaming.streaming = true;
|
|
24
18
|
setTimeout(async () => {
|
|
25
19
|
inProgress[functionName] = false;
|
|
26
|
-
const url = await (
|
|
20
|
+
const url = await parseOpts(client.opts, true);
|
|
27
21
|
const q = queue[functionName];
|
|
28
22
|
queue[functionName] = [];
|
|
29
23
|
const body = new global.FormData();
|
|
@@ -48,9 +42,9 @@ const drainQueue = (client, functionName, authorization) => {
|
|
|
48
42
|
xhr.onerror = (p) => {
|
|
49
43
|
console.error('Based xhr error', p);
|
|
50
44
|
if (xhr.status === 0 && !xhr.statusText) {
|
|
51
|
-
const err =
|
|
45
|
+
const err = convertDataToBasedError({
|
|
52
46
|
message: `[${functionName}] XHR Error`,
|
|
53
|
-
code:
|
|
47
|
+
code: BasedErrorCode.FunctionError,
|
|
54
48
|
});
|
|
55
49
|
reject(err, q);
|
|
56
50
|
}
|
|
@@ -73,7 +67,7 @@ const drainQueue = (client, functionName, authorization) => {
|
|
|
73
67
|
for (let i = 0; i < x.length; i++) {
|
|
74
68
|
const result = x[i];
|
|
75
69
|
if (result.error) {
|
|
76
|
-
q[i].reject(
|
|
70
|
+
q[i].reject(convertDataToBasedError(result.error));
|
|
77
71
|
}
|
|
78
72
|
else {
|
|
79
73
|
q[i].resolve(x[i].value);
|
|
@@ -83,7 +77,7 @@ const drainQueue = (client, functionName, authorization) => {
|
|
|
83
77
|
catch (err) {
|
|
84
78
|
reject(err, q);
|
|
85
79
|
}
|
|
86
|
-
|
|
80
|
+
isStreaming.streaming = false;
|
|
87
81
|
};
|
|
88
82
|
xhr.open('POST', url + '/' + functionName, true);
|
|
89
83
|
xhr.setRequestHeader('Content-Type', 'multipart/form-data');
|
|
@@ -97,7 +91,7 @@ const drainQueue = (client, functionName, authorization) => {
|
|
|
97
91
|
}, 500);
|
|
98
92
|
}
|
|
99
93
|
};
|
|
100
|
-
|
|
94
|
+
export default async (client, functionName, options, progressListener) => {
|
|
101
95
|
if (!client.connected) {
|
|
102
96
|
await client.once('connect');
|
|
103
97
|
}
|
|
@@ -107,7 +101,7 @@ exports.default = async (client, functionName, options, progressListener) => {
|
|
|
107
101
|
}
|
|
108
102
|
return new Promise((resolve, reject) => {
|
|
109
103
|
queue[functionName].push({ options, resolve, reject, progressListener });
|
|
110
|
-
drainQueue(client, functionName,
|
|
104
|
+
drainQueue(client, functionName, encodeAuthState(client.authState));
|
|
111
105
|
});
|
|
112
106
|
};
|
|
113
107
|
//# sourceMappingURL=uploadFileBrowser.js.map
|