@nymphjs/nymph 1.0.0-beta.8 → 1.0.0-beta.80

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 (65) hide show
  1. package/CHANGELOG.md +376 -0
  2. package/README.md +9 -19
  3. package/dist/Entity.d.ts +269 -7
  4. package/dist/Entity.js +491 -105
  5. package/dist/Entity.js.map +1 -1
  6. package/dist/Entity.test.js +25 -3
  7. package/dist/Entity.test.js.map +1 -1
  8. package/dist/Entity.types.d.ts +225 -19
  9. package/dist/Nymph.d.ts +430 -11
  10. package/dist/Nymph.js +686 -168
  11. package/dist/Nymph.js.map +1 -1
  12. package/dist/Nymph.types.d.ts +65 -7
  13. package/dist/Nymph.types.js +2 -1
  14. package/dist/Nymph.types.js.map +1 -1
  15. package/dist/conf/d.d.ts +30 -0
  16. package/dist/conf/defaults.js +27 -0
  17. package/dist/conf/defaults.js.map +1 -1
  18. package/dist/driver/NymphDriver.d.ts +136 -38
  19. package/dist/driver/NymphDriver.js +264 -131
  20. package/dist/driver/NymphDriver.js.map +1 -1
  21. package/dist/driver/testArtifacts.d.ts +1 -1
  22. package/dist/driver/testArtifacts.js +493 -51
  23. package/dist/driver/testArtifacts.js.map +1 -1
  24. package/dist/errors/EntityInvalidDataError.d.ts +6 -0
  25. package/dist/errors/EntityInvalidDataError.js +7 -1
  26. package/dist/errors/EntityInvalidDataError.js.map +1 -1
  27. package/dist/errors/EntityUniqueConstraintError.d.ts +3 -0
  28. package/dist/errors/EntityUniqueConstraintError.js +11 -0
  29. package/dist/errors/EntityUniqueConstraintError.js.map +1 -0
  30. package/dist/errors/InvalidStateError.d.ts +3 -0
  31. package/dist/errors/InvalidStateError.js +11 -0
  32. package/dist/errors/InvalidStateError.js.map +1 -0
  33. package/dist/errors/QueryFailedError.js +1 -0
  34. package/dist/errors/QueryFailedError.js.map +1 -1
  35. package/dist/errors/index.d.ts +2 -0
  36. package/dist/errors/index.js +2 -0
  37. package/dist/errors/index.js.map +1 -1
  38. package/dist/testArtifacts.d.ts +17 -5
  39. package/dist/testArtifacts.js +31 -27
  40. package/dist/testArtifacts.js.map +1 -1
  41. package/dist/testMocks.d.ts +13 -10
  42. package/dist/testMocks.js +32 -13
  43. package/dist/testMocks.js.map +1 -1
  44. package/dist/utils.d.ts +1 -1
  45. package/dist/utils.js +21 -5
  46. package/dist/utils.js.map +1 -1
  47. package/package.json +16 -14
  48. package/src/Entity.test.ts +22 -5
  49. package/src/Entity.ts +423 -134
  50. package/src/Entity.types.ts +32 -66
  51. package/src/Nymph.ts +609 -176
  52. package/src/Nymph.types.ts +131 -26
  53. package/src/conf/d.ts +12 -0
  54. package/src/conf/defaults.ts +31 -0
  55. package/src/driver/NymphDriver.ts +289 -311
  56. package/src/driver/testArtifacts.ts +562 -181
  57. package/src/errors/EntityUniqueConstraintError.ts +6 -0
  58. package/src/errors/InvalidStateError.ts +6 -0
  59. package/src/errors/index.ts +4 -0
  60. package/src/nymphJoiProps.ts +2 -2
  61. package/src/testArtifacts.ts +18 -19
  62. package/src/testMocks.ts +55 -30
  63. package/src/utils.ts +22 -8
  64. package/tsconfig.json +3 -3
  65. package/typedoc.json +4 -0
package/dist/testMocks.js CHANGED
@@ -9,10 +9,11 @@ const errors_1 = require("./errors");
9
9
  const Entity_1 = __importDefault(require("./Entity"));
10
10
  const entities = {};
11
11
  class MockNymphDriver {
12
+ nymph;
12
13
  constructor(nymph) {
13
14
  this.nymph = nymph;
14
15
  }
15
- getEntitySync(options = {}, ...selectors) {
16
+ async getEntity(options = {}, ...selectors) {
16
17
  const guid = typeof selectors[0] === 'string' ? selectors[0] : selectors[0].guid;
17
18
  if (!options || !guid || typeof guid !== 'string' || !(guid in entities)) {
18
19
  return null;
@@ -29,31 +30,49 @@ class MockNymphDriver {
29
30
  }
30
31
  exports.MockNymphDriver = MockNymphDriver;
31
32
  class MockNymph {
33
+ entityClasses = {};
34
+ driver;
35
+ Tilmeld = undefined;
36
+ Entity;
32
37
  constructor() {
33
- this.entityClasses = {};
34
- this.Tilmeld = undefined;
35
38
  this.driver = new MockNymphDriver(this);
39
+ // class NymphEntity extends Entity {}
36
40
  this.Entity = this.addEntityClass(Entity_1.default);
37
41
  }
38
- addEntityClass(entityClass) {
42
+ addEntityClass(EntityClass) {
39
43
  const nymph = this;
40
- class NymphEntity extends entityClass {
44
+ this.entityClasses[EntityClass.class] = class extends EntityClass {
45
+ static nymph = nymph;
41
46
  constructor(...args) {
42
47
  super(...args);
43
48
  }
44
- }
45
- NymphEntity.nymph = nymph;
46
- this.entityClasses[entityClass.class] = NymphEntity;
47
- return NymphEntity;
49
+ };
50
+ return this.entityClasses[EntityClass.class];
48
51
  }
49
52
  getEntityClass(className) {
50
- if (className in this.entityClasses) {
51
- return this.entityClasses[className];
53
+ let key = null;
54
+ if (typeof className === 'string') {
55
+ key = className;
56
+ }
57
+ else {
58
+ key = className.class;
59
+ }
60
+ if (key in this.entityClasses) {
61
+ return this.entityClasses[key];
62
+ }
63
+ throw new errors_1.ClassNotAvailableError(`Tried to use missing class "${key}".`);
64
+ }
65
+ getEntityClassByEtype(etype) {
66
+ for (const EntityClass of Object.values(this.entityClasses)) {
67
+ if (EntityClass.ETYPE === etype) {
68
+ return EntityClass;
69
+ }
52
70
  }
53
- throw new errors_1.ClassNotAvailableError('Tried to use class: ' + className);
71
+ throw new errors_1.ClassNotAvailableError(`Tried to use missing class by etype "${etype}".`);
54
72
  }
55
73
  async getEntity(options = {}, ...selectors) {
56
- return this.driver.getEntitySync(options, ...selectors);
74
+ // @ts-ignore: The selector type is correct here.
75
+ return await this.driver.getEntity(options, ...selectors);
57
76
  }
58
77
  async saveEntity(entity) {
59
78
  const className = entity.constructor.class;
@@ -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
@@ -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 = typeof qrefOptions.class === 'string'
40
+ const QrefEntityClass = qrefOptions.class
41
41
  ? nymph.getEntityClass(qrefOptions.class)
42
- : qrefOptions.class ?? nymph.getEntityClass('Entity');
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
- [options, ...classNamesToEntityConstructors(nymph, selectors)],
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":"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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,7 +1,7 @@
1
1
  {
2
2
  "name": "@nymphjs/nymph",
3
- "version": "1.0.0-beta.8",
4
- "description": "NymphJS - Nymph ORM",
3
+ "version": "1.0.0-beta.80",
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
- "prepare": "npm run clean && npm run build",
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.8",
35
- "joi": "^17.7.0",
34
+ "@nymphjs/guid": "^1.0.0-beta.80",
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.1",
42
- "@types/jest": "^29.2.5",
43
- "@types/locutus": "^0.0.6",
44
- "@types/lodash": "^4.14.191",
45
- "@types/n-readlines": "^1.0.3",
46
- "jest": "^29.3.1",
47
- "ts-jest": "^29.0.3",
48
- "typescript": "^4.9.4"
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": "49c33885abbce12ba44616cebd28c4c72c726b03"
52
+ "gitHead": "685cfbb55dbc7826d97af1f05c7cc32f06852a6f"
51
53
  }
@@ -1,10 +1,11 @@
1
+ import { cloneDeep } from 'lodash';
2
+
1
3
  import { MockNymph } from './testMocks';
2
4
  import {
3
5
  TestBModel as TestBModelClass,
4
6
  TestModel as TestModelClass,
5
7
  TestModelData,
6
8
  } from './testArtifacts';
7
- import { cloneDeep } from 'lodash';
8
9
 
9
10
  const nymph = new MockNymph();
10
11
 
@@ -142,7 +143,7 @@ describe('Entity', () => {
142
143
  await testEntity.$refresh();
143
144
 
144
145
  expect(testEntityCopy.mdate ?? Infinity).toBeLessThanOrEqual(
145
- testEntity.mdate ?? 0
146
+ testEntity.mdate ?? 0,
146
147
  );
147
148
  });
148
149
 
@@ -162,7 +163,7 @@ describe('Entity', () => {
162
163
  expect(testEntity.$hasTag('test', 'test2')).toEqual(true);
163
164
  testEntity.$addTag('test', 'test3', 'test4', 'test5', 'test6');
164
165
  expect(
165
- testEntity.$hasTag('test', 'test3', 'test4', 'test5', 'test6')
166
+ testEntity.$hasTag('test', 'test3', 'test4', 'test5', 'test6'),
166
167
  ).toEqual(true);
167
168
  testEntity.$removeTag('test2');
168
169
  expect(testEntity.$hasTag('test2')).toEqual(false);
@@ -183,27 +184,34 @@ describe('Entity', () => {
183
184
  expect(testEntity.$hasTag('test')).toEqual(true);
184
185
  });
185
186
 
186
- it('references works', async () => {
187
+ it('references work', async () => {
187
188
  await testEntity.$refresh();
188
189
 
190
+ await testEntity.reference?.$wake();
189
191
  expect(testEntity.reference?.guid).toEqual(entityReferenceGuid);
192
+ await Promise.all(testEntity.refArray?.map((e) => e.$wake()) || []);
190
193
  expect(testEntity.refArray?.[0].guid).toEqual(entityReferenceGuid);
194
+ await testEntity.refObject?.entity.$wake();
191
195
  expect(testEntity.refObject?.entity.guid).toEqual(entityReferenceGuid);
192
196
 
193
197
  const entity = await TestModel.factory(testEntity.guid as string);
194
198
 
199
+ await entity.reference?.$wake();
195
200
  expect(entity.reference?.guid).toEqual(entityReferenceGuid);
201
+ await Promise.all(entity.refArray?.map((e) => e.$wake()) || []);
196
202
  expect(entity.refArray?.[0].guid).toEqual(entityReferenceGuid);
203
+ await entity.refObject?.entity.$wake();
197
204
  expect(entity.refObject?.entity.guid).toEqual(entityReferenceGuid);
198
205
  });
199
206
 
200
- it('sleeping references wake up', () => {
207
+ it('sleeping references wake up', async () => {
201
208
  const entity = TestModel.factoryReference([
202
209
  'nymph_entity_reference',
203
210
  testEntity.guid as string,
204
211
  'TestModel',
205
212
  ]) as TestModelClass & TestModelData;
206
213
 
214
+ await entity.$wake();
207
215
  expect(entity.guid).toEqual(testEntity.guid);
208
216
  expect(entity.cdate).toEqual(testEntity.cdate);
209
217
  expect(entity.mdate).toEqual(testEntity.mdate);
@@ -213,8 +221,11 @@ describe('Entity', () => {
213
221
  expect(entity.string).toEqual('test');
214
222
  expect(entity.array).toEqual(['full', 'of', 'values', 500]);
215
223
  expect(entity.number).toEqual(30);
224
+ await entity.reference?.$wake();
216
225
  expect(entity.reference?.guid).toEqual(entityReferenceGuid);
226
+ await Promise.all(entity.refArray?.map((e) => e.$wake()) || []);
217
227
  expect(entity.refArray?.[0].guid).toEqual(entityReferenceGuid);
228
+ await entity.refObject?.entity.$wake();
218
229
  expect(entity.refObject?.entity.guid).toEqual(entityReferenceGuid);
219
230
  });
220
231
 
@@ -239,6 +250,7 @@ describe('Entity', () => {
239
250
  array: ['full', 'of', 'values', 500],
240
251
  string: 'test',
241
252
  null: null,
253
+ uniques: [],
242
254
  },
243
255
  class: 'TestModel',
244
256
  });
@@ -288,8 +300,11 @@ describe('Entity', () => {
288
300
  expect(testEntity.string).toEqual('good');
289
301
  expect(testEntity.array).toEqual(['imanarray']);
290
302
  expect(testEntity.number).toEqual(30);
303
+ await testEntity.reference?.$wake();
291
304
  expect(testEntity.reference?.guid).toEqual(entityReferenceGuid);
305
+ await Promise.all(testEntity.refArray?.map((e) => e.$wake()) || []);
292
306
  expect(testEntity.refArray?.[0].guid).toEqual(entityReferenceGuid);
307
+ await testEntity.refObject?.entity.$wake();
293
308
  expect(testEntity.refObject?.entity.guid).toEqual(entityReferenceGuid);
294
309
 
295
310
  expect(await testEntity.$refresh()).toEqual(true);
@@ -311,7 +326,9 @@ describe('Entity', () => {
311
326
  expect(testEntity.$hasTag('notag')).toEqual(false);
312
327
  expect(testEntity.$hasTag('test')).toEqual(true);
313
328
  expect(testEntity.$hasTag('newtag')).toEqual(true);
329
+ await testEntity.reference?.$wake();
314
330
  expect(testEntity.reference?.guid).toEqual(entityReferenceGuid);
331
+ await Promise.all(testEntity.refArray?.map((e) => e.$wake()) || []);
315
332
  expect(testEntity.refArray?.[0].guid).toEqual(entityReferenceGuid);
316
333
 
317
334
  expect(await testEntity.$refresh()).toEqual(true);