@nymphjs/nymph 1.0.0-beta.123 → 1.0.0-beta.125
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 +12 -0
- package/dist/Entity.js +15 -9
- package/dist/Entity.js.map +1 -1
- package/dist/Entity.test.js +4 -4
- package/dist/Entity.test.js.map +1 -1
- package/dist/Entity.types.d.ts +9 -2
- package/dist/driver/NymphDriver.js +9 -1
- package/dist/driver/NymphDriver.js.map +1 -1
- package/dist/testMocks.js +1 -2
- package/dist/testMocks.js.map +1 -1
- package/dist/utils.d.ts +3 -3
- package/dist/utils.js +82 -55
- package/dist/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/Entity.test.ts +4 -4
- package/src/Entity.ts +33 -12
- package/src/Entity.types.ts +9 -2
- package/src/driver/NymphDriver.ts +13 -1
- package/src/testMocks.ts +1 -3
- package/src/utils.ts +88 -74
package/dist/testMocks.js
CHANGED
|
@@ -68,7 +68,6 @@ export class MockNymph {
|
|
|
68
68
|
return await this.driver.getEntity(options, ...selectors);
|
|
69
69
|
}
|
|
70
70
|
async saveEntity(entity) {
|
|
71
|
-
const className = entity.constructor.class;
|
|
72
71
|
if (entity.guid == null) {
|
|
73
72
|
entity.guid = guid();
|
|
74
73
|
entity.cdate = Date.now();
|
|
@@ -79,7 +78,7 @@ export class MockNymph {
|
|
|
79
78
|
}
|
|
80
79
|
entity.mdate = Date.now();
|
|
81
80
|
const entityJson = {
|
|
82
|
-
class:
|
|
81
|
+
class: entity.constructor,
|
|
83
82
|
guid: entity.guid,
|
|
84
83
|
cdate: entity.cdate,
|
|
85
84
|
mdate: entity.mdate,
|
package/dist/testMocks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testMocks.js","sourceRoot":"","sources":["../src/testMocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAUrC,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,QAAQ,GAAgC,EAAE,CAAC;AAEjD,MAAM,OAAO,eAAe;IAClB,KAAK,CAAY;IAEzB,YAAmB,KAAgB;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IA0BM,KAAK,CAAC,SAAS,CACpB,OAAO,GAAe,EAAE,EACxB,GAAG,SAAgC;QAEnC,MAAM,IAAI,GACR,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtE,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GACV,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CACtD,CAAC,WAAW,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAChC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAChC,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC9B,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE/C,OAAO,MAA+B,CAAC;IACzC,CAAC;CACF;AAED,MAAM,OAAO,SAAS;IACZ,aAAa,GAAuC,EAAE,CAAC;IACxD,MAAM,CAAkB;IACxB,OAAO,GAAQ,SAAS,CAAC;IACzB,MAAM,CAAgB;IAE7B;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAExC,sCAAsC;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAEM,cAAc,CAA8B,WAAc;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,KAAM,SAAQ,WAAW;YAC/D,MAAM,CAAC,KAAK,GAAU,KAAyB,CAAC;YAEhD,YAAY,GAAG,IAAW;gBACxB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YACjB,CAAC;SACF,CAAC;QACF,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAM,CAAC;IACpD,CAAC;IAIM,cAAc,CACnB,SAAqB;QAErB,IAAI,GAAG,GAAkB,IAAI,CAAC;QAC9B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,GAAG,GAAG,SAAS,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC;QACxB,CAAC;QACD,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,IAAI,sBAAsB,CAAC,+BAA+B,GAAG,IAAI,CAAC,CAAC;IAC3E,CAAC;IAEM,qBAAqB,CAAC,KAAa;QACxC,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAC5D,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBAChC,OAAO,WAAW,CAAC;YACrB,CAAC;QACH,CAAC;QACD,MAAM,IAAI,sBAAsB,CAC9B,wCAAwC,KAAK,IAAI,CAClD,CAAC;IACJ,CAAC;IA0BM,KAAK,CAAC,SAAS,CACpB,OAAO,GAAe,EAAE,EACxB,GAAG,SAAgC;QAEnC,iDAAiD;QACjD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC;IAC5D,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,MAAuB;QAC7C,
|
|
1
|
+
{"version":3,"file":"testMocks.js","sourceRoot":"","sources":["../src/testMocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAUrC,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,QAAQ,GAAgC,EAAE,CAAC;AAEjD,MAAM,OAAO,eAAe;IAClB,KAAK,CAAY;IAEzB,YAAmB,KAAgB;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IA0BM,KAAK,CAAC,SAAS,CACpB,OAAO,GAAe,EAAE,EACxB,GAAG,SAAgC;QAEnC,MAAM,IAAI,GACR,OAAO,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtE,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GACV,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CACtD,CAAC,WAAW,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAChC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAChC,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC9B,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE/C,OAAO,MAA+B,CAAC;IACzC,CAAC;CACF;AAED,MAAM,OAAO,SAAS;IACZ,aAAa,GAAuC,EAAE,CAAC;IACxD,MAAM,CAAkB;IACxB,OAAO,GAAQ,SAAS,CAAC;IACzB,MAAM,CAAgB;IAE7B;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAExC,sCAAsC;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAEM,cAAc,CAA8B,WAAc;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,KAAM,SAAQ,WAAW;YAC/D,MAAM,CAAC,KAAK,GAAU,KAAyB,CAAC;YAEhD,YAAY,GAAG,IAAW;gBACxB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YACjB,CAAC;SACF,CAAC;QACF,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAM,CAAC;IACpD,CAAC;IAIM,cAAc,CACnB,SAAqB;QAErB,IAAI,GAAG,GAAkB,IAAI,CAAC;QAC9B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,GAAG,GAAG,SAAS,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC;QACxB,CAAC;QACD,IAAI,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,IAAI,sBAAsB,CAAC,+BAA+B,GAAG,IAAI,CAAC,CAAC;IAC3E,CAAC;IAEM,qBAAqB,CAAC,KAAa;QACxC,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAC5D,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBAChC,OAAO,WAAW,CAAC;YACrB,CAAC;QACH,CAAC;QACD,MAAM,IAAI,sBAAsB,CAC9B,wCAAwC,KAAK,IAAI,CAClD,CAAC;IACJ,CAAC;IA0BM,KAAK,CAAC,SAAS,CACpB,OAAO,GAAe,EAAE,EACxB,GAAG,SAAgC;QAEnC,iDAAiD;QACjD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC;IAC5D,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,MAAuB;QAC7C,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;YACrB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,CAAC;aAAM,IACL,MAAM,CAAC,IAAI,IAAI,QAAQ;YACvB,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EACxD,CAAC;YACD,MAAM,IAAI,mBAAmB,CAC3B,oDAAoD,CACrD,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE1B,MAAM,UAAU,GAAe;YAC7B,KAAK,EAAE,MAAM,CAAC,WAAgC;YAC9C,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;SACxD,CAAC;QAEF,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,MAAuB;QAC/C,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;YACnD,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import Nymph from './Nymph.js';
|
|
2
|
-
import { Selector } from './Nymph.types.js';
|
|
3
2
|
export declare function xor(a: any, b: any): boolean;
|
|
4
3
|
export declare function uniqueStrings(array: string[]): string[];
|
|
5
|
-
export declare function
|
|
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
|
-
export declare function referencesToEntities(item: any, nymph: Nymph, useSkipAc?: boolean): any;
|
|
7
|
+
export declare function referencesToEntities(item: any, nymph: Nymph, useSkipAc?: boolean, enforceRestEnabledFlag?: boolean): any;
|
|
8
8
|
export declare function sortObj<T extends {
|
|
9
9
|
[k: string]: any;
|
|
10
10
|
}>(obj: T): T;
|
package/dist/utils.js
CHANGED
|
@@ -9,67 +9,81 @@ export function uniqueStrings(array) {
|
|
|
9
9
|
}
|
|
10
10
|
return Object.keys(obj);
|
|
11
11
|
}
|
|
12
|
-
export function
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
12
|
+
export function entityConstructorsToClassNames(item) {
|
|
13
|
+
if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
|
|
14
|
+
return item;
|
|
15
|
+
}
|
|
16
|
+
else if (typeof item === 'function' && item.prototype instanceof Entity) {
|
|
17
|
+
// Convert entity classes to class references.
|
|
18
|
+
return ['nymph_class_reference', item.class];
|
|
19
|
+
}
|
|
20
|
+
else if (item instanceof Entity) {
|
|
21
|
+
// Don't touch entities.
|
|
22
|
+
return item;
|
|
23
|
+
}
|
|
24
|
+
else if (Array.isArray(item)) {
|
|
25
|
+
// Recurse into lower arrays.
|
|
26
|
+
return item.map((entry) => entityConstructorsToClassNames(entry));
|
|
27
|
+
}
|
|
28
|
+
else if (item instanceof Object) {
|
|
29
|
+
let newObj = Object.create(item);
|
|
30
|
+
for (let [key, value] of Object.entries(item)) {
|
|
31
|
+
newObj[key] = entityConstructorsToClassNames(value);
|
|
32
|
+
}
|
|
33
|
+
return newObj;
|
|
34
|
+
}
|
|
35
|
+
// Not an entity or array, just return it.
|
|
36
|
+
return item;
|
|
37
|
+
}
|
|
38
|
+
export function classNamesToEntityConstructors(nymph, item, enforceRestEnabledFlag = false) {
|
|
39
|
+
if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
|
|
40
|
+
return item;
|
|
41
|
+
}
|
|
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;
|
|
52
|
+
}
|
|
53
|
+
else if (item instanceof Entity) {
|
|
54
|
+
// Don't touch entities.
|
|
55
|
+
return item;
|
|
56
|
+
}
|
|
57
|
+
else if (typeof item === 'function' && item.prototype instanceof Entity) {
|
|
58
|
+
// Don't touch Entity classes.
|
|
59
|
+
return item;
|
|
60
|
+
}
|
|
61
|
+
else if (Array.isArray(item)) {
|
|
62
|
+
// Recurse into lower arrays.
|
|
63
|
+
return item.map((entry) => classNamesToEntityConstructors(nymph, entry, enforceRestEnabledFlag));
|
|
64
|
+
}
|
|
65
|
+
else if (item instanceof Object) {
|
|
66
|
+
let newObj = Object.create(item);
|
|
67
|
+
for (let [key, value] of Object.entries(item)) {
|
|
68
|
+
newObj[key] = classNamesToEntityConstructors(nymph, value, enforceRestEnabledFlag);
|
|
59
69
|
}
|
|
60
|
-
|
|
70
|
+
return newObj;
|
|
61
71
|
}
|
|
62
|
-
return
|
|
72
|
+
// Not an entity or array, just return it.
|
|
73
|
+
return item;
|
|
63
74
|
}
|
|
64
75
|
export function entitiesToReferences(item, existingOnly) {
|
|
65
76
|
if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
|
|
66
77
|
return item;
|
|
67
78
|
}
|
|
68
|
-
else if (item instanceof Entity
|
|
69
|
-
typeof item.$toReference === 'function') {
|
|
79
|
+
else if (item instanceof Entity) {
|
|
70
80
|
// Convert entities to references.
|
|
71
81
|
return item.$toReference(existingOnly);
|
|
72
82
|
}
|
|
83
|
+
else if (typeof item === 'function' && item.prototype instanceof Entity) {
|
|
84
|
+
// Don't touch Entity classes.
|
|
85
|
+
return item;
|
|
86
|
+
}
|
|
73
87
|
else if (Array.isArray(item)) {
|
|
74
88
|
// Recurse into lower arrays.
|
|
75
89
|
return item.map((entry) => entitiesToReferences(entry, existingOnly));
|
|
@@ -84,7 +98,7 @@ export function entitiesToReferences(item, existingOnly) {
|
|
|
84
98
|
// Not an entity or array, just return it.
|
|
85
99
|
return item;
|
|
86
100
|
}
|
|
87
|
-
export function referencesToEntities(item, nymph, useSkipAc = false) {
|
|
101
|
+
export function referencesToEntities(item, nymph, useSkipAc = false, enforceRestEnabledFlag = false) {
|
|
88
102
|
if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
|
|
89
103
|
return item;
|
|
90
104
|
}
|
|
@@ -93,6 +107,9 @@ export function referencesToEntities(item, nymph, useSkipAc = false) {
|
|
|
93
107
|
if (item[0] === 'nymph_entity_reference') {
|
|
94
108
|
try {
|
|
95
109
|
const EntityClass = nymph.getEntityClass(item[2]);
|
|
110
|
+
if (enforceRestEnabledFlag && !EntityClass.restEnabled) {
|
|
111
|
+
throw new Error('Not accessible.');
|
|
112
|
+
}
|
|
96
113
|
const entity = EntityClass.factoryReference(item);
|
|
97
114
|
entity.$useSkipAc(useSkipAc);
|
|
98
115
|
entity.$nymph = nymph;
|
|
@@ -104,13 +121,23 @@ export function referencesToEntities(item, nymph, useSkipAc = false) {
|
|
|
104
121
|
}
|
|
105
122
|
else {
|
|
106
123
|
// Recurse into lower arrays.
|
|
107
|
-
return item.map((entry) => referencesToEntities(entry, nymph, useSkipAc));
|
|
124
|
+
return item.map((entry) => referencesToEntities(entry, nymph, useSkipAc, enforceRestEnabledFlag));
|
|
108
125
|
}
|
|
109
126
|
}
|
|
110
|
-
else if (
|
|
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);
|
|
111
137
|
for (let [key, value] of Object.entries(item)) {
|
|
112
|
-
|
|
138
|
+
newObj[key] = referencesToEntities(value, nymph, useSkipAc, enforceRestEnabledFlag);
|
|
113
139
|
}
|
|
140
|
+
return newObj;
|
|
114
141
|
}
|
|
115
142
|
// Not an array, just return it.
|
|
116
143
|
return item;
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;
|
|
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.
|
|
3
|
+
"version": "1.0.0-beta.125",
|
|
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.
|
|
46
|
+
"@nymphjs/guid": "^1.0.0-beta.125",
|
|
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": "
|
|
69
|
+
"gitHead": "b87bd7ebda690fc8c491835e44fece78dc650b9c"
|
|
70
70
|
}
|
package/src/Entity.test.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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] =
|
|
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]);
|
|
@@ -715,7 +732,9 @@ export default class Entity<
|
|
|
715
732
|
const _unused: any = (this as any)[key];
|
|
716
733
|
}
|
|
717
734
|
}
|
|
718
|
-
return
|
|
735
|
+
return entityConstructorsToClassNames(
|
|
736
|
+
entitiesToReferences({ ...this.$dataStore }, referenceOnlyExisting),
|
|
737
|
+
);
|
|
719
738
|
}
|
|
720
739
|
|
|
721
740
|
public $getSData() {
|
|
@@ -801,7 +820,11 @@ export default class Entity<
|
|
|
801
820
|
cdate: this.cdate,
|
|
802
821
|
mdate: this.mdate,
|
|
803
822
|
tags: this.tags,
|
|
804
|
-
...referencesToEntities(
|
|
823
|
+
...referencesToEntities(
|
|
824
|
+
classNamesToEntityConstructors(this.$nymph, this.$dataStore, false),
|
|
825
|
+
this.$nymph,
|
|
826
|
+
this.$skipAc,
|
|
827
|
+
),
|
|
805
828
|
};
|
|
806
829
|
}
|
|
807
830
|
|
|
@@ -946,6 +969,7 @@ export default class Entity<
|
|
|
946
969
|
|
|
947
970
|
this.$putData({
|
|
948
971
|
...nonAllowlistData,
|
|
972
|
+
// Data has already been dereferenced.
|
|
949
973
|
...data,
|
|
950
974
|
...protectedData,
|
|
951
975
|
...privateData,
|
|
@@ -1002,11 +1026,8 @@ export default class Entity<
|
|
|
1002
1026
|
) {
|
|
1003
1027
|
continue;
|
|
1004
1028
|
}
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
this.$nymph,
|
|
1008
|
-
this.$skipAc,
|
|
1009
|
-
);
|
|
1029
|
+
// Data has already been dereferenced.
|
|
1030
|
+
(this.$data as any)[name] = patch.set[name];
|
|
1010
1031
|
}
|
|
1011
1032
|
|
|
1012
1033
|
for (const name of patch.unset) {
|
|
@@ -1060,7 +1081,7 @@ export default class Entity<
|
|
|
1060
1081
|
}
|
|
1061
1082
|
for (const name in data) {
|
|
1062
1083
|
(this.$dataStore as any)[name] = referencesToEntities(
|
|
1063
|
-
data[name],
|
|
1084
|
+
classNamesToEntityConstructors(this.$nymph, data[name], false),
|
|
1064
1085
|
this.$nymph,
|
|
1065
1086
|
this.$skipAc,
|
|
1066
1087
|
);
|
package/src/Entity.types.ts
CHANGED
|
@@ -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:
|
|
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:
|
|
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
|
|
@@ -6,6 +6,7 @@ import { Tokenizer } from '@sciactive/tokenizer';
|
|
|
6
6
|
|
|
7
7
|
import type Nymph from '../Nymph.js';
|
|
8
8
|
import type { Selector, Options, FormattedSelector } from '../Nymph.types.js';
|
|
9
|
+
import Entity from '../Entity.js';
|
|
9
10
|
import type { EntityInstanceType, EntityObjectType } from '../Entity.js';
|
|
10
11
|
import type {
|
|
11
12
|
EntityConstructor,
|
|
@@ -735,8 +736,19 @@ export default abstract class NymphDriver {
|
|
|
735
736
|
) {
|
|
736
737
|
return true;
|
|
737
738
|
}
|
|
739
|
+
if (
|
|
740
|
+
value instanceof Entity &&
|
|
741
|
+
value.guid != null &&
|
|
742
|
+
guids.indexOf(value.guid) !== -1
|
|
743
|
+
) {
|
|
744
|
+
return true;
|
|
745
|
+
}
|
|
738
746
|
// Search through arrays and objects looking for the reference.
|
|
739
|
-
if (
|
|
747
|
+
if (
|
|
748
|
+
value != null &&
|
|
749
|
+
(Array.isArray(value) ||
|
|
750
|
+
(typeof value === 'object' && !(value instanceof Entity)))
|
|
751
|
+
) {
|
|
740
752
|
for (const key in value) {
|
|
741
753
|
if (this.entityReferenceSearch(value[key], guids)) {
|
|
742
754
|
return true;
|
package/src/testMocks.ts
CHANGED
|
@@ -154,8 +154,6 @@ export class MockNymph {
|
|
|
154
154
|
}
|
|
155
155
|
|
|
156
156
|
public async saveEntity(entity: EntityInterface): Promise<boolean> {
|
|
157
|
-
const className = (entity.constructor as any).class as string;
|
|
158
|
-
|
|
159
157
|
if (entity.guid == null) {
|
|
160
158
|
entity.guid = guid();
|
|
161
159
|
entity.cdate = Date.now();
|
|
@@ -171,7 +169,7 @@ export class MockNymph {
|
|
|
171
169
|
entity.mdate = Date.now();
|
|
172
170
|
|
|
173
171
|
const entityJson: EntityJson = {
|
|
174
|
-
class:
|
|
172
|
+
class: entity.constructor as EntityConstructor,
|
|
175
173
|
guid: entity.guid,
|
|
176
174
|
cdate: entity.cdate,
|
|
177
175
|
mdate: entity.mdate,
|