@nanolink/mirrors 1.0.8 → 1.0.11
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/DelegateMap.js +42 -37
- package/dist/DelegateMap.js.map +1 -1
- package/dist/MirrorSync.js +162 -110
- package/dist/MirrorSync.js.map +1 -1
- package/dist/SubscriptionClient.js +176 -109
- package/dist/SubscriptionClient.js.map +1 -1
- package/dist/index.js +115 -45
- package/dist/index.js.map +1 -1
- package/dist-compat/index.js +730 -13
- package/dist-compat/index.js.map +1 -1
- package/package.json +34 -10
package/dist/DelegateMap.js
CHANGED
|
@@ -1,59 +1,64 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.DelegatingObject = exports.DelegatingMap = void 0;
|
|
4
|
-
class DelegatingMap {
|
|
5
|
-
constructor(resolver) {
|
|
1
|
+
var DelegatingMap = /** @class */ (function () {
|
|
2
|
+
function DelegatingMap(resolver) {
|
|
6
3
|
this.resolver = resolver;
|
|
7
4
|
}
|
|
8
|
-
t() { return this.resolver(); }
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
5
|
+
DelegatingMap.prototype.t = function () { return this.resolver(); };
|
|
6
|
+
Object.defineProperty(DelegatingMap.prototype, "size", {
|
|
7
|
+
get: function () { return this.t().size; },
|
|
8
|
+
enumerable: false,
|
|
9
|
+
configurable: true
|
|
10
|
+
});
|
|
11
|
+
DelegatingMap.prototype.get = function (key) { return this.t().get(key); };
|
|
12
|
+
DelegatingMap.prototype.has = function (key) { return this.t().has(key); };
|
|
13
|
+
DelegatingMap.prototype.entries = function () { return this.t().entries(); };
|
|
14
|
+
DelegatingMap.prototype.keys = function () { return this.t().keys(); };
|
|
15
|
+
DelegatingMap.prototype.values = function () { return this.t().values(); };
|
|
16
|
+
DelegatingMap.prototype.forEach = function (callbackfn, thisArg) {
|
|
17
|
+
var _this = this;
|
|
18
|
+
this.t().forEach((function (v, k) { return callbackfn(v, k, _this); }), thisArg);
|
|
19
|
+
};
|
|
20
|
+
DelegatingMap.prototype[Symbol.iterator] = function () { return this.t()[Symbol.iterator](); };
|
|
21
|
+
return DelegatingMap;
|
|
22
|
+
}());
|
|
23
|
+
export { DelegatingMap };
|
|
21
24
|
/**
|
|
22
25
|
* Presents a ReadonlyMapView<K,V> as an immutable plain object via Proxy.
|
|
23
26
|
* Optionally maps values through a mapper function on access.
|
|
24
27
|
*/
|
|
25
|
-
|
|
26
|
-
|
|
28
|
+
var DelegatingObject = /** @class */ (function () {
|
|
29
|
+
function DelegatingObject(source, mapFn) {
|
|
30
|
+
var _this = this;
|
|
27
31
|
this.source = source;
|
|
28
32
|
this.mapFn = mapFn;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
get: (_target, prop, receiver)
|
|
33
|
+
var mapper = function (v, k) { return (_this.mapFn ? _this.mapFn(v, k) : v); };
|
|
34
|
+
var handler = {
|
|
35
|
+
get: function (_target, prop, receiver) {
|
|
32
36
|
if (prop === Symbol.toStringTag)
|
|
33
37
|
return 'Object';
|
|
34
38
|
if (typeof prop !== 'string')
|
|
35
39
|
return Reflect.get(Object.prototype, prop, receiver);
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
var key = prop;
|
|
41
|
+
var v = _this.source.get(key);
|
|
38
42
|
return v === undefined ? undefined : mapper(v, key);
|
|
39
43
|
},
|
|
40
|
-
set: ()
|
|
41
|
-
has: (_target, prop)
|
|
42
|
-
deleteProperty: ()
|
|
43
|
-
ownKeys: ()
|
|
44
|
-
getOwnPropertyDescriptor: (_target, prop)
|
|
45
|
-
if (typeof prop === 'string' &&
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
set: function () { return false; }, // immutable
|
|
45
|
+
has: function (_target, prop) { return typeof prop === 'string' && _this.source.has(prop); },
|
|
46
|
+
deleteProperty: function () { return false; }, // immutable
|
|
47
|
+
ownKeys: function () { return Array.from(_this.source.keys()); },
|
|
48
|
+
getOwnPropertyDescriptor: function (_target, prop) {
|
|
49
|
+
if (typeof prop === 'string' && _this.source.has(prop)) {
|
|
50
|
+
var key = prop;
|
|
51
|
+
var v = _this.source.get(key);
|
|
48
52
|
return { configurable: true, enumerable: true, value: mapper(v, key) };
|
|
49
53
|
}
|
|
50
54
|
return undefined;
|
|
51
55
|
},
|
|
52
|
-
defineProperty: ()
|
|
56
|
+
defineProperty: function () { return false; }, // immutable
|
|
53
57
|
};
|
|
54
58
|
this.proxy = new Proxy(Object.create(null), handler);
|
|
55
59
|
}
|
|
56
|
-
asObject() { return this.proxy; }
|
|
57
|
-
|
|
58
|
-
|
|
60
|
+
DelegatingObject.prototype.asObject = function () { return this.proxy; };
|
|
61
|
+
return DelegatingObject;
|
|
62
|
+
}());
|
|
63
|
+
export { DelegatingObject };
|
|
59
64
|
//# sourceMappingURL=DelegateMap.js.map
|
package/dist/DelegateMap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DelegateMap.js","sourceRoot":"","sources":["../src/DelegateMap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DelegateMap.js","sourceRoot":"","sources":["../src/DelegateMap.ts"],"names":[],"mappings":"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"}
|
package/dist/MirrorSync.js
CHANGED
|
@@ -1,58 +1,96 @@
|
|
|
1
|
-
|
|
2
|
-
var
|
|
3
|
-
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
if (typeof b !== "function" && b !== null)
|
|
10
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
11
|
+
extendStatics(d, b);
|
|
12
|
+
function __() { this.constructor = d; }
|
|
13
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
14
|
+
};
|
|
15
|
+
})();
|
|
16
|
+
var __assign = (this && this.__assign) || function () {
|
|
17
|
+
__assign = Object.assign || function(t) {
|
|
18
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
19
|
+
s = arguments[i];
|
|
20
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
21
|
+
t[p] = s[p];
|
|
22
|
+
}
|
|
23
|
+
return t;
|
|
24
|
+
};
|
|
25
|
+
return __assign.apply(this, arguments);
|
|
26
|
+
};
|
|
27
|
+
var __values = (this && this.__values) || function(o) {
|
|
28
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
29
|
+
if (m) return m.call(o);
|
|
30
|
+
if (o && typeof o.length === "number") return {
|
|
31
|
+
next: function () {
|
|
32
|
+
if (o && i >= o.length) o = void 0;
|
|
33
|
+
return { value: o && o[i++], done: !o };
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
4
37
|
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const DelegateMap_1 = require("./DelegateMap");
|
|
8
|
-
const eventemitter3_1 = __importDefault(require("eventemitter3"));
|
|
38
|
+
import { DelegatingMap } from './DelegateMap';
|
|
39
|
+
import EventEmitter from 'eventemitter3';
|
|
9
40
|
// SyncType enum as described
|
|
10
|
-
var SyncType;
|
|
41
|
+
export var SyncType;
|
|
11
42
|
(function (SyncType) {
|
|
12
43
|
SyncType["DELETED"] = "DELETED";
|
|
13
44
|
SyncType["UPDATED"] = "UPDATED";
|
|
14
45
|
SyncType["START"] = "START";
|
|
15
46
|
SyncType["DONE"] = "DONE";
|
|
16
47
|
SyncType["VERSION_ERROR"] = "VERSION_ERROR";
|
|
17
|
-
})(SyncType || (
|
|
48
|
+
})(SyncType || (SyncType = {}));
|
|
18
49
|
/**
|
|
19
50
|
* MirrorSync maintains an in-memory mirror of server state based on CacheSyncResult messages.
|
|
20
51
|
* Generic TBase is the item shape (must include id & version).
|
|
21
52
|
*/
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
53
|
+
var MirrorSync = /** @class */ (function (_super) {
|
|
54
|
+
__extends(MirrorSync, _super);
|
|
55
|
+
function MirrorSync(client, options) {
|
|
56
|
+
var _this = _super.call(this) || this;
|
|
57
|
+
_this.mirror = new Map();
|
|
58
|
+
_this.buffer = null; // used during full/resubscription phase
|
|
59
|
+
_this.currentVersion = -1; // numeric cursor (-1 => full sync needed)
|
|
60
|
+
_this.currentOpVersion = null; // op cursor (null => full sync needed)
|
|
61
|
+
_this.unsub = null;
|
|
62
|
+
_this.fullSyncPhase = false; // only true during START..DONE when initiating from version -1
|
|
63
|
+
_this.dmap = new DelegatingMap(function () { return _this.mirror; });
|
|
64
|
+
_this.client = client;
|
|
65
|
+
_this.options = options;
|
|
66
|
+
_this.log = options.log;
|
|
67
|
+
_this.attachClientEvents();
|
|
68
|
+
_this.resetLoaded();
|
|
69
|
+
return _this;
|
|
38
70
|
}
|
|
39
|
-
|
|
40
|
-
this.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
71
|
+
Object.defineProperty(MirrorSync.prototype, "Storage", {
|
|
72
|
+
get: function () { return this.mirror; },
|
|
73
|
+
enumerable: false,
|
|
74
|
+
configurable: true
|
|
75
|
+
});
|
|
76
|
+
MirrorSync.prototype.l = function (msg, meta) { if (this.log)
|
|
77
|
+
this.log(msg, meta); };
|
|
78
|
+
MirrorSync.prototype.attachClientEvents = function () {
|
|
79
|
+
var _this = this;
|
|
80
|
+
this.onReconnected = function () {
|
|
81
|
+
_this.emit('resubscribe', { fromVersion: _this.currentVersion });
|
|
82
|
+
_this.resubscribe();
|
|
45
83
|
};
|
|
46
|
-
this.onConnected = ()
|
|
47
|
-
if ((
|
|
48
|
-
|
|
49
|
-
|
|
84
|
+
this.onConnected = function () {
|
|
85
|
+
if ((_this.currentVersion === -1 || _this.currentOpVersion === null) && !_this.unsub) {
|
|
86
|
+
_this.l('initial connected subscribe', { version: _this.currentVersion, opVersion: _this.currentOpVersion });
|
|
87
|
+
_this.subscribe(_this.currentVersion, _this.currentOpVersion);
|
|
50
88
|
}
|
|
51
89
|
};
|
|
52
90
|
this.client.on('reconnected', this.onReconnected);
|
|
53
91
|
this.client.on('connected', this.onConnected);
|
|
54
|
-
}
|
|
55
|
-
detachClientEvents() {
|
|
92
|
+
};
|
|
93
|
+
MirrorSync.prototype.detachClientEvents = function () {
|
|
56
94
|
if (this.onReconnected) {
|
|
57
95
|
this.client.off('reconnected', this.onReconnected);
|
|
58
96
|
this.onReconnected = undefined;
|
|
@@ -61,75 +99,77 @@ class MirrorSync extends eventemitter3_1.default {
|
|
|
61
99
|
this.client.off('connected', this.onConnected);
|
|
62
100
|
this.onConnected = undefined;
|
|
63
101
|
}
|
|
64
|
-
}
|
|
65
|
-
needsFullSync() { return this.currentVersion === -1 || this.currentOpVersion === null; }
|
|
66
|
-
targetMap() { return (this.fullSyncPhase && this.buffer) ? this.buffer : this.mirror; }
|
|
67
|
-
advanceNumeric(v) { if (typeof v === 'number' && v > this.currentVersion)
|
|
68
|
-
this.currentVersion = v; }
|
|
69
|
-
advanceOp(v) { if (v && (!this.currentOpVersion || v > this.currentOpVersion))
|
|
70
|
-
this.currentOpVersion = v; }
|
|
71
|
-
subscribe(version, opVersion) {
|
|
102
|
+
};
|
|
103
|
+
MirrorSync.prototype.needsFullSync = function () { return this.currentVersion === -1 || this.currentOpVersion === null; };
|
|
104
|
+
MirrorSync.prototype.targetMap = function () { return (this.fullSyncPhase && this.buffer) ? this.buffer : this.mirror; };
|
|
105
|
+
MirrorSync.prototype.advanceNumeric = function (v) { if (typeof v === 'number' && v > this.currentVersion)
|
|
106
|
+
this.currentVersion = v; };
|
|
107
|
+
MirrorSync.prototype.advanceOp = function (v) { if (v && (!this.currentOpVersion || v > this.currentOpVersion))
|
|
108
|
+
this.currentOpVersion = v; };
|
|
109
|
+
MirrorSync.prototype.subscribe = function (version, opVersion) {
|
|
110
|
+
var _this = this;
|
|
72
111
|
if (!this.client)
|
|
73
112
|
throw new Error('SubscriptionClient missing');
|
|
74
113
|
if (this.unsub) {
|
|
75
114
|
this.unsub();
|
|
76
115
|
this.unsub = null;
|
|
77
116
|
}
|
|
78
|
-
|
|
79
|
-
this.l('subscribe', { version, opVersion });
|
|
80
|
-
this.unsub = this.client.subscribe({ query: this.options.subscription, variables }, {
|
|
81
|
-
next: (envelope)
|
|
117
|
+
var variables = __assign({ version: version, opVersion: opVersion }, (this.options.baseVariables || {}));
|
|
118
|
+
this.l('subscribe', { version: version, opVersion: opVersion });
|
|
119
|
+
this.unsub = this.client.subscribe({ query: this.options.subscription, variables: variables }, {
|
|
120
|
+
next: function (envelope) {
|
|
82
121
|
if (envelope.errors) {
|
|
83
|
-
|
|
84
|
-
|
|
122
|
+
_this.l('graphql errors', envelope.errors);
|
|
123
|
+
_this.emit('error', envelope.errors);
|
|
85
124
|
}
|
|
86
|
-
|
|
125
|
+
var payload = envelope.data;
|
|
87
126
|
if (payload)
|
|
88
|
-
|
|
127
|
+
_this.handlePayload(payload);
|
|
89
128
|
},
|
|
90
|
-
error: (err)
|
|
91
|
-
complete: ()
|
|
129
|
+
error: function (err) { return _this.l('subscription error', err); },
|
|
130
|
+
complete: function () { return _this.l('subscription complete'); },
|
|
92
131
|
});
|
|
93
|
-
}
|
|
94
|
-
resubscribe() {
|
|
132
|
+
};
|
|
133
|
+
MirrorSync.prototype.resubscribe = function () {
|
|
95
134
|
// Resubscribe starting from current cursors
|
|
96
135
|
this.subscribe(this.currentVersion, this.currentOpVersion);
|
|
97
|
-
}
|
|
98
|
-
start() {
|
|
136
|
+
};
|
|
137
|
+
MirrorSync.prototype.start = function () {
|
|
99
138
|
if (!this.client.isConnected()) {
|
|
100
139
|
this.l('start deferred (not connected)');
|
|
101
140
|
return;
|
|
102
141
|
}
|
|
103
142
|
this.subscribe(this.currentVersion, this.currentOpVersion);
|
|
104
|
-
}
|
|
105
|
-
load() {
|
|
143
|
+
};
|
|
144
|
+
MirrorSync.prototype.load = function () {
|
|
106
145
|
if (!this.unsub)
|
|
107
146
|
this.start();
|
|
108
147
|
return this.loaded;
|
|
109
|
-
}
|
|
110
|
-
resetLoaded() {
|
|
111
|
-
|
|
112
|
-
|
|
148
|
+
};
|
|
149
|
+
MirrorSync.prototype.resetLoaded = function () {
|
|
150
|
+
var _this = this;
|
|
151
|
+
this.loaded = new Promise(function (resolve) {
|
|
152
|
+
_this.resolveLoaded = resolve;
|
|
113
153
|
});
|
|
114
|
-
}
|
|
115
|
-
handlePayload(raw) {
|
|
154
|
+
};
|
|
155
|
+
MirrorSync.prototype.handlePayload = function (raw) {
|
|
116
156
|
if (!raw)
|
|
117
157
|
return;
|
|
118
158
|
// Always pick the first field in the payload object regardless of configured rootField
|
|
119
|
-
|
|
159
|
+
var firstKey = Object.keys(raw)[0];
|
|
120
160
|
if (!firstKey)
|
|
121
161
|
return;
|
|
122
|
-
|
|
162
|
+
var msg = raw[firstKey];
|
|
123
163
|
if (!msg)
|
|
124
164
|
return;
|
|
125
|
-
|
|
165
|
+
var type = msg.type;
|
|
126
166
|
switch (type) {
|
|
127
167
|
case SyncType.START: {
|
|
128
|
-
|
|
168
|
+
var isFull = this.needsFullSync();
|
|
129
169
|
this.fullSyncPhase = isFull;
|
|
130
170
|
// Only allocate a new buffer for a true full sync; for delta/resubscribe we append directly
|
|
131
171
|
this.buffer = isFull ? new Map() : null;
|
|
132
|
-
|
|
172
|
+
var payload = { full: isFull };
|
|
133
173
|
this.emit('start', payload);
|
|
134
174
|
break;
|
|
135
175
|
}
|
|
@@ -140,24 +180,24 @@ class MirrorSync extends eventemitter3_1.default {
|
|
|
140
180
|
this.applyDeleted(msg.deleteId, msg.deleteVersion, msg.deleteOpVersion);
|
|
141
181
|
break;
|
|
142
182
|
case SyncType.DONE: {
|
|
143
|
-
|
|
183
|
+
var wasFull = this.fullSyncPhase;
|
|
144
184
|
if (wasFull && this.buffer) {
|
|
145
185
|
this.mirror = this.buffer;
|
|
146
186
|
this.buffer = null;
|
|
147
187
|
}
|
|
148
188
|
this.fullSyncPhase = false;
|
|
149
|
-
|
|
189
|
+
var d = { full: wasFull };
|
|
150
190
|
this.emit('done', d);
|
|
151
191
|
// Resolve deferred if pending
|
|
152
192
|
if (this.resolveLoaded) {
|
|
153
|
-
|
|
193
|
+
var r = this.resolveLoaded;
|
|
154
194
|
this.resolveLoaded = undefined;
|
|
155
195
|
r(this.dmap);
|
|
156
196
|
}
|
|
157
197
|
break;
|
|
158
198
|
}
|
|
159
199
|
case SyncType.VERSION_ERROR:
|
|
160
|
-
|
|
200
|
+
var ve = { currentVersion: this.currentVersion };
|
|
161
201
|
this.emit('versionError', ve);
|
|
162
202
|
// restart as full sync
|
|
163
203
|
this.currentVersion = -1;
|
|
@@ -167,53 +207,64 @@ class MirrorSync extends eventemitter3_1.default {
|
|
|
167
207
|
this.subscribe(this.currentVersion, this.currentOpVersion);
|
|
168
208
|
break;
|
|
169
209
|
}
|
|
170
|
-
}
|
|
171
|
-
normalizeItems(data) {
|
|
210
|
+
};
|
|
211
|
+
MirrorSync.prototype.normalizeItems = function (data) {
|
|
172
212
|
if (!data)
|
|
173
213
|
return [];
|
|
174
214
|
return Array.isArray(data) ? data : [data];
|
|
175
|
-
}
|
|
176
|
-
applyUpdated(data, isFullPhase) {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
215
|
+
};
|
|
216
|
+
MirrorSync.prototype.applyUpdated = function (data, isFullPhase) {
|
|
217
|
+
var e_1, _a;
|
|
218
|
+
try {
|
|
219
|
+
for (var _b = __values(this.normalizeItems(data)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
220
|
+
var item = _c.value;
|
|
221
|
+
if (!item || typeof item.id !== 'string')
|
|
222
|
+
continue;
|
|
223
|
+
var hasNumeric = typeof item.version === 'number';
|
|
224
|
+
var hasOp = typeof item.opVersion === 'string';
|
|
225
|
+
if (!hasNumeric && !hasOp)
|
|
226
|
+
continue;
|
|
227
|
+
var existing = this.targetMap().get(item.id);
|
|
228
|
+
var newerNumeric = hasNumeric && (!(existing === null || existing === void 0 ? void 0 : existing.version) || item.version >= existing.version);
|
|
229
|
+
var newerOp = hasOp && (!(existing === null || existing === void 0 ? void 0 : existing.opVersion) || item.opVersion >= existing.opVersion);
|
|
230
|
+
if (!existing || newerNumeric || newerOp) {
|
|
231
|
+
this.targetMap().set(item.id, item);
|
|
232
|
+
this.advanceNumeric(item.version);
|
|
233
|
+
this.advanceOp(item.opVersion);
|
|
234
|
+
this.emit('updated', item, isFullPhase);
|
|
235
|
+
}
|
|
192
236
|
}
|
|
193
237
|
}
|
|
194
|
-
|
|
195
|
-
|
|
238
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
239
|
+
finally {
|
|
240
|
+
try {
|
|
241
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
242
|
+
}
|
|
243
|
+
finally { if (e_1) throw e_1.error; }
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
MirrorSync.prototype.applyDeleted = function (id, deleteVersion, deleteOpVersion) {
|
|
196
247
|
var _a;
|
|
197
248
|
if (!id)
|
|
198
249
|
return;
|
|
199
|
-
|
|
200
|
-
|
|
250
|
+
var numericStale = !this.fullSyncPhase && typeof deleteVersion === 'number' && this.currentVersion >= 0 && deleteVersion < this.currentVersion;
|
|
251
|
+
var opStale = !this.fullSyncPhase && deleteOpVersion && this.currentOpVersion && deleteOpVersion < this.currentOpVersion;
|
|
201
252
|
if (numericStale && opStale) {
|
|
202
|
-
(_a = this.l) === null || _a === void 0 ? void 0 : _a.call(this, 'skip stale delete', { id, deleteVersion, deleteOpVersion });
|
|
253
|
+
(_a = this.l) === null || _a === void 0 ? void 0 : _a.call(this, 'skip stale delete', { id: id, deleteVersion: deleteVersion, deleteOpVersion: deleteOpVersion });
|
|
203
254
|
return;
|
|
204
255
|
}
|
|
205
256
|
this.targetMap().delete(id);
|
|
206
257
|
this.advanceNumeric(deleteVersion);
|
|
207
258
|
this.advanceOp(deleteOpVersion);
|
|
208
|
-
|
|
259
|
+
var del = { id: id, version: deleteVersion };
|
|
209
260
|
if (deleteOpVersion)
|
|
210
261
|
del.opVersion = deleteOpVersion;
|
|
211
262
|
this.emit('deleted', del);
|
|
212
|
-
}
|
|
213
|
-
get(id) { return this.mirror.get(id); }
|
|
214
|
-
values() { return Array.from(this.mirror.values()); }
|
|
215
|
-
stats() { return { version: this.currentVersion, opVersion: this.currentOpVersion, size: this.mirror.size, fullSyncInProgress: this.fullSyncPhase }; }
|
|
216
|
-
stop() {
|
|
263
|
+
};
|
|
264
|
+
MirrorSync.prototype.get = function (id) { return this.mirror.get(id); };
|
|
265
|
+
MirrorSync.prototype.values = function () { return Array.from(this.mirror.values()); };
|
|
266
|
+
MirrorSync.prototype.stats = function () { return { version: this.currentVersion, opVersion: this.currentOpVersion, size: this.mirror.size, fullSyncInProgress: this.fullSyncPhase }; };
|
|
267
|
+
MirrorSync.prototype.stop = function () {
|
|
217
268
|
if (this.unsub) {
|
|
218
269
|
this.unsub();
|
|
219
270
|
this.unsub = null;
|
|
@@ -223,12 +274,13 @@ class MirrorSync extends eventemitter3_1.default {
|
|
|
223
274
|
this.currentOpVersion = null;
|
|
224
275
|
this.buffer = null;
|
|
225
276
|
if (this.resolveLoaded) {
|
|
226
|
-
|
|
277
|
+
var r = this.resolveLoaded;
|
|
227
278
|
this.resolveLoaded = undefined;
|
|
228
279
|
r(this.dmap);
|
|
229
280
|
}
|
|
230
281
|
this.resetLoaded();
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
|
|
282
|
+
};
|
|
283
|
+
return MirrorSync;
|
|
284
|
+
}(EventEmitter));
|
|
285
|
+
export { MirrorSync };
|
|
234
286
|
//# sourceMappingURL=MirrorSync.js.map
|
package/dist/MirrorSync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MirrorSync.js","sourceRoot":"","sources":["../src/MirrorSync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MirrorSync.js","sourceRoot":"","sources":["../src/MirrorSync.ts"],"names":[],"mappings":"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"}
|