@nymphjs/client 1.0.0-beta.13 → 1.0.0-beta.131

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