@based/client 4.8.9 → 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 +38 -29
- 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
|
@@ -1,79 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
-
};
|
|
19
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.BasedClient = exports.BasedQuery = void 0;
|
|
21
|
-
const websocket_1 = __importDefault(require("./websocket"));
|
|
22
|
-
const Emitter_1 = __importDefault(require("./Emitter"));
|
|
23
|
-
const outgoing_1 = require("./outgoing");
|
|
24
|
-
const incoming_1 = require("./incoming");
|
|
25
|
-
const query_1 = require("./query");
|
|
26
|
-
Object.defineProperty(exports, "BasedQuery", { enumerable: true, get: function () { return query_1.BasedQuery; } });
|
|
27
|
-
const stream_1 = __importDefault(require("./stream"));
|
|
28
|
-
const persistentStorage_1 = require("./persistentStorage");
|
|
29
|
-
const channel_1 = require("./channel");
|
|
30
|
-
const hash_1 = require("@saulx/hash");
|
|
31
|
-
const opts_1 = __importDefault(require("@based/opts"));
|
|
32
|
-
const utils_1 = require("@saulx/utils");
|
|
33
|
-
__exportStar(require("./authState/parseAuthState"), exports);
|
|
34
|
-
__exportStar(require("./types/error"), exports);
|
|
35
|
-
class BasedClient extends Emitter_1.default {
|
|
1
|
+
import connectWebsocket from './websocket/index.js';
|
|
2
|
+
import Emitter from './Emitter.js';
|
|
3
|
+
import { addChannelPublishIdentifier, addChannelSubscribeToQueue, addObsToQueue, addToFunctionQueue, drainQueue, sendAuth, } from './outgoing/index.js';
|
|
4
|
+
import { incoming } from './incoming/index.js';
|
|
5
|
+
import { BasedQuery } from './query/index.js';
|
|
6
|
+
import startStream from './stream/index.js';
|
|
7
|
+
import { initStorage, clearStorage, updateStorage, } from './persistentStorage/index.js';
|
|
8
|
+
import { BasedChannel } from './channel/index.js';
|
|
9
|
+
import { hashObjectIgnoreKeyOrder } from '@saulx/hash';
|
|
10
|
+
import { deepEqual } from '@saulx/utils';
|
|
11
|
+
import parseOpts from '@based/opts';
|
|
12
|
+
export * from './authState/parseAuthState.js';
|
|
13
|
+
export * from './types/error.js';
|
|
14
|
+
export { BasedQuery };
|
|
15
|
+
export class BasedClient extends Emitter {
|
|
36
16
|
constructor(opts, settings) {
|
|
37
17
|
super();
|
|
38
|
-
// --------- Persistent Storage
|
|
39
|
-
this.storageSize = 0;
|
|
40
|
-
this.maxStorageSize = 5e6 - 500; // ~5mb
|
|
41
|
-
this.storageEnvKey = 0;
|
|
42
|
-
this.connected = false;
|
|
43
|
-
// --------- Stream
|
|
44
|
-
this.outgoingStreams = new Map();
|
|
45
|
-
this.isDrainingStreams = false;
|
|
46
|
-
// --------- Queue
|
|
47
|
-
this.maxPublishQueue = 1000;
|
|
48
|
-
this.publishQueue = [];
|
|
49
|
-
this.functionQueue = [];
|
|
50
|
-
this.observeQueue = new Map();
|
|
51
|
-
this.channelQueue = new Map();
|
|
52
|
-
this.getObserveQueue = new Map();
|
|
53
|
-
this.drainInProgress = false;
|
|
54
|
-
// --------- Cache State
|
|
55
|
-
this.localStorage = false;
|
|
56
|
-
this.maxCacheSize = 4e6; // in bytes
|
|
57
|
-
this.cache = new Map();
|
|
58
|
-
// --------- Function State
|
|
59
|
-
this.functionResponseListeners = new Map();
|
|
60
|
-
this.requestId = 0; // max 3 bytes (0 to 16777215)
|
|
61
|
-
// --------- Channel State
|
|
62
|
-
this.channelState = new Map();
|
|
63
|
-
this.channelCleanupCycle = 30e3;
|
|
64
|
-
// --------- Observe State
|
|
65
|
-
this.observeState = new Map();
|
|
66
|
-
// --------- Get State
|
|
67
|
-
this.getState = new Map();
|
|
68
|
-
// -------- Auth state
|
|
69
|
-
this.authState = {};
|
|
70
|
-
this.authRequest = {
|
|
71
|
-
authState: null,
|
|
72
|
-
promise: null,
|
|
73
|
-
resolve: null,
|
|
74
|
-
reject: null,
|
|
75
|
-
inProgress: false,
|
|
76
|
-
};
|
|
77
18
|
if (settings?.persistentStorage) {
|
|
78
19
|
this.storagePath = settings.persistentStorage;
|
|
79
20
|
}
|
|
@@ -85,13 +26,61 @@ class BasedClient extends Emitter_1.default {
|
|
|
85
26
|
this.connect(opts);
|
|
86
27
|
}
|
|
87
28
|
}
|
|
29
|
+
// --------- Persistent Storage
|
|
30
|
+
storageSize = 0;
|
|
31
|
+
maxStorageSize = 5e6 - 500; // ~5mb
|
|
32
|
+
storageEnvKey = 0;
|
|
33
|
+
storagePath;
|
|
34
|
+
storageBeingWritten;
|
|
35
|
+
// --------- Connection State
|
|
36
|
+
opts;
|
|
37
|
+
connected = false;
|
|
38
|
+
connection;
|
|
39
|
+
url;
|
|
40
|
+
// --------- Stream
|
|
41
|
+
outgoingStreams = new Map();
|
|
42
|
+
isDrainingStreams = false;
|
|
43
|
+
// --------- Queue
|
|
44
|
+
maxPublishQueue = 1000;
|
|
45
|
+
pQ = [];
|
|
46
|
+
fQ = [];
|
|
47
|
+
oQ = new Map();
|
|
48
|
+
cQ = new Map();
|
|
49
|
+
gQ = new Map();
|
|
50
|
+
drainInProgress = false;
|
|
51
|
+
drainTimeout;
|
|
52
|
+
idlePing;
|
|
53
|
+
// --------- Cache State
|
|
54
|
+
localStorage = false;
|
|
55
|
+
maxCacheSize = 4e6; // in bytes
|
|
56
|
+
cache = new Map();
|
|
57
|
+
// --------- Function State
|
|
58
|
+
functionResponseListeners = new Map();
|
|
59
|
+
requestId = 0; // max 3 bytes (0 to 16777215)
|
|
60
|
+
// --------- Channel State
|
|
61
|
+
channelState = new Map();
|
|
62
|
+
channelCleanTimeout;
|
|
63
|
+
channelCleanupCycle = 30e3;
|
|
64
|
+
// --------- Observe State
|
|
65
|
+
observeState = new Map();
|
|
66
|
+
// --------- Get State
|
|
67
|
+
getState = new Map();
|
|
68
|
+
// -------- Auth state
|
|
69
|
+
authState = {};
|
|
70
|
+
authRequest = {
|
|
71
|
+
authState: null,
|
|
72
|
+
promise: null,
|
|
73
|
+
resolve: null,
|
|
74
|
+
reject: null,
|
|
75
|
+
inProgress: false,
|
|
76
|
+
};
|
|
88
77
|
// --------- Internal Events
|
|
89
78
|
onClose() {
|
|
90
79
|
this.connected = false;
|
|
91
80
|
// Rare edge case where server got dc'ed while sending the queue - before recieving result)
|
|
92
|
-
if (this.functionResponseListeners.size > this.
|
|
81
|
+
if (this.functionResponseListeners.size > this.fQ.length) {
|
|
93
82
|
this.functionResponseListeners.forEach((p, k) => {
|
|
94
|
-
if (!this.
|
|
83
|
+
if (!this.fQ.find(([id]) => {
|
|
95
84
|
if (id === k) {
|
|
96
85
|
return true;
|
|
97
86
|
}
|
|
@@ -113,26 +102,26 @@ class BasedClient extends Emitter_1.default {
|
|
|
113
102
|
this.emit('connect', true);
|
|
114
103
|
// Resend all subscriptions
|
|
115
104
|
for (const [id, obs] of this.observeState) {
|
|
116
|
-
if (!this.
|
|
105
|
+
if (!this.oQ.has(id)) {
|
|
117
106
|
const cachedData = this.cache.get(id);
|
|
118
|
-
|
|
107
|
+
addObsToQueue(this, obs.name, id, obs.payload, cachedData?.c || 0);
|
|
119
108
|
}
|
|
120
109
|
}
|
|
121
110
|
// Resend all channels
|
|
122
111
|
for (const [id, channel] of this.channelState) {
|
|
123
|
-
if (!this.
|
|
112
|
+
if (!this.cQ.has(id)) {
|
|
124
113
|
if (channel.subscribers.size) {
|
|
125
|
-
|
|
114
|
+
addChannelSubscribeToQueue(this, channel.name, id, channel.payload);
|
|
126
115
|
}
|
|
127
116
|
else {
|
|
128
|
-
|
|
117
|
+
addChannelPublishIdentifier(this, channel.name, id, channel.payload);
|
|
129
118
|
}
|
|
130
119
|
}
|
|
131
120
|
}
|
|
132
|
-
|
|
121
|
+
drainQueue(this);
|
|
133
122
|
}
|
|
134
123
|
onData(data) {
|
|
135
|
-
|
|
124
|
+
incoming(this, data);
|
|
136
125
|
}
|
|
137
126
|
// --------- Connect
|
|
138
127
|
/**
|
|
@@ -155,22 +144,22 @@ class BasedClient extends Emitter_1.default {
|
|
|
155
144
|
async connect(opts) {
|
|
156
145
|
if (opts && Object.keys(opts).length > 0) {
|
|
157
146
|
if (this.opts) {
|
|
158
|
-
if (
|
|
147
|
+
if (deepEqual(this.opts, opts)) {
|
|
159
148
|
return;
|
|
160
149
|
}
|
|
161
150
|
this.disconnect();
|
|
162
151
|
}
|
|
163
152
|
this.opts = opts;
|
|
164
|
-
this.url = () => (
|
|
165
|
-
this.storageEnvKey =
|
|
166
|
-
|
|
153
|
+
this.url = () => parseOpts(opts);
|
|
154
|
+
this.storageEnvKey = hashObjectIgnoreKeyOrder(opts);
|
|
155
|
+
initStorage(this);
|
|
167
156
|
}
|
|
168
157
|
if (!this.opts) {
|
|
169
158
|
console.error('Configure opts to connect');
|
|
170
159
|
return;
|
|
171
160
|
}
|
|
172
161
|
if (this.url && !this.connection) {
|
|
173
|
-
this.connection = (
|
|
162
|
+
this.connection = connectWebsocket(this, this.url);
|
|
174
163
|
}
|
|
175
164
|
}
|
|
176
165
|
/**
|
|
@@ -196,6 +185,8 @@ class BasedClient extends Emitter_1.default {
|
|
|
196
185
|
clearTimeout(this.idlePing);
|
|
197
186
|
this.connected = false;
|
|
198
187
|
}
|
|
188
|
+
// ---------- Destroy
|
|
189
|
+
isDestroyed;
|
|
199
190
|
/**
|
|
200
191
|
Destroy the client, will remove all internals and cannot be resued,
|
|
201
192
|
will update localStorage with the all `persistent` queries in memory
|
|
@@ -209,7 +200,7 @@ class BasedClient extends Emitter_1.default {
|
|
|
209
200
|
*/
|
|
210
201
|
async destroy(noStorage) {
|
|
211
202
|
if (!noStorage) {
|
|
212
|
-
await (
|
|
203
|
+
await updateStorage(this, true);
|
|
213
204
|
}
|
|
214
205
|
clearTimeout(this.storageBeingWritten);
|
|
215
206
|
clearTimeout(this.channelCleanTimeout);
|
|
@@ -232,7 +223,7 @@ class BasedClient extends Emitter_1.default {
|
|
|
232
223
|
```
|
|
233
224
|
*/
|
|
234
225
|
channel(name, payload) {
|
|
235
|
-
return new
|
|
226
|
+
return new BasedChannel(this, name, payload);
|
|
236
227
|
}
|
|
237
228
|
// ---------- Query
|
|
238
229
|
/**
|
|
@@ -260,7 +251,7 @@ class BasedClient extends Emitter_1.default {
|
|
|
260
251
|
```
|
|
261
252
|
*/
|
|
262
253
|
query(name, payload, opts) {
|
|
263
|
-
return new
|
|
254
|
+
return new BasedQuery(this, name, payload, opts);
|
|
264
255
|
}
|
|
265
256
|
// -------- Function
|
|
266
257
|
/**
|
|
@@ -278,21 +269,21 @@ class BasedClient extends Emitter_1.default {
|
|
|
278
269
|
if (typeof newTime === 'number' && !isNaN(newTime)) {
|
|
279
270
|
time = newTime;
|
|
280
271
|
if (newTime === 0) {
|
|
281
|
-
|
|
272
|
+
addToFunctionQueue(this, payload, name, resolve, retryReject);
|
|
282
273
|
}
|
|
283
274
|
else {
|
|
284
275
|
setTimeout(() => {
|
|
285
|
-
|
|
276
|
+
addToFunctionQueue(this, payload, name, resolve, retryReject);
|
|
286
277
|
}, newTime);
|
|
287
278
|
}
|
|
288
279
|
}
|
|
289
280
|
};
|
|
290
|
-
return
|
|
281
|
+
return addToFunctionQueue(this, payload, name, resolve, retryReject);
|
|
291
282
|
});
|
|
292
283
|
}
|
|
293
284
|
else {
|
|
294
285
|
return new Promise((resolve, reject) => {
|
|
295
|
-
return
|
|
286
|
+
return addToFunctionQueue(this, payload, name, resolve, reject);
|
|
296
287
|
});
|
|
297
288
|
}
|
|
298
289
|
}
|
|
@@ -305,7 +296,7 @@ class BasedClient extends Emitter_1.default {
|
|
|
305
296
|
```
|
|
306
297
|
*/
|
|
307
298
|
stream(name, stream, progressListener) {
|
|
308
|
-
return (
|
|
299
|
+
return startStream(this, name, stream, progressListener);
|
|
309
300
|
}
|
|
310
301
|
// -------- Auth
|
|
311
302
|
/**
|
|
@@ -318,7 +309,7 @@ class BasedClient extends Emitter_1.default {
|
|
|
318
309
|
*/
|
|
319
310
|
setAuthState(authState) {
|
|
320
311
|
if (typeof authState === 'object') {
|
|
321
|
-
return
|
|
312
|
+
return sendAuth(this, authState);
|
|
322
313
|
}
|
|
323
314
|
else {
|
|
324
315
|
throw new Error('Invalid auth() arguments');
|
|
@@ -332,7 +323,7 @@ class BasedClient extends Emitter_1.default {
|
|
|
332
323
|
```
|
|
333
324
|
*/
|
|
334
325
|
clearAuthState() {
|
|
335
|
-
return
|
|
326
|
+
return sendAuth(this, {});
|
|
336
327
|
}
|
|
337
328
|
// -------- Storage layer
|
|
338
329
|
/**
|
|
@@ -343,7 +334,7 @@ class BasedClient extends Emitter_1.default {
|
|
|
343
334
|
```
|
|
344
335
|
*/
|
|
345
336
|
clearStorage() {
|
|
346
|
-
return
|
|
337
|
+
return clearStorage(this);
|
|
347
338
|
}
|
|
348
339
|
/**
|
|
349
340
|
Save current state of all cached query functions that have `persistent` set to true
|
|
@@ -353,10 +344,9 @@ class BasedClient extends Emitter_1.default {
|
|
|
353
344
|
```
|
|
354
345
|
*/
|
|
355
346
|
saveStorage() {
|
|
356
|
-
return
|
|
347
|
+
return updateStorage(this);
|
|
357
348
|
}
|
|
358
349
|
}
|
|
359
|
-
exports.BasedClient = BasedClient;
|
|
360
350
|
/**
|
|
361
351
|
Creates a based client
|
|
362
352
|
|
|
@@ -374,8 +364,7 @@ exports.BasedClient = BasedClient;
|
|
|
374
364
|
})
|
|
375
365
|
```
|
|
376
366
|
*/
|
|
377
|
-
function based(opts, settings) {
|
|
367
|
+
export default function based(opts, settings) {
|
|
378
368
|
return new BasedClient(opts, settings);
|
|
379
369
|
}
|
|
380
|
-
exports.default = based;
|
|
381
370
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
import { BasedOpts, AuthState, FunctionResponseListeners, Settings, FunctionQueue, ObserveState, ObserveQueue, Cache, GetObserveQueue } from './types';
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import { CallOptions, QueryOptions } from './types';
|
|
10
|
-
export * from './authState/parseAuthState';
|
|
11
|
-
export * from './types/error';
|
|
1
|
+
import { BasedOpts, AuthState, FunctionResponseListeners, Settings, FunctionQueue, ObserveState, ObserveQueue, Cache, GetObserveQueue, GetState, ChannelQueue, ChannelPublishQueue, ChannelState, CallOptions, QueryOptions } from './types/index.js';
|
|
2
|
+
import { Connection } from './websocket/types.js';
|
|
3
|
+
import Emitter from './Emitter.js';
|
|
4
|
+
import { BasedQuery } from './query/index.js';
|
|
5
|
+
import { StreamFunctionOpts } from './stream/types.js';
|
|
6
|
+
import { BasedChannel } from './channel/index.js';
|
|
7
|
+
export * from './authState/parseAuthState.js';
|
|
8
|
+
export * from './types/error.js';
|
|
12
9
|
export { AuthState, BasedQuery };
|
|
13
10
|
export declare class BasedClient extends Emitter {
|
|
14
11
|
constructor(opts?: BasedOpts, settings?: Settings);
|
|
@@ -17,10 +14,10 @@ export declare class BasedClient extends Emitter {
|
|
|
17
14
|
storageEnvKey: number;
|
|
18
15
|
storagePath?: string;
|
|
19
16
|
storageBeingWritten?: ReturnType<typeof setTimeout>;
|
|
20
|
-
opts
|
|
17
|
+
opts?: BasedOpts;
|
|
21
18
|
connected: boolean;
|
|
22
|
-
connection
|
|
23
|
-
url
|
|
19
|
+
connection?: Connection;
|
|
20
|
+
url?: () => Promise<string>;
|
|
24
21
|
outgoingStreams: Map<string, {
|
|
25
22
|
stream: any;
|
|
26
23
|
resolve: (result: any) => void;
|
|
@@ -28,30 +25,30 @@ export declare class BasedClient extends Emitter {
|
|
|
28
25
|
}[]>;
|
|
29
26
|
isDrainingStreams: boolean;
|
|
30
27
|
maxPublishQueue: number;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
pQ: ChannelPublishQueue;
|
|
29
|
+
fQ: FunctionQueue;
|
|
30
|
+
oQ: ObserveQueue;
|
|
31
|
+
cQ: ChannelQueue;
|
|
32
|
+
gQ: GetObserveQueue;
|
|
36
33
|
drainInProgress: boolean;
|
|
37
|
-
drainTimeout
|
|
38
|
-
idlePing
|
|
34
|
+
drainTimeout?: ReturnType<typeof setTimeout>;
|
|
35
|
+
idlePing?: ReturnType<typeof setTimeout>;
|
|
39
36
|
localStorage: boolean;
|
|
40
37
|
maxCacheSize: number;
|
|
41
38
|
cache: Cache;
|
|
42
39
|
functionResponseListeners: FunctionResponseListeners;
|
|
43
40
|
requestId: number;
|
|
44
41
|
channelState: ChannelState;
|
|
45
|
-
channelCleanTimeout?: ReturnType<typeof setTimeout
|
|
42
|
+
channelCleanTimeout?: ReturnType<typeof setTimeout> | null;
|
|
46
43
|
channelCleanupCycle: number;
|
|
47
44
|
observeState: ObserveState;
|
|
48
45
|
getState: GetState;
|
|
49
46
|
authState: AuthState;
|
|
50
47
|
authRequest: {
|
|
51
|
-
authState: AuthState;
|
|
52
|
-
promise: Promise<AuthState
|
|
53
|
-
resolve: (result: AuthState) => void;
|
|
54
|
-
reject: (err: Error) => void;
|
|
48
|
+
authState: AuthState | null;
|
|
49
|
+
promise: Promise<AuthState> | null;
|
|
50
|
+
resolve: ((result: AuthState) => void) | null;
|
|
51
|
+
reject: ((err: Error) => void) | null;
|
|
55
52
|
inProgress: boolean;
|
|
56
53
|
};
|
|
57
54
|
onClose(): void;
|
|
@@ -200,9 +197,12 @@ export { BasedOpts };
|
|
|
200
197
|
*/
|
|
201
198
|
export default function based(opts: BasedOpts, settings?: Settings): BasedClient;
|
|
202
199
|
export type QueryMap = {
|
|
200
|
+
db: {
|
|
201
|
+
payload: any;
|
|
202
|
+
result: any;
|
|
203
|
+
};
|
|
203
204
|
[key: string]: {
|
|
204
205
|
payload: any;
|
|
205
206
|
result: any;
|
|
206
207
|
};
|
|
207
208
|
};
|
|
208
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BasedClient } from '
|
|
2
|
-
import { AuthState, GenericObject } from '../types';
|
|
1
|
+
import { BasedClient } from '../index.js';
|
|
2
|
+
import { AuthState, GenericObject } from '../types/index.js';
|
|
3
3
|
export declare const idleTimeout: (client: BasedClient) => void;
|
|
4
4
|
export declare const drainQueue: (client: BasedClient) => void;
|
|
5
5
|
export declare const stopDrainQueue: (client: BasedClient) => void;
|
|
@@ -12,4 +12,3 @@ export declare const addObsCloseToQueue: (client: BasedClient, id: number) => vo
|
|
|
12
12
|
export declare const addObsToQueue: (client: BasedClient, name: string, id: number, payload: GenericObject, checksum?: number) => void;
|
|
13
13
|
export declare const addGetToQueue: (client: BasedClient, name: string, id: number, payload: GenericObject, checksum?: number) => void;
|
|
14
14
|
export declare const sendAuth: (client: BasedClient, authState: AuthState) => Promise<AuthState>;
|
|
15
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { updateAuthState } from '../authState/updateAuthState.js';
|
|
2
|
+
import { encodeAuthMessage, encodeFunctionMessage, encodeGetObserveMessage, encodeObserveMessage, encodePublishMessage, encodeSubscribeChannelMessage, } from './protocol.js';
|
|
3
|
+
import { deepEqual } from '@saulx/utils';
|
|
4
|
+
const PING = new Uint8Array(0);
|
|
5
|
+
export const idleTimeout = (client) => {
|
|
6
|
+
const updateTime = 60 * 1e3;
|
|
7
|
+
clearTimeout(client.idlePing);
|
|
8
|
+
client.idlePing = setTimeout(() => {
|
|
9
|
+
if (client.connection &&
|
|
10
|
+
client.connected &&
|
|
11
|
+
!client.connection.disconnected) {
|
|
12
|
+
client.connection.ws.send(PING);
|
|
13
|
+
}
|
|
14
|
+
}, updateTime);
|
|
15
|
+
};
|
|
16
|
+
const hasQueue = (client) => {
|
|
17
|
+
return !!(client.fQ.length ||
|
|
18
|
+
client.oQ.size ||
|
|
19
|
+
client.gQ.size ||
|
|
20
|
+
client.cQ.size ||
|
|
21
|
+
client.pQ.length);
|
|
22
|
+
};
|
|
23
|
+
export const drainQueue = (client) => {
|
|
24
|
+
if (client.connected && !client.drainInProgress && hasQueue(client)) {
|
|
25
|
+
client.drainInProgress = true;
|
|
26
|
+
const drainOutgoing = () => {
|
|
27
|
+
client.drainInProgress = false;
|
|
28
|
+
if (!client.connected) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (hasQueue(client)) {
|
|
32
|
+
const channel = client.cQ;
|
|
33
|
+
const publish = client.pQ;
|
|
34
|
+
const fn = client.fQ;
|
|
35
|
+
const obs = client.oQ;
|
|
36
|
+
const get = client.gQ;
|
|
37
|
+
const buffs = [];
|
|
38
|
+
let l = 0;
|
|
39
|
+
// ------- Channel
|
|
40
|
+
for (const [id, o] of channel) {
|
|
41
|
+
const { buffers, len } = encodeSubscribeChannelMessage(id, o);
|
|
42
|
+
buffs.push(...buffers);
|
|
43
|
+
l += len;
|
|
44
|
+
}
|
|
45
|
+
// ------- GetObserve
|
|
46
|
+
for (const [id, o] of get) {
|
|
47
|
+
const { buffers, len } = encodeGetObserveMessage(id, o);
|
|
48
|
+
buffs.push(...buffers);
|
|
49
|
+
l += len;
|
|
50
|
+
}
|
|
51
|
+
// ------- Observe
|
|
52
|
+
for (const [id, o] of obs) {
|
|
53
|
+
const { buffers, len } = encodeObserveMessage(id, o);
|
|
54
|
+
buffs.push(...buffers);
|
|
55
|
+
l += len;
|
|
56
|
+
}
|
|
57
|
+
// ------- Function
|
|
58
|
+
for (const f of fn) {
|
|
59
|
+
const { buffers, len } = encodeFunctionMessage(f);
|
|
60
|
+
buffs.push(...buffers);
|
|
61
|
+
l += len;
|
|
62
|
+
}
|
|
63
|
+
// ------- Publish
|
|
64
|
+
for (const f of publish) {
|
|
65
|
+
const { buffers, len } = encodePublishMessage(f);
|
|
66
|
+
buffs.push(...buffers);
|
|
67
|
+
l += len;
|
|
68
|
+
}
|
|
69
|
+
const n = new Uint8Array(l);
|
|
70
|
+
let c = 0;
|
|
71
|
+
for (const b of buffs) {
|
|
72
|
+
n.set(b, c);
|
|
73
|
+
c += b.length;
|
|
74
|
+
}
|
|
75
|
+
client.fQ = [];
|
|
76
|
+
client.pQ = [];
|
|
77
|
+
client.oQ.clear();
|
|
78
|
+
client.gQ.clear();
|
|
79
|
+
client.cQ.clear();
|
|
80
|
+
client.connection.ws.send(n);
|
|
81
|
+
idleTimeout(client);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
client.drainTimeout = setTimeout(drainOutgoing, 0);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
export const stopDrainQueue = (client) => {
|
|
88
|
+
if (client.drainInProgress) {
|
|
89
|
+
clearTimeout(client.drainTimeout);
|
|
90
|
+
client.drainInProgress = false;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
// ------------ Function ---------------
|
|
94
|
+
export const addToFunctionQueue = (client, payload, name, resolve, reject) => {
|
|
95
|
+
client.requestId++;
|
|
96
|
+
// 3 bytes
|
|
97
|
+
if (client.requestId > 16777215) {
|
|
98
|
+
client.requestId = 0;
|
|
99
|
+
}
|
|
100
|
+
const id = client.requestId;
|
|
101
|
+
// TODO: When node env is not "production" | or when dev
|
|
102
|
+
const s = Error().stack.split(/BasedClient\.function.+:\d\d\)/)[1];
|
|
103
|
+
client.functionResponseListeners.set(id, [resolve, reject, s]);
|
|
104
|
+
client.fQ.push([id, name, payload]);
|
|
105
|
+
drainQueue(client);
|
|
106
|
+
};
|
|
107
|
+
// ------------ Channel ---------------
|
|
108
|
+
export const addChannelCloseToQueue = (client, id) => {
|
|
109
|
+
const type = client.cQ.get(id)?.[0];
|
|
110
|
+
if (type === 7) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
client.cQ.set(id, [7]);
|
|
114
|
+
drainQueue(client);
|
|
115
|
+
};
|
|
116
|
+
export const addChannelSubscribeToQueue = (client, name, id, payload) => {
|
|
117
|
+
const type = client.cQ.get(id)?.[0];
|
|
118
|
+
if (type === 5) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
client.cQ.set(id, [5, name, payload]);
|
|
122
|
+
drainQueue(client);
|
|
123
|
+
};
|
|
124
|
+
export const addChannelPublishIdentifier = (client, name, id, payload) => {
|
|
125
|
+
const type = client.cQ.get(id)?.[0];
|
|
126
|
+
if (type === 5 || type === 6) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
// if (type === 7) {
|
|
130
|
+
// unsupported
|
|
131
|
+
// console.warn(10)
|
|
132
|
+
// }
|
|
133
|
+
client.cQ.set(id, [6, name, payload]);
|
|
134
|
+
drainQueue(client);
|
|
135
|
+
};
|
|
136
|
+
export const addToPublishQueue = (client, id, payload) => {
|
|
137
|
+
// TODO: make this configurable at some point
|
|
138
|
+
if (client.pQ.length > client.maxPublishQueue) {
|
|
139
|
+
client.pQ.shift();
|
|
140
|
+
}
|
|
141
|
+
client.pQ.push([id, payload]);
|
|
142
|
+
drainQueue(client);
|
|
143
|
+
};
|
|
144
|
+
// ------------ Observable ---------------
|
|
145
|
+
export const addObsCloseToQueue = (client, id) => {
|
|
146
|
+
const type = client.oQ.get(id)?.[0];
|
|
147
|
+
if (type === 2) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
client.oQ.set(id, [2]);
|
|
151
|
+
drainQueue(client);
|
|
152
|
+
};
|
|
153
|
+
export const addObsToQueue = (client, name, id, payload, checksum = 0) => {
|
|
154
|
+
const type = client.oQ.get(id)?.[0];
|
|
155
|
+
if (type === 1) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
client.oQ.set(id, [1, name, checksum, payload]);
|
|
159
|
+
drainQueue(client);
|
|
160
|
+
};
|
|
161
|
+
export const addGetToQueue = (client, name, id, payload, checksum = 0) => {
|
|
162
|
+
if (client.gQ.has(id)) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
client.gQ.set(id, [3, name, checksum, payload]);
|
|
166
|
+
drainQueue(client);
|
|
167
|
+
};
|
|
168
|
+
// ------------ Auth ---------------
|
|
169
|
+
export const sendAuth = async (client, authState) => {
|
|
170
|
+
if (deepEqual(authState, client.authState)) {
|
|
171
|
+
console.warn('[Based] Trying to send the same authState twice', client.authState);
|
|
172
|
+
return client.authRequest.inProgress
|
|
173
|
+
? client.authRequest.promise
|
|
174
|
+
: new Promise((resolve) => resolve({}));
|
|
175
|
+
}
|
|
176
|
+
if (client.authRequest.inProgress) {
|
|
177
|
+
console.warn('[Based] Authentication still in progress - waiting until done');
|
|
178
|
+
await client.authRequest.promise;
|
|
179
|
+
}
|
|
180
|
+
updateAuthState(client, authState);
|
|
181
|
+
client.emit('authstate-change', client.authState);
|
|
182
|
+
if (client.connected) {
|
|
183
|
+
client.connection.ws.send(encodeAuthMessage(authState));
|
|
184
|
+
}
|
|
185
|
+
client.authRequest.promise = new Promise((resolve, reject) => {
|
|
186
|
+
client.authRequest.inProgress = true;
|
|
187
|
+
client.authRequest.resolve = resolve;
|
|
188
|
+
client.authRequest.reject = reject;
|
|
189
|
+
// Gets send in the upgrade header of the websocket
|
|
190
|
+
}).finally(() => {
|
|
191
|
+
client.authRequest.resolve = null;
|
|
192
|
+
client.authRequest.reject = null;
|
|
193
|
+
client.authRequest.inProgress = false;
|
|
194
|
+
});
|
|
195
|
+
return client.authRequest.promise;
|
|
196
|
+
};
|
|
197
|
+
//# sourceMappingURL=index.js.map
|