@nymphjs/nymph 1.0.0-beta.6 → 1.0.0-beta.61
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 +277 -0
- package/README.md +13 -21
- package/dist/Entity.d.ts +269 -7
- package/dist/Entity.js +431 -89
- package/dist/Entity.js.map +1 -1
- package/dist/Entity.test.js +38 -16
- package/dist/Entity.test.js.map +1 -1
- package/dist/Entity.types.d.ts +225 -19
- package/dist/Nymph.d.ts +423 -11
- package/dist/Nymph.js +649 -156
- package/dist/Nymph.js.map +1 -1
- package/dist/Nymph.types.d.ts +31 -7
- package/dist/Nymph.types.js +2 -1
- package/dist/Nymph.types.js.map +1 -1
- package/dist/conf/d.d.ts +26 -0
- package/dist/conf/defaults.js +22 -0
- package/dist/conf/defaults.js.map +1 -1
- package/dist/driver/NymphDriver.d.ts +111 -36
- package/dist/driver/NymphDriver.js +169 -68
- package/dist/driver/NymphDriver.js.map +1 -1
- package/dist/driver/testArtifacts.d.ts +1 -1
- package/dist/driver/testArtifacts.js +285 -18
- package/dist/driver/testArtifacts.js.map +1 -1
- package/dist/errors/EntityInvalidDataError.d.ts +6 -0
- package/dist/errors/EntityInvalidDataError.js +6 -0
- package/dist/errors/EntityInvalidDataError.js.map +1 -1
- package/dist/errors/EntityUniqueConstraintError.d.ts +3 -0
- package/dist/errors/EntityUniqueConstraintError.js +11 -0
- package/dist/errors/EntityUniqueConstraintError.js.map +1 -0
- package/dist/errors/InvalidStateError.d.ts +3 -0
- package/dist/errors/InvalidStateError.js +11 -0
- package/dist/errors/InvalidStateError.js.map +1 -0
- package/dist/errors/QueryFailedError.js.map +1 -1
- package/dist/errors/index.d.ts +2 -0
- package/dist/errors/index.js +2 -0
- package/dist/errors/index.js.map +1 -1
- package/dist/testArtifacts.d.ts +17 -5
- package/dist/testArtifacts.js +23 -19
- package/dist/testArtifacts.js.map +1 -1
- package/dist/testMocks.d.ts +15 -10
- package/dist/testMocks.js +34 -11
- package/dist/testMocks.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +21 -5
- package/dist/utils.js.map +1 -1
- package/package.json +16 -14
- package/src/Entity.test.ts +30 -10
- package/src/Entity.ts +406 -135
- package/src/Entity.types.ts +32 -66
- package/src/Nymph.ts +626 -196
- package/src/Nymph.types.ts +97 -26
- package/src/conf/d.ts +8 -0
- package/src/conf/defaults.ts +24 -0
- package/src/driver/NymphDriver.ts +187 -243
- package/src/driver/testArtifacts.ts +327 -146
- package/src/errors/EntityUniqueConstraintError.ts +6 -0
- package/src/errors/InvalidStateError.ts +6 -0
- package/src/errors/index.ts +4 -0
- package/src/nymphJoiProps.ts +2 -2
- package/src/testArtifacts.ts +18 -19
- package/src/testMocks.ts +64 -32
- package/src/utils.ts +22 -8
- package/tsconfig.json +1 -1
- package/typedoc.json +4 -0
package/dist/testMocks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testMocks.js","sourceRoot":"","sources":["../src/testMocks.ts"],"names":[],"mappings":";;;;;;AAAA,wCAAqC;
|
|
1
|
+
{"version":3,"file":"testMocks.js","sourceRoot":"","sources":["../src/testMocks.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import Nymph from './Nymph';
|
|
|
2
2
|
import { Selector } from './Nymph.types';
|
|
3
3
|
export declare function xor(a: any, b: any): boolean;
|
|
4
4
|
export declare function uniqueStrings(array: string[]): string[];
|
|
5
|
-
export declare function classNamesToEntityConstructors(nymph: Nymph, selectors: Selector[]): Selector[];
|
|
5
|
+
export declare function classNamesToEntityConstructors(nymph: Nymph, selectors: Selector[], enforceRestEnabledFlag?: boolean): Selector[];
|
|
6
6
|
export declare function entitiesToReferences(item: any): any;
|
|
7
7
|
export declare function referencesToEntities(item: any, nymph: Nymph, useSkipAc?: boolean): any;
|
|
8
8
|
export declare function sortObj<T extends {
|
package/dist/utils.js
CHANGED
|
@@ -17,7 +17,7 @@ function uniqueStrings(array) {
|
|
|
17
17
|
return Object.keys(obj);
|
|
18
18
|
}
|
|
19
19
|
exports.uniqueStrings = uniqueStrings;
|
|
20
|
-
function classNamesToEntityConstructors(nymph, selectors) {
|
|
20
|
+
function classNamesToEntityConstructors(nymph, selectors, enforceRestEnabledFlag = false) {
|
|
21
21
|
const newSelectors = [];
|
|
22
22
|
for (const curSelector of selectors) {
|
|
23
23
|
const newSelector = { type: curSelector.type };
|
|
@@ -37,24 +37,31 @@ function classNamesToEntityConstructors(nymph, selectors) {
|
|
|
37
37
|
for (let i = 0; i < tmpArr.length; i++) {
|
|
38
38
|
const name = tmpArr[i][0];
|
|
39
39
|
const [qrefOptions, ...selectors] = tmpArr[i][1];
|
|
40
|
-
const QrefEntityClass =
|
|
40
|
+
const QrefEntityClass = qrefOptions.class
|
|
41
41
|
? nymph.getEntityClass(qrefOptions.class)
|
|
42
|
-
:
|
|
42
|
+
: nymph.getEntityClass('Entity');
|
|
43
|
+
if (enforceRestEnabledFlag && !QrefEntityClass.restEnabled) {
|
|
44
|
+
throw new Error('Not accessible.');
|
|
45
|
+
}
|
|
43
46
|
const options = { ...qrefOptions, class: QrefEntityClass };
|
|
44
47
|
if (!newSelector[key]) {
|
|
45
48
|
newSelector[key] = [];
|
|
46
49
|
}
|
|
47
50
|
newSelector[key].push([
|
|
48
51
|
name,
|
|
49
|
-
[
|
|
52
|
+
[
|
|
53
|
+
options,
|
|
54
|
+
...classNamesToEntityConstructors(nymph, selectors, enforceRestEnabledFlag),
|
|
55
|
+
],
|
|
50
56
|
]);
|
|
51
57
|
}
|
|
52
58
|
}
|
|
53
59
|
else if (key === 'selector' || key === '!selector') {
|
|
54
60
|
const tmpArr = (Array.isArray(value) ? value : [value]);
|
|
55
|
-
newSelector[key] = classNamesToEntityConstructors(nymph, tmpArr);
|
|
61
|
+
newSelector[key] = classNamesToEntityConstructors(nymph, tmpArr, enforceRestEnabledFlag);
|
|
56
62
|
}
|
|
57
63
|
else {
|
|
64
|
+
// @ts-ignore: ts doesn't know what value is here.
|
|
58
65
|
newSelector[key] = value;
|
|
59
66
|
}
|
|
60
67
|
}
|
|
@@ -65,9 +72,11 @@ function classNamesToEntityConstructors(nymph, selectors) {
|
|
|
65
72
|
exports.classNamesToEntityConstructors = classNamesToEntityConstructors;
|
|
66
73
|
function entitiesToReferences(item) {
|
|
67
74
|
if (item instanceof Entity_1.default && typeof item.$toReference === 'function') {
|
|
75
|
+
// Convert entities to references.
|
|
68
76
|
return item.$toReference();
|
|
69
77
|
}
|
|
70
78
|
else if (Array.isArray(item)) {
|
|
79
|
+
// Recurse into lower arrays.
|
|
71
80
|
return item.map((entry) => entitiesToReferences(entry));
|
|
72
81
|
}
|
|
73
82
|
else if (item instanceof Object) {
|
|
@@ -77,11 +86,13 @@ function entitiesToReferences(item) {
|
|
|
77
86
|
}
|
|
78
87
|
return newObj;
|
|
79
88
|
}
|
|
89
|
+
// Not an entity or array, just return it.
|
|
80
90
|
return item;
|
|
81
91
|
}
|
|
82
92
|
exports.entitiesToReferences = entitiesToReferences;
|
|
83
93
|
function referencesToEntities(item, nymph, useSkipAc = false) {
|
|
84
94
|
if (Array.isArray(item)) {
|
|
95
|
+
// Check if it's a reference.
|
|
85
96
|
if (item[0] === 'nymph_entity_reference') {
|
|
86
97
|
try {
|
|
87
98
|
const EntityClass = nymph.getEntityClass(item[2]);
|
|
@@ -95,6 +106,7 @@ function referencesToEntities(item, nymph, useSkipAc = false) {
|
|
|
95
106
|
}
|
|
96
107
|
}
|
|
97
108
|
else {
|
|
109
|
+
// Recurse into lower arrays.
|
|
98
110
|
return item.map((entry) => referencesToEntities(entry, nymph, useSkipAc));
|
|
99
111
|
}
|
|
100
112
|
}
|
|
@@ -103,15 +115,19 @@ function referencesToEntities(item, nymph, useSkipAc = false) {
|
|
|
103
115
|
item[key] = referencesToEntities(value, nymph);
|
|
104
116
|
}
|
|
105
117
|
}
|
|
118
|
+
// Not an array, just return it.
|
|
106
119
|
return item;
|
|
107
120
|
}
|
|
108
121
|
exports.referencesToEntities = referencesToEntities;
|
|
109
122
|
function sortObj(obj) {
|
|
123
|
+
// adapted from
|
|
124
|
+
// http://am.aurlien.net/post/1221493460/sorting-javascript-objects
|
|
110
125
|
const tempArray = Object.keys(obj);
|
|
111
126
|
tempArray.sort();
|
|
112
127
|
for (let i = 0; i < tempArray.length; i++) {
|
|
113
128
|
const temp = obj[tempArray[i]];
|
|
114
129
|
delete obj[tempArray[i]];
|
|
130
|
+
// @ts-ignore: string can't be used to index type T?? yes, it can.
|
|
115
131
|
obj[tempArray[i]] = temp;
|
|
116
132
|
}
|
|
117
133
|
return obj;
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAK9B,SAAgB,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;AAFD,kBAEC;AAED,SAAgB,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;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAK9B,SAAgB,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;AAFD,kBAEC;AAED,SAAgB,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;AAND,sCAMC;AAED,SAAgB,8BAA8B,CAC5C,KAAY,EACZ,SAAqB,EACrB,sBAAsB,GAAG,KAAK;IAE9B,MAAM,YAAY,GAAe,EAAE,CAAC;IAEpC,KAAK,MAAM,WAAW,IAAI,SAAS,EAAE,CAAC;QACpC,MAAM,WAAW,GAAa,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;QAEzD,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,CAAmB,CAAC;YAChC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAE/B,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,SAAS;YACX,CAAC;YAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,SAAS;YACX,CAAC;YAED,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACtC,MAAM,MAAM,GAAG,CACb,KAAK,CAAC,OAAO,CAAC,CAAE,KAA0B,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnD,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,CAAC,KAAK,CAAC,CAC4B,CAAC;gBAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACvC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1B,MAAM,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjD,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK;wBACvC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC;wBACzC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;oBACnC,IAAI,sBAAsB,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;wBAC3D,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;oBACrC,CAAC;oBACD,MAAM,OAAO,GAAG,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;oBAC3D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;wBACtB,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;oBACxB,CAAC;oBACA,WAAW,CAAC,GAAG,CAA0C,CAAC,IAAI,CAAC;wBAC9D,IAAI;wBACJ;4BACE,OAAO;4BACP,GAAG,8BAA8B,CAC/B,KAAK,EACL,SAAS,EACT,sBAAsB,CACvB;yBACF;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;gBACrD,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAe,CAAC;gBACtE,WAAW,CAAC,GAAG,CAAC,GAAG,8BAA8B,CAC/C,KAAK,EACL,MAAM,EACN,sBAAsB,CACvB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,kDAAkD;gBAClD,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAtED,wEAsEC;AAED,SAAgB,oBAAoB,CAAC,IAAS;IAC5C,IAAI,IAAI,YAAY,gBAAM,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;QACtE,kCAAkC;QAClC,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC7B,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,CAAC,CAAC,CAAC;IAC1D,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,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,0CAA0C;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC;AAhBD,oDAgBC;AAED,SAAgB,oBAAoB,CAClC,IAAS,EACT,KAAY,EACZ,SAAS,GAAG,KAAK;IAEjB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,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,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,gBAAM,IAAI,IAAI,YAAY,MAAM,IAAI,CAAC,CAAC,IAAI,YAAY,gBAAM,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;AA5BD,oDA4BC;AAED,SAAgB,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;AAZD,0BAYC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nymphjs/nymph",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.0.0-beta.61",
|
|
4
|
+
"description": "Nymph.js - Nymph ORM",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"clean": "test -d dist && rm -r dist || true",
|
|
15
15
|
"build": "tsc",
|
|
16
16
|
"watch": "tsc --watch",
|
|
17
|
-
"
|
|
17
|
+
"prepublish": "npm run clean && npm run build",
|
|
18
18
|
"test": "jest",
|
|
19
19
|
"test:watch": "jest --watch"
|
|
20
20
|
},
|
|
@@ -31,21 +31,23 @@
|
|
|
31
31
|
},
|
|
32
32
|
"license": "Apache-2.0",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@nymphjs/guid": "^1.0.0-beta.
|
|
35
|
-
"
|
|
34
|
+
"@nymphjs/guid": "^1.0.0-beta.61",
|
|
35
|
+
"debug": "^4.3.5",
|
|
36
|
+
"joi": "^17.12.2",
|
|
36
37
|
"locutus": "^2.0.16",
|
|
37
38
|
"lodash": "^4.17.21",
|
|
38
39
|
"n-readlines": "^1.0.3"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|
|
41
|
-
"@tsconfig/recommended": "^1.0.
|
|
42
|
-
"@types/
|
|
43
|
-
"@types/
|
|
44
|
-
"@types/
|
|
45
|
-
"@types/
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
42
|
+
"@tsconfig/recommended": "^1.0.3",
|
|
43
|
+
"@types/debug": "^4.1.12",
|
|
44
|
+
"@types/jest": "^29.5.12",
|
|
45
|
+
"@types/locutus": "^0.0.8",
|
|
46
|
+
"@types/lodash": "^4.14.202",
|
|
47
|
+
"@types/n-readlines": "^1.0.6",
|
|
48
|
+
"jest": "^29.7.0",
|
|
49
|
+
"ts-jest": "^29.1.2",
|
|
50
|
+
"typescript": "^5.3.3"
|
|
49
51
|
},
|
|
50
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "109543e980a0c3401cdc543b4e595ac53d886d7c"
|
|
51
53
|
}
|
package/src/Entity.test.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { MockNymph } from './testMocks';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
TestBModel as TestBModelClass,
|
|
4
|
+
TestModel as TestModelClass,
|
|
5
|
+
TestModelData,
|
|
6
|
+
} from './testArtifacts';
|
|
3
7
|
import { cloneDeep } from 'lodash';
|
|
4
8
|
|
|
5
9
|
const nymph = new MockNymph();
|
|
@@ -9,11 +13,11 @@ jest.mock('./Nymph', () => ({
|
|
|
9
13
|
default: nymph,
|
|
10
14
|
}));
|
|
11
15
|
|
|
12
|
-
nymph.addEntityClass(
|
|
13
|
-
nymph.addEntityClass(
|
|
16
|
+
const TestModel = nymph.addEntityClass(TestModelClass);
|
|
17
|
+
const TestBModel = nymph.addEntityClass(TestBModelClass);
|
|
14
18
|
|
|
15
19
|
let testEntity = TestModel.factorySync();
|
|
16
|
-
let entityReferenceTest:
|
|
20
|
+
let entityReferenceTest: TestModelClass & TestModelData;
|
|
17
21
|
let entityReferenceGuid: string;
|
|
18
22
|
|
|
19
23
|
describe('Entity', () => {
|
|
@@ -71,7 +75,7 @@ describe('Entity', () => {
|
|
|
71
75
|
|
|
72
76
|
it('array searching work', async () => {
|
|
73
77
|
const testInArray = await TestModel.factory(testEntity.guid as string);
|
|
74
|
-
const array: (string | (
|
|
78
|
+
const array: (string | (TestModelClass & TestModelData))[] = [
|
|
75
79
|
'thing',
|
|
76
80
|
testInArray,
|
|
77
81
|
];
|
|
@@ -138,7 +142,7 @@ describe('Entity', () => {
|
|
|
138
142
|
await testEntity.$refresh();
|
|
139
143
|
|
|
140
144
|
expect(testEntityCopy.mdate ?? Infinity).toBeLessThanOrEqual(
|
|
141
|
-
testEntity.mdate ?? 0
|
|
145
|
+
testEntity.mdate ?? 0,
|
|
142
146
|
);
|
|
143
147
|
});
|
|
144
148
|
|
|
@@ -158,7 +162,7 @@ describe('Entity', () => {
|
|
|
158
162
|
expect(testEntity.$hasTag('test', 'test2')).toEqual(true);
|
|
159
163
|
testEntity.$addTag('test', 'test3', 'test4', 'test5', 'test6');
|
|
160
164
|
expect(
|
|
161
|
-
testEntity.$hasTag('test', 'test3', 'test4', 'test5', 'test6')
|
|
165
|
+
testEntity.$hasTag('test', 'test3', 'test4', 'test5', 'test6'),
|
|
162
166
|
).toEqual(true);
|
|
163
167
|
testEntity.$removeTag('test2');
|
|
164
168
|
expect(testEntity.$hasTag('test2')).toEqual(false);
|
|
@@ -179,27 +183,34 @@ describe('Entity', () => {
|
|
|
179
183
|
expect(testEntity.$hasTag('test')).toEqual(true);
|
|
180
184
|
});
|
|
181
185
|
|
|
182
|
-
it('references
|
|
186
|
+
it('references work', async () => {
|
|
183
187
|
await testEntity.$refresh();
|
|
184
188
|
|
|
189
|
+
await testEntity.reference?.$wake();
|
|
185
190
|
expect(testEntity.reference?.guid).toEqual(entityReferenceGuid);
|
|
191
|
+
await Promise.all(testEntity.refArray?.map((e) => e.$wake()) || []);
|
|
186
192
|
expect(testEntity.refArray?.[0].guid).toEqual(entityReferenceGuid);
|
|
193
|
+
await testEntity.refObject?.entity.$wake();
|
|
187
194
|
expect(testEntity.refObject?.entity.guid).toEqual(entityReferenceGuid);
|
|
188
195
|
|
|
189
196
|
const entity = await TestModel.factory(testEntity.guid as string);
|
|
190
197
|
|
|
198
|
+
await entity.reference?.$wake();
|
|
191
199
|
expect(entity.reference?.guid).toEqual(entityReferenceGuid);
|
|
200
|
+
await Promise.all(entity.refArray?.map((e) => e.$wake()) || []);
|
|
192
201
|
expect(entity.refArray?.[0].guid).toEqual(entityReferenceGuid);
|
|
202
|
+
await entity.refObject?.entity.$wake();
|
|
193
203
|
expect(entity.refObject?.entity.guid).toEqual(entityReferenceGuid);
|
|
194
204
|
});
|
|
195
205
|
|
|
196
|
-
it('sleeping references wake up', () => {
|
|
206
|
+
it('sleeping references wake up', async () => {
|
|
197
207
|
const entity = TestModel.factoryReference([
|
|
198
208
|
'nymph_entity_reference',
|
|
199
209
|
testEntity.guid as string,
|
|
200
210
|
'TestModel',
|
|
201
|
-
]) as
|
|
211
|
+
]) as TestModelClass & TestModelData;
|
|
202
212
|
|
|
213
|
+
await entity.$wake();
|
|
203
214
|
expect(entity.guid).toEqual(testEntity.guid);
|
|
204
215
|
expect(entity.cdate).toEqual(testEntity.cdate);
|
|
205
216
|
expect(entity.mdate).toEqual(testEntity.mdate);
|
|
@@ -209,8 +220,11 @@ describe('Entity', () => {
|
|
|
209
220
|
expect(entity.string).toEqual('test');
|
|
210
221
|
expect(entity.array).toEqual(['full', 'of', 'values', 500]);
|
|
211
222
|
expect(entity.number).toEqual(30);
|
|
223
|
+
await entity.reference?.$wake();
|
|
212
224
|
expect(entity.reference?.guid).toEqual(entityReferenceGuid);
|
|
225
|
+
await Promise.all(entity.refArray?.map((e) => e.$wake()) || []);
|
|
213
226
|
expect(entity.refArray?.[0].guid).toEqual(entityReferenceGuid);
|
|
227
|
+
await entity.refObject?.entity.$wake();
|
|
214
228
|
expect(entity.refObject?.entity.guid).toEqual(entityReferenceGuid);
|
|
215
229
|
});
|
|
216
230
|
|
|
@@ -235,6 +249,7 @@ describe('Entity', () => {
|
|
|
235
249
|
array: ['full', 'of', 'values', 500],
|
|
236
250
|
string: 'test',
|
|
237
251
|
null: null,
|
|
252
|
+
uniques: [],
|
|
238
253
|
},
|
|
239
254
|
class: 'TestModel',
|
|
240
255
|
});
|
|
@@ -284,8 +299,11 @@ describe('Entity', () => {
|
|
|
284
299
|
expect(testEntity.string).toEqual('good');
|
|
285
300
|
expect(testEntity.array).toEqual(['imanarray']);
|
|
286
301
|
expect(testEntity.number).toEqual(30);
|
|
302
|
+
await testEntity.reference?.$wake();
|
|
287
303
|
expect(testEntity.reference?.guid).toEqual(entityReferenceGuid);
|
|
304
|
+
await Promise.all(testEntity.refArray?.map((e) => e.$wake()) || []);
|
|
288
305
|
expect(testEntity.refArray?.[0].guid).toEqual(entityReferenceGuid);
|
|
306
|
+
await testEntity.refObject?.entity.$wake();
|
|
289
307
|
expect(testEntity.refObject?.entity.guid).toEqual(entityReferenceGuid);
|
|
290
308
|
|
|
291
309
|
expect(await testEntity.$refresh()).toEqual(true);
|
|
@@ -307,7 +325,9 @@ describe('Entity', () => {
|
|
|
307
325
|
expect(testEntity.$hasTag('notag')).toEqual(false);
|
|
308
326
|
expect(testEntity.$hasTag('test')).toEqual(true);
|
|
309
327
|
expect(testEntity.$hasTag('newtag')).toEqual(true);
|
|
328
|
+
await testEntity.reference?.$wake();
|
|
310
329
|
expect(testEntity.reference?.guid).toEqual(entityReferenceGuid);
|
|
330
|
+
await Promise.all(testEntity.refArray?.map((e) => e.$wake()) || []);
|
|
311
331
|
expect(testEntity.refArray?.[0].guid).toEqual(entityReferenceGuid);
|
|
312
332
|
|
|
313
333
|
expect(await testEntity.$refresh()).toEqual(true);
|