@based/client 4.8.10 → 5.0.0-alpha.2

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 (203) hide show
  1. package/dist/{Emitter.d.ts → src/Emitter.d.ts} +1 -2
  2. package/dist/{Emitter.js → src/Emitter.js} +2 -4
  3. package/dist/src/Emitter.js.map +1 -0
  4. package/dist/{authState → src/authState}/parseAuthState.d.ts +1 -2
  5. package/dist/src/authState/parseAuthState.js +44 -0
  6. package/dist/src/authState/parseAuthState.js.map +1 -0
  7. package/dist/src/authState/updateAuthState.d.ts +3 -0
  8. package/dist/src/authState/updateAuthState.js +12 -0
  9. package/dist/src/authState/updateAuthState.js.map +1 -0
  10. package/dist/src/channel/cleanUp.d.ts +2 -0
  11. package/dist/{channel → src/channel}/cleanUp.js +3 -7
  12. package/dist/src/channel/cleanUp.js.map +1 -0
  13. package/dist/{channel → src/channel}/index.d.ts +2 -4
  14. package/dist/{channel → src/channel}/index.js +15 -15
  15. package/dist/src/channel/index.js.map +1 -0
  16. package/dist/{genObserveId.d.ts → src/genObserveId.d.ts} +0 -1
  17. package/dist/src/genObserveId.js +8 -0
  18. package/dist/src/genObserveId.js.map +1 -0
  19. package/dist/{getTargetInfo.d.ts → src/getTargetInfo.d.ts} +1 -2
  20. package/dist/{getTargetInfo.js → src/getTargetInfo.js} +1 -5
  21. package/dist/src/getTargetInfo.js.map +1 -0
  22. package/dist/{incoming → src/incoming}/index.d.ts +1 -2
  23. package/dist/{incoming → src/incoming}/index.js +73 -146
  24. package/dist/src/incoming/index.js.map +1 -0
  25. package/dist/{incoming → src/incoming}/protocol.d.ts +1 -2
  26. package/dist/{incoming → src/incoming}/protocol.js +8 -18
  27. package/dist/src/incoming/protocol.js.map +1 -0
  28. package/dist/{index.d.ts → src/index.d.ts} +27 -27
  29. package/dist/{index.js → src/index.js} +92 -103
  30. package/dist/src/index.js.map +1 -0
  31. package/dist/{index_original.d.ts → src/index_original.d.ts} +27 -27
  32. package/dist/{outgoing → src/outgoing}/index.d.ts +2 -3
  33. package/dist/src/outgoing/index.js +197 -0
  34. package/dist/src/outgoing/index.js.map +1 -0
  35. package/dist/{outgoing → src/outgoing}/protocol.d.ts +4 -6
  36. package/dist/{outgoing → src/outgoing}/protocol.js +22 -64
  37. package/dist/src/outgoing/protocol.js.map +1 -0
  38. package/dist/{persistentStorage/index.d.ts → src/persistentStorage/browser.d.ts} +4 -5
  39. package/dist/src/persistentStorage/browser.js +182 -0
  40. package/dist/src/persistentStorage/browser.js.map +1 -0
  41. package/dist/src/persistentStorage/constants.d.ts +4 -0
  42. package/dist/src/persistentStorage/constants.js +5 -0
  43. package/dist/src/persistentStorage/constants.js.map +1 -0
  44. package/dist/src/persistentStorage/index.d.ts +6 -0
  45. package/dist/src/persistentStorage/index.js +128 -0
  46. package/dist/src/persistentStorage/index.js.map +1 -0
  47. package/dist/src/persistentStorage/node.d.ts +1 -0
  48. package/dist/src/persistentStorage/node.js +109 -0
  49. package/dist/src/persistentStorage/node.js.map +1 -0
  50. package/dist/{query → src/query}/index.d.ts +2 -3
  51. package/dist/{query → src/query}/index.js +19 -18
  52. package/dist/src/query/index.js.map +1 -0
  53. package/dist/src/ssr.d.ts +6 -0
  54. package/dist/src/ssr.js +11 -0
  55. package/dist/src/ssr.js.map +1 -0
  56. package/dist/{stream/index.d.ts → src/stream/browser.d.ts} +2 -3
  57. package/dist/src/stream/browser.js +34 -0
  58. package/dist/src/stream/browser.js.map +1 -0
  59. package/dist/{stream → src/stream}/fetch.d.ts +2 -3
  60. package/dist/src/stream/fetch.js +34 -0
  61. package/dist/src/stream/fetch.js.map +1 -0
  62. package/dist/src/stream/index.d.ts +4 -0
  63. package/dist/src/stream/index.js +21 -0
  64. package/dist/src/stream/index.js.map +1 -0
  65. package/dist/{stream → src/stream}/nodeStream.d.ts +3 -4
  66. package/dist/{stream → src/stream}/nodeStream.js +23 -32
  67. package/dist/src/stream/nodeStream.js.map +1 -0
  68. package/dist/{stream → src/stream}/types.d.ts +3 -2
  69. package/dist/src/stream/types.js +18 -0
  70. package/dist/src/stream/types.js.map +1 -0
  71. package/dist/{stream → src/stream}/uploadFileBrowser.d.ts +2 -3
  72. package/dist/{stream → src/stream}/uploadFileBrowser.js +12 -18
  73. package/dist/src/stream/uploadFileBrowser.js.map +1 -0
  74. package/dist/{types → src/types}/auth.d.ts +0 -1
  75. package/dist/src/types/auth.js +2 -0
  76. package/dist/{types → src/types}/auth.js.map +1 -1
  77. package/dist/src/types/cache.d.ts +6 -0
  78. package/dist/src/types/cache.js +2 -0
  79. package/dist/{types → src/types}/cache.js.map +1 -1
  80. package/dist/{types → src/types}/channel.d.ts +1 -2
  81. package/dist/src/types/channel.js +2 -0
  82. package/dist/{types → src/types}/channel.js.map +1 -1
  83. package/dist/{types → src/types}/error.d.ts +1 -2
  84. package/dist/{types → src/types}/error.js +7 -10
  85. package/dist/src/types/error.js.map +1 -0
  86. package/dist/src/types/events.d.ts +9 -0
  87. package/dist/src/types/events.js +2 -0
  88. package/dist/{types → src/types}/events.js.map +1 -1
  89. package/dist/{types → src/types}/functions.d.ts +1 -2
  90. package/dist/src/types/functions.js +2 -0
  91. package/dist/{types → src/types}/functions.js.map +1 -1
  92. package/dist/{types → src/types}/generic.d.ts +0 -1
  93. package/dist/src/types/generic.js +2 -0
  94. package/dist/{types → src/types}/generic.js.map +1 -1
  95. package/dist/src/types/index.d.ts +8 -0
  96. package/dist/src/types/index.js +9 -0
  97. package/dist/src/types/index.js.map +1 -0
  98. package/dist/{types → src/types}/observe.d.ts +1 -2
  99. package/dist/src/types/observe.js +2 -0
  100. package/dist/{types → src/types}/observe.js.map +1 -1
  101. package/dist/{websocket → src/websocket}/index.d.ts +2 -3
  102. package/dist/{websocket → src/websocket}/index.js +9 -14
  103. package/dist/src/websocket/index.js.map +1 -0
  104. package/dist/{websocket → src/websocket}/types.d.ts +0 -1
  105. package/dist/src/websocket/types.js +6 -0
  106. package/dist/src/websocket/types.js.map +1 -0
  107. package/dist/{websocket → src/websocket}/urlLoader.d.ts +0 -1
  108. package/dist/src/websocket/urlLoader.js +11 -0
  109. package/dist/{websocket → src/websocket}/urlLoader.js.map +1 -1
  110. package/package.json +38 -28
  111. package/dist/Emitter.d.ts.map +0 -1
  112. package/dist/Emitter.js.map +0 -1
  113. package/dist/authState/parseAuthState.d.ts.map +0 -1
  114. package/dist/authState/parseAuthState.js +0 -51
  115. package/dist/authState/parseAuthState.js.map +0 -1
  116. package/dist/authState/updateAuthState.d.ts +0 -4
  117. package/dist/authState/updateAuthState.d.ts.map +0 -1
  118. package/dist/authState/updateAuthState.js +0 -15
  119. package/dist/authState/updateAuthState.js.map +0 -1
  120. package/dist/channel/cleanUp.d.ts +0 -3
  121. package/dist/channel/cleanUp.d.ts.map +0 -1
  122. package/dist/channel/cleanUp.js.map +0 -1
  123. package/dist/channel/index.d.ts.map +0 -1
  124. package/dist/channel/index.js.map +0 -1
  125. package/dist/genObserveId.d.ts.map +0 -1
  126. package/dist/genObserveId.js +0 -12
  127. package/dist/genObserveId.js.map +0 -1
  128. package/dist/getTargetInfo.d.ts.map +0 -1
  129. package/dist/getTargetInfo.js.map +0 -1
  130. package/dist/incoming/debug.d.ts +0 -10
  131. package/dist/incoming/debug.d.ts.map +0 -1
  132. package/dist/incoming/debug.js +0 -132
  133. package/dist/incoming/debug.js.map +0 -1
  134. package/dist/incoming/index.d.ts.map +0 -1
  135. package/dist/incoming/index.js.map +0 -1
  136. package/dist/incoming/protocol.d.ts.map +0 -1
  137. package/dist/incoming/protocol.js.map +0 -1
  138. package/dist/index.d.ts.map +0 -1
  139. package/dist/index.js.map +0 -1
  140. package/dist/outgoing/debug.d.ts +0 -9
  141. package/dist/outgoing/debug.d.ts.map +0 -1
  142. package/dist/outgoing/debug.js +0 -70
  143. package/dist/outgoing/debug.js.map +0 -1
  144. package/dist/outgoing/index.d.ts.map +0 -1
  145. package/dist/outgoing/index.js +0 -231
  146. package/dist/outgoing/index.js.map +0 -1
  147. package/dist/outgoing/protocol.d.ts.map +0 -1
  148. package/dist/outgoing/protocol.js.map +0 -1
  149. package/dist/persistentStorage/browser.d.ts +0 -6
  150. package/dist/persistentStorage/browser.d.ts.map +0 -1
  151. package/dist/persistentStorage/browser.js +0 -178
  152. package/dist/persistentStorage/browser.js.map +0 -1
  153. package/dist/persistentStorage/index.d.ts.map +0 -1
  154. package/dist/persistentStorage/index.js +0 -61
  155. package/dist/persistentStorage/index.js.map +0 -1
  156. package/dist/persistentStorage/node.d.ts +0 -7
  157. package/dist/persistentStorage/node.d.ts.map +0 -1
  158. package/dist/persistentStorage/node.js +0 -104
  159. package/dist/persistentStorage/node.js.map +0 -1
  160. package/dist/query/index.d.ts.map +0 -1
  161. package/dist/query/index.js.map +0 -1
  162. package/dist/stream/fetch.d.ts.map +0 -1
  163. package/dist/stream/fetch.js +0 -38
  164. package/dist/stream/fetch.js.map +0 -1
  165. package/dist/stream/index.d.ts.map +0 -1
  166. package/dist/stream/index.js +0 -65
  167. package/dist/stream/index.js.map +0 -1
  168. package/dist/stream/nodeStream.d.ts.map +0 -1
  169. package/dist/stream/nodeStream.js.map +0 -1
  170. package/dist/stream/types.d.ts.map +0 -1
  171. package/dist/stream/types.js +0 -8
  172. package/dist/stream/types.js.map +0 -1
  173. package/dist/stream/uploadFileBrowser.d.ts.map +0 -1
  174. package/dist/stream/uploadFileBrowser.js.map +0 -1
  175. package/dist/types/auth.d.ts.map +0 -1
  176. package/dist/types/auth.js +0 -3
  177. package/dist/types/cache.d.ts +0 -7
  178. package/dist/types/cache.d.ts.map +0 -1
  179. package/dist/types/cache.js +0 -3
  180. package/dist/types/channel.d.ts.map +0 -1
  181. package/dist/types/channel.js +0 -3
  182. package/dist/types/error.d.ts.map +0 -1
  183. package/dist/types/error.js.map +0 -1
  184. package/dist/types/events.d.ts +0 -35
  185. package/dist/types/events.d.ts.map +0 -1
  186. package/dist/types/events.js +0 -3
  187. package/dist/types/functions.d.ts.map +0 -1
  188. package/dist/types/functions.js +0 -3
  189. package/dist/types/generic.d.ts.map +0 -1
  190. package/dist/types/generic.js +0 -3
  191. package/dist/types/index.d.ts +0 -7
  192. package/dist/types/index.d.ts.map +0 -1
  193. package/dist/types/index.js +0 -23
  194. package/dist/types/index.js.map +0 -1
  195. package/dist/types/observe.d.ts.map +0 -1
  196. package/dist/types/observe.js +0 -3
  197. package/dist/websocket/index.d.ts.map +0 -1
  198. package/dist/websocket/index.js.map +0 -1
  199. package/dist/websocket/types.d.ts.map +0 -1
  200. package/dist/websocket/types.js +0 -7
  201. package/dist/websocket/types.js.map +0 -1
  202. package/dist/websocket/urlLoader.d.ts.map +0 -1
  203. package/dist/websocket/urlLoader.js +0 -13
@@ -1,79 +1,20 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
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.functionQueue.length) {
81
+ if (this.functionResponseListeners.size > this.fQ.length) {
93
82
  this.functionResponseListeners.forEach((p, k) => {
94
- if (!this.functionQueue.find(([id]) => {
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.observeQueue.has(id)) {
105
+ if (!this.oQ.has(id)) {
117
106
  const cachedData = this.cache.get(id);
118
- (0, outgoing_1.addObsToQueue)(this, obs.name, id, obs.payload, cachedData?.checksum || 0);
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.channelQueue.has(id)) {
112
+ if (!this.cQ.has(id)) {
124
113
  if (channel.subscribers.size) {
125
- (0, outgoing_1.addChannelSubscribeToQueue)(this, channel.name, id, channel.payload);
114
+ addChannelSubscribeToQueue(this, channel.name, id, channel.payload);
126
115
  }
127
116
  else {
128
- (0, outgoing_1.addChannelPublishIdentifier)(this, channel.name, id, channel.payload);
117
+ addChannelPublishIdentifier(this, channel.name, id, channel.payload);
129
118
  }
130
119
  }
131
120
  }
132
- (0, outgoing_1.drainQueue)(this);
121
+ drainQueue(this);
133
122
  }
134
123
  onData(data) {
135
- (0, incoming_1.incoming)(this, data);
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 ((0, utils_1.deepEqual)(this.opts, opts)) {
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 = () => (0, opts_1.default)(opts);
165
- this.storageEnvKey = (0, hash_1.hashObjectIgnoreKeyOrder)(opts);
166
- (0, persistentStorage_1.initStorage)(this);
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 = (0, websocket_1.default)(this, this.url);
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 (0, persistentStorage_1.updateStorage)(this);
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 channel_1.BasedChannel(this, name, payload);
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 query_1.BasedQuery(this, name, payload, opts);
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
- (0, outgoing_1.addToFunctionQueue)(this, payload, name, resolve, retryReject);
272
+ addToFunctionQueue(this, payload, name, resolve, retryReject);
282
273
  }
283
274
  else {
284
275
  setTimeout(() => {
285
- (0, outgoing_1.addToFunctionQueue)(this, payload, name, resolve, retryReject);
276
+ addToFunctionQueue(this, payload, name, resolve, retryReject);
286
277
  }, newTime);
287
278
  }
288
279
  }
289
280
  };
290
- return (0, outgoing_1.addToFunctionQueue)(this, payload, name, resolve, retryReject);
281
+ return addToFunctionQueue(this, payload, name, resolve, retryReject);
291
282
  });
292
283
  }
293
284
  else {
294
285
  return new Promise((resolve, reject) => {
295
- return (0, outgoing_1.addToFunctionQueue)(this, payload, name, resolve, reject);
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 (0, stream_1.default)(this, name, stream, progressListener);
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 (0, outgoing_1.sendAuth)(this, authState);
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 (0, outgoing_1.sendAuth)(this, {});
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 (0, persistentStorage_1.clearStorage)(this);
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 (0, persistentStorage_1.updateStorage)(this);
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 { GetState } from './types/observe';
3
- import { Connection } from './websocket/types';
4
- import Emitter from './Emitter';
5
- import { BasedQuery } from './query';
6
- import { StreamFunctionOpts } from './stream/types';
7
- import { BasedChannel } from './channel';
8
- import { ChannelQueue, ChannelPublishQueue, ChannelState } from './types/channel';
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: BasedOpts;
17
+ opts?: BasedOpts;
21
18
  connected: boolean;
22
- connection: Connection;
23
- url: () => Promise<string>;
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
- publishQueue: ChannelPublishQueue;
32
- functionQueue: FunctionQueue;
33
- observeQueue: ObserveQueue;
34
- channelQueue: ChannelQueue;
35
- getObserveQueue: GetObserveQueue;
28
+ pQ: ChannelPublishQueue;
29
+ fQ: FunctionQueue;
30
+ oQ: ObserveQueue;
31
+ cQ: ChannelQueue;
32
+ gQ: GetObserveQueue;
36
33
  drainInProgress: boolean;
37
- drainTimeout: ReturnType<typeof setTimeout>;
38
- idlePing: ReturnType<typeof setTimeout>;
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