@nymphjs/client 1.0.0-beta.13 → 1.0.0-beta.130
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/CHANGELOG.md +546 -0
- package/README.md +12 -8
- package/asyncitertest.js +53 -0
- package/dist/Entity.d.ts +156 -0
- package/{lib → dist}/Entity.js +244 -118
- package/dist/Entity.js.map +1 -0
- package/dist/Entity.types.d.ts +216 -0
- package/dist/Entity.types.js +2 -0
- package/{lib → dist}/EntityWeakCache.d.ts +1 -1
- package/{lib → dist}/EntityWeakCache.js +5 -9
- package/dist/EntityWeakCache.js.map +1 -0
- package/{lib → dist}/HttpRequester.d.ts +18 -4
- package/dist/HttpRequester.js +365 -0
- package/dist/HttpRequester.js.map +1 -0
- package/{lib → dist}/Nymph.d.ts +48 -11
- package/{lib → dist}/Nymph.js +172 -56
- package/dist/Nymph.js.map +1 -0
- package/dist/Nymph.types.d.ts +227 -0
- package/dist/Nymph.types.js +45 -0
- package/dist/Nymph.types.js.map +1 -0
- package/{lib → dist}/PubSub.d.ts +16 -10
- package/{lib → dist}/PubSub.js +207 -135
- package/dist/PubSub.js.map +1 -0
- package/{lib → dist}/PubSub.types.d.ts +19 -6
- package/dist/PubSub.types.js +2 -0
- package/{lib → dist}/entityRefresh.d.ts +1 -1
- package/{lib → dist}/entityRefresh.js +21 -13
- package/dist/entityRefresh.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +13 -2
- package/dist/index.js.map +1 -1
- package/{lib → dist}/utils.d.ts +2 -1
- package/dist/utils.js +145 -0
- package/dist/utils.js.map +1 -0
- package/jest.config.js +31 -5
- package/package.json +36 -32
- package/src/Entity.ts +229 -129
- package/src/Entity.types.ts +37 -57
- package/src/EntityWeakCache.ts +8 -6
- package/src/HttpRequester.ts +268 -31
- package/src/Nymph.ts +203 -96
- package/src/Nymph.types.ts +98 -2
- package/src/PubSub.ts +264 -181
- package/src/PubSub.types.ts +33 -19
- package/src/entityRefresh.ts +6 -6
- package/src/index.ts +10 -10
- package/src/utils.ts +67 -14
- package/tsconfig.json +7 -4
- package/typedoc.json +4 -0
- package/dist/index.js.LICENSE.txt +0 -8
- package/lib/Entity.d.ts +0 -51
- package/lib/Entity.js.map +0 -1
- package/lib/Entity.types.d.ts +0 -65
- package/lib/Entity.types.js +0 -3
- package/lib/EntityWeakCache.js.map +0 -1
- package/lib/HttpRequester.js +0 -190
- package/lib/HttpRequester.js.map +0 -1
- package/lib/Nymph.js.map +0 -1
- package/lib/Nymph.types.d.ts +0 -98
- package/lib/Nymph.types.js +0 -3
- package/lib/Nymph.types.js.map +0 -1
- package/lib/PubSub.js.map +0 -1
- package/lib/PubSub.types.js +0 -3
- package/lib/entityRefresh.js.map +0 -1
- package/lib/index.d.ts +0 -13
- package/lib/index.js +0 -34
- package/lib/index.js.map +0 -1
- package/lib/utils.js +0 -86
- package/lib/utils.js.map +0 -1
- package/webpack.config.js +0 -28
- /package/{lib → dist}/Entity.types.js.map +0 -0
- /package/{lib → dist}/PubSub.types.js.map +0 -0
package/{lib → dist}/Entity.js
RENAMED
|
@@ -1,21 +1,73 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
import { difference, isEqual } from 'lodash-es';
|
|
2
|
+
import { uniqueStrings, entitiesToReferences, referencesToEntities, sortObj, entityConstructorsToClassNames, classNamesToEntityConstructors, } from './utils.js';
|
|
3
|
+
export default class Entity {
|
|
4
|
+
/**
|
|
5
|
+
* The instance of Nymph to use for queries.
|
|
6
|
+
*/
|
|
7
|
+
static nymph = {};
|
|
8
|
+
/**
|
|
9
|
+
* The lookup name for this entity.
|
|
10
|
+
*
|
|
11
|
+
* This is used for reference arrays (and sleeping references) and server
|
|
12
|
+
* requests.
|
|
13
|
+
*/
|
|
14
|
+
static class = 'Entity';
|
|
15
|
+
/**
|
|
16
|
+
* The instance of Nymph to use for queries.
|
|
17
|
+
*/
|
|
18
|
+
$nymph;
|
|
19
|
+
/**
|
|
20
|
+
* The entity's Globally Unique ID.
|
|
21
|
+
*/
|
|
22
|
+
guid = null;
|
|
23
|
+
/**
|
|
24
|
+
* The creation date of the entity as a high precision Unix timestamp.
|
|
25
|
+
*/
|
|
26
|
+
cdate = null;
|
|
27
|
+
/**
|
|
28
|
+
* The modified date of the entity as a high precision Unix timestamp.
|
|
29
|
+
*/
|
|
30
|
+
mdate = null;
|
|
31
|
+
/**
|
|
32
|
+
* Array of the entity's tags.
|
|
33
|
+
*/
|
|
34
|
+
tags = [];
|
|
35
|
+
/**
|
|
36
|
+
* Array of the entity's original tags (for patch).
|
|
37
|
+
*/
|
|
38
|
+
$originalTags = [];
|
|
39
|
+
/**
|
|
40
|
+
* A map of props to whether they're dirty (for patch).
|
|
41
|
+
*/
|
|
42
|
+
$dirty = {};
|
|
43
|
+
/**
|
|
44
|
+
* The data proxy handler.
|
|
45
|
+
*/
|
|
46
|
+
$dataHandler;
|
|
47
|
+
/**
|
|
48
|
+
* The actual data store.
|
|
49
|
+
*/
|
|
50
|
+
$dataStore;
|
|
51
|
+
/**
|
|
52
|
+
* The data proxy object.
|
|
53
|
+
*/
|
|
54
|
+
$data;
|
|
55
|
+
/**
|
|
56
|
+
* Whether this instance is a sleeping reference.
|
|
57
|
+
*/
|
|
58
|
+
$isASleepingReference = false;
|
|
59
|
+
/**
|
|
60
|
+
* The reference to use to wake.
|
|
61
|
+
*/
|
|
62
|
+
$sleepingReference = null;
|
|
63
|
+
/**
|
|
64
|
+
* A promise that resolved when the entity's data is wake.
|
|
65
|
+
*/
|
|
66
|
+
$wakePromise = null;
|
|
67
|
+
/**
|
|
68
|
+
* Initialize an entity.
|
|
69
|
+
*/
|
|
70
|
+
constructor(..._rest) {
|
|
19
71
|
this.$nymph = this.constructor.nymph;
|
|
20
72
|
this.$dataHandler = {
|
|
21
73
|
has: (data, name) => {
|
|
@@ -85,16 +137,6 @@ class Entity {
|
|
|
85
137
|
};
|
|
86
138
|
this.$dataStore = {};
|
|
87
139
|
this.$data = new Proxy(this.$dataStore, this.$dataHandler);
|
|
88
|
-
if (guid != null) {
|
|
89
|
-
this.guid = guid;
|
|
90
|
-
this.$isASleepingReference = true;
|
|
91
|
-
this.$sleepingReference = [
|
|
92
|
-
'nymph_entity_reference',
|
|
93
|
-
this.guid,
|
|
94
|
-
this.constructor.class,
|
|
95
|
-
];
|
|
96
|
-
this.$ready();
|
|
97
|
-
}
|
|
98
140
|
return new Proxy(this, {
|
|
99
141
|
has(entity, name) {
|
|
100
142
|
if (typeof name !== 'string' ||
|
|
@@ -164,36 +206,89 @@ class Entity {
|
|
|
164
206
|
},
|
|
165
207
|
});
|
|
166
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* Create or retrieve a new entity instance.
|
|
211
|
+
*
|
|
212
|
+
* Note that this will always return an entity, even if the GUID is not found.
|
|
213
|
+
*
|
|
214
|
+
* @param guid An optional GUID to retrieve.
|
|
215
|
+
*/
|
|
167
216
|
static async factory(guid) {
|
|
168
|
-
const cacheEntity = (guid
|
|
169
|
-
|
|
217
|
+
const cacheEntity = (guid
|
|
218
|
+
? this.nymph.getEntityFromCache(this, guid)
|
|
219
|
+
: null);
|
|
220
|
+
if (cacheEntity) {
|
|
221
|
+
return cacheEntity;
|
|
222
|
+
}
|
|
223
|
+
const entity = new this();
|
|
170
224
|
if (guid != null) {
|
|
171
|
-
|
|
225
|
+
entity.guid = guid;
|
|
226
|
+
entity.$isASleepingReference = true;
|
|
227
|
+
entity.$sleepingReference = [
|
|
228
|
+
'nymph_entity_reference',
|
|
229
|
+
guid,
|
|
230
|
+
this.class,
|
|
231
|
+
];
|
|
232
|
+
await entity.$wake();
|
|
172
233
|
}
|
|
173
234
|
return entity;
|
|
174
235
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
236
|
+
/**
|
|
237
|
+
* Create a new entity instance.
|
|
238
|
+
*/
|
|
239
|
+
static factorySync() {
|
|
240
|
+
return new this();
|
|
178
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* Create a new sleeping reference instance.
|
|
244
|
+
*
|
|
245
|
+
* Sleeping references won't retrieve their data from the server until they
|
|
246
|
+
* are readied with `$wake()` or a parent's `$wakeAll()`.
|
|
247
|
+
*
|
|
248
|
+
* @param reference The Nymph Entity Reference to use to wake.
|
|
249
|
+
* @returns The new instance.
|
|
250
|
+
*/
|
|
179
251
|
static factoryReference(reference) {
|
|
180
|
-
const cacheEntity = (reference[1]
|
|
252
|
+
const cacheEntity = (reference[1]
|
|
253
|
+
? this.nymph.getEntityFromCache(this, reference[1])
|
|
254
|
+
: null);
|
|
181
255
|
const entity = cacheEntity || new this();
|
|
182
256
|
if (!cacheEntity) {
|
|
183
257
|
entity.$referenceSleep(reference);
|
|
184
258
|
}
|
|
185
259
|
return entity;
|
|
186
260
|
}
|
|
261
|
+
/**
|
|
262
|
+
* Call a static method on the server version of this entity.
|
|
263
|
+
*
|
|
264
|
+
* @param method The name of the method.
|
|
265
|
+
* @param params The parameters to call the method with.
|
|
266
|
+
* @returns The value that the method on the server returned.
|
|
267
|
+
*/
|
|
187
268
|
static async serverCallStatic(method, params) {
|
|
188
|
-
const data = await this.nymph.serverCallStatic(this.class, method,
|
|
269
|
+
const data = await this.nymph.serverCallStatic(this.class, method,
|
|
270
|
+
// Turn the params into a real array, in case an arguments object was
|
|
271
|
+
// passed.
|
|
272
|
+
Array.prototype.slice.call(params));
|
|
189
273
|
return data.return;
|
|
190
274
|
}
|
|
275
|
+
/**
|
|
276
|
+
* Call a static iterator method on the server version of this entity.
|
|
277
|
+
*
|
|
278
|
+
* @param method The name of the method.
|
|
279
|
+
* @param params The parameters to call the method with.
|
|
280
|
+
* @returns An iterator that iterates over values that the method on the server yields.
|
|
281
|
+
*/
|
|
282
|
+
static async serverCallStaticIterator(method, params) {
|
|
283
|
+
return await this.nymph.serverCallStaticIterator(this.class, method,
|
|
284
|
+
// Turn the params into a real array, in case an arguments object was
|
|
285
|
+
// passed.
|
|
286
|
+
Array.prototype.slice.call(params));
|
|
287
|
+
}
|
|
191
288
|
toJSON() {
|
|
192
|
-
|
|
193
|
-
throw new EntityIsSleepingReferenceError(sleepErr);
|
|
194
|
-
}
|
|
289
|
+
this.$check();
|
|
195
290
|
const obj = {
|
|
196
|
-
class: this.constructor
|
|
291
|
+
class: entityConstructorsToClassNames(this.constructor),
|
|
197
292
|
guid: this.guid,
|
|
198
293
|
cdate: this.cdate,
|
|
199
294
|
mdate: this.mdate,
|
|
@@ -201,7 +296,7 @@ class Entity {
|
|
|
201
296
|
data: {},
|
|
202
297
|
};
|
|
203
298
|
for (let [key, value] of Object.entries(this.$dataStore)) {
|
|
204
|
-
obj.data[key] = (
|
|
299
|
+
obj.data[key] = entityConstructorsToClassNames(entitiesToReferences(value));
|
|
205
300
|
}
|
|
206
301
|
return obj;
|
|
207
302
|
}
|
|
@@ -220,7 +315,10 @@ class Entity {
|
|
|
220
315
|
this.$dataStore = Object.entries(entityJson.data)
|
|
221
316
|
.map(([key, value]) => {
|
|
222
317
|
this.$dirty[key] = false;
|
|
223
|
-
return {
|
|
318
|
+
return {
|
|
319
|
+
key,
|
|
320
|
+
value: classNamesToEntityConstructors(this.$nymph, referencesToEntities(value, this.$nymph)),
|
|
321
|
+
};
|
|
224
322
|
})
|
|
225
323
|
.reduce((obj, { key, value }) => Object.assign(obj, { [key]: value }), {});
|
|
226
324
|
this.$data = new Proxy(this.$dataStore, this.$dataHandler);
|
|
@@ -228,18 +326,14 @@ class Entity {
|
|
|
228
326
|
return this;
|
|
229
327
|
}
|
|
230
328
|
$addTag(...tags) {
|
|
231
|
-
|
|
232
|
-
throw new EntityIsSleepingReferenceError(sleepErr);
|
|
233
|
-
}
|
|
329
|
+
this.$check();
|
|
234
330
|
if (tags.length < 1) {
|
|
235
331
|
return;
|
|
236
332
|
}
|
|
237
|
-
this.tags =
|
|
333
|
+
this.tags = uniqueStrings([...this.tags, ...tags]);
|
|
238
334
|
}
|
|
239
335
|
$arraySearch(array, strict = false) {
|
|
240
|
-
|
|
241
|
-
throw new EntityIsSleepingReferenceError(sleepErr);
|
|
242
|
-
}
|
|
336
|
+
this.$check();
|
|
243
337
|
if (!Array.isArray(array)) {
|
|
244
338
|
return -1;
|
|
245
339
|
}
|
|
@@ -252,16 +346,14 @@ class Entity {
|
|
|
252
346
|
return -1;
|
|
253
347
|
}
|
|
254
348
|
async $delete() {
|
|
255
|
-
|
|
256
|
-
throw new EntityIsSleepingReferenceError(sleepErr);
|
|
257
|
-
}
|
|
349
|
+
this.$check();
|
|
258
350
|
const guid = this.guid;
|
|
259
|
-
|
|
351
|
+
if ((await this.$nymph.deleteEntity(this)) !== guid) {
|
|
352
|
+
throw new Error('Failed to delete entity.');
|
|
353
|
+
}
|
|
260
354
|
}
|
|
261
355
|
$equals(object) {
|
|
262
|
-
|
|
263
|
-
throw new EntityIsSleepingReferenceError(sleepErr);
|
|
264
|
-
}
|
|
356
|
+
this.$check();
|
|
265
357
|
if (!(object instanceof Entity)) {
|
|
266
358
|
return false;
|
|
267
359
|
}
|
|
@@ -276,23 +368,23 @@ class Entity {
|
|
|
276
368
|
if (object.mdate !== this.mdate) {
|
|
277
369
|
return false;
|
|
278
370
|
}
|
|
279
|
-
const obData =
|
|
371
|
+
const obData = sortObj(object.toJSON());
|
|
280
372
|
obData.tags?.sort();
|
|
281
|
-
|
|
373
|
+
// obData.data = sortObj(obData.data);
|
|
374
|
+
const myData = sortObj(this.toJSON());
|
|
282
375
|
myData.tags?.sort();
|
|
283
|
-
|
|
376
|
+
// myData.data = sortObj(myData.data);
|
|
377
|
+
return isEqual(obData, myData);
|
|
284
378
|
}
|
|
285
379
|
$getPatch() {
|
|
286
|
-
|
|
287
|
-
throw new EntityIsSleepingReferenceError(sleepErr);
|
|
288
|
-
}
|
|
380
|
+
this.$check();
|
|
289
381
|
if (this.guid == null) {
|
|
290
382
|
throw new InvalidStateError("You can't make a patch from an unsaved entity.");
|
|
291
383
|
}
|
|
292
384
|
const patch = {
|
|
293
385
|
guid: this.guid,
|
|
294
386
|
mdate: this.mdate,
|
|
295
|
-
class: this.constructor
|
|
387
|
+
class: entityConstructorsToClassNames(this.constructor),
|
|
296
388
|
addTags: this.tags.filter((tag) => this.$originalTags.indexOf(tag) === -1),
|
|
297
389
|
removeTags: this.$originalTags.filter((tag) => this.tags.indexOf(tag) === -1),
|
|
298
390
|
unset: [],
|
|
@@ -301,7 +393,7 @@ class Entity {
|
|
|
301
393
|
for (let [key, dirty] of Object.entries(this.$dirty)) {
|
|
302
394
|
if (dirty) {
|
|
303
395
|
if (key in this.$data) {
|
|
304
|
-
patch.set[key] = (
|
|
396
|
+
patch.set[key] = entityConstructorsToClassNames(entitiesToReferences(this.$data[key]));
|
|
305
397
|
}
|
|
306
398
|
else {
|
|
307
399
|
patch.unset.push(key);
|
|
@@ -311,9 +403,7 @@ class Entity {
|
|
|
311
403
|
return patch;
|
|
312
404
|
}
|
|
313
405
|
$hasTag(...tags) {
|
|
314
|
-
|
|
315
|
-
throw new EntityIsSleepingReferenceError(sleepErr);
|
|
316
|
-
}
|
|
406
|
+
this.$check();
|
|
317
407
|
if (!tags.length) {
|
|
318
408
|
return false;
|
|
319
409
|
}
|
|
@@ -324,13 +414,14 @@ class Entity {
|
|
|
324
414
|
}
|
|
325
415
|
return true;
|
|
326
416
|
}
|
|
417
|
+
$isDirty(property) {
|
|
418
|
+
return property in this.$dirty ? this.$dirty[property] : null;
|
|
419
|
+
}
|
|
327
420
|
$inArray(array, strict = false) {
|
|
328
421
|
return this.$arraySearch(array, strict) !== -1;
|
|
329
422
|
}
|
|
330
423
|
$is(object) {
|
|
331
|
-
|
|
332
|
-
throw new EntityIsSleepingReferenceError(sleepErr);
|
|
333
|
-
}
|
|
424
|
+
this.$check();
|
|
334
425
|
if (!(object instanceof Entity)) {
|
|
335
426
|
return false;
|
|
336
427
|
}
|
|
@@ -341,31 +432,50 @@ class Entity {
|
|
|
341
432
|
return false;
|
|
342
433
|
}
|
|
343
434
|
else {
|
|
344
|
-
const obData =
|
|
435
|
+
const obData = sortObj(object.toJSON());
|
|
345
436
|
obData.tags?.sort();
|
|
346
|
-
|
|
437
|
+
// obData.data = sortObj(obData.data);
|
|
438
|
+
const myData = sortObj(this.toJSON());
|
|
347
439
|
myData.tags?.sort();
|
|
348
|
-
|
|
440
|
+
// myData.data = sortObj(myData.data);
|
|
441
|
+
return isEqual(obData, myData);
|
|
349
442
|
}
|
|
350
443
|
}
|
|
351
444
|
async $patch() {
|
|
352
|
-
|
|
353
|
-
throw new EntityIsSleepingReferenceError(sleepErr);
|
|
354
|
-
}
|
|
445
|
+
this.$check();
|
|
355
446
|
const mdate = this.mdate;
|
|
356
447
|
await this.$nymph.patchEntity(this);
|
|
357
|
-
|
|
448
|
+
if (mdate === this.mdate) {
|
|
449
|
+
throw new Error('Failed to patch entity.');
|
|
450
|
+
}
|
|
358
451
|
}
|
|
359
|
-
|
|
452
|
+
/**
|
|
453
|
+
* Check if this is a sleeping reference and throw an error if so.
|
|
454
|
+
*/
|
|
455
|
+
$check() {
|
|
456
|
+
if (this.$isASleepingReference || this.$sleepingReference != null) {
|
|
457
|
+
throw new EntityIsSleepingReferenceError('This entity is in a sleeping reference state. You must use .$wake() to wake it.');
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Check if this is a sleeping reference.
|
|
462
|
+
*/
|
|
463
|
+
$asleep() {
|
|
464
|
+
return this.$isASleepingReference || this.$sleepingReference != null;
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Wake from a sleeping reference.
|
|
468
|
+
*/
|
|
469
|
+
$wake() {
|
|
360
470
|
if (!this.$isASleepingReference) {
|
|
361
|
-
this.$
|
|
471
|
+
this.$wakePromise = null;
|
|
362
472
|
return Promise.resolve(this);
|
|
363
473
|
}
|
|
364
474
|
if (this.$sleepingReference?.[1] == null) {
|
|
365
|
-
throw new InvalidStateError('Tried to
|
|
475
|
+
throw new InvalidStateError('Tried to wake a sleeping reference with no GUID.');
|
|
366
476
|
}
|
|
367
|
-
if (!this.$
|
|
368
|
-
this.$
|
|
477
|
+
if (!this.$wakePromise) {
|
|
478
|
+
this.$wakePromise = this.$nymph
|
|
369
479
|
.getEntityData({ class: this.constructor }, { type: '&', guid: this.$sleepingReference[1] })
|
|
370
480
|
.then((data) => {
|
|
371
481
|
if (data == null) {
|
|
@@ -375,15 +485,18 @@ class Entity {
|
|
|
375
485
|
return this.$init(data);
|
|
376
486
|
})
|
|
377
487
|
.finally(() => {
|
|
378
|
-
this.$
|
|
488
|
+
this.$wakePromise = null;
|
|
379
489
|
});
|
|
380
490
|
}
|
|
381
|
-
return this.$
|
|
491
|
+
return this.$wakePromise;
|
|
382
492
|
}
|
|
383
|
-
$
|
|
493
|
+
$wakeAll(level) {
|
|
384
494
|
return new Promise((resolve, reject) => {
|
|
385
|
-
|
|
495
|
+
// Run this once this entity is awake.
|
|
496
|
+
const wakeProps = () => {
|
|
386
497
|
let newLevel;
|
|
498
|
+
// If level is undefined, keep going forever, otherwise, stop once we've
|
|
499
|
+
// gone deep enough.
|
|
387
500
|
if (level !== undefined) {
|
|
388
501
|
newLevel = level - 1;
|
|
389
502
|
}
|
|
@@ -392,19 +505,36 @@ class Entity {
|
|
|
392
505
|
return;
|
|
393
506
|
}
|
|
394
507
|
const promises = [];
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
508
|
+
// Go through data looking for entities to wake.
|
|
509
|
+
const walkData = (data) => {
|
|
510
|
+
if (data == null) {
|
|
511
|
+
return;
|
|
398
512
|
}
|
|
399
|
-
else if (
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
513
|
+
else if (typeof data === 'function' &&
|
|
514
|
+
data.prototype instanceof Entity) {
|
|
515
|
+
// Ignore this, it is an entity class.
|
|
516
|
+
return;
|
|
517
|
+
}
|
|
518
|
+
else if (data instanceof Entity) {
|
|
519
|
+
// Wake it up.
|
|
520
|
+
if (data.$isASleepingReference) {
|
|
521
|
+
promises.push(data.$wakeAll(newLevel));
|
|
405
522
|
}
|
|
406
523
|
}
|
|
407
|
-
|
|
524
|
+
else if (Array.isArray(data)) {
|
|
525
|
+
// Recurse into lower arrays.
|
|
526
|
+
for (let i = 0; i < data.length; i++) {
|
|
527
|
+
walkData(data[i]);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
else if (data instanceof Object) {
|
|
531
|
+
// Recurse into objects.
|
|
532
|
+
for (let [key, value] of Object.entries(data)) {
|
|
533
|
+
walkData(value);
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
};
|
|
537
|
+
walkData(this.$data);
|
|
408
538
|
if (promises.length) {
|
|
409
539
|
Promise.all(promises).then(() => resolve(this), (errObj) => reject(errObj));
|
|
410
540
|
}
|
|
@@ -413,10 +543,10 @@ class Entity {
|
|
|
413
543
|
}
|
|
414
544
|
};
|
|
415
545
|
if (this.$isASleepingReference) {
|
|
416
|
-
this.$
|
|
546
|
+
this.$wake().then(wakeProps, (errObj) => reject(errObj));
|
|
417
547
|
}
|
|
418
548
|
else {
|
|
419
|
-
|
|
549
|
+
wakeProps();
|
|
420
550
|
}
|
|
421
551
|
});
|
|
422
552
|
}
|
|
@@ -427,7 +557,7 @@ class Entity {
|
|
|
427
557
|
}
|
|
428
558
|
async $refresh() {
|
|
429
559
|
if (this.$isASleepingReference) {
|
|
430
|
-
await this.$
|
|
560
|
+
await this.$wake();
|
|
431
561
|
return true;
|
|
432
562
|
}
|
|
433
563
|
if (this.guid == null) {
|
|
@@ -439,26 +569,27 @@ class Entity {
|
|
|
439
569
|
type: '&',
|
|
440
570
|
guid: this.guid,
|
|
441
571
|
});
|
|
572
|
+
if (data == null) {
|
|
573
|
+
throw new Error("The entity's data could not be refreshed.");
|
|
574
|
+
}
|
|
442
575
|
this.$init(data);
|
|
443
|
-
return
|
|
576
|
+
return true;
|
|
444
577
|
}
|
|
445
578
|
$removeTag(...tags) {
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
}
|
|
449
|
-
this.tags = (0, lodash_1.difference)(this.tags, tags);
|
|
579
|
+
this.$check();
|
|
580
|
+
this.tags = difference(this.tags, tags);
|
|
450
581
|
}
|
|
451
582
|
async $save() {
|
|
452
|
-
|
|
453
|
-
throw new EntityIsSleepingReferenceError(sleepErr);
|
|
454
|
-
}
|
|
583
|
+
this.$check();
|
|
455
584
|
await this.$nymph.saveEntity(this);
|
|
456
|
-
|
|
585
|
+
if (!this.guid) {
|
|
586
|
+
throw new Error('Failed to save entity.');
|
|
587
|
+
}
|
|
457
588
|
}
|
|
458
589
|
async $serverCall(method, params, stateless = false) {
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
590
|
+
this.$check();
|
|
591
|
+
// Turn the params into a real array, in case an arguments object was
|
|
592
|
+
// passed.
|
|
462
593
|
const paramArray = Array.prototype.slice.call(params);
|
|
463
594
|
const data = await this.$nymph.serverCall(this, method, paramArray, stateless);
|
|
464
595
|
if (!stateless && data.entity) {
|
|
@@ -480,21 +611,16 @@ class Entity {
|
|
|
480
611
|
];
|
|
481
612
|
}
|
|
482
613
|
}
|
|
483
|
-
|
|
484
|
-
Entity.nymph = {};
|
|
485
|
-
Entity.class = 'Entity';
|
|
486
|
-
class EntityIsSleepingReferenceError extends Error {
|
|
614
|
+
export class EntityIsSleepingReferenceError extends Error {
|
|
487
615
|
constructor(message) {
|
|
488
616
|
super(message);
|
|
489
617
|
this.name = 'EntityIsSleepingReferenceError';
|
|
490
618
|
}
|
|
491
619
|
}
|
|
492
|
-
|
|
493
|
-
class InvalidStateError extends Error {
|
|
620
|
+
export class InvalidStateError extends Error {
|
|
494
621
|
constructor(message) {
|
|
495
622
|
super(message);
|
|
496
623
|
this.name = 'InvalidStateError';
|
|
497
624
|
}
|
|
498
625
|
}
|
|
499
|
-
exports.InvalidStateError = InvalidStateError;
|
|
500
626
|
//# sourceMappingURL=Entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Entity.js","sourceRoot":"","sources":["../src/Entity.ts"],"names":[],"mappings":"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"}
|