@nymphjs/nymph 1.0.0-beta.124 → 1.0.0-beta.126

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/testMocks.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { guid } from '@nymphjs/guid';
2
2
  import { ClassNotAvailableError, EntityConflictError } from './errors/index.js';
3
3
  import Entity from './Entity.js';
4
+ import { classNamesToEntityConstructors, entitiesToReferences, entityConstructorsToClassNames, referencesToEntities, } from './utils.js';
4
5
  const entities = {};
5
6
  export class MockNymphDriver {
6
7
  nymph;
@@ -18,7 +19,7 @@ export class MockNymphDriver {
18
19
  entity.cdate = entityJson.cdate;
19
20
  entity.mdate = entityJson.mdate;
20
21
  entity.tags = entityJson.tags;
21
- entity.$putData(entityJson.data, {}, 'server');
22
+ entity.$putData(classNamesToEntityConstructors(this.nymph, referencesToEntities(entityJson.data, this.nymph, !!options.skipAc, false), false), {}, 'server');
22
23
  return entity;
23
24
  }
24
25
  }
@@ -68,7 +69,6 @@ export class MockNymph {
68
69
  return await this.driver.getEntity(options, ...selectors);
69
70
  }
70
71
  async saveEntity(entity) {
71
- const className = entity.constructor.class;
72
72
  if (entity.guid == null) {
73
73
  entity.guid = guid();
74
74
  entity.cdate = Date.now();
@@ -79,12 +79,12 @@ export class MockNymph {
79
79
  }
80
80
  entity.mdate = Date.now();
81
81
  const entityJson = {
82
- class: className,
82
+ class: entity.constructor,
83
83
  guid: entity.guid,
84
84
  cdate: entity.cdate,
85
85
  mdate: entity.mdate,
86
86
  tags: [...entity.tags],
87
- data: JSON.parse(JSON.stringify(entity.$getData(true))),
87
+ data: JSON.parse(JSON.stringify(entityConstructorsToClassNames(entitiesToReferences(entity.$getData(true), true)))),
88
88
  };
89
89
  entities[entity.guid] = entityJson;
90
90
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"testMocks.js","sourceRoot":"","sources":["../src/testMocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testMocks.js","sourceRoot":"","sources":["../src/testMocks.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import Nymph from './Nymph.js';
2
2
  export declare function xor(a: any, b: any): boolean;
3
3
  export declare function uniqueStrings(array: string[]): string[];
4
- export declare function classNamesToEntityConstructors<T extends any>(nymph: Nymph, item: T, enforceRestEnabledFlag?: boolean): T;
5
4
  export declare function entityConstructorsToClassNames(item: any): any;
5
+ export declare function classNamesToEntityConstructors<T extends any>(nymph: Nymph, item: T, enforceRestEnabledFlag?: boolean): T;
6
6
  export declare function entitiesToReferences(item: any, existingOnly?: boolean): any;
7
7
  export declare function referencesToEntities(item: any, nymph: Nymph, useSkipAc?: boolean, enforceRestEnabledFlag?: boolean): any;
8
8
  export declare function sortObj<T extends {
package/dist/utils.js CHANGED
@@ -9,63 +9,63 @@ export function uniqueStrings(array) {
9
9
  }
10
10
  return Object.keys(obj);
11
11
  }
12
- export function classNamesToEntityConstructors(nymph, item, enforceRestEnabledFlag = false) {
12
+ export function entityConstructorsToClassNames(item) {
13
13
  if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
14
14
  return item;
15
15
  }
16
- else if (Array.isArray(item) &&
17
- item.length === 2 &&
18
- item[0] === 'nymph_class_reference' &&
19
- typeof item[1] === 'string') {
20
- // Convert class references to entity classes.
21
- const EntityClass = nymph.getEntityClass(item[1]);
22
- if (enforceRestEnabledFlag && !EntityClass.restEnabled) {
23
- throw new Error('Not accessible.');
24
- }
25
- return EntityClass;
16
+ else if (typeof item === 'function' && item.prototype instanceof Entity) {
17
+ // Convert entity classes to class references.
18
+ return ['nymph_class_reference', item.class];
26
19
  }
27
- else if (item instanceof Entity &&
28
- typeof item.$toReference === 'function') {
20
+ else if (item instanceof Entity) {
29
21
  // Don't touch entities.
30
22
  return item;
31
23
  }
32
24
  else if (Array.isArray(item)) {
33
25
  // Recurse into lower arrays.
34
- return item.map((entry) => classNamesToEntityConstructors(nymph, entry, enforceRestEnabledFlag));
26
+ return item.map((entry) => entityConstructorsToClassNames(entry));
35
27
  }
36
28
  else if (item instanceof Object) {
37
29
  let newObj = Object.create(item);
38
30
  for (let [key, value] of Object.entries(item)) {
39
- newObj[key] = classNamesToEntityConstructors(nymph, value, enforceRestEnabledFlag);
31
+ newObj[key] = entityConstructorsToClassNames(value);
40
32
  }
41
33
  return newObj;
42
34
  }
43
35
  // Not an entity or array, just return it.
44
36
  return item;
45
37
  }
46
- export function entityConstructorsToClassNames(item) {
38
+ export function classNamesToEntityConstructors(nymph, item, enforceRestEnabledFlag = false) {
47
39
  if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
48
40
  return item;
49
41
  }
50
- else if (typeof item === 'function' &&
51
- item.prototype instanceof Entity &&
52
- typeof item.class === 'string') {
53
- // Convert entity classes to class references.
54
- return ['nymph_class_reference', item.class];
42
+ else if (Array.isArray(item) &&
43
+ item.length === 2 &&
44
+ item[0] === 'nymph_class_reference' &&
45
+ typeof item[1] === 'string') {
46
+ // Convert class references to entity classes.
47
+ const EntityClass = nymph.getEntityClass(item[1]);
48
+ if (enforceRestEnabledFlag && !EntityClass.restEnabled) {
49
+ throw new Error('Not accessible.');
50
+ }
51
+ return EntityClass;
55
52
  }
56
- else if (item instanceof Entity &&
57
- typeof item.$toReference === 'function') {
53
+ else if (item instanceof Entity) {
58
54
  // Don't touch entities.
59
55
  return item;
60
56
  }
57
+ else if (typeof item === 'function' && item.prototype instanceof Entity) {
58
+ // Don't touch Entity classes.
59
+ return item;
60
+ }
61
61
  else if (Array.isArray(item)) {
62
62
  // Recurse into lower arrays.
63
- return item.map((entry) => entityConstructorsToClassNames(entry));
63
+ return item.map((entry) => classNamesToEntityConstructors(nymph, entry, enforceRestEnabledFlag));
64
64
  }
65
65
  else if (item instanceof Object) {
66
66
  let newObj = Object.create(item);
67
67
  for (let [key, value] of Object.entries(item)) {
68
- newObj[key] = entityConstructorsToClassNames(value);
68
+ newObj[key] = classNamesToEntityConstructors(nymph, value, enforceRestEnabledFlag);
69
69
  }
70
70
  return newObj;
71
71
  }
@@ -76,14 +76,11 @@ export function entitiesToReferences(item, existingOnly) {
76
76
  if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
77
77
  return item;
78
78
  }
79
- else if (item instanceof Entity &&
80
- typeof item.$toReference === 'function') {
79
+ else if (item instanceof Entity) {
81
80
  // Convert entities to references.
82
81
  return item.$toReference(existingOnly);
83
82
  }
84
- else if (typeof item === 'function' &&
85
- item.prototype instanceof Entity &&
86
- typeof item.class === 'string') {
83
+ else if (typeof item === 'function' && item.prototype instanceof Entity) {
87
84
  // Don't touch Entity classes.
88
85
  return item;
89
86
  }
@@ -124,13 +121,23 @@ export function referencesToEntities(item, nymph, useSkipAc = false, enforceRest
124
121
  }
125
122
  else {
126
123
  // Recurse into lower arrays.
127
- return item.map((entry) => referencesToEntities(entry, nymph, useSkipAc));
124
+ return item.map((entry) => referencesToEntities(entry, nymph, useSkipAc, enforceRestEnabledFlag));
128
125
  }
129
126
  }
130
- else if (Entity && item instanceof Object && !(item instanceof Entity)) {
127
+ else if (item instanceof Entity) {
128
+ // Don't touch entities.
129
+ return item;
130
+ }
131
+ else if (typeof item === 'function' && item.prototype instanceof Entity) {
132
+ // Don't touch Entity classes.
133
+ return item;
134
+ }
135
+ else if (item instanceof Object) {
136
+ let newObj = Object.create(item);
131
137
  for (let [key, value] of Object.entries(item)) {
132
- item[key] = referencesToEntities(value, nymph);
138
+ newObj[key] = referencesToEntities(value, nymph, useSkipAc, enforceRestEnabledFlag);
133
139
  }
140
+ return newObj;
134
141
  }
135
142
  // Not an array, just return it.
136
143
  return item;
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nymphjs/nymph",
3
- "version": "1.0.0-beta.124",
3
+ "version": "1.0.0-beta.126",
4
4
  "description": "Application Data and Access Framework for Node.js and the Browser",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "license": "Apache-2.0",
45
45
  "dependencies": {
46
- "@nymphjs/guid": "^1.0.0-beta.124",
46
+ "@nymphjs/guid": "^1.0.0-beta.126",
47
47
  "@sciactive/tokenizer": "^3.4.0",
48
48
  "debug": "^4.4.3",
49
49
  "joi": "^18.2.5",
@@ -66,5 +66,5 @@
66
66
  "ts-node": "^10.9.2",
67
67
  "typescript": "^7.0.2"
68
68
  },
69
- "gitHead": "f0e37f47c5ceeaaa1b389867f7cd24eac05cc5f9"
69
+ "gitHead": "92761dea0e829bd33b0e4eaadb86802bb9fd0d40"
70
70
  }
@@ -273,7 +273,7 @@ describe('Entity', () => {
273
273
  null: null,
274
274
  uniques: [],
275
275
  },
276
- class: 'TestModel',
276
+ class: ['nymph_class_reference', 'TestModel'],
277
277
  });
278
278
  });
279
279
 
@@ -333,7 +333,7 @@ describe('Entity', () => {
333
333
  testEntity.cdate = 13;
334
334
  testEntity.mdate = 14;
335
335
  testEntity.$jsonAcceptPatch({
336
- class: TestModel.class,
336
+ class: TestModel,
337
337
  guid: testEntity.guid as string,
338
338
  mdate: 15,
339
339
  set: {
@@ -379,7 +379,7 @@ describe('Entity', () => {
379
379
  testEntity.cdate = 13;
380
380
  testEntity.mdate = 14;
381
381
  testEntity.$jsonAcceptPatch({
382
- class: TestModel.class,
382
+ class: TestModel,
383
383
  guid: testEntity.guid as string,
384
384
  mdate: 15,
385
385
  set: {
@@ -424,7 +424,7 @@ describe('Entity', () => {
424
424
 
425
425
  try {
426
426
  testEntity.$jsonAcceptPatch({
427
- class: TestModel.class,
427
+ class: TestModel,
428
428
  guid: data.guid,
429
429
  mdate: data.mdate,
430
430
  set: {
package/src/Entity.ts CHANGED
@@ -22,7 +22,9 @@ import {
22
22
  MethodFailedError,
23
23
  } from './errors/index.js';
24
24
  import {
25
+ classNamesToEntityConstructors,
25
26
  entitiesToReferences,
27
+ entityConstructorsToClassNames,
26
28
  referencesToEntities,
27
29
  uniqueStrings,
28
30
  } from './utils.js';
@@ -272,7 +274,11 @@ export default class Entity<
272
274
 
273
275
  if (this.$sdata.hasOwnProperty(name)) {
274
276
  data[name] = referencesToEntities(
275
- JSON.parse(this.$sdata[name]),
277
+ classNamesToEntityConstructors(
278
+ this.$nymph,
279
+ JSON.parse(this.$sdata[name]),
280
+ false,
281
+ ),
276
282
  this.$nymph,
277
283
  this.$skipAc,
278
284
  );
@@ -325,7 +331,11 @@ export default class Entity<
325
331
 
326
332
  if (this.$sdata.hasOwnProperty(name)) {
327
333
  data[name] = referencesToEntities(
328
- JSON.parse(this.$sdata[name]),
334
+ classNamesToEntityConstructors(
335
+ this.$nymph,
336
+ JSON.parse(this.$sdata[name]),
337
+ false,
338
+ ),
329
339
  this.$nymph,
330
340
  this.$skipAc,
331
341
  );
@@ -587,7 +597,7 @@ export default class Entity<
587
597
  return this.$sleepingReference;
588
598
  }
589
599
  const obj: EntityJson = {
590
- class: (this.constructor as any).class as string,
600
+ class: entityConstructorsToClassNames(this.constructor),
591
601
  guid: this.guid,
592
602
  cdate: this.cdate,
593
603
  mdate: this.mdate,
@@ -599,7 +609,9 @@ export default class Entity<
599
609
  ...Object.keys(this.$sdata),
600
610
  ]) {
601
611
  if (this.$privateData.indexOf(key) === -1) {
602
- obj.data[key] = entitiesToReferences(this.$data[key], true);
612
+ obj.data[key] = entityConstructorsToClassNames(
613
+ entitiesToReferences(this.$data[key], true),
614
+ );
603
615
  }
604
616
  }
605
617
  return obj;
@@ -617,6 +629,11 @@ export default class Entity<
617
629
  if (data.$nymph !== nymph) {
618
630
  data.$setNymph(nymph);
619
631
  }
632
+ } else if (
633
+ typeof data === 'function' &&
634
+ data.prototype instanceof Entity
635
+ ) {
636
+ data.nymph = nymph;
620
637
  } else if (typeof data === 'object') {
621
638
  for (let name in data) {
622
639
  recurseData(data[name]);
@@ -664,7 +681,7 @@ export default class Entity<
664
681
  public $clearCache() {
665
682
  this.$check();
666
683
 
667
- this.$putData(this.$getData(false, true), this.$getSData());
684
+ this.$putData(this.$getData(false), this.$getSData());
668
685
  }
669
686
 
670
687
  public $getClientEnabledMethods() {
@@ -701,12 +718,16 @@ export default class Entity<
701
718
  if (!isEqual(obTags, myTags)) {
702
719
  return false;
703
720
  }
704
- const obData = object.$getData(true, true);
705
- const myData = this.$getData(true, true);
721
+ const obData = entityConstructorsToClassNames(
722
+ entitiesToReferences(object.$getData(true), true),
723
+ );
724
+ const myData = entityConstructorsToClassNames(
725
+ entitiesToReferences(this.$getData(true), true),
726
+ );
706
727
  return isEqual(obData, myData);
707
728
  }
708
729
 
709
- public $getData(includeSData = false, referenceOnlyExisting?: boolean) {
730
+ public $getData(includeSData = false) {
710
731
  this.$check();
711
732
 
712
733
  if (includeSData) {
@@ -715,7 +736,7 @@ export default class Entity<
715
736
  const _unused: any = (this as any)[key];
716
737
  }
717
738
  }
718
- return entitiesToReferences({ ...this.$dataStore }, referenceOnlyExisting);
739
+ return { ...this.$dataStore };
719
740
  }
720
741
 
721
742
  public $getSData() {
@@ -801,7 +822,11 @@ export default class Entity<
801
822
  cdate: this.cdate,
802
823
  mdate: this.mdate,
803
824
  tags: this.tags,
804
- ...referencesToEntities(this.$dataStore, this.$nymph, this.$skipAc),
825
+ ...referencesToEntities(
826
+ classNamesToEntityConstructors(this.$nymph, this.$dataStore, false),
827
+ this.$nymph,
828
+ this.$skipAc,
829
+ ),
805
830
  };
806
831
  }
807
832
 
@@ -851,8 +876,12 @@ export default class Entity<
851
876
  if (!isEqual(obTags, myTags)) {
852
877
  return false;
853
878
  }
854
- const obData = object.$getData(true, true);
855
- const myData = this.$getData(true, true);
879
+ const obData = entityConstructorsToClassNames(
880
+ entitiesToReferences(object.$getData(true), true),
881
+ );
882
+ const myData = entityConstructorsToClassNames(
883
+ entitiesToReferences(this.$getData(true), true),
884
+ );
856
885
  return isEqual(obData, myData);
857
886
  }
858
887
  }
@@ -933,7 +962,7 @@ export default class Entity<
933
962
 
934
963
  let nonAllowlistData: EntityData = {};
935
964
  if (this.$allowlistData != null) {
936
- nonAllowlistData = { ...this.$getData(true, true) };
965
+ nonAllowlistData = { ...this.$getData(true) };
937
966
  for (const name of this.$allowlistData) {
938
967
  delete nonAllowlistData[name];
939
968
  }
@@ -1002,11 +1031,7 @@ export default class Entity<
1002
1031
  ) {
1003
1032
  continue;
1004
1033
  }
1005
- (this.$data as any)[name] = referencesToEntities(
1006
- patch.set[name],
1007
- this.$nymph,
1008
- this.$skipAc,
1009
- );
1034
+ (this.$data as any)[name] = patch.set[name];
1010
1035
  }
1011
1036
 
1012
1037
  for (const name of patch.unset) {
@@ -1051,21 +1076,13 @@ export default class Entity<
1051
1076
  ) {
1052
1077
  this.$check();
1053
1078
 
1054
- const mySdata = sdata ?? this.$getSData();
1055
- for (const name in data) {
1056
- delete mySdata[name];
1057
- }
1058
1079
  for (const name in this.$dataStore) {
1059
1080
  delete this.$dataStore[name];
1060
1081
  }
1061
1082
  for (const name in data) {
1062
- (this.$dataStore as any)[name] = referencesToEntities(
1063
- data[name],
1064
- this.$nymph,
1065
- this.$skipAc,
1066
- );
1083
+ (this.$dataStore as any)[name] = data[name];
1067
1084
  }
1068
- this.$sdata = mySdata;
1085
+ this.$sdata = sdata ?? {};
1069
1086
  // Set original AC values if not set..
1070
1087
  if (this.$originalAcValues == null) {
1071
1088
  this.$originalAcValues = this.$getCurrentAcValues();
@@ -1157,11 +1174,7 @@ export default class Entity<
1157
1174
  this.tags = entity.tags;
1158
1175
  this.cdate = entity.cdate;
1159
1176
  this.mdate = entity.mdate;
1160
- this.$putData(
1161
- entity.$getData(false, true),
1162
- entity.$getSData(),
1163
- 'server',
1164
- );
1177
+ this.$putData(entity.$getData(false), entity.$getSData(), 'server');
1165
1178
 
1166
1179
  return this;
1167
1180
  })
@@ -1240,7 +1253,7 @@ export default class Entity<
1240
1253
  this.tags = refresh.tags;
1241
1254
  this.cdate = refresh.cdate;
1242
1255
  this.mdate = refresh.mdate;
1243
- this.$putData(refresh.$getData(false, true), refresh.$getSData(), 'server');
1256
+ this.$putData(refresh.$getData(false), refresh.$getSData(), 'server');
1244
1257
  return true;
1245
1258
  }
1246
1259
 
@@ -13,6 +13,7 @@ export type ACProperties = {
13
13
  };
14
14
 
15
15
  export type EntityReference = ['nymph_entity_reference', string, string];
16
+ export type ClassReference = ['nymph_class_reference', string];
16
17
 
17
18
  export type EntityData = {
18
19
  [k: string]: any;
@@ -31,7 +32,7 @@ export type EntityObject = {
31
32
  };
32
33
 
33
34
  export type EntityJson = {
34
- class: string;
35
+ class: EntityConstructor;
35
36
  guid: string | null;
36
37
  cdate: number | null;
37
38
  mdate: number | null;
@@ -40,7 +41,7 @@ export type EntityJson = {
40
41
  };
41
42
 
42
43
  export type EntityPatch = {
43
- class: string;
44
+ class: EntityConstructor;
44
45
  guid: string;
45
46
  mdate: number | null;
46
47
  set: EntityData;
@@ -249,6 +250,9 @@ export interface EntityInterface extends DataObjectInterface {
249
250
  /**
250
251
  * Accept JSON data from the client.
251
252
  *
253
+ * The given data must already be dereferenced (class references turned into
254
+ * classes and entity references turned into entities).
255
+ *
252
256
  * This function uses the security protection lists:
253
257
  *
254
258
  * - $protectedTags
@@ -265,6 +269,9 @@ export interface EntityInterface extends DataObjectInterface {
265
269
  /**
266
270
  * Accept JSON patch from the client.
267
271
  *
272
+ * The given data must already be dereferenced (class references turned into
273
+ * classes and entity references turned into entities).
274
+ *
268
275
  * This function uses the security protection lists:
269
276
  *
270
277
  * - $protectedTags
@@ -284,6 +291,9 @@ export interface EntityInterface extends DataObjectInterface {
284
291
  * This should only be used by Nymph to push the data from storage or the
285
292
  * client.
286
293
  *
294
+ * The given data must already be dereferenced (class references turned into
295
+ * classes and entity references turned into entities).
296
+ *
287
297
  * `sdata` is used by Nymph to avoid unserializing data that hasn't been
288
298
  * requested yet.
289
299
  *