@nymphjs/nymph 1.0.0-alpha.2 → 1.0.0-alpha.20

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 (53) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/README.md +3 -5
  3. package/dist/Entity.d.ts +1 -1
  4. package/dist/Entity.js +4 -9
  5. package/dist/Entity.js.map +1 -1
  6. package/dist/Entity.test.js +6 -3
  7. package/dist/Entity.test.js.map +1 -1
  8. package/dist/Entity.types.d.ts +2 -2
  9. package/dist/Nymph.d.ts +6 -9
  10. package/dist/Nymph.js +50 -46
  11. package/dist/Nymph.js.map +1 -1
  12. package/dist/Nymph.types.d.ts +37 -29
  13. package/dist/Nymph.types.js +8 -0
  14. package/dist/Nymph.types.js.map +1 -1
  15. package/dist/driver/NymphDriver.d.ts +1 -1
  16. package/dist/driver/index.d.ts +0 -2
  17. package/dist/driver/index.js +1 -3
  18. package/dist/driver/index.js.map +1 -1
  19. package/dist/driver/testArtifacts.d.ts +4 -3
  20. package/dist/driver/testArtifacts.js +158 -153
  21. package/dist/driver/testArtifacts.js.map +1 -1
  22. package/dist/index.d.ts +4 -2
  23. package/dist/index.js +4 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/nymphJoiProps.d.ts +8 -0
  26. package/dist/nymphJoiProps.js +24 -0
  27. package/dist/nymphJoiProps.js.map +1 -0
  28. package/dist/testArtifacts.js +0 -3
  29. package/dist/testArtifacts.js.map +1 -1
  30. package/dist/testMocks.d.ts +14 -13
  31. package/dist/testMocks.js +21 -11
  32. package/dist/testMocks.js.map +1 -1
  33. package/dist/utils.d.ts +2 -2
  34. package/dist/utils.js +9 -7
  35. package/dist/utils.js.map +1 -1
  36. package/package.json +11 -10
  37. package/src/Entity.test.ts +7 -4
  38. package/src/Entity.ts +6 -7
  39. package/src/Entity.types.ts +2 -2
  40. package/src/Nymph.ts +76 -64
  41. package/src/Nymph.types.ts +73 -23
  42. package/src/driver/NymphDriver.ts +1 -1
  43. package/src/driver/index.ts +0 -3
  44. package/src/driver/testArtifacts.ts +22 -4
  45. package/src/index.ts +5 -2
  46. package/src/nymphJoiProps.ts +24 -0
  47. package/src/testArtifacts.ts +0 -5
  48. package/src/testMocks.ts +34 -29
  49. package/src/utils.ts +6 -9
  50. package/dist/driver/PreInitializedDriver.d.ts +0 -30
  51. package/dist/driver/PreInitializedDriver.js +0 -65
  52. package/dist/driver/PreInitializedDriver.js.map +0 -1
  53. package/src/driver/PreInitializedDriver.ts +0 -88
package/src/testMocks.ts CHANGED
@@ -1,11 +1,19 @@
1
+ import type Nymph from './Nymph';
1
2
  import { EntityConstructor, EntityInterface, EntityJson } from './Entity.types';
2
3
  import { Options, Selector } from './Nymph.types';
3
4
  import newGUID from './newGUID';
4
5
  import { ClassNotAvailableError } from './errors';
6
+ import Entity from './Entity';
5
7
 
6
8
  const entities: { [k: string]: EntityJson } = {};
7
9
 
8
10
  export class MockNymphDriver {
11
+ private nymph: MockNymph;
12
+
13
+ public constructor(nymph: MockNymph) {
14
+ this.nymph = nymph;
15
+ }
16
+
9
17
  public getEntitySync<T extends EntityConstructor = EntityConstructor>(
10
18
  options: Options<T> & { return: 'guid' },
11
19
  ...selectors: Selector[]
@@ -33,7 +41,7 @@ export class MockNymphDriver {
33
41
  }
34
42
 
35
43
  const entity: EntityInterface = (
36
- (options.class as T) ?? MockNymph.getEntityClass('Entity')
44
+ (options.class as T) ?? this.nymph.getEntityClass('Entity')
37
45
  ).factorySync();
38
46
  const entityJson = entities[guid];
39
47
  entity.guid = guid;
@@ -47,51 +55,48 @@ export class MockNymphDriver {
47
55
  }
48
56
 
49
57
  export class MockNymph {
50
- public static entityClasses: { [k: string]: EntityConstructor } = {};
51
- public static driver = new MockNymphDriver();
52
- public static Tilmeld: any = undefined;
53
-
54
- public static setEntityClass(
55
- className: string,
56
- entityClass: EntityConstructor
57
- ) {
58
- this.entityClasses[className] = entityClass;
58
+ private entityClasses: { [k: string]: EntityConstructor } = {};
59
+ public driver: MockNymphDriver;
60
+ public Tilmeld: any = undefined;
61
+
62
+ public constructor() {
63
+ this.driver = new MockNymphDriver(this);
64
+
65
+ // class NymphEntity extends Entity {}
66
+ this.addEntityClass(Entity);
67
+ }
68
+
69
+ public addEntityClass(entityClass: EntityConstructor) {
70
+ this.entityClasses[entityClass.class] = entityClass;
71
+ entityClass.nymph = this as unknown as Nymph;
59
72
  }
60
73
 
61
- public static getEntityClass(className: string): EntityConstructor {
74
+ public getEntityClass(className: string): EntityConstructor {
62
75
  if (className in this.entityClasses) {
63
- return this.entityClasses[className];
76
+ const EntityClass = this.entityClasses[className];
77
+ EntityClass.nymph = this as unknown as Nymph;
78
+ return EntityClass;
64
79
  }
65
80
  throw new ClassNotAvailableError('Tried to use class: ' + className);
66
81
  }
67
82
 
68
- public static async getEntity<
69
- T extends EntityConstructor = EntityConstructor
70
- >(
83
+ public async getEntity<T extends EntityConstructor = EntityConstructor>(
71
84
  options: Options<T> & { return: 'guid' },
72
85
  ...selectors: Selector[]
73
86
  ): Promise<string | null>;
74
- public static async getEntity<
75
- T extends EntityConstructor = EntityConstructor
76
- >(
87
+ public async getEntity<T extends EntityConstructor = EntityConstructor>(
77
88
  options: Options<T>,
78
89
  ...selectors: Selector[]
79
90
  ): Promise<ReturnType<T['factorySync']> | null>;
80
- public static async getEntity<
81
- T extends EntityConstructor = EntityConstructor
82
- >(
91
+ public async getEntity<T extends EntityConstructor = EntityConstructor>(
83
92
  options: Options<T> & { return: 'guid' },
84
93
  guid: string
85
94
  ): Promise<string | null>;
86
- public static async getEntity<
87
- T extends EntityConstructor = EntityConstructor
88
- >(
95
+ public async getEntity<T extends EntityConstructor = EntityConstructor>(
89
96
  options: Options<T>,
90
97
  guid: string
91
98
  ): Promise<ReturnType<T['factorySync']> | null>;
92
- public static async getEntity<
93
- T extends EntityConstructor = EntityConstructor
94
- >(
99
+ public async getEntity<T extends EntityConstructor = EntityConstructor>(
95
100
  options: Options<T> = {},
96
101
  ...selectors: Selector[] | string[]
97
102
  ): Promise<ReturnType<T['factorySync']> | string | null> {
@@ -99,7 +104,7 @@ export class MockNymph {
99
104
  return this.driver.getEntitySync(options, ...selectors);
100
105
  }
101
106
 
102
- public static async saveEntity(entity: EntityInterface): Promise<boolean> {
107
+ public async saveEntity(entity: EntityInterface): Promise<boolean> {
103
108
  const className = (entity.constructor as any).class as string;
104
109
 
105
110
  if (entity.guid == null) {
@@ -127,7 +132,7 @@ export class MockNymph {
127
132
  return true;
128
133
  }
129
134
 
130
- public static async deleteEntity(entity: EntityInterface): Promise<boolean> {
135
+ public async deleteEntity(entity: EntityInterface): Promise<boolean> {
131
136
  if (entity.guid != null && entity.guid in entities) {
132
137
  delete entities[entity.guid];
133
138
  return true;
package/src/utils.ts CHANGED
@@ -1,5 +1,6 @@
1
+ import Entity from './Entity';
1
2
  import { EntityReference } from './Entity.types';
2
- import { Nymph } from './Nymph';
3
+ import Nymph from './Nymph';
3
4
 
4
5
  export function xor(a: any, b: any): boolean {
5
6
  return !!(a && !b) || (!a && b);
@@ -13,19 +14,17 @@ export function uniqueStrings(array: string[]) {
13
14
  return Object.keys(obj);
14
15
  }
15
16
 
16
- export function entitiesToReferences(item: any, nymph: Nymph): any {
17
- const EntityClass = nymph.getEntityClass('Entity');
18
-
19
- if (item instanceof EntityClass && typeof item.$toReference === 'function') {
17
+ export function entitiesToReferences(item: any): any {
18
+ if (item instanceof Entity && typeof item.$toReference === 'function') {
20
19
  // Convert entities to references.
21
20
  return item.$toReference();
22
21
  } else if (Array.isArray(item)) {
23
22
  // Recurse into lower arrays.
24
- return item.map((entry) => entitiesToReferences(entry, nymph));
23
+ return item.map((entry) => entitiesToReferences(entry));
25
24
  } else if (item instanceof Object) {
26
25
  let newObj = Object.create(item);
27
26
  for (let [key, value] of Object.entries(item)) {
28
- newObj[key] = entitiesToReferences(value, nymph);
27
+ newObj[key] = entitiesToReferences(value);
29
28
  }
30
29
  return newObj;
31
30
  }
@@ -38,8 +37,6 @@ export function referencesToEntities(
38
37
  nymph: Nymph,
39
38
  useSkipAc = false
40
39
  ): any {
41
- const Entity = nymph.getEntityClass('Entity');
42
-
43
40
  if (Array.isArray(item)) {
44
41
  // Check if it's a reference.
45
42
  if (item[0] === 'nymph_entity_reference') {
@@ -1,30 +0,0 @@
1
- import type { Nymph } from '../Nymph';
2
- import { EntityConstructor, EntityInterface } from '../Entity.types';
3
- import { Options, Selector } from '../Nymph.types';
4
- import NymphDriver from './NymphDriver';
5
- export default class PreInitializedDriver extends NymphDriver {
6
- connect(): Promise<boolean>;
7
- isConnected(): boolean;
8
- startTransaction(_name: string): Promise<Nymph>;
9
- commit(_name: string): Promise<boolean>;
10
- rollback(_name: string): Promise<boolean>;
11
- inTransaction(): Promise<boolean>;
12
- deleteEntityByID(_guid: string, _className?: EntityConstructor | string | null): Promise<boolean>;
13
- deleteUID(_name: string): Promise<boolean>;
14
- disconnect(): Promise<boolean>;
15
- protected exportEntities(_writeLine: (line: string) => void): Promise<void>;
16
- getEntities<T extends EntityConstructor = EntityConstructor>(options: Options<T> & {
17
- return: 'guid';
18
- }, ...selectors: Selector[]): Promise<string[]>;
19
- getEntities<T extends EntityConstructor = EntityConstructor>(options?: Options<T>, ...selectors: Selector[]): Promise<ReturnType<T['factorySync']>[]>;
20
- protected getEntitiesSync<T extends EntityConstructor = EntityConstructor>(options: Options<T> & {
21
- return: 'guid';
22
- }, ...selectors: Selector[]): string[];
23
- protected getEntitiesSync<T extends EntityConstructor = EntityConstructor>(options?: Options<T>, ...selectors: Selector[]): ReturnType<T['factorySync']>[];
24
- getUID(_name: string): Promise<number | null>;
25
- import(_filename: string): Promise<boolean>;
26
- newUID(_name: string): Promise<number | null>;
27
- renameUID(_oldName: string, _newName: string): Promise<boolean>;
28
- saveEntity(_entity: EntityInterface): Promise<boolean>;
29
- setUID(_name: string, _value: number): Promise<boolean>;
30
- }
@@ -1,65 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const NymphDriver_1 = __importDefault(require("./NymphDriver"));
7
- const MSG = 'Nymph is not yet initialized!';
8
- class PreInitializedDriver extends NymphDriver_1.default {
9
- connect() {
10
- throw new Error(MSG);
11
- }
12
- isConnected() {
13
- throw new Error(MSG);
14
- }
15
- startTransaction(_name) {
16
- throw new Error(MSG);
17
- }
18
- commit(_name) {
19
- throw new Error(MSG);
20
- }
21
- rollback(_name) {
22
- throw new Error(MSG);
23
- }
24
- inTransaction() {
25
- throw new Error(MSG);
26
- }
27
- deleteEntityByID(_guid, _className) {
28
- throw new Error(MSG);
29
- }
30
- deleteUID(_name) {
31
- throw new Error(MSG);
32
- }
33
- disconnect() {
34
- throw new Error(MSG);
35
- }
36
- exportEntities(_writeLine) {
37
- throw new Error(MSG);
38
- }
39
- getEntities(_options = {}, ..._selectors) {
40
- throw new Error(MSG);
41
- }
42
- getEntitiesSync(_options = {}, ..._selectors) {
43
- throw new Error(MSG);
44
- }
45
- getUID(_name) {
46
- throw new Error(MSG);
47
- }
48
- import(_filename) {
49
- throw new Error(MSG);
50
- }
51
- newUID(_name) {
52
- throw new Error(MSG);
53
- }
54
- renameUID(_oldName, _newName) {
55
- throw new Error(MSG);
56
- }
57
- saveEntity(_entity) {
58
- throw new Error(MSG);
59
- }
60
- setUID(_name, _value) {
61
- throw new Error(MSG);
62
- }
63
- }
64
- exports.default = PreInitializedDriver;
65
- //# sourceMappingURL=PreInitializedDriver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PreInitializedDriver.js","sourceRoot":"","sources":["../../src/driver/PreInitializedDriver.ts"],"names":[],"mappings":";;;;;AAGA,gEAAwC;AAExC,MAAM,GAAG,GAAG,+BAA+B,CAAC;AAE5C,MAAqB,oBAAqB,SAAQ,qBAAW;IAC3D,OAAO;QACL,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,WAAW;QACT,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,gBAAgB,CAAC,KAAa;QAC5B,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,CAAC,KAAa;QAClB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,QAAQ,CAAC,KAAa;QACpB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,aAAa;QACX,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,gBAAgB,CACd,KAAa,EACb,UAA8C;QAE9C,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,SAAS,CAAC,KAAa;QACrB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,UAAU;QACR,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACS,cAAc,CAAC,UAAkC;QACzD,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IASD,WAAW,CACT,WAAuB,EAAE,EACzB,GAAG,UAAsB;QAEzB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IASS,eAAe,CACvB,WAAuB,EAAE,EACzB,GAAG,UAAsB;QAEzB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,CAAC,KAAa;QAClB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,CAAC,SAAiB;QACtB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,CAAC,KAAa;QAClB,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,SAAS,CAAC,QAAgB,EAAE,QAAgB;QAC1C,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,UAAU,CAAC,OAAwB;QACjC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,CAAC,KAAa,EAAE,MAAc;QAClC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;CACF;AAhFD,uCAgFC"}
@@ -1,88 +0,0 @@
1
- import type { Nymph } from '../Nymph';
2
- import { EntityConstructor, EntityInterface } from '../Entity.types';
3
- import { Options, Selector } from '../Nymph.types';
4
- import NymphDriver from './NymphDriver';
5
-
6
- const MSG = 'Nymph is not yet initialized!';
7
-
8
- export default class PreInitializedDriver extends NymphDriver {
9
- connect(): Promise<boolean> {
10
- throw new Error(MSG);
11
- }
12
- isConnected(): boolean {
13
- throw new Error(MSG);
14
- }
15
- startTransaction(_name: string): Promise<Nymph> {
16
- throw new Error(MSG);
17
- }
18
- commit(_name: string): Promise<boolean> {
19
- throw new Error(MSG);
20
- }
21
- rollback(_name: string): Promise<boolean> {
22
- throw new Error(MSG);
23
- }
24
- inTransaction(): Promise<boolean> {
25
- throw new Error(MSG);
26
- }
27
- deleteEntityByID(
28
- _guid: string,
29
- _className?: EntityConstructor | string | null
30
- ): Promise<boolean> {
31
- throw new Error(MSG);
32
- }
33
- deleteUID(_name: string): Promise<boolean> {
34
- throw new Error(MSG);
35
- }
36
- disconnect(): Promise<boolean> {
37
- throw new Error(MSG);
38
- }
39
- protected exportEntities(_writeLine: (line: string) => void): Promise<void> {
40
- throw new Error(MSG);
41
- }
42
- getEntities<T extends EntityConstructor = EntityConstructor>(
43
- options: Options<T> & { return: 'guid' },
44
- ...selectors: Selector[]
45
- ): Promise<string[]>;
46
- getEntities<T extends EntityConstructor = EntityConstructor>(
47
- options?: Options<T>,
48
- ...selectors: Selector[]
49
- ): Promise<ReturnType<T['factorySync']>[]>;
50
- getEntities<T extends EntityConstructor = EntityConstructor>(
51
- _options: Options<T> = {},
52
- ..._selectors: Selector[]
53
- ): Promise<ReturnType<T['factorySync']>[] | string[]> {
54
- throw new Error(MSG);
55
- }
56
- protected getEntitiesSync<T extends EntityConstructor = EntityConstructor>(
57
- options: Options<T> & { return: 'guid' },
58
- ...selectors: Selector[]
59
- ): string[];
60
- protected getEntitiesSync<T extends EntityConstructor = EntityConstructor>(
61
- options?: Options<T>,
62
- ...selectors: Selector[]
63
- ): ReturnType<T['factorySync']>[];
64
- protected getEntitiesSync<T extends EntityConstructor = EntityConstructor>(
65
- _options: Options<T> = {},
66
- ..._selectors: Selector[]
67
- ): ReturnType<T['factorySync']>[] | string[] {
68
- throw new Error(MSG);
69
- }
70
- getUID(_name: string): Promise<number | null> {
71
- throw new Error(MSG);
72
- }
73
- import(_filename: string): Promise<boolean> {
74
- throw new Error(MSG);
75
- }
76
- newUID(_name: string): Promise<number | null> {
77
- throw new Error(MSG);
78
- }
79
- renameUID(_oldName: string, _newName: string): Promise<boolean> {
80
- throw new Error(MSG);
81
- }
82
- saveEntity(_entity: EntityInterface): Promise<boolean> {
83
- throw new Error(MSG);
84
- }
85
- setUID(_name: string, _value: number): Promise<boolean> {
86
- throw new Error(MSG);
87
- }
88
- }