@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.
Files changed (72) hide show
  1. package/CHANGELOG.md +546 -0
  2. package/README.md +12 -8
  3. package/asyncitertest.js +53 -0
  4. package/dist/Entity.d.ts +156 -0
  5. package/{lib → dist}/Entity.js +244 -118
  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 +229 -129
  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.map +0 -1
  53. package/lib/Entity.types.d.ts +0 -65
  54. package/lib/Entity.types.js +0 -3
  55. package/lib/EntityWeakCache.js.map +0 -1
  56. package/lib/HttpRequester.js +0 -190
  57. package/lib/HttpRequester.js.map +0 -1
  58. package/lib/Nymph.js.map +0 -1
  59. package/lib/Nymph.types.d.ts +0 -98
  60. package/lib/Nymph.types.js +0 -3
  61. package/lib/Nymph.types.js.map +0 -1
  62. package/lib/PubSub.js.map +0 -1
  63. package/lib/PubSub.types.js +0 -3
  64. package/lib/entityRefresh.js.map +0 -1
  65. package/lib/index.d.ts +0 -13
  66. package/lib/index.js +0 -34
  67. package/lib/index.js.map +0 -1
  68. package/lib/utils.js +0 -86
  69. package/lib/utils.js.map +0 -1
  70. package/webpack.config.js +0 -28
  71. /package/{lib → dist}/Entity.types.js.map +0 -0
  72. /package/{lib → dist}/PubSub.types.js.map +0 -0
@@ -1,21 +1,73 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InvalidStateError = exports.EntityIsSleepingReferenceError = void 0;
4
- const lodash_1 = require("lodash");
5
- const utils_1 = require("./utils");
6
- const sleepErr = 'This entity is in a sleeping reference state. ' +
7
- 'You must use .$ready() to wake it.';
8
- class Entity {
9
- constructor(guid) {
10
- this.guid = null;
11
- this.cdate = null;
12
- this.mdate = null;
13
- this.tags = [];
14
- this.$originalTags = [];
15
- this.$dirty = {};
16
- this.$isASleepingReference = false;
17
- this.$sleepingReference = null;
18
- this.$readyPromise = null;
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 ? this.nymph.getEntityFromCache(this, guid) : null);
169
- const entity = cacheEntity || new this(guid);
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
- await entity.$ready();
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
- static factorySync(guid) {
176
- const cacheEntity = (guid ? this.nymph.getEntityFromCache(this, guid) : null);
177
- return cacheEntity || new this(guid);
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] ? this.nymph.getEntityFromCache(this, reference[1]) : null);
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, Array.prototype.slice.call(params));
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
- if (this.$isASleepingReference) {
193
- throw new EntityIsSleepingReferenceError(sleepErr);
194
- }
289
+ this.$check();
195
290
  const obj = {
196
- class: this.constructor.class,
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] = (0, utils_1.entitiesToReferences)(value);
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 { key, value: (0, utils_1.referencesToEntities)(value, this.$nymph) };
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
- if (this.$isASleepingReference) {
232
- throw new EntityIsSleepingReferenceError(sleepErr);
233
- }
329
+ this.$check();
234
330
  if (tags.length < 1) {
235
331
  return;
236
332
  }
237
- this.tags = (0, utils_1.uniqueStrings)([...this.tags, ...tags]);
333
+ this.tags = uniqueStrings([...this.tags, ...tags]);
238
334
  }
239
335
  $arraySearch(array, strict = false) {
240
- if (this.$isASleepingReference) {
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
- if (this.$isASleepingReference) {
256
- throw new EntityIsSleepingReferenceError(sleepErr);
257
- }
349
+ this.$check();
258
350
  const guid = this.guid;
259
- return (await this.$nymph.deleteEntity(this)) === guid;
351
+ if ((await this.$nymph.deleteEntity(this)) !== guid) {
352
+ throw new Error('Failed to delete entity.');
353
+ }
260
354
  }
261
355
  $equals(object) {
262
- if (this.$isASleepingReference) {
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 = (0, utils_1.sortObj)(object.toJSON());
371
+ const obData = sortObj(object.toJSON());
280
372
  obData.tags?.sort();
281
- const myData = (0, utils_1.sortObj)(this.toJSON());
373
+ // obData.data = sortObj(obData.data);
374
+ const myData = sortObj(this.toJSON());
282
375
  myData.tags?.sort();
283
- return (0, lodash_1.isEqual)(obData, myData);
376
+ // myData.data = sortObj(myData.data);
377
+ return isEqual(obData, myData);
284
378
  }
285
379
  $getPatch() {
286
- if (this.$isASleepingReference) {
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.class,
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] = (0, utils_1.entitiesToReferences)(this.$data[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
- if (this.$isASleepingReference) {
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
- if (this.$isASleepingReference) {
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 = (0, utils_1.sortObj)(object.toJSON());
435
+ const obData = sortObj(object.toJSON());
345
436
  obData.tags?.sort();
346
- const myData = (0, utils_1.sortObj)(this.toJSON());
437
+ // obData.data = sortObj(obData.data);
438
+ const myData = sortObj(this.toJSON());
347
439
  myData.tags?.sort();
348
- return (0, lodash_1.isEqual)(obData, myData);
440
+ // myData.data = sortObj(myData.data);
441
+ return isEqual(obData, myData);
349
442
  }
350
443
  }
351
444
  async $patch() {
352
- if (this.$isASleepingReference) {
353
- throw new EntityIsSleepingReferenceError(sleepErr);
354
- }
445
+ this.$check();
355
446
  const mdate = this.mdate;
356
447
  await this.$nymph.patchEntity(this);
357
- return mdate !== this.mdate;
448
+ if (mdate === this.mdate) {
449
+ throw new Error('Failed to patch entity.');
450
+ }
358
451
  }
359
- $ready() {
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.$readyPromise = null;
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 ready a sleeping reference with no GUID.');
475
+ throw new InvalidStateError('Tried to wake a sleeping reference with no GUID.');
366
476
  }
367
- if (!this.$readyPromise) {
368
- this.$readyPromise = this.$nymph
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.$readyPromise = null;
488
+ this.$wakePromise = null;
379
489
  });
380
490
  }
381
- return this.$readyPromise;
491
+ return this.$wakePromise;
382
492
  }
383
- $readyAll(level) {
493
+ $wakeAll(level) {
384
494
  return new Promise((resolve, reject) => {
385
- const readyProps = () => {
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
- for (let [key, value] of Object.entries(this.$data)) {
396
- if (value instanceof Entity && value.$isASleepingReference) {
397
- promises.push(value.$readyAll(newLevel));
508
+ // Go through data looking for entities to wake.
509
+ const walkData = (data) => {
510
+ if (data == null) {
511
+ return;
398
512
  }
399
- else if (Array.isArray(value)) {
400
- for (let i = 0; i < value.length; i++) {
401
- if (value[i] instanceof Entity &&
402
- value[i].$isASleepingReference) {
403
- promises.push(value[i].$readyAll(newLevel));
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.$ready().then(readyProps, (errObj) => reject(errObj));
546
+ this.$wake().then(wakeProps, (errObj) => reject(errObj));
417
547
  }
418
548
  else {
419
- readyProps();
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.$ready();
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 this.guid == null ? 0 : true;
576
+ return true;
444
577
  }
445
578
  $removeTag(...tags) {
446
- if (this.$isASleepingReference) {
447
- throw new EntityIsSleepingReferenceError(sleepErr);
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
- if (this.$isASleepingReference) {
453
- throw new EntityIsSleepingReferenceError(sleepErr);
454
- }
583
+ this.$check();
455
584
  await this.$nymph.saveEntity(this);
456
- return !!this.guid;
585
+ if (!this.guid) {
586
+ throw new Error('Failed to save entity.');
587
+ }
457
588
  }
458
589
  async $serverCall(method, params, stateless = false) {
459
- if (this.$isASleepingReference) {
460
- throw new EntityIsSleepingReferenceError(sleepErr);
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
- exports.default = Entity;
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
- exports.EntityIsSleepingReferenceError = EntityIsSleepingReferenceError;
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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"}