@nxtedition/deepstream.io-client-js 28.1.13 → 28.1.16
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/package.json
CHANGED
|
@@ -101,7 +101,6 @@ class RecordHandler {
|
|
|
101
101
|
this._patching = new Map()
|
|
102
102
|
this._updating = new Map()
|
|
103
103
|
this._putting = new Set()
|
|
104
|
-
this._syncing = new Set()
|
|
105
104
|
|
|
106
105
|
this._connected = 0
|
|
107
106
|
this._stats = {
|
|
@@ -270,7 +269,7 @@ class RecordHandler {
|
|
|
270
269
|
let onAbort
|
|
271
270
|
|
|
272
271
|
const signal = opts?.signal
|
|
273
|
-
const timeout = opts?.timeout
|
|
272
|
+
const timeout = opts?.timeout || 2 * 60e3
|
|
274
273
|
|
|
275
274
|
const signalPromise = signal
|
|
276
275
|
? new Promise((resolve, reject) => {
|
|
@@ -282,23 +281,11 @@ class RecordHandler {
|
|
|
282
281
|
: Promise.resolve()
|
|
283
282
|
signalPromise?.catch(() => {})
|
|
284
283
|
|
|
285
|
-
const sync = {
|
|
286
|
-
status: 'pending',
|
|
287
|
-
data: undefined,
|
|
288
|
-
timeout: timeout || 2 * 60e3,
|
|
289
|
-
timestamp: Date.now(),
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
this._syncing.add(sync)
|
|
293
284
|
try {
|
|
294
285
|
if (this._patching.size) {
|
|
295
286
|
let patchingTimeout
|
|
296
287
|
const patching = [...this._patching.values()]
|
|
297
288
|
|
|
298
|
-
sync.status = 'patching'
|
|
299
|
-
sync.data = patching
|
|
300
|
-
sync.timestamp = Date.now()
|
|
301
|
-
|
|
302
289
|
await Promise.race([
|
|
303
290
|
Promise.all(
|
|
304
291
|
patching.map((callbacks) => new Promise((resolve) => callbacks.push(resolve))),
|
|
@@ -308,12 +295,10 @@ class RecordHandler {
|
|
|
308
295
|
this._client._$onError(
|
|
309
296
|
C.TOPIC.RECORD,
|
|
310
297
|
C.EVENT.TIMEOUT,
|
|
311
|
-
|
|
312
|
-
data: sync,
|
|
313
|
-
}),
|
|
298
|
+
new Error('sync patching timeout'),
|
|
314
299
|
)
|
|
315
300
|
resolve(null)
|
|
316
|
-
},
|
|
301
|
+
}, timeout)
|
|
317
302
|
}),
|
|
318
303
|
signalPromise,
|
|
319
304
|
]).finally(() => {
|
|
@@ -325,10 +310,6 @@ class RecordHandler {
|
|
|
325
310
|
let updatingTimeout
|
|
326
311
|
const updating = [...this._updating.values()]
|
|
327
312
|
|
|
328
|
-
sync.status = 'updating'
|
|
329
|
-
sync.data = updating
|
|
330
|
-
sync.timestamp = Date.now()
|
|
331
|
-
|
|
332
313
|
await Promise.race([
|
|
333
314
|
Promise.all(
|
|
334
315
|
updating.map((callbacks) => new Promise((resolve) => callbacks.push(resolve))),
|
|
@@ -338,12 +319,10 @@ class RecordHandler {
|
|
|
338
319
|
this._client._$onError(
|
|
339
320
|
C.TOPIC.RECORD,
|
|
340
321
|
C.EVENT.TIMEOUT,
|
|
341
|
-
|
|
342
|
-
data: sync,
|
|
343
|
-
}),
|
|
322
|
+
new Error('sync updating timeout'),
|
|
344
323
|
)
|
|
345
324
|
resolve(null)
|
|
346
|
-
},
|
|
325
|
+
}, timeout)
|
|
347
326
|
}),
|
|
348
327
|
signalPromise,
|
|
349
328
|
]).finally(() => {
|
|
@@ -354,12 +333,8 @@ class RecordHandler {
|
|
|
354
333
|
let serverTimeout
|
|
355
334
|
const token = xuid()
|
|
356
335
|
|
|
357
|
-
sync.status = 'token'
|
|
358
|
-
sync.data = token
|
|
359
|
-
sync.timestamp = Date.now()
|
|
360
|
-
|
|
361
336
|
return await Promise.race([
|
|
362
|
-
|
|
337
|
+
new Promise((resolve) => {
|
|
363
338
|
this._syncEmitter.once(token, resolve)
|
|
364
339
|
this._connection.sendMsg(C.TOPIC.RECORD, C.ACTIONS.SYNC, [token])
|
|
365
340
|
}),
|
|
@@ -368,18 +343,16 @@ class RecordHandler {
|
|
|
368
343
|
this._client._$onError(
|
|
369
344
|
C.TOPIC.RECORD,
|
|
370
345
|
C.EVENT.TIMEOUT,
|
|
371
|
-
|
|
346
|
+
new Error('sync server timeout'),
|
|
372
347
|
)
|
|
373
348
|
resolve(null)
|
|
374
|
-
},
|
|
349
|
+
}, timeout)
|
|
375
350
|
}),
|
|
376
351
|
signalPromise,
|
|
377
352
|
]).finally(() => {
|
|
378
353
|
timers.clearTimeout(serverTimeout)
|
|
379
354
|
})
|
|
380
355
|
} finally {
|
|
381
|
-
this._syncing.delete(sync)
|
|
382
|
-
|
|
383
356
|
if (onAbort) {
|
|
384
357
|
signal?.removeEventListener('abort', onAbort)
|
|
385
358
|
}
|
package/src/rpc/rpc-handler.d.ts
CHANGED
|
@@ -14,12 +14,23 @@ export default class RpcHandler<Methods extends Record<string, RpcMethodDef>> {
|
|
|
14
14
|
unprovide: <Name extends keyof Methods>(name: Name) => void
|
|
15
15
|
|
|
16
16
|
make: {
|
|
17
|
-
<
|
|
17
|
+
<
|
|
18
|
+
Name extends keyof Methods | string,
|
|
19
|
+
Args extends Name extends keyof Methods ? Methods[Name][0] : unknown,
|
|
20
|
+
ReturnValue extends Name extends keyof Methods ? Methods[Name][1] : unknown,
|
|
21
|
+
>(
|
|
18
22
|
name: Name,
|
|
19
|
-
args:
|
|
20
|
-
|
|
23
|
+
args: Args,
|
|
24
|
+
): Promise<ReturnValue>
|
|
25
|
+
<
|
|
26
|
+
Name extends keyof Methods | string,
|
|
27
|
+
Args extends Name extends keyof Methods ? Methods[Name][0] : unknown,
|
|
28
|
+
ReturnValue extends Name extends keyof Methods ? Methods[Name][1] : unknown,
|
|
29
|
+
>(
|
|
30
|
+
name: Name,
|
|
31
|
+
args: Args,
|
|
32
|
+
callback: (error: unknown, response: ReturnValue) => void,
|
|
21
33
|
): void
|
|
22
|
-
<Name extends keyof Methods>(name: Name, args: Methods[Name][0]): Promise<Methods[Name][1]>
|
|
23
34
|
}
|
|
24
35
|
}
|
|
25
36
|
|
|
@@ -4,14 +4,12 @@ import { h64ToString, findBigIntPaths } from '../utils/utils.js'
|
|
|
4
4
|
|
|
5
5
|
const PIPE = rxjs.pipe(
|
|
6
6
|
rxjs.map((value) => {
|
|
7
|
-
if (value
|
|
8
|
-
return null
|
|
9
|
-
} else if (typeof value === 'string') {
|
|
7
|
+
if (typeof value === 'string') {
|
|
10
8
|
if (value.charAt(0) !== '{' && value.charAt(0) !== '[') {
|
|
11
9
|
throw new Error(`invalid value: ${value}`)
|
|
12
10
|
}
|
|
13
11
|
return value
|
|
14
|
-
} else if (typeof value === 'object') {
|
|
12
|
+
} else if (value != null && typeof value === 'object') {
|
|
15
13
|
try {
|
|
16
14
|
return JSON.stringify(value)
|
|
17
15
|
} catch (err) {
|
|
@@ -78,24 +76,18 @@ export default class Listener {
|
|
|
78
76
|
if (value$) {
|
|
79
77
|
const subscription = value$.pipe(PIPE).subscribe({
|
|
80
78
|
next: (data) => {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
this._connection.sendMsg(this._topic, C.ACTIONS.UPDATE, [name, version, data])
|
|
84
|
-
} else {
|
|
85
|
-
this._connection.sendMsg(this._topic, C.ACTIONS.LISTEN_REJECT, [this._pattern, name])
|
|
86
|
-
}
|
|
79
|
+
const version = `INF-${h64ToString(data)}`
|
|
80
|
+
this._connection.sendMsg(this._topic, C.ACTIONS.UPDATE, [name, version, data])
|
|
87
81
|
},
|
|
88
82
|
error: (err) => {
|
|
89
83
|
this._error(name, err)
|
|
84
|
+
|
|
85
|
+
this._subscriptions.delete(name)
|
|
90
86
|
this._connection.sendMsg(this._topic, C.ACTIONS.LISTEN_REJECT, [this._pattern, name])
|
|
91
87
|
},
|
|
92
88
|
})
|
|
93
89
|
|
|
94
90
|
this._subscriptions.set(name, subscription)
|
|
95
|
-
|
|
96
|
-
subscription.add(() => {
|
|
97
|
-
this._subscriptions.delete(name)
|
|
98
|
-
})
|
|
99
91
|
} else {
|
|
100
92
|
this._connection.sendMsg(this._topic, C.ACTIONS.LISTEN_REJECT, [this._pattern, name])
|
|
101
93
|
}
|