@nymphjs/nymph 1.0.0-beta.123 → 1.0.0-beta.124
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 +6 -0
- package/dist/utils.d.ts +3 -3
- package/dist/utils.js +70 -50
- package/dist/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/utils.ts +79 -65
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [1.0.0-beta.124](https://forge.sciactive.com/sciactive/nymphjs/compare/v1.0.0-beta.123...v1.0.0-beta.124) (2026-09-24)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- client class translation in queries and params ([849355c](https://forge.sciactive.com/sciactive/nymphjs/commits/849355c7ad2dfb594415454c2d491b6868508434))
|
|
11
|
+
|
|
6
12
|
# [1.0.0-beta.123](https://forge.sciactive.com/sciactive/nymphjs/compare/v1.0.0-beta.122...v1.0.0-beta.123) (2026-09-23)
|
|
7
13
|
|
|
8
14
|
### Features
|
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 classNamesToEntityConstructors(nymph: Nymph,
|
|
4
|
+
export declare function classNamesToEntityConstructors<T extends any>(nymph: Nymph, item: T, enforceRestEnabledFlag?: boolean): T;
|
|
5
|
+
export declare function entityConstructorsToClassNames(item: any): any;
|
|
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,57 +9,68 @@ export function uniqueStrings(array) {
|
|
|
9
9
|
}
|
|
10
10
|
return Object.keys(obj);
|
|
11
11
|
}
|
|
12
|
-
export function classNamesToEntityConstructors(nymph,
|
|
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
|
-
newSelector[key] = [];
|
|
41
|
-
}
|
|
42
|
-
newSelector[key].push([
|
|
43
|
-
name,
|
|
44
|
-
[
|
|
45
|
-
options,
|
|
46
|
-
...classNamesToEntityConstructors(nymph, selectors, enforceRestEnabledFlag),
|
|
47
|
-
],
|
|
48
|
-
]);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
else if (key === 'selector' || key === '!selector') {
|
|
52
|
-
const tmpArr = (Array.isArray(value) ? value : [value]);
|
|
53
|
-
newSelector[key] = classNamesToEntityConstructors(nymph, tmpArr, enforceRestEnabledFlag);
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
// @ts-ignore: ts doesn't know what value is here.
|
|
57
|
-
newSelector[key] = value;
|
|
58
|
-
}
|
|
12
|
+
export function classNamesToEntityConstructors(nymph, item, enforceRestEnabledFlag = false) {
|
|
13
|
+
if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
|
|
14
|
+
return item;
|
|
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;
|
|
26
|
+
}
|
|
27
|
+
else if (item instanceof Entity &&
|
|
28
|
+
typeof item.$toReference === 'function') {
|
|
29
|
+
// Don't touch entities.
|
|
30
|
+
return item;
|
|
31
|
+
}
|
|
32
|
+
else if (Array.isArray(item)) {
|
|
33
|
+
// Recurse into lower arrays.
|
|
34
|
+
return item.map((entry) => classNamesToEntityConstructors(nymph, entry, enforceRestEnabledFlag));
|
|
35
|
+
}
|
|
36
|
+
else if (item instanceof Object) {
|
|
37
|
+
let newObj = Object.create(item);
|
|
38
|
+
for (let [key, value] of Object.entries(item)) {
|
|
39
|
+
newObj[key] = classNamesToEntityConstructors(nymph, value, enforceRestEnabledFlag);
|
|
59
40
|
}
|
|
60
|
-
|
|
41
|
+
return newObj;
|
|
61
42
|
}
|
|
62
|
-
return
|
|
43
|
+
// Not an entity or array, just return it.
|
|
44
|
+
return item;
|
|
45
|
+
}
|
|
46
|
+
export function entityConstructorsToClassNames(item) {
|
|
47
|
+
if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
|
|
48
|
+
return item;
|
|
49
|
+
}
|
|
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];
|
|
55
|
+
}
|
|
56
|
+
else if (item instanceof Entity &&
|
|
57
|
+
typeof item.$toReference === 'function') {
|
|
58
|
+
// Don't touch entities.
|
|
59
|
+
return item;
|
|
60
|
+
}
|
|
61
|
+
else if (Array.isArray(item)) {
|
|
62
|
+
// Recurse into lower arrays.
|
|
63
|
+
return item.map((entry) => entityConstructorsToClassNames(entry));
|
|
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] = entityConstructorsToClassNames(value);
|
|
69
|
+
}
|
|
70
|
+
return newObj;
|
|
71
|
+
}
|
|
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)) {
|
|
@@ -70,6 +81,12 @@ export function entitiesToReferences(item, existingOnly) {
|
|
|
70
81
|
// Convert entities to references.
|
|
71
82
|
return item.$toReference(existingOnly);
|
|
72
83
|
}
|
|
84
|
+
else if (typeof item === 'function' &&
|
|
85
|
+
item.prototype instanceof Entity &&
|
|
86
|
+
typeof item.class === 'string') {
|
|
87
|
+
// Don't touch Entity classes.
|
|
88
|
+
return item;
|
|
89
|
+
}
|
|
73
90
|
else if (Array.isArray(item)) {
|
|
74
91
|
// Recurse into lower arrays.
|
|
75
92
|
return item.map((entry) => entitiesToReferences(entry, existingOnly));
|
|
@@ -84,7 +101,7 @@ export function entitiesToReferences(item, existingOnly) {
|
|
|
84
101
|
// Not an entity or array, just return it.
|
|
85
102
|
return item;
|
|
86
103
|
}
|
|
87
|
-
export function referencesToEntities(item, nymph, useSkipAc = false) {
|
|
104
|
+
export function referencesToEntities(item, nymph, useSkipAc = false, enforceRestEnabledFlag = false) {
|
|
88
105
|
if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
|
|
89
106
|
return item;
|
|
90
107
|
}
|
|
@@ -93,6 +110,9 @@ export function referencesToEntities(item, nymph, useSkipAc = false) {
|
|
|
93
110
|
if (item[0] === 'nymph_entity_reference') {
|
|
94
111
|
try {
|
|
95
112
|
const EntityClass = nymph.getEntityClass(item[2]);
|
|
113
|
+
if (enforceRestEnabledFlag && !EntityClass.restEnabled) {
|
|
114
|
+
throw new Error('Not accessible.');
|
|
115
|
+
}
|
|
96
116
|
const entity = EntityClass.factoryReference(item);
|
|
97
117
|
entity.$useSkipAc(useSkipAc);
|
|
98
118
|
entity.$nymph = nymph;
|
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;AAKjC,MAAM,UAAU,GAAG,CAAC,CAAM,EAAE,CAAM;IAChC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAe;IAC3C,MAAM,GAAG,GAA0B,EAAE,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,KAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAKjC,MAAM,UAAU,GAAG,CAAC,CAAM,EAAE,CAAM;IAChC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAe;IAC3C,MAAM,GAAG,GAA0B,EAAE,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,KAAY,EACZ,IAAO,EACP,sBAAsB,GAAG,KAAK;IAE9B,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IACL,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,KAAK,CAAC;QACjB,IAAI,CAAC,CAAC,CAAC,KAAK,uBAAuB;QACnC,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAC3B,CAAC;QACD,8CAA8C;QAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,sBAAsB,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,WAAgB,CAAC;IAC1B,CAAC;SAAM,IACL,IAAI,YAAY,MAAM;QACtB,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,EACvC,CAAC;QACD,wBAAwB;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,6BAA6B;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,8BAA8B,CAAC,KAAK,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAChE,CAAC;IACT,CAAC;SAAM,IAAI,IAAI,YAAY,MAAM,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,GAAG,8BAA8B,CAC1C,KAAK,EACL,KAAK,EACL,sBAAsB,CACvB,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,0CAA0C;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,IAAS;IACtD,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IACL,OAAO,IAAI,KAAK,UAAU;QAC1B,IAAI,CAAC,SAAS,YAAY,MAAM;QAChC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAC9B,CAAC;QACD,8CAA8C;QAC9C,OAAO,CAAC,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;SAAM,IACL,IAAI,YAAY,MAAM;QACtB,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,EACvC,CAAC;QACD,wBAAwB;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,6BAA6B;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;SAAM,IAAI,IAAI,YAAY,MAAM,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,GAAG,8BAA8B,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,0CAA0C;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAS,EAAE,YAAsB;IACpE,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IACL,IAAI,YAAY,MAAM;QACtB,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,EACvC,CAAC;QACD,kCAAkC;QAClC,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;SAAM,IACL,OAAO,IAAI,KAAK,UAAU;QAC1B,IAAI,CAAC,SAAS,YAAY,MAAM;QAChC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAC9B,CAAC;QACD,8BAA8B;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,6BAA6B;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IACxE,CAAC;SAAM,IAAI,IAAI,YAAY,MAAM,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,0CAA0C;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,IAAS,EACT,KAAY,EACZ,SAAS,GAAG,KAAK,EACjB,sBAAsB,GAAG,KAAK;IAE9B,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,6BAA6B;QAC7B,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,wBAAwB,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClD,IAAI,sBAAsB,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;oBACvD,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBACrC,CAAC;gBACD,MAAM,MAAM,GAAG,WAAW,CAAC,gBAAgB,CAAC,IAAuB,CAAC,CAAC;gBACrE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAC7B,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;gBACtB,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;aAAM,CAAC;YACN,6BAA6B;YAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,IAAI,IAAI,YAAY,MAAM,IAAI,CAAC,CAAC,IAAI,YAAY,MAAM,CAAC,EAAE,CAAC;QACzE,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,gCAAgC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,OAAO,CAAiC,GAAM;IAC5D,eAAe;IACf,mEAAmE;IACnE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnC,SAAS,CAAC,IAAI,EAAE,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACzB,kEAAkE;QAClE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
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.124",
|
|
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.124",
|
|
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": "f0e37f47c5ceeaaa1b389867f7cd24eac05cc5f9"
|
|
70
70
|
}
|
package/src/utils.ts
CHANGED
|
@@ -15,76 +15,79 @@ export function uniqueStrings(array: string[]) {
|
|
|
15
15
|
return Object.keys(obj);
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
export function classNamesToEntityConstructors(
|
|
18
|
+
export function classNamesToEntityConstructors<T extends any>(
|
|
19
19
|
nymph: Nymph,
|
|
20
|
-
|
|
20
|
+
item: T,
|
|
21
21
|
enforceRestEnabledFlag = false,
|
|
22
|
-
):
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (value === undefined) {
|
|
37
|
-
continue;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
if (key === 'qref' || key === '!qref') {
|
|
41
|
-
const tmpArr = (
|
|
42
|
-
Array.isArray(((value as Selector['qref']) ?? [])[0])
|
|
43
|
-
? value
|
|
44
|
-
: [value]
|
|
45
|
-
) as [string, [Options, ...Selector[]]][];
|
|
46
|
-
for (let i = 0; i < tmpArr.length; i++) {
|
|
47
|
-
const name = tmpArr[i][0];
|
|
48
|
-
const [qrefOptions, ...selectors] = tmpArr[i][1];
|
|
49
|
-
const QrefEntityClass = qrefOptions.class
|
|
50
|
-
? nymph.getEntityClass(qrefOptions.class)
|
|
51
|
-
: nymph.getEntityClass('Entity');
|
|
52
|
-
if (enforceRestEnabledFlag && !QrefEntityClass.restEnabled) {
|
|
53
|
-
throw new Error('Not accessible.');
|
|
54
|
-
}
|
|
55
|
-
const options = { ...qrefOptions, class: QrefEntityClass };
|
|
56
|
-
if (!newSelector[key]) {
|
|
57
|
-
newSelector[key] = [];
|
|
58
|
-
}
|
|
59
|
-
(newSelector[key] as [string, [Options, ...Selector[]]][]).push([
|
|
60
|
-
name,
|
|
61
|
-
[
|
|
62
|
-
options,
|
|
63
|
-
...classNamesToEntityConstructors(
|
|
64
|
-
nymph,
|
|
65
|
-
selectors,
|
|
66
|
-
enforceRestEnabledFlag,
|
|
67
|
-
),
|
|
68
|
-
],
|
|
69
|
-
]);
|
|
70
|
-
}
|
|
71
|
-
} else if (key === 'selector' || key === '!selector') {
|
|
72
|
-
const tmpArr = (Array.isArray(value) ? value : [value]) as Selector[];
|
|
73
|
-
newSelector[key] = classNamesToEntityConstructors(
|
|
74
|
-
nymph,
|
|
75
|
-
tmpArr,
|
|
76
|
-
enforceRestEnabledFlag,
|
|
77
|
-
);
|
|
78
|
-
} else {
|
|
79
|
-
// @ts-ignore: ts doesn't know what value is here.
|
|
80
|
-
newSelector[key] = value;
|
|
81
|
-
}
|
|
22
|
+
): T {
|
|
23
|
+
if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
|
|
24
|
+
return item;
|
|
25
|
+
} else if (
|
|
26
|
+
Array.isArray(item) &&
|
|
27
|
+
item.length === 2 &&
|
|
28
|
+
item[0] === 'nymph_class_reference' &&
|
|
29
|
+
typeof item[1] === 'string'
|
|
30
|
+
) {
|
|
31
|
+
// Convert class references to entity classes.
|
|
32
|
+
const EntityClass = nymph.getEntityClass(item[1]);
|
|
33
|
+
if (enforceRestEnabledFlag && !EntityClass.restEnabled) {
|
|
34
|
+
throw new Error('Not accessible.');
|
|
82
35
|
}
|
|
83
|
-
|
|
84
|
-
|
|
36
|
+
return EntityClass as T;
|
|
37
|
+
} else if (
|
|
38
|
+
item instanceof Entity &&
|
|
39
|
+
typeof item.$toReference === 'function'
|
|
40
|
+
) {
|
|
41
|
+
// Don't touch entities.
|
|
42
|
+
return item;
|
|
43
|
+
} else if (Array.isArray(item)) {
|
|
44
|
+
// Recurse into lower arrays.
|
|
45
|
+
return item.map((entry) =>
|
|
46
|
+
classNamesToEntityConstructors(nymph, entry, enforceRestEnabledFlag),
|
|
47
|
+
) as T;
|
|
48
|
+
} else if (item instanceof Object) {
|
|
49
|
+
let newObj = Object.create(item);
|
|
50
|
+
for (let [key, value] of Object.entries(item)) {
|
|
51
|
+
newObj[key] = classNamesToEntityConstructors(
|
|
52
|
+
nymph,
|
|
53
|
+
value,
|
|
54
|
+
enforceRestEnabledFlag,
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
return newObj;
|
|
85
58
|
}
|
|
59
|
+
// Not an entity or array, just return it.
|
|
60
|
+
return item;
|
|
61
|
+
}
|
|
86
62
|
|
|
87
|
-
|
|
63
|
+
export function entityConstructorsToClassNames(item: any): any {
|
|
64
|
+
if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
|
|
65
|
+
return item;
|
|
66
|
+
} else if (
|
|
67
|
+
typeof item === 'function' &&
|
|
68
|
+
item.prototype instanceof Entity &&
|
|
69
|
+
typeof item.class === 'string'
|
|
70
|
+
) {
|
|
71
|
+
// Convert entity classes to class references.
|
|
72
|
+
return ['nymph_class_reference', item.class];
|
|
73
|
+
} else if (
|
|
74
|
+
item instanceof Entity &&
|
|
75
|
+
typeof item.$toReference === 'function'
|
|
76
|
+
) {
|
|
77
|
+
// Don't touch entities.
|
|
78
|
+
return item;
|
|
79
|
+
} else if (Array.isArray(item)) {
|
|
80
|
+
// Recurse into lower arrays.
|
|
81
|
+
return item.map((entry) => entityConstructorsToClassNames(entry));
|
|
82
|
+
} else if (item instanceof Object) {
|
|
83
|
+
let newObj = Object.create(item);
|
|
84
|
+
for (let [key, value] of Object.entries(item)) {
|
|
85
|
+
newObj[key] = entityConstructorsToClassNames(value);
|
|
86
|
+
}
|
|
87
|
+
return newObj;
|
|
88
|
+
}
|
|
89
|
+
// Not an entity or array, just return it.
|
|
90
|
+
return item;
|
|
88
91
|
}
|
|
89
92
|
|
|
90
93
|
export function entitiesToReferences(item: any, existingOnly?: boolean): any {
|
|
@@ -96,6 +99,13 @@ export function entitiesToReferences(item: any, existingOnly?: boolean): any {
|
|
|
96
99
|
) {
|
|
97
100
|
// Convert entities to references.
|
|
98
101
|
return item.$toReference(existingOnly);
|
|
102
|
+
} else if (
|
|
103
|
+
typeof item === 'function' &&
|
|
104
|
+
item.prototype instanceof Entity &&
|
|
105
|
+
typeof item.class === 'string'
|
|
106
|
+
) {
|
|
107
|
+
// Don't touch Entity classes.
|
|
108
|
+
return item;
|
|
99
109
|
} else if (Array.isArray(item)) {
|
|
100
110
|
// Recurse into lower arrays.
|
|
101
111
|
return item.map((entry) => entitiesToReferences(entry, existingOnly));
|
|
@@ -114,6 +124,7 @@ export function referencesToEntities(
|
|
|
114
124
|
item: any,
|
|
115
125
|
nymph: Nymph,
|
|
116
126
|
useSkipAc = false,
|
|
127
|
+
enforceRestEnabledFlag = false,
|
|
117
128
|
): any {
|
|
118
129
|
if (item == null || Buffer.isBuffer(item) || ArrayBuffer.isView(item)) {
|
|
119
130
|
return item;
|
|
@@ -122,6 +133,9 @@ export function referencesToEntities(
|
|
|
122
133
|
if (item[0] === 'nymph_entity_reference') {
|
|
123
134
|
try {
|
|
124
135
|
const EntityClass = nymph.getEntityClass(item[2]);
|
|
136
|
+
if (enforceRestEnabledFlag && !EntityClass.restEnabled) {
|
|
137
|
+
throw new Error('Not accessible.');
|
|
138
|
+
}
|
|
125
139
|
const entity = EntityClass.factoryReference(item as EntityReference);
|
|
126
140
|
entity.$useSkipAc(useSkipAc);
|
|
127
141
|
entity.$nymph = nymph;
|