@nymphjs/nymph 1.0.0-beta.5 → 1.0.0-beta.50

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 (50) hide show
  1. package/CHANGELOG.md +231 -0
  2. package/README.md +15 -15
  3. package/dist/Entity.d.ts +24 -3
  4. package/dist/Entity.js +194 -86
  5. package/dist/Entity.js.map +1 -1
  6. package/dist/Entity.test.js +34 -17
  7. package/dist/Entity.test.js.map +1 -1
  8. package/dist/Entity.types.d.ts +3 -1
  9. package/dist/Nymph.d.ts +22 -7
  10. package/dist/Nymph.js +214 -68
  11. package/dist/Nymph.js.map +1 -1
  12. package/dist/Nymph.types.d.ts +18 -5
  13. package/dist/Nymph.types.js +1 -1
  14. package/dist/Nymph.types.js.map +1 -1
  15. package/dist/driver/NymphDriver.d.ts +1 -22
  16. package/dist/driver/NymphDriver.js +85 -105
  17. package/dist/driver/NymphDriver.js.map +1 -1
  18. package/dist/driver/testArtifacts.js +208 -159
  19. package/dist/driver/testArtifacts.js.map +1 -1
  20. package/dist/errors/InvalidStateError.d.ts +3 -0
  21. package/dist/errors/InvalidStateError.js +11 -0
  22. package/dist/errors/InvalidStateError.js.map +1 -0
  23. package/dist/errors/QueryFailedError.js.map +1 -1
  24. package/dist/errors/index.d.ts +1 -0
  25. package/dist/errors/index.js +1 -0
  26. package/dist/errors/index.js.map +1 -1
  27. package/dist/testArtifacts.d.ts +10 -3
  28. package/dist/testArtifacts.js +20 -11
  29. package/dist/testArtifacts.js.map +1 -1
  30. package/dist/testMocks.d.ts +10 -7
  31. package/dist/testMocks.js +22 -10
  32. package/dist/testMocks.js.map +1 -1
  33. package/dist/utils.d.ts +1 -1
  34. package/dist/utils.js +11 -5
  35. package/dist/utils.js.map +1 -1
  36. package/package.json +15 -15
  37. package/src/Entity.test.ts +33 -11
  38. package/src/Entity.ts +303 -127
  39. package/src/Entity.types.ts +13 -1
  40. package/src/Nymph.ts +392 -88
  41. package/src/Nymph.types.ts +95 -24
  42. package/src/driver/NymphDriver.ts +203 -282
  43. package/src/driver/testArtifacts.ts +238 -157
  44. package/src/errors/InvalidStateError.ts +6 -0
  45. package/src/errors/index.ts +2 -0
  46. package/src/nymphJoiProps.ts +2 -2
  47. package/src/testArtifacts.ts +28 -10
  48. package/src/testMocks.ts +42 -25
  49. package/src/utils.ts +22 -8
  50. package/typedoc.json +4 -0
@@ -28,7 +28,7 @@ export default abstract class NymphDriver {
28
28
  protected nymph: Nymph = new Proxy({} as Nymph, {
29
29
  get() {
30
30
  throw new Error(
31
- 'Attempted access of Nymph instance before driver initialization!'
31
+ 'Attempted access of Nymph instance before driver initialization!',
32
32
  );
33
33
  },
34
34
  });
@@ -54,7 +54,18 @@ export default abstract class NymphDriver {
54
54
  */
55
55
  private putDataCounter = 0;
56
56
 
57
+ /**
58
+ * This is used internally by Nymph. Don't call it yourself.
59
+ *
60
+ * @returns A clone of this instance.
61
+ */
62
+ abstract clone(): NymphDriver;
63
+
64
+ /**
65
+ * Connect to the data store.
66
+ */
57
67
  abstract connect(): Promise<boolean>;
68
+
58
69
  abstract isConnected(): boolean;
59
70
  abstract startTransaction(name: string): Promise<Nymph>;
60
71
  abstract commit(name: string): Promise<boolean>;
@@ -62,13 +73,18 @@ export default abstract class NymphDriver {
62
73
  abstract inTransaction(): Promise<boolean>;
63
74
  abstract deleteEntityByID(
64
75
  guid: string,
65
- classConstructor: EntityConstructor
76
+ classConstructor: EntityConstructor,
66
77
  ): Promise<boolean>;
67
78
  abstract deleteEntityByID(guid: string, className?: string): Promise<boolean>;
68
79
  abstract deleteUID(name: string): Promise<boolean>;
80
+
81
+ /**
82
+ * Disconnect from the data store.
83
+ */
69
84
  abstract disconnect(): Promise<boolean>;
85
+
70
86
  protected abstract exportEntities(
71
- writeLine: (line: string) => void
87
+ writeLine: (line: string) => void,
72
88
  ): Promise<void>;
73
89
  abstract getEntities<T extends EntityConstructor = EntityConstructor>(
74
90
  options: Options<T> & { return: 'count' },
@@ -86,30 +102,6 @@ export default abstract class NymphDriver {
86
102
  options?: Options<T>,
87
103
  ...selectors: Selector[]
88
104
  ): Promise<ReturnType<T['factorySync']>[] | string[] | number>;
89
- protected abstract getEntitiesSync<
90
- T extends EntityConstructor = EntityConstructor
91
- >(
92
- options: Options<T> & { return: 'count' },
93
- ...selectors: Selector[]
94
- ): number;
95
- protected abstract getEntitiesSync<
96
- T extends EntityConstructor = EntityConstructor
97
- >(
98
- options: Options<T> & { return: 'guid' },
99
- ...selectors: Selector[]
100
- ): string[];
101
- protected abstract getEntitiesSync<
102
- T extends EntityConstructor = EntityConstructor
103
- >(
104
- options?: Options<T>,
105
- ...selectors: Selector[]
106
- ): ReturnType<T['factorySync']>[];
107
- protected abstract getEntitiesSync<
108
- T extends EntityConstructor = EntityConstructor
109
- >(
110
- options?: Options<T>,
111
- ...selectors: Selector[]
112
- ): ReturnType<T['factorySync']>[] | string[] | number;
113
105
  abstract getUID(name: string): Promise<number | null>;
114
106
  abstract import(filename: string): Promise<boolean>;
115
107
  abstract newUID(name: string): Promise<number | null>;
@@ -131,7 +123,7 @@ export default abstract class NymphDriver {
131
123
  protected posixRegexMatch(
132
124
  pattern: string,
133
125
  subject: string,
134
- caseInsensitive = false
126
+ caseInsensitive = false,
135
127
  ) {
136
128
  const posixClasses = [
137
129
  // '[[:<:]]',
@@ -211,11 +203,11 @@ export default abstract class NymphDriver {
211
203
  guid: string,
212
204
  tags: string[],
213
205
  sdata: SerializedEntityData,
214
- etype: string
206
+ etype: string,
215
207
  ) => Promise<void>,
216
208
  saveUIDCallback: (name: string, value: number) => Promise<void>,
217
209
  startTransactionCallback: (() => Promise<void>) | null = null,
218
- commitTransactionCallback: (() => Promise<void>) | null = null
210
+ commitTransactionCallback: (() => Promise<void>) | null = null,
219
211
  ) {
220
212
  let rl: ReadLines;
221
213
  try {
@@ -237,7 +229,7 @@ export default abstract class NymphDriver {
237
229
  continue;
238
230
  }
239
231
  const entityMatch = text.match(
240
- /^\s*{([0-9A-Fa-f]+)}<([-\w_]+)>\[([^\]]*)\]\s*$/
232
+ /^\s*{([0-9A-Fa-f]+)}<([-\w_]+)>\[([^\]]*)\]\s*$/,
241
233
  );
242
234
  const propMatch = text.match(/^\s*([^=]+)\s*=\s*(.*\S)\s*$/);
243
235
  const uidMatch = text.match(/^\s*<([^>]+)>\[(\d+)\]\s*$/);
@@ -281,7 +273,7 @@ export default abstract class NymphDriver {
281
273
  sdata: SerializedEntityData,
282
274
  selectors: Selector[],
283
275
  guid: string | null = null,
284
- tags: string[] | null = null
276
+ tags: string[] | null = null,
285
277
  ) {
286
278
  const formattedSelectors = this.formatSelectors(selectors).selectors;
287
279
 
@@ -298,186 +290,173 @@ export default abstract class NymphDriver {
298
290
  continue;
299
291
  }
300
292
 
301
- const clauseNot = key.substr(0, 1) === '!';
293
+ const clauseNot = key.substring(0, 1) === '!';
302
294
  if (key === 'selector' || key === '!selector') {
303
295
  const tmpArr = (Array.isArray(value) ? value : [value]) as Selector[];
304
296
  pass = xor(
305
297
  this.checkData(data, sdata, tmpArr, guid, tags),
306
- xor(typeIsNot, clauseNot)
298
+ xor(typeIsNot, clauseNot),
307
299
  );
308
300
  } else {
309
301
  if (key === 'qref' || key === '!qref') {
310
302
  throw new Error("Can't use checkData on qref clauses.");
311
303
  } else {
312
- // Check if it doesn't pass any for &, check if it
313
- // passes any for |.
304
+ // Check if it doesn't pass any for &, check if it passes any for |.
314
305
  for (const curValue of value) {
315
306
  if (curValue == null) {
316
307
  continue;
317
308
  }
318
309
 
319
- if (
320
- ((key === 'guid' || key === '!guid') && guid == null) ||
321
- ((key === 'tag' || key === '!tag') && tags == null)
322
- ) {
323
- // Skip because it has already been checked (by the query).
324
- pass = true;
325
- } else {
326
- const propName = (curValue as string[])[0];
310
+ const propName = (curValue as string[])[0];
327
311
 
328
- // Unserialize the data for this variable.
329
- if (propName in sdata) {
330
- data[propName] = JSON.parse(sdata[propName]);
331
- delete sdata[propName];
332
- }
312
+ // Unserialize the data for this variable.
313
+ if (propName in sdata) {
314
+ data[propName] = JSON.parse(sdata[propName]);
315
+ delete sdata[propName];
316
+ }
333
317
 
334
- switch (key) {
335
- case 'guid':
336
- case '!guid':
337
- pass = xor(guid == propName, xor(typeIsNot, clauseNot));
338
- break;
339
- case 'tag':
340
- case '!tag':
341
- pass = xor(
342
- (tags ?? []).indexOf(propName) !== -1,
343
- xor(typeIsNot, clauseNot)
344
- );
345
- break;
346
- case 'defined':
347
- case '!defined':
348
- pass = xor(propName in data, xor(typeIsNot, clauseNot));
349
- break;
350
- case 'truthy':
351
- case '!truthy':
352
- pass = xor(
353
- propName in data && data[propName],
354
- xor(typeIsNot, clauseNot)
355
- );
356
- break;
357
- case 'ref':
358
- case '!ref':
359
- const testRefValue = (curValue as [string, any])[1] as any;
360
- pass = xor(
361
- propName in data &&
362
- this.entityReferenceSearch(
363
- data[propName],
364
- testRefValue
365
- ),
366
- xor(typeIsNot, clauseNot)
367
- );
368
- break;
369
- case 'equal':
370
- case '!equal':
371
- const testEqualValue = (
372
- curValue as [string, any]
373
- )[1] as any;
374
- pass = xor(
375
- propName in data &&
376
- JSON.stringify(data[propName]) ===
377
- JSON.stringify(testEqualValue),
378
- xor(typeIsNot, clauseNot)
379
- );
380
- break;
381
- case 'contain':
382
- case '!contain':
383
- const testContainValue = (
384
- curValue as [string, any]
385
- )[1] as any;
386
- pass = xor(
387
- propName in data &&
388
- JSON.stringify(data[propName]).indexOf(
389
- JSON.stringify(testContainValue)
390
- ) !== -1,
391
- xor(typeIsNot, clauseNot)
392
- );
393
- break;
394
- case 'like':
395
- case '!like':
396
- const testLikeValue = (
397
- curValue as [string, string]
398
- )[1] as string;
399
- pass = xor(
400
- propName in data &&
401
- new RegExp(
402
- '^' +
403
- escapeRegExp(testLikeValue)
404
- .replace('%', () => '.*')
405
- .replace('_', () => '.') +
406
- '$'
407
- ).test(data[propName]),
408
- xor(typeIsNot, clauseNot)
409
- );
410
- break;
411
- case 'match':
412
- case '!match':
413
- const testMatchValue = (
414
- curValue as [string, string]
415
- )[1] as string;
416
- // Convert a POSIX regex to a JS regex.
417
- pass = xor(
418
- propName in data &&
419
- this.posixRegexMatch(testMatchValue, data[propName]),
420
- xor(typeIsNot, clauseNot)
421
- );
422
- break;
423
- case 'imatch':
424
- case '!imatch':
425
- const testIMatchValue = (
426
- curValue as [string, string]
427
- )[1] as string;
428
- // Convert a POSIX regex to a JS regex.
429
- pass = xor(
430
- propName in data &&
431
- this.posixRegexMatch(
432
- testIMatchValue,
433
- data[propName],
434
- true
435
- ),
436
- xor(typeIsNot, clauseNot)
437
- );
438
- break;
439
- case 'gt':
440
- case '!gt':
441
- const testGTValue = (
442
- curValue as [string, number]
443
- )[1] as number;
444
- pass = xor(
445
- propName in data && data[propName] > testGTValue,
446
- xor(typeIsNot, clauseNot)
447
- );
448
- break;
449
- case 'gte':
450
- case '!gte':
451
- const testGTEValue = (
452
- curValue as [string, number]
453
- )[1] as number;
454
- pass = xor(
455
- propName in data && data[propName] >= testGTEValue,
456
- xor(typeIsNot, clauseNot)
457
- );
458
- break;
459
- case 'lt':
460
- case '!lt':
461
- const testLTValue = (
462
- curValue as [string, number]
463
- )[1] as number;
464
- pass = xor(
465
- propName in data && data[propName] < testLTValue,
466
- xor(typeIsNot, clauseNot)
467
- );
468
- break;
469
- case 'lte':
470
- case '!lte':
471
- const testLTEValue = (
472
- curValue as [string, number]
473
- )[1] as number;
474
- pass = xor(
475
- propName in data && data[propName] <= testLTEValue,
476
- xor(typeIsNot, clauseNot)
477
- );
478
- break;
479
- }
318
+ switch (key) {
319
+ case 'guid':
320
+ case '!guid':
321
+ pass = xor(guid == propName, xor(typeIsNot, clauseNot));
322
+ break;
323
+ case 'tag':
324
+ case '!tag':
325
+ pass = xor(
326
+ (tags ?? []).indexOf(propName) !== -1,
327
+ xor(typeIsNot, clauseNot),
328
+ );
329
+ break;
330
+ case 'defined':
331
+ case '!defined':
332
+ pass = xor(propName in data, xor(typeIsNot, clauseNot));
333
+ break;
334
+ case 'truthy':
335
+ case '!truthy':
336
+ pass = xor(
337
+ propName in data && data[propName],
338
+ xor(typeIsNot, clauseNot),
339
+ );
340
+ break;
341
+ case 'ref':
342
+ case '!ref':
343
+ const testRefValue = (curValue as [string, any])[1] as any;
344
+ pass = xor(
345
+ propName in data &&
346
+ this.entityReferenceSearch(data[propName], testRefValue),
347
+ xor(typeIsNot, clauseNot),
348
+ );
349
+ break;
350
+ case 'equal':
351
+ case '!equal':
352
+ const testEqualValue = (curValue as [string, any])[1] as any;
353
+ pass = xor(
354
+ propName in data &&
355
+ JSON.stringify(data[propName]) ===
356
+ JSON.stringify(testEqualValue),
357
+ xor(typeIsNot, clauseNot),
358
+ );
359
+ break;
360
+ case 'contain':
361
+ case '!contain':
362
+ const testContainValue = (
363
+ curValue as [string, any]
364
+ )[1] as any;
365
+ pass = xor(
366
+ propName in data &&
367
+ JSON.stringify(data[propName]).indexOf(
368
+ JSON.stringify(testContainValue),
369
+ ) !== -1,
370
+ xor(typeIsNot, clauseNot),
371
+ );
372
+ break;
373
+ case 'like':
374
+ case '!like':
375
+ const testLikeValue = (
376
+ curValue as [string, string]
377
+ )[1] as string;
378
+ pass = xor(
379
+ propName in data &&
380
+ new RegExp(
381
+ '^' +
382
+ escapeRegExp(testLikeValue)
383
+ .replace('%', () => '.*')
384
+ .replace('_', () => '.') +
385
+ '$',
386
+ ).test(data[propName]),
387
+ xor(typeIsNot, clauseNot),
388
+ );
389
+ break;
390
+ case 'match':
391
+ case '!match':
392
+ const testMatchValue = (
393
+ curValue as [string, string]
394
+ )[1] as string;
395
+ // Convert a POSIX regex to a JS regex.
396
+ pass = xor(
397
+ propName in data &&
398
+ this.posixRegexMatch(testMatchValue, data[propName]),
399
+ xor(typeIsNot, clauseNot),
400
+ );
401
+ break;
402
+ case 'imatch':
403
+ case '!imatch':
404
+ const testIMatchValue = (
405
+ curValue as [string, string]
406
+ )[1] as string;
407
+ // Convert a POSIX regex to a JS regex.
408
+ pass = xor(
409
+ propName in data &&
410
+ this.posixRegexMatch(
411
+ testIMatchValue,
412
+ data[propName],
413
+ true,
414
+ ),
415
+ xor(typeIsNot, clauseNot),
416
+ );
417
+ break;
418
+ case 'gt':
419
+ case '!gt':
420
+ const testGTValue = (
421
+ curValue as [string, number]
422
+ )[1] as number;
423
+ pass = xor(
424
+ propName in data && data[propName] > testGTValue,
425
+ xor(typeIsNot, clauseNot),
426
+ );
427
+ break;
428
+ case 'gte':
429
+ case '!gte':
430
+ const testGTEValue = (
431
+ curValue as [string, number]
432
+ )[1] as number;
433
+ pass = xor(
434
+ propName in data && data[propName] >= testGTEValue,
435
+ xor(typeIsNot, clauseNot),
436
+ );
437
+ break;
438
+ case 'lt':
439
+ case '!lt':
440
+ const testLTValue = (
441
+ curValue as [string, number]
442
+ )[1] as number;
443
+ pass = xor(
444
+ propName in data && data[propName] < testLTValue,
445
+ xor(typeIsNot, clauseNot),
446
+ );
447
+ break;
448
+ case 'lte':
449
+ case '!lte':
450
+ const testLTEValue = (
451
+ curValue as [string, number]
452
+ )[1] as number;
453
+ pass = xor(
454
+ propName in data && data[propName] <= testLTEValue,
455
+ xor(typeIsNot, clauseNot),
456
+ );
457
+ break;
480
458
  }
459
+
481
460
  if (!xor(typeIsOr, pass)) {
482
461
  break;
483
462
  }
@@ -531,7 +510,7 @@ export default abstract class NymphDriver {
531
510
  | EntityInterface
532
511
  | EntityReference
533
512
  | string
534
- | (EntityInterface | EntityReference | string)[]
513
+ | (EntityInterface | EntityReference | string)[],
535
514
  ) {
536
515
  // Get the GUID, if the passed $entity is an object.
537
516
  const guids: string[] = [];
@@ -574,7 +553,7 @@ export default abstract class NymphDriver {
574
553
 
575
554
  public formatSelectors(
576
555
  selectors: Selector[],
577
- options: Options = {}
556
+ options: Options = {},
578
557
  ): {
579
558
  selectors: FormattedSelector[];
580
559
  qrefs: [Options, ...FormattedSelector[]][];
@@ -609,10 +588,9 @@ export default abstract class NymphDriver {
609
588
  for (let i = 0; i < tmpArr.length; i++) {
610
589
  const name = tmpArr[i][0];
611
590
  const [qrefOptions, ...qrefSelectors] = tmpArr[i][1];
612
- const QrefEntityClass =
613
- typeof qrefOptions.class === 'string'
614
- ? this.nymph.getEntityClass(qrefOptions.class)
615
- : qrefOptions.class ?? this.nymph.getEntityClass('Entity');
591
+ const QrefEntityClass = qrefOptions.class
592
+ ? this.nymph.getEntityClass(qrefOptions.class)
593
+ : this.nymph.getEntityClass('Entity');
616
594
  const newOptions = {
617
595
  ...qrefOptions,
618
596
  class: QrefEntityClass,
@@ -621,7 +599,7 @@ export default abstract class NymphDriver {
621
599
  const newSelectors = this.formatSelectors(qrefSelectors, options);
622
600
  qrefs.push(
623
601
  [newOptions, ...newSelectors.selectors],
624
- ...newSelectors.qrefs
602
+ ...newSelectors.qrefs,
625
603
  );
626
604
  formatArr[i] = [name, [newOptions, ...newSelectors.selectors]];
627
605
  }
@@ -673,8 +651,8 @@ export default abstract class NymphDriver {
673
651
  key: string,
674
652
  value: any,
675
653
  typeIsOr: boolean,
676
- typeIsNot: boolean
677
- ) => string
654
+ typeIsNot: boolean,
655
+ ) => string,
678
656
  ) {
679
657
  const queryParts = [];
680
658
  for (const curSelector of selectors) {
@@ -703,70 +681,13 @@ export default abstract class NymphDriver {
703
681
  return queryParts;
704
682
  }
705
683
 
706
- /**
707
- * Get the first entity to match all options/selectors, synchronously.
708
- *
709
- * This should really only be used internally by the Entity class. It's a bad
710
- * idea to get entities synchronously. The Entity class uses this to load
711
- * sleeping references.
712
- *
713
- * @param options The options.
714
- * @param selectors Unlimited optional selectors to search for, or a single GUID. If none are given, all entities are searched for the given options.
715
- * @returns An entity, or null on failure or nothing found.
716
- */
717
- public getEntitySync<T extends EntityConstructor = EntityConstructor>(
718
- options: Options<T> & { return: 'count' },
719
- ...selectors: Selector[]
720
- ): number;
721
- public getEntitySync<T extends EntityConstructor = EntityConstructor>(
722
- options: Options<T> & { return: 'guid' },
723
- ...selectors: Selector[]
724
- ): string | null;
725
- public getEntitySync<T extends EntityConstructor = EntityConstructor>(
726
- options: Options<T>,
727
- ...selectors: Selector[]
728
- ): ReturnType<T['factorySync']> | null;
729
- public getEntitySync<T extends EntityConstructor = EntityConstructor>(
730
- options: Options<T> & { return: 'count' },
731
- guid: string
732
- ): number;
733
- public getEntitySync<T extends EntityConstructor = EntityConstructor>(
734
- options: Options<T> & { return: 'guid' },
735
- guid: string
736
- ): string | null;
737
- public getEntitySync<T extends EntityConstructor = EntityConstructor>(
738
- options: Options<T>,
739
- guid: string
740
- ): ReturnType<T['factorySync']> | null;
741
- public getEntitySync<T extends EntityConstructor = EntityConstructor>(
742
- options: Options<T> = {},
743
- ...selectors: Selector[] | string[]
744
- ): ReturnType<T['factorySync']> | string | number | null {
745
- // Set up options and selectors.
746
- if (typeof selectors[0] === 'string') {
747
- selectors = [{ type: '&', guid: selectors[0] }];
748
- }
749
- options.limit = 1;
750
- const entities = this.getEntitiesSync(
751
- options,
752
- ...(selectors as Selector[])
753
- );
754
- if (options.return === 'count') {
755
- return entities as unknown as number;
756
- }
757
- if (!entities || !entities.length) {
758
- return null;
759
- }
760
- return entities[0];
761
- }
762
-
763
684
  protected getEntitesRowLike<T extends EntityConstructor = EntityConstructor>(
764
685
  options: Options<T> & { return: 'count' },
765
686
  selectors: Selector[],
766
687
  performQueryCallback: (
767
688
  options: Options<T>,
768
689
  formattedSelectors: FormattedSelector[],
769
- etype: string
690
+ etype: string,
770
691
  ) => {
771
692
  result: any;
772
693
  },
@@ -782,7 +703,7 @@ export default abstract class NymphDriver {
782
703
  getDataNameAndSValueCallback: (row: any) => {
783
704
  name: string;
784
705
  svalue: string;
785
- }
706
+ },
786
707
  ): { result: any; process: () => number | Error };
787
708
  protected getEntitesRowLike<T extends EntityConstructor = EntityConstructor>(
788
709
  options: Options<T> & { return: 'guid' },
@@ -790,7 +711,7 @@ export default abstract class NymphDriver {
790
711
  performQueryCallback: (
791
712
  options: Options<T>,
792
713
  formattedSelectors: FormattedSelector[],
793
- etype: string
714
+ etype: string,
794
715
  ) => {
795
716
  result: any;
796
717
  },
@@ -806,7 +727,7 @@ export default abstract class NymphDriver {
806
727
  getDataNameAndSValueCallback: (row: any) => {
807
728
  name: string;
808
729
  svalue: string;
809
- }
730
+ },
810
731
  ): { result: any; process: () => string[] | Error };
811
732
  protected getEntitesRowLike<T extends EntityConstructor = EntityConstructor>(
812
733
  options: Options<T>,
@@ -814,7 +735,7 @@ export default abstract class NymphDriver {
814
735
  performQueryCallback: (
815
736
  options: Options<T>,
816
737
  formattedSelectors: FormattedSelector[],
817
- etype: string
738
+ etype: string,
818
739
  ) => {
819
740
  result: any;
820
741
  },
@@ -830,7 +751,7 @@ export default abstract class NymphDriver {
830
751
  getDataNameAndSValueCallback: (row: any) => {
831
752
  name: string;
832
753
  svalue: string;
833
- }
754
+ },
834
755
  ): { result: any; process: () => ReturnType<T['factorySync']>[] | Error };
835
756
  protected getEntitesRowLike<T extends EntityConstructor = EntityConstructor>(
836
757
  options: Options<T>,
@@ -838,7 +759,7 @@ export default abstract class NymphDriver {
838
759
  performQueryCallback: (
839
760
  options: Options<T>,
840
761
  formattedSelectors: FormattedSelector[],
841
- etype: string
762
+ etype: string,
842
763
  ) => {
843
764
  result: any;
844
765
  },
@@ -854,7 +775,7 @@ export default abstract class NymphDriver {
854
775
  getDataNameAndSValueCallback: (row: any) => {
855
776
  name: string;
856
777
  svalue: string;
857
- }
778
+ },
858
779
  ): {
859
780
  result: any;
860
781
  process: () => ReturnType<T['factorySync']>[] | string[] | number | Error;
@@ -870,7 +791,7 @@ export default abstract class NymphDriver {
870
791
  ['&', '!&', '|', '!|'].indexOf(selector.type) === -1
871
792
  ) {
872
793
  throw new InvalidParametersError(
873
- 'Invalid query selector passed: ' + JSON.stringify(selector)
794
+ 'Invalid query selector passed: ' + JSON.stringify(selector),
874
795
  );
875
796
  }
876
797
  }
@@ -899,7 +820,7 @@ export default abstract class NymphDriver {
899
820
  const entity = this.pullCache<ReturnType<T['factorySync']>>(
900
821
  selectors[0]['guid'],
901
822
  EntityClass.class,
902
- !!options.skipAc
823
+ !!options.skipAc,
903
824
  );
904
825
  if (
905
826
  entity != null &&
@@ -908,7 +829,7 @@ export default abstract class NymphDriver {
908
829
  entity.hasTag(
909
830
  ...(Array.isArray(selectors[0].tag)
910
831
  ? selectors[0].tag
911
- : [selectors[0].tag])
832
+ : [selectors[0].tag]),
912
833
  ))
913
834
  ) {
914
835
  const guid = entity.guid;
@@ -937,7 +858,7 @@ export default abstract class NymphDriver {
937
858
  const { result } = performQueryCallback(
938
859
  options,
939
860
  formattedSelectors.selectors,
940
- etype
861
+ etype,
941
862
  );
942
863
 
943
864
  return {
@@ -1027,7 +948,7 @@ export default abstract class NymphDriver {
1027
948
  data: EntityData,
1028
949
  sdata: SerializedEntityData,
1029
950
  cdate: number,
1030
- etype: string
951
+ etype: string,
1031
952
  ) => Promise<boolean>,
1032
953
  saveExistingEntityCallback: (
1033
954
  entity: EntityInterface,
@@ -1036,12 +957,12 @@ export default abstract class NymphDriver {
1036
957
  data: EntityData,
1037
958
  sdata: SerializedEntityData,
1038
959
  mdate: number,
1039
- etype: string
960
+ etype: string,
1040
961
  ) => Promise<boolean>,
1041
962
  startTransactionCallback: (() => Promise<void>) | null = null,
1042
963
  commitTransactionCallback:
1043
964
  | ((success: boolean) => Promise<boolean>)
1044
- | null = null
965
+ | null = null,
1045
966
  ) {
1046
967
  // Get a modified date.
1047
968
  const mdate = Date.now();
@@ -1064,7 +985,7 @@ export default abstract class NymphDriver {
1064
985
  data,
1065
986
  sdata,
1066
987
  cdate,
1067
- etype
988
+ etype,
1068
989
  );
1069
990
  if (success) {
1070
991
  entity.guid = newId;
@@ -1083,7 +1004,7 @@ export default abstract class NymphDriver {
1083
1004
  data,
1084
1005
  sdata,
1085
1006
  mdate,
1086
- etype
1007
+ etype,
1087
1008
  );
1088
1009
  if (success) {
1089
1010
  entity.mdate = mdate;
@@ -1100,7 +1021,7 @@ export default abstract class NymphDriver {
1100
1021
  entity.mdate as number,
1101
1022
  entity.tags,
1102
1023
  data,
1103
- sdata
1024
+ sdata,
1104
1025
  );
1105
1026
  }
1106
1027
  return success;
@@ -1117,7 +1038,7 @@ export default abstract class NymphDriver {
1117
1038
  protected pullCache<T extends EntityInterface = EntityInterface>(
1118
1039
  guid: string,
1119
1040
  className: string,
1120
- useSkipAc = false
1041
+ useSkipAc = false,
1121
1042
  ): T | null {
1122
1043
  // Increment the entity access count.
1123
1044
  if (!(guid in this.entityCount)) {
@@ -1135,7 +1056,7 @@ export default abstract class NymphDriver {
1135
1056
  entity.tags = this.entityCache[guid]['tags'];
1136
1057
  entity.$putData(
1137
1058
  this.entityCache[guid]['data'],
1138
- this.entityCache[guid]['sdata']
1059
+ this.entityCache[guid]['sdata'],
1139
1060
  );
1140
1061
  return entity;
1141
1062
  }
@@ -1159,7 +1080,7 @@ export default abstract class NymphDriver {
1159
1080
  mdate: number,
1160
1081
  tags: string[],
1161
1082
  data: EntityData,
1162
- sdata: SerializedEntityData
1083
+ sdata: SerializedEntityData,
1163
1084
  ) {
1164
1085
  if (guid == null) {
1165
1086
  return;