jitar 0.1.1 → 0.1.2

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 (180) hide show
  1. package/dist/core/Implementation.js +7 -0
  2. package/dist/core/errors/UnknownParameter.d.ts +3 -0
  3. package/dist/core/errors/UnknownParameter.js +6 -0
  4. package/dist/runtime/LocalRepository.d.ts +1 -1
  5. package/dist/runtime/LocalRepository.js +13 -4
  6. package/dist/server/configuration/RepositoryConfiguration.d.ts +1 -0
  7. package/dist/server/configuration/RepositoryConfiguration.js +7 -1
  8. package/dist/server/configuration/StandaloneConfiguration.d.ts +1 -0
  9. package/dist/server/configuration/StandaloneConfiguration.js +6 -0
  10. package/dist/server/utils/LocalFileManager.d.ts +1 -0
  11. package/dist/server/utils/LocalFileManager.js +19 -11
  12. package/dist/server/utils/RuntimeConfigurator.js +9 -4
  13. package/package.json +4 -1
  14. package/.eslintignore +0 -3
  15. package/.eslintrc +0 -16
  16. package/jest.config.js +0 -20
  17. package/src/client.ts +0 -18
  18. package/src/core/ErrorManager.ts +0 -18
  19. package/src/core/Implementation.ts +0 -53
  20. package/src/core/Procedure.ts +0 -98
  21. package/src/core/Segment.ts +0 -62
  22. package/src/core/SegmentBuilder.ts +0 -55
  23. package/src/core/Version.ts +0 -68
  24. package/src/core/definitions/AccessLevel.ts +0 -3
  25. package/src/core/errors/ImplementationNotFound.ts +0 -12
  26. package/src/core/errors/InvalidVersionNumber.ts +0 -12
  27. package/src/core/errors/MissingParameterValue.ts +0 -12
  28. package/src/core/errors/NotImplemented.ts +0 -12
  29. package/src/core/errors/ProcedureNotFound.ts +0 -12
  30. package/src/core/interfaces/Runner.ts +0 -7
  31. package/src/core/reflection/ParameterParser.ts +0 -74
  32. package/src/core/reflection/ReflectionHelper.ts +0 -118
  33. package/src/core/reflection/models/ReflectionField.ts +0 -22
  34. package/src/core/reflection/models/ReflectionParameter.ts +0 -18
  35. package/src/core/types/Component.ts +0 -8
  36. package/src/core/types/FlexObject.ts +0 -4
  37. package/src/core/types/Module.ts +0 -6
  38. package/src/core/types/SegmentImplementation.ts +0 -9
  39. package/src/core/types/SegmentModule.ts +0 -9
  40. package/src/core/types/SegmentProcedure.ts +0 -11
  41. package/src/core/utils/FqnBuilder.ts +0 -11
  42. package/src/hooks.ts +0 -2
  43. package/src/lib.ts +0 -7
  44. package/src/runtime/ClientId.ts +0 -18
  45. package/src/runtime/Gateway.ts +0 -18
  46. package/src/runtime/LocalGateway.ts +0 -93
  47. package/src/runtime/LocalNode.ts +0 -130
  48. package/src/runtime/LocalRepository.ts +0 -154
  49. package/src/runtime/Node.ts +0 -15
  50. package/src/runtime/NodeBalancer.ts +0 -61
  51. package/src/runtime/NodeMonitor.ts +0 -63
  52. package/src/runtime/Proxy.ts +0 -60
  53. package/src/runtime/Remote.ts +0 -157
  54. package/src/runtime/RemoteGateway.ts +0 -40
  55. package/src/runtime/RemoteNode.ts +0 -49
  56. package/src/runtime/RemoteRepository.ts +0 -60
  57. package/src/runtime/Repository.ts +0 -20
  58. package/src/runtime/Runtime.ts +0 -47
  59. package/src/runtime/caching/CacheBuilder.ts +0 -424
  60. package/src/runtime/caching/ImportRewriter.ts +0 -76
  61. package/src/runtime/caching/RemoteBuilder.ts +0 -51
  62. package/src/runtime/caching/SourceAppender.ts +0 -57
  63. package/src/runtime/caching/definitions/Keywords.ts +0 -3
  64. package/src/runtime/caching/errors/InvalidSegmentFilename.ts +0 -8
  65. package/src/runtime/caching/errors/MissingModuleExport.ts +0 -8
  66. package/src/runtime/caching/errors/SegmentFileNotLoaded.ts +0 -8
  67. package/src/runtime/caching/errors/SegmentModuleNotLoaded.ts +0 -8
  68. package/src/runtime/caching/models/ApplicationModule.ts +0 -30
  69. package/src/runtime/caching/models/Implementation.ts +0 -41
  70. package/src/runtime/caching/models/Procedure.ts +0 -26
  71. package/src/runtime/caching/models/Segment.ts +0 -28
  72. package/src/runtime/caching/models/SegmentModule.ts +0 -26
  73. package/src/runtime/caching/types/SegmentFile.ts +0 -6
  74. package/src/runtime/caching/types/SegmentImportProperties.ts +0 -9
  75. package/src/runtime/caching/types/SegmentImports.ts +0 -6
  76. package/src/runtime/errors/ClientNotFound.ts +0 -12
  77. package/src/runtime/errors/FileNotFound.ts +0 -12
  78. package/src/runtime/errors/InvalidClientId.ts +0 -12
  79. package/src/runtime/errors/InvalidJitarHooks.ts +0 -12
  80. package/src/runtime/errors/InvalidSegmentFile.ts +0 -12
  81. package/src/runtime/errors/ModuleNotLoaded.ts +0 -12
  82. package/src/runtime/errors/NoNodeAvailable.ts +0 -12
  83. package/src/runtime/errors/RepositoryNotAvaiable.ts +0 -12
  84. package/src/runtime/errors/RuntimeNotAvailable.ts +0 -12
  85. package/src/runtime/errors/SegmentNotFound.ts +0 -12
  86. package/src/runtime/hooks/dependencies.ts +0 -19
  87. package/src/runtime/hooks/runtime.ts +0 -25
  88. package/src/runtime/interfaces/FileManager.ts +0 -19
  89. package/src/runtime/interfaces/HealthCheck.ts +0 -5
  90. package/src/runtime/interfaces/ProcedureContainer.ts +0 -9
  91. package/src/runtime/models/File.ts +0 -22
  92. package/src/runtime/serialization/ArraySerializer.ts +0 -27
  93. package/src/runtime/serialization/ClassSerializer.ts +0 -133
  94. package/src/runtime/serialization/MapSerializer.ts +0 -60
  95. package/src/runtime/serialization/ObjectSerializer.ts +0 -42
  96. package/src/runtime/serialization/SetSerializer.ts +0 -42
  97. package/src/runtime/serialization/ValueSerializer.ts +0 -81
  98. package/src/runtime/serialization/errors/ClassNotFound.ts +0 -12
  99. package/src/runtime/serialization/errors/InvalidClass.ts +0 -12
  100. package/src/runtime/serialization/errors/InvalidPropertyType.ts +0 -12
  101. package/src/runtime/serialization/interfaces/Serializer.ts +0 -10
  102. package/src/runtime/serialization/types/SerializableObject.ts +0 -6
  103. package/src/runtime/serialization/types/Serialized.ts +0 -8
  104. package/src/runtime/serialization/types/SerializedClass.ts +0 -13
  105. package/src/runtime/serialization/types/SerializedMap.ts +0 -13
  106. package/src/runtime/serialization/types/SerializedObject.ts +0 -4
  107. package/src/runtime/serialization/types/SerializedSet.ts +0 -9
  108. package/src/runtime/types/JitarHooks.ts +0 -10
  109. package/src/runtime/types/ModuleImporter.ts +0 -6
  110. package/src/runtime/utils/ModuleAnalyser.ts +0 -60
  111. package/src/runtime/utils/ModuleLoader.ts +0 -51
  112. package/src/runtime/utils/UrlRewriter.ts +0 -59
  113. package/src/server/JitarServer.ts +0 -161
  114. package/src/server/configuration/GatewayConfiguration.ts +0 -9
  115. package/src/server/configuration/NodeConfiguration.ts +0 -15
  116. package/src/server/configuration/ProxyConfiguration.ts +0 -16
  117. package/src/server/configuration/RepositoryConfiguration.ts +0 -17
  118. package/src/server/configuration/RuntimeConfiguration.ts +0 -30
  119. package/src/server/configuration/ServerOptions.ts +0 -14
  120. package/src/server/configuration/StandaloneConfiguration.ts +0 -21
  121. package/src/server/controllers/AssetsController.ts +0 -59
  122. package/src/server/controllers/HealthController.ts +0 -41
  123. package/src/server/controllers/JitarController.ts +0 -18
  124. package/src/server/controllers/ModulesController.ts +0 -77
  125. package/src/server/controllers/NodesController.ts +0 -58
  126. package/src/server/controllers/ProceduresController.ts +0 -31
  127. package/src/server/controllers/ProxyController.ts +0 -38
  128. package/src/server/controllers/RPCController.ts +0 -173
  129. package/src/server/definitions/RuntimeDefaults.ts +0 -10
  130. package/src/server/errors/MissingConfigurationValue.ts +0 -8
  131. package/src/server/errors/RuntimeNotAvaiable.ts +0 -8
  132. package/src/server/errors/UnknownRuntimeMode.ts +0 -8
  133. package/src/server/models/HealthDto.ts +0 -11
  134. package/src/server/models/NodeDto.ts +0 -11
  135. package/src/server/utils/DataConverter.ts +0 -15
  136. package/src/server/utils/LocalFileManager.ts +0 -122
  137. package/src/server/utils/RuntimeConfigurationLoader.ts +0 -19
  138. package/src/server/utils/RuntimeConfigurator.ts +0 -207
  139. package/src/server/utils/ServerOptionsReader.ts +0 -17
  140. package/src/server.ts +0 -16
  141. package/test/_fixtures/core/Implementation.fixture.ts +0 -33
  142. package/test/_fixtures/core/Procedure.fixture.ts +0 -33
  143. package/test/_fixtures/core/Segment.fixture.ts +0 -36
  144. package/test/_fixtures/core/SegmentBuilder.fixture.ts +0 -45
  145. package/test/_fixtures/core/Version.fixture.ts +0 -18
  146. package/test/_fixtures/core/reflection/ReflectionHelper.fixture.ts +0 -56
  147. package/test/_fixtures/runtime/LocalGateway.fixture.ts +0 -24
  148. package/test/_fixtures/runtime/LocalNode.fixture.ts +0 -16
  149. package/test/_fixtures/runtime/LocalRepository.fixture.ts +0 -73
  150. package/test/_fixtures/runtime/NodeBalancer.fixture.ts +0 -19
  151. package/test/_fixtures/runtime/NodeMonitor.fixture.ts +0 -34
  152. package/test/_fixtures/runtime/RemoteNode.fixture.ts +0 -8
  153. package/test/_fixtures/runtime/caching/ImportRewriter.fixture.ts +0 -81
  154. package/test/_fixtures/runtime/caching/RemoteBuilder.fixture.ts +0 -50
  155. package/test/_fixtures/runtime/caching/SourceAppender.fixture.ts +0 -35
  156. package/test/_fixtures/runtime/segments.ts +0 -78
  157. package/test/_fixtures/runtime/serialization/ValueSerializer.fixture.ts +0 -134
  158. package/test/_fixtures/runtime/utils/ModuleAnaliser.fixture.ts +0 -26
  159. package/test/core/Implementation.spec.ts +0 -89
  160. package/test/core/Procedure.spec.ts +0 -108
  161. package/test/core/Segment.spec.ts +0 -74
  162. package/test/core/SegmentBuilder.spec.ts +0 -39
  163. package/test/core/Version.spec.ts +0 -103
  164. package/test/core/errors/ErrorManager.spec.ts +0 -32
  165. package/test/core/reflection/ReflectionHelper.spec.ts +0 -128
  166. package/test/core/utils/FqnBuilder.spec.ts +0 -22
  167. package/test/runtime/ClientId.spec.ts +0 -43
  168. package/test/runtime/LocalGateway.spec.ts +0 -40
  169. package/test/runtime/LocalNode.spec.ts +0 -87
  170. package/test/runtime/LocalRepository.spec.ts +0 -50
  171. package/test/runtime/NodeBalancer.spec.ts +0 -39
  172. package/test/runtime/NodeMonitor.spec.ts +0 -31
  173. package/test/runtime/RemoteNode.spec.ts +0 -43
  174. package/test/runtime/caching/ImportRewriter.spec.ts +0 -68
  175. package/test/runtime/caching/RemoteBuilder.spec.ts +0 -21
  176. package/test/runtime/caching/SourceAppender.spec.ts +0 -31
  177. package/test/runtime/serialization/ValueSerializer.spec.ts +0 -203
  178. package/test/runtime/utils/ModuleAnalyser.spec.ts +0 -54
  179. package/test/runtime/utils/UrlRewriter.spec.ts +0 -57
  180. package/tsconfig.json +0 -23
@@ -1,108 +0,0 @@
1
-
2
- import Version from '../../src/core/Version';
3
- import ImplementationNotFound from '../../src/core/errors/ImplementationNotFound';
4
-
5
- import
6
- {
7
- rootProcedure,
8
- moduleProcedure,
9
- privateProcedure
10
- } from '../_fixtures/core/Procedure.fixture';
11
-
12
- describe('core/Procedure', () =>
13
- {
14
- describe('.module', () =>
15
- {
16
- it('should have an empty module', () =>
17
- {
18
- expect(rootProcedure.module).toBe('');
19
- });
20
-
21
- it('should have a defined module', () =>
22
- {
23
- expect(moduleProcedure.module).toBe('my/module');
24
- });
25
- });
26
-
27
- describe('.name', () =>
28
- {
29
- it('should have the defined name', () =>
30
- {
31
- expect(rootProcedure.name).toBe('myRootProcedure');
32
- expect(moduleProcedure.name).toBe('myModuleProcedure');
33
- });
34
- });
35
-
36
- describe('.fqn', () =>
37
- {
38
- it('should have its name only when no module is defined', () =>
39
- {
40
- expect(rootProcedure.fqn).toBe('myRootProcedure');
41
- });
42
-
43
- it('should have a combination of module and name when a module is defined', () =>
44
- {
45
- expect(moduleProcedure.fqn).toBe('my/module/myModuleProcedure');
46
- });
47
- });
48
-
49
- describe('.public', () =>
50
- {
51
- it('should have public implementations', () =>
52
- {
53
- expect(rootProcedure.public).toBeTruthy();
54
- });
55
-
56
- it('should not have public implementations', () =>
57
- {
58
- expect(privateProcedure.public).toBeFalsy();
59
- });
60
- });
61
-
62
- describe('.getImplementation(version)', () =>
63
- {
64
- it('should not get a lower implementation version than the lowest registered version', () =>
65
- {
66
- const implementation = rootProcedure.getImplementation(new Version(0, 0, 1));
67
-
68
- expect(implementation).toBeUndefined();
69
- });
70
-
71
- it('should get an exact version of an implementation', () =>
72
- {
73
- const implementation = rootProcedure.getImplementation(new Version(1, 0, 0));
74
-
75
- expect(implementation).not.toBeUndefined();
76
- expect(implementation?.version.toString()).toBe('1.0.0');
77
- });
78
-
79
- it('should get a lower version of an implementation if no exact version is found', () =>
80
- {
81
- const implementation = rootProcedure.getImplementation(new Version(1, 0, 3));
82
-
83
- expect(implementation).not.toBeNull();
84
- expect(implementation?.version.toString()).toBe('1.0.0');
85
- });
86
- });
87
-
88
- describe('.run(name, version)', () =>
89
- {
90
- it('should run a procedure', async () =>
91
- {
92
- const v1_0_0 = await rootProcedure.run(new Version(1, 0, 0), new Map());
93
- const v1_0_5 = await rootProcedure.run(new Version(1, 0, 5), new Map());
94
- const v1_1_0 = await rootProcedure.run(new Version(1, 1, 0), new Map());
95
-
96
- expect(v1_0_0).toBe('1.0.0');
97
- expect(v1_0_5).toBe('1.0.5');
98
- expect(v1_1_0).toBe('1.1.0');
99
- });
100
-
101
- it('throw a implementation not found error', async () =>
102
- {
103
- const run = async () => await rootProcedure.run(new Version(0, 0, 1), new Map());
104
-
105
- expect(run).rejects.toEqual(new ImplementationNotFound('myRootProcedure', '0.0.1'));
106
- });
107
- });
108
- });
@@ -1,74 +0,0 @@
1
-
2
- import ProcedureNotFound from '../../src/core/errors/ProcedureNotFound';
3
- import Version from '../../src/core/Version';
4
-
5
- import { segment } from '../_fixtures/core/Segment.fixture';
6
-
7
- describe('core/Segment', () =>
8
- {
9
- describe('.hasProcedure', () =>
10
- {
11
- it('should have a public procedure', async () =>
12
- {
13
- const hasProcedure = segment.hasProcedure('getPublic');
14
-
15
- expect(hasProcedure).toBeTruthy();
16
- });
17
-
18
- it('should have a private procedure', async () =>
19
- {
20
- const hasProcedure = segment.hasProcedure('getPrivate');
21
-
22
- expect(hasProcedure).toBeTruthy();
23
- });
24
-
25
- it('should have modulerized procedures', async () =>
26
- {
27
- const hasProcedure = segment.hasProcedure('my/module/getModule');
28
-
29
- expect(hasProcedure).toBeTruthy();
30
- });
31
- });
32
-
33
- describe('.getPublicProcedures()', () =>
34
- {
35
- it('should return public procedures only', async () =>
36
- {
37
- const procedures = segment.getPublicProcedures();
38
-
39
- expect(procedures.length).toBe(1);
40
- expect(procedures[0].fqn).toBe('getPublic');
41
- });
42
- });
43
-
44
- describe('.run(name, version, args)', () =>
45
- {
46
- it('should run a public procedure', async () =>
47
- {
48
- const result = await segment.run('getPublic', Version.DEFAULT, new Map());
49
-
50
- expect(result).toBe('public');
51
- });
52
-
53
- it('should run a private procedure', async () =>
54
- {
55
- const result = await segment.run('getPrivate', Version.DEFAULT, new Map());
56
-
57
- expect(result).toBe('private');
58
- });
59
-
60
- it('should not run a non-existing procedure', async () =>
61
- {
62
- const run = async () => await segment.run('noImplementation', Version.DEFAULT, new Map());
63
-
64
- expect(run).rejects.toEqual(new ProcedureNotFound('noImplementation'));
65
- });
66
-
67
- it('should not run a broken procedure', async () =>
68
- {
69
- const run = async () => await segment.run('throwError', Version.DEFAULT, new Map());
70
-
71
- expect(run).rejects.toEqual(new Error('broken\n[throwError | v0.0.0]'));
72
- });
73
- });
74
- });
@@ -1,39 +0,0 @@
1
-
2
- import { segmentModule } from '../_fixtures/core/SegmentBuilder.fixture';
3
-
4
- import SegmentBuilder from '../../src/core/SegmentBuilder';
5
- import Version from '../../src/core/Version';
6
-
7
- describe('core/SegmentBuilder', () =>
8
- {
9
- describe('.build(module)', () =>
10
- {
11
- const segment = SegmentBuilder.build('test', segmentModule);
12
-
13
- it('should have an id', () =>
14
- {
15
- expect(segment.id).toBe('test');
16
- });
17
-
18
- it('should have procedures', async () =>
19
- {
20
- const hasDefaultFunction = segment.hasProcedure('defaultFunction');
21
- const hasAnotherFunction = segment.hasProcedure('anotherFunction');
22
-
23
- expect(hasDefaultFunction).toBeTruthy();
24
- expect(hasAnotherFunction).toBeTruthy();
25
- });
26
-
27
- it('should have implementations', async () =>
28
- {
29
- const defaultFunction = segment.getProcedure('defaultFunction');
30
- const anotherFunction = segment.getProcedure('anotherFunction');
31
-
32
- const defaultImplementation = defaultFunction?.getImplementation(new Version(0, 0, 0));
33
- const anotherImplementation = anotherFunction?.getImplementation(new Version(1, 0, 0));
34
-
35
- expect(defaultImplementation).toBeDefined();
36
- expect(anotherImplementation).toBeDefined();
37
- });
38
- });
39
- });
@@ -1,103 +0,0 @@
1
-
2
- import Version from '../../src/core/Version';
3
- import InvalidVersionNumber from '../../src/core/errors/InvalidVersionNumber';
4
-
5
- import {
6
- actualVersion,
7
- equalVersion,
8
- greaterVersion,
9
- lesserVersion,
10
- majorMinorVersion,
11
- majorVersion
12
- } from '../_fixtures/core/Version.fixture';
13
-
14
- describe('core/Version', () =>
15
- {
16
- describe('.equals(version)', () =>
17
- {
18
- it('should be equal', () =>
19
- {
20
- const equal = actualVersion.equals(equalVersion);
21
-
22
- expect(equal).toBeTruthy();
23
- });
24
-
25
- it('should not be equal', () =>
26
- {
27
- const greaterEqual = actualVersion.equals(greaterVersion);
28
- const lesserEqual = actualVersion.equals(lesserVersion);
29
-
30
- expect(greaterEqual).toBeFalsy();
31
- expect(lesserEqual).toBeFalsy();
32
- });
33
- });
34
-
35
- describe('.greater(version)', () =>
36
- {
37
- it('should be greater', () =>
38
- {
39
- const equal = actualVersion.greater(lesserVersion);
40
-
41
- expect(equal).toBeTruthy();
42
- });
43
-
44
- it('should not be greater', () =>
45
- {
46
- const equalEqual = actualVersion.greater(equalVersion);
47
- const greaterEqual = actualVersion.greater(greaterVersion);
48
-
49
- expect(equalEqual).toBeFalsy();
50
- expect(greaterEqual).toBeFalsy();
51
- });
52
- });
53
-
54
- describe('.less(version)', () =>
55
- {
56
- it('should be less', () =>
57
- {
58
- const equal = actualVersion.less(greaterVersion);
59
-
60
- expect(equal).toBeTruthy();
61
- });
62
-
63
- it('should not be less', () =>
64
- {
65
- const equalEqual = actualVersion.less(equalVersion);
66
- const lesserEqual = actualVersion.less(lesserVersion);
67
-
68
- expect(equalEqual).toBeFalsy();
69
- expect(lesserEqual).toBeFalsy();
70
- });
71
- });
72
-
73
- describe('.parse(number)', () =>
74
- {
75
- it('should parse a major number', () =>
76
- {
77
- const version = Version.parse('1');
78
-
79
- expect(version).toEqual(majorVersion);
80
- });
81
-
82
- it('should parse a major.minor number', () =>
83
- {
84
- const version = Version.parse('1.2');
85
-
86
- expect(version).toEqual(majorMinorVersion);
87
- });
88
-
89
- it('should parse a major.minor.patch number', () =>
90
- {
91
- const version = Version.parse('1.2.3');
92
-
93
- expect(version).toEqual(actualVersion);
94
- });
95
-
96
- it('should not parse an invalid number', () =>
97
- {
98
- const run = () => Version.parse('1.2.3.4');
99
-
100
- expect(run).toThrow(new InvalidVersionNumber('1.2.3.4'));
101
- });
102
- });
103
- });
@@ -1,32 +0,0 @@
1
-
2
- import ErrorManager from '../../../src/core/ErrorManager';
3
-
4
- describe('core/errors/ErrorManager', () =>
5
- {
6
- describe('.handle(error, name, version)', () =>
7
- {
8
- it('should contain the only message for non errors', () =>
9
- {
10
- const result = ErrorManager.handle('Hello world', 'Test', '1.0.0');
11
-
12
- expect(result.message).toBe('Hello world\n[Test | v1.0.0]');
13
- });
14
-
15
- it('should contain the error message', () =>
16
- {
17
- const parentError = new Error('Hello world');
18
- const result = ErrorManager.handle(parentError, 'Test', '1.0.0');
19
-
20
- expect(result.message).toBe('Hello world\n[Test | v1.0.0]');
21
- });
22
-
23
- it('should only stack the procedure trace for run error parents', () =>
24
- {
25
- const first = new Error('Hello world');
26
- const second = ErrorManager.handle(first, 'Sub procedure', '1.0.0');
27
- const result = ErrorManager.handle(second, 'Root procedure', '1.1.0');
28
-
29
- expect(result.message).toBe('Hello world\n[Sub procedure | v1.0.0]\n[Root procedure | v1.1.0]');
30
- });
31
- });
32
- });
@@ -1,128 +0,0 @@
1
-
2
- import ReflectionHelper from '../../../src/core/reflection/ReflectionHelper';
3
-
4
- import
5
- {
6
- Person,
7
- User,
8
- johnDoe,
9
- requiredArgedFunction,
10
- optionalArgedFunction
11
- } from '../../_fixtures/core/reflection/ReflectionHelper.fixture';
12
-
13
- describe('core/reflection/ReflectionHelper', () =>
14
- {
15
- describe('.getClass(object)', () =>
16
- {
17
- it('should get the class of an object', () =>
18
- {
19
- const result = ReflectionHelper.getObjectClass(johnDoe);
20
-
21
- expect(result.name).toBe('Person');
22
- });
23
- });
24
-
25
- describe('.getParentClass(object)', () =>
26
- {
27
- it('should get the parent of a class', () =>
28
- {
29
- const result = ReflectionHelper.getParentClass(Person);
30
-
31
- expect(result.name).toBe('Human');
32
- });
33
- });
34
-
35
- describe('.getFields(class)', () =>
36
- {
37
- it('should get all fields of a class', () =>
38
- {
39
- const result = ReflectionHelper.getFields(Person);
40
-
41
- expect(result.length).toBe(4);
42
-
43
- expect(result[0].name).toBe('id');
44
- expect(result[0].canGet).toBe(true);
45
- expect(result[0].canSet).toBe(true);
46
-
47
- expect(result[1].name).toBe('fullName');
48
- expect(result[1].canGet).toBe(true);
49
- expect(result[1].canSet).toBe(false);
50
-
51
- expect(result[2].name).toBe('age');
52
- expect(result[2].canGet).toBe(true);
53
- expect(result[2].canSet).toBe(false);
54
-
55
- expect(result[3].name).toBe('state');
56
- expect(result[3].canGet).toBe(false);
57
- expect(result[3].canSet).toBe(true);
58
- });
59
- });
60
-
61
- describe('.getConstructorParameters(class)', () =>
62
- {
63
- it('should get the constructor parameters of a class', () =>
64
- {
65
- const result = ReflectionHelper.getConstructorParameters(Person);
66
-
67
- expect(result.length).toBe(4);
68
-
69
- expect(result[0].name).toBe('id');
70
- expect(result[1].name).toBe('firstName');
71
- expect(result[2].name).toBe('lastName');
72
- expect(result[3].name).toBe('age');
73
- });
74
-
75
- it('should get the constructor parameters of the parent class', () =>
76
- {
77
- const result = ReflectionHelper.getConstructorParameters(User);
78
-
79
- expect(result.length).toBe(4);
80
-
81
- expect(result[0].name).toBe('id');
82
- expect(result[1].name).toBe('firstName');
83
- expect(result[2].name).toBe('lastName');
84
- expect(result[3].name).toBe('age');
85
- });
86
- });
87
-
88
- describe('.getFunctionParameters(function)', () =>
89
- {
90
- it('should get the required parameters of a function', () =>
91
- {
92
- const result = ReflectionHelper.getFunctionParameters(requiredArgedFunction);
93
-
94
- expect(result.length).toBe(3);
95
-
96
- expect(result[0].name).toBe('a');
97
- expect(result[0].isOptional).toBe(false);
98
- expect(result[0].defaultValue).toBe(undefined);
99
-
100
- expect(result[1].name).toBe('b');
101
- expect(result[1].isOptional).toBe(false);
102
- expect(result[1].defaultValue).toBe(undefined);
103
-
104
- expect(result[2].name).toBe('c');
105
- expect(result[2].isOptional).toBe(false);
106
- expect(result[2].defaultValue).toBe(undefined);
107
- });
108
-
109
- it('should get the optional parameters of a function', () =>
110
- {
111
- const result = ReflectionHelper.getFunctionParameters(optionalArgedFunction);
112
-
113
- expect(result.length).toBe(3);
114
-
115
- expect(result[0].name).toBe('a');
116
- expect(result[0].isOptional).toBe(false);
117
- expect(result[0].defaultValue).toBe(undefined);
118
-
119
- expect(result[1].name).toBe('b');
120
- expect(result[1].isOptional).toBe(true);
121
- expect(result[1].defaultValue).toBe(`new Person(1, 'Jane', 'Doe', 42)`);
122
-
123
- expect(result[2].name).toBe('c');
124
- expect(result[2].isOptional).toBe(true);
125
- expect(result[2].defaultValue).toBe('0');
126
- });
127
- });
128
- });
@@ -1,22 +0,0 @@
1
-
2
- import FqnBuilder from '../../../src/core/utils/FqnBuilder';
3
-
4
- describe('core/utils/FqnBuilder', () =>
5
- {
6
- describe('.build(module, name)', () =>
7
- {
8
- it('should have its name only when no module is defined', () =>
9
- {
10
- const fqn = FqnBuilder.build('', 'myRootProcedure');
11
-
12
- expect(fqn).toBe('myRootProcedure');
13
- });
14
-
15
- it('should have a combination of module and name when a module is defined', () =>
16
- {
17
- const fqn = FqnBuilder.build('my/module', 'myModuleProcedure');
18
-
19
- expect(fqn).toBe('my/module/myModuleProcedure');
20
- });
21
- });
22
- });
@@ -1,43 +0,0 @@
1
-
2
- import ClientId from '../../src/runtime/ClientId';
3
-
4
- describe('runtime/ClientId', () =>
5
- {
6
- describe('.generate()', () =>
7
- {
8
- it('should generate a client id', () =>
9
- {
10
- const clientId = ClientId.generate();
11
-
12
- expect(clientId).toMatch(/^CLIENT_\d+$/);
13
- });
14
-
15
- it('should generate a different client id each time', () =>
16
- {
17
- const clientId1 = ClientId.generate();
18
- const clientId2 = ClientId.generate();
19
-
20
- expect(clientId1).not.toBe(clientId2);
21
- });
22
- });
23
-
24
- describe('.validate(clientId)', () =>
25
- {
26
- it('should return true if the client id is valid', () =>
27
- {
28
- expect(ClientId.validate('CLIENT_0')).toBe(true);
29
- expect(ClientId.validate('CLIENT_42')).toBe(true);
30
- expect(ClientId.validate('CLIENT_007')).toBe(true);
31
- });
32
-
33
- it('should return false if the client id is invalid', () =>
34
- {
35
- expect(ClientId.validate('CLIENT_')).toBe(false);
36
- expect(ClientId.validate('CLIENT_X')).toBe(false);
37
- expect(ClientId.validate('CLIENT_0a')).toBe(false);
38
- expect(ClientId.validate('CLIENT_0.1')).toBe(false);
39
- expect(ClientId.validate('Client_0')).toBe(false);
40
- expect(ClientId.validate('SERVER_0')).toBe(false);
41
- });
42
- });
43
- });
@@ -1,40 +0,0 @@
1
-
2
- import ProcedureNotFound from '../../src/core/errors/ProcedureNotFound';
3
- import Version from '../../src/core/Version';
4
-
5
- import { API_URL, gateway } from '../_fixtures/runtime/LocalGateway.fixture';
6
-
7
- describe('runtime/LocalGateway', () =>
8
- {
9
- describe('.url', () =>
10
- {
11
- it('should contain an url', () =>
12
- {
13
- expect(gateway.url).toContain(API_URL);
14
- });
15
- });
16
-
17
- describe('.run(name, version, parameters)', () =>
18
- {
19
- it('should find and run a procedure from a node', async () =>
20
- {
21
- const firstResult = await gateway.run('my/module/firstPublicTask', Version.DEFAULT, new Map());
22
-
23
- expect(firstResult).toBe('first');
24
- });
25
-
26
- it('should find and run a procedure from a node that calls a procedure on another node', async () =>
27
- {
28
- const result = await gateway.run('my/module/thirdPublicTask', Version.DEFAULT, new Map());
29
-
30
- expect(result).toBe('fourth');
31
- });
32
-
33
- it('should not run a non-existing procedure', async () =>
34
- {
35
- const run = async() => await gateway.run('my/module/nonExistingTask', Version.DEFAULT, new Map());
36
-
37
- expect(run).rejects.toEqual(new ProcedureNotFound('my/module/nonExistingTask'));
38
- });
39
- });
40
- });
@@ -1,87 +0,0 @@
1
-
2
- import ProcedureNotFound from '../../src/core/errors/ProcedureNotFound';
3
- import Version from '../../src/core/Version';
4
-
5
- import { API_URL, node } from '../_fixtures/runtime/LocalNode.fixture';
6
-
7
- describe('runtime/LocalNode', () =>
8
- {
9
- describe('.url', () =>
10
- {
11
- it('should contain an url', () =>
12
- {
13
- expect(node.url).toContain(API_URL);
14
- });
15
- });
16
-
17
- describe('.isHealty()', () =>
18
- {
19
- it('should be healthy', () =>
20
- {
21
- const healthy = node.isHealthy();
22
-
23
- expect(healthy).toBeTruthy();
24
- });
25
- });
26
-
27
- describe('.hasProcedure(name)', () =>
28
- {
29
- it('should find public procedures', () =>
30
- {
31
- const hasFirstProcedure = node.hasProcedure('my/module/firstPublicTask');
32
- const hasSecondProcedure = node.hasProcedure('my/module/secondPublicTask');
33
- const hasThirdProcedure = node.hasProcedure('my/module/thirdPublicTask');
34
-
35
- expect(hasFirstProcedure).toBeTruthy();
36
- expect(hasSecondProcedure).toBeTruthy();
37
- expect(hasThirdProcedure).toBeTruthy();
38
- });
39
-
40
- it('should not find private procedures', () =>
41
- {
42
- const hasFirstProcedure = node.hasProcedure('my/module/firstPrivateTask');
43
- const hasSecondProcedure = node.hasProcedure('my/module/secondPrivateTask');
44
-
45
- expect(hasFirstProcedure).toBeFalsy();
46
- expect(hasSecondProcedure).toBeFalsy();
47
- });
48
-
49
- it('should not find non-existing procedures', () =>
50
- {
51
- const hasNoProcedure = node.hasProcedure('my/module/nonExistingTask');
52
-
53
- expect(hasNoProcedure).toBeFalsy();
54
- });
55
- });
56
-
57
- describe('.run(name, version, parameters)', () =>
58
- {
59
- it('should run a public procedure that calls a private procedure on the same segment', async () =>
60
- {
61
- const result = await node.run('my/module/firstPublicTask', Version.DEFAULT, new Map());
62
-
63
- expect(result).toBe('first');
64
- });
65
-
66
- it('should run a public procedure that calls a private procedure on another segment', async () =>
67
- {
68
- const result = await node.run('my/module/secondPublicTask', Version.DEFAULT, new Map());
69
-
70
- expect(result).toBe('first');
71
- });
72
-
73
- it('should run a public procedure that calls a public procedure on another segment', async () =>
74
- {
75
- const result = await node.run('my/module/thirdPublicTask', Version.DEFAULT, new Map());
76
-
77
- expect(result).toBe('fourth');
78
- });
79
-
80
- it('should not run a non-existing procedure', async () =>
81
- {
82
- const run = async() => await node.run('my/module/nonExistingTask', Version.DEFAULT, new Map());
83
-
84
- expect(run).rejects.toEqual(new ProcedureNotFound('my/module/nonExistingTask'));
85
- });
86
- });
87
- });