jitar 0.1.1 → 0.1.3

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 (183) hide show
  1. package/dist/client.d.ts +1 -0
  2. package/dist/client.js +12 -0
  3. package/dist/core/Implementation.js +7 -0
  4. package/dist/core/errors/UnknownParameter.d.ts +3 -0
  5. package/dist/core/errors/UnknownParameter.js +6 -0
  6. package/dist/runtime/LocalRepository.d.ts +1 -1
  7. package/dist/runtime/LocalRepository.js +13 -4
  8. package/dist/server/configuration/RepositoryConfiguration.d.ts +1 -0
  9. package/dist/server/configuration/RepositoryConfiguration.js +7 -1
  10. package/dist/server/configuration/StandaloneConfiguration.d.ts +1 -0
  11. package/dist/server/configuration/StandaloneConfiguration.js +6 -0
  12. package/dist/server/controllers/RPCController.js +20 -3
  13. package/dist/server/utils/LocalFileManager.d.ts +1 -0
  14. package/dist/server/utils/LocalFileManager.js +19 -11
  15. package/dist/server/utils/RuntimeConfigurator.js +9 -4
  16. package/package.json +6 -2
  17. package/.eslintignore +0 -3
  18. package/.eslintrc +0 -16
  19. package/jest.config.js +0 -20
  20. package/src/client.ts +0 -18
  21. package/src/core/ErrorManager.ts +0 -18
  22. package/src/core/Implementation.ts +0 -53
  23. package/src/core/Procedure.ts +0 -98
  24. package/src/core/Segment.ts +0 -62
  25. package/src/core/SegmentBuilder.ts +0 -55
  26. package/src/core/Version.ts +0 -68
  27. package/src/core/definitions/AccessLevel.ts +0 -3
  28. package/src/core/errors/ImplementationNotFound.ts +0 -12
  29. package/src/core/errors/InvalidVersionNumber.ts +0 -12
  30. package/src/core/errors/MissingParameterValue.ts +0 -12
  31. package/src/core/errors/NotImplemented.ts +0 -12
  32. package/src/core/errors/ProcedureNotFound.ts +0 -12
  33. package/src/core/interfaces/Runner.ts +0 -7
  34. package/src/core/reflection/ParameterParser.ts +0 -74
  35. package/src/core/reflection/ReflectionHelper.ts +0 -118
  36. package/src/core/reflection/models/ReflectionField.ts +0 -22
  37. package/src/core/reflection/models/ReflectionParameter.ts +0 -18
  38. package/src/core/types/Component.ts +0 -8
  39. package/src/core/types/FlexObject.ts +0 -4
  40. package/src/core/types/Module.ts +0 -6
  41. package/src/core/types/SegmentImplementation.ts +0 -9
  42. package/src/core/types/SegmentModule.ts +0 -9
  43. package/src/core/types/SegmentProcedure.ts +0 -11
  44. package/src/core/utils/FqnBuilder.ts +0 -11
  45. package/src/hooks.ts +0 -2
  46. package/src/lib.ts +0 -7
  47. package/src/runtime/ClientId.ts +0 -18
  48. package/src/runtime/Gateway.ts +0 -18
  49. package/src/runtime/LocalGateway.ts +0 -93
  50. package/src/runtime/LocalNode.ts +0 -130
  51. package/src/runtime/LocalRepository.ts +0 -154
  52. package/src/runtime/Node.ts +0 -15
  53. package/src/runtime/NodeBalancer.ts +0 -61
  54. package/src/runtime/NodeMonitor.ts +0 -63
  55. package/src/runtime/Proxy.ts +0 -60
  56. package/src/runtime/Remote.ts +0 -157
  57. package/src/runtime/RemoteGateway.ts +0 -40
  58. package/src/runtime/RemoteNode.ts +0 -49
  59. package/src/runtime/RemoteRepository.ts +0 -60
  60. package/src/runtime/Repository.ts +0 -20
  61. package/src/runtime/Runtime.ts +0 -47
  62. package/src/runtime/caching/CacheBuilder.ts +0 -424
  63. package/src/runtime/caching/ImportRewriter.ts +0 -76
  64. package/src/runtime/caching/RemoteBuilder.ts +0 -51
  65. package/src/runtime/caching/SourceAppender.ts +0 -57
  66. package/src/runtime/caching/definitions/Keywords.ts +0 -3
  67. package/src/runtime/caching/errors/InvalidSegmentFilename.ts +0 -8
  68. package/src/runtime/caching/errors/MissingModuleExport.ts +0 -8
  69. package/src/runtime/caching/errors/SegmentFileNotLoaded.ts +0 -8
  70. package/src/runtime/caching/errors/SegmentModuleNotLoaded.ts +0 -8
  71. package/src/runtime/caching/models/ApplicationModule.ts +0 -30
  72. package/src/runtime/caching/models/Implementation.ts +0 -41
  73. package/src/runtime/caching/models/Procedure.ts +0 -26
  74. package/src/runtime/caching/models/Segment.ts +0 -28
  75. package/src/runtime/caching/models/SegmentModule.ts +0 -26
  76. package/src/runtime/caching/types/SegmentFile.ts +0 -6
  77. package/src/runtime/caching/types/SegmentImportProperties.ts +0 -9
  78. package/src/runtime/caching/types/SegmentImports.ts +0 -6
  79. package/src/runtime/errors/ClientNotFound.ts +0 -12
  80. package/src/runtime/errors/FileNotFound.ts +0 -12
  81. package/src/runtime/errors/InvalidClientId.ts +0 -12
  82. package/src/runtime/errors/InvalidJitarHooks.ts +0 -12
  83. package/src/runtime/errors/InvalidSegmentFile.ts +0 -12
  84. package/src/runtime/errors/ModuleNotLoaded.ts +0 -12
  85. package/src/runtime/errors/NoNodeAvailable.ts +0 -12
  86. package/src/runtime/errors/RepositoryNotAvaiable.ts +0 -12
  87. package/src/runtime/errors/RuntimeNotAvailable.ts +0 -12
  88. package/src/runtime/errors/SegmentNotFound.ts +0 -12
  89. package/src/runtime/hooks/dependencies.ts +0 -19
  90. package/src/runtime/hooks/runtime.ts +0 -25
  91. package/src/runtime/interfaces/FileManager.ts +0 -19
  92. package/src/runtime/interfaces/HealthCheck.ts +0 -5
  93. package/src/runtime/interfaces/ProcedureContainer.ts +0 -9
  94. package/src/runtime/models/File.ts +0 -22
  95. package/src/runtime/serialization/ArraySerializer.ts +0 -27
  96. package/src/runtime/serialization/ClassSerializer.ts +0 -133
  97. package/src/runtime/serialization/MapSerializer.ts +0 -60
  98. package/src/runtime/serialization/ObjectSerializer.ts +0 -42
  99. package/src/runtime/serialization/SetSerializer.ts +0 -42
  100. package/src/runtime/serialization/ValueSerializer.ts +0 -81
  101. package/src/runtime/serialization/errors/ClassNotFound.ts +0 -12
  102. package/src/runtime/serialization/errors/InvalidClass.ts +0 -12
  103. package/src/runtime/serialization/errors/InvalidPropertyType.ts +0 -12
  104. package/src/runtime/serialization/interfaces/Serializer.ts +0 -10
  105. package/src/runtime/serialization/types/SerializableObject.ts +0 -6
  106. package/src/runtime/serialization/types/Serialized.ts +0 -8
  107. package/src/runtime/serialization/types/SerializedClass.ts +0 -13
  108. package/src/runtime/serialization/types/SerializedMap.ts +0 -13
  109. package/src/runtime/serialization/types/SerializedObject.ts +0 -4
  110. package/src/runtime/serialization/types/SerializedSet.ts +0 -9
  111. package/src/runtime/types/JitarHooks.ts +0 -10
  112. package/src/runtime/types/ModuleImporter.ts +0 -6
  113. package/src/runtime/utils/ModuleAnalyser.ts +0 -60
  114. package/src/runtime/utils/ModuleLoader.ts +0 -51
  115. package/src/runtime/utils/UrlRewriter.ts +0 -59
  116. package/src/server/JitarServer.ts +0 -161
  117. package/src/server/configuration/GatewayConfiguration.ts +0 -9
  118. package/src/server/configuration/NodeConfiguration.ts +0 -15
  119. package/src/server/configuration/ProxyConfiguration.ts +0 -16
  120. package/src/server/configuration/RepositoryConfiguration.ts +0 -17
  121. package/src/server/configuration/RuntimeConfiguration.ts +0 -30
  122. package/src/server/configuration/ServerOptions.ts +0 -14
  123. package/src/server/configuration/StandaloneConfiguration.ts +0 -21
  124. package/src/server/controllers/AssetsController.ts +0 -59
  125. package/src/server/controllers/HealthController.ts +0 -41
  126. package/src/server/controllers/JitarController.ts +0 -18
  127. package/src/server/controllers/ModulesController.ts +0 -77
  128. package/src/server/controllers/NodesController.ts +0 -58
  129. package/src/server/controllers/ProceduresController.ts +0 -31
  130. package/src/server/controllers/ProxyController.ts +0 -38
  131. package/src/server/controllers/RPCController.ts +0 -173
  132. package/src/server/definitions/RuntimeDefaults.ts +0 -10
  133. package/src/server/errors/MissingConfigurationValue.ts +0 -8
  134. package/src/server/errors/RuntimeNotAvaiable.ts +0 -8
  135. package/src/server/errors/UnknownRuntimeMode.ts +0 -8
  136. package/src/server/models/HealthDto.ts +0 -11
  137. package/src/server/models/NodeDto.ts +0 -11
  138. package/src/server/utils/DataConverter.ts +0 -15
  139. package/src/server/utils/LocalFileManager.ts +0 -122
  140. package/src/server/utils/RuntimeConfigurationLoader.ts +0 -19
  141. package/src/server/utils/RuntimeConfigurator.ts +0 -207
  142. package/src/server/utils/ServerOptionsReader.ts +0 -17
  143. package/src/server.ts +0 -16
  144. package/test/_fixtures/core/Implementation.fixture.ts +0 -33
  145. package/test/_fixtures/core/Procedure.fixture.ts +0 -33
  146. package/test/_fixtures/core/Segment.fixture.ts +0 -36
  147. package/test/_fixtures/core/SegmentBuilder.fixture.ts +0 -45
  148. package/test/_fixtures/core/Version.fixture.ts +0 -18
  149. package/test/_fixtures/core/reflection/ReflectionHelper.fixture.ts +0 -56
  150. package/test/_fixtures/runtime/LocalGateway.fixture.ts +0 -24
  151. package/test/_fixtures/runtime/LocalNode.fixture.ts +0 -16
  152. package/test/_fixtures/runtime/LocalRepository.fixture.ts +0 -73
  153. package/test/_fixtures/runtime/NodeBalancer.fixture.ts +0 -19
  154. package/test/_fixtures/runtime/NodeMonitor.fixture.ts +0 -34
  155. package/test/_fixtures/runtime/RemoteNode.fixture.ts +0 -8
  156. package/test/_fixtures/runtime/caching/ImportRewriter.fixture.ts +0 -81
  157. package/test/_fixtures/runtime/caching/RemoteBuilder.fixture.ts +0 -50
  158. package/test/_fixtures/runtime/caching/SourceAppender.fixture.ts +0 -35
  159. package/test/_fixtures/runtime/segments.ts +0 -78
  160. package/test/_fixtures/runtime/serialization/ValueSerializer.fixture.ts +0 -134
  161. package/test/_fixtures/runtime/utils/ModuleAnaliser.fixture.ts +0 -26
  162. package/test/core/Implementation.spec.ts +0 -89
  163. package/test/core/Procedure.spec.ts +0 -108
  164. package/test/core/Segment.spec.ts +0 -74
  165. package/test/core/SegmentBuilder.spec.ts +0 -39
  166. package/test/core/Version.spec.ts +0 -103
  167. package/test/core/errors/ErrorManager.spec.ts +0 -32
  168. package/test/core/reflection/ReflectionHelper.spec.ts +0 -128
  169. package/test/core/utils/FqnBuilder.spec.ts +0 -22
  170. package/test/runtime/ClientId.spec.ts +0 -43
  171. package/test/runtime/LocalGateway.spec.ts +0 -40
  172. package/test/runtime/LocalNode.spec.ts +0 -87
  173. package/test/runtime/LocalRepository.spec.ts +0 -50
  174. package/test/runtime/NodeBalancer.spec.ts +0 -39
  175. package/test/runtime/NodeMonitor.spec.ts +0 -31
  176. package/test/runtime/RemoteNode.spec.ts +0 -43
  177. package/test/runtime/caching/ImportRewriter.spec.ts +0 -68
  178. package/test/runtime/caching/RemoteBuilder.spec.ts +0 -21
  179. package/test/runtime/caching/SourceAppender.spec.ts +0 -31
  180. package/test/runtime/serialization/ValueSerializer.spec.ts +0 -203
  181. package/test/runtime/utils/ModuleAnalyser.spec.ts +0 -54
  182. package/test/runtime/utils/UrlRewriter.spec.ts +0 -57
  183. package/tsconfig.json +0 -23
@@ -1,134 +0,0 @@
1
-
2
- import Component from "../../../../src/core/types/Component";
3
-
4
- const IMPORT_URL = '../../../test/_fixtures/runtime/serialization/ValueSerializer.fixture';
5
-
6
- export class Data
7
- {
8
- a?: number;
9
- b?: boolean;
10
- }
11
-
12
- (Data as Component).source = IMPORT_URL;
13
-
14
- export class Constructed
15
- {
16
- #a: number;
17
- #b: boolean;
18
- #c?: string;
19
-
20
- constructor(a: number, b: boolean)
21
- {
22
- this.#a = a;
23
- this.#b = b;
24
- }
25
-
26
- get a() { return this.#a; }
27
-
28
- get b() { return this.#b; }
29
-
30
- get c() { return this.#c; }
31
-
32
- set c(c) { this.#c = c; }
33
- }
34
-
35
- (Constructed as Component).source = IMPORT_URL;
36
-
37
- export class Nested
38
- {
39
- name: string;
40
- #constructed: Constructed;
41
-
42
- constructor(name: string, constructed: Constructed)
43
- {
44
- this.name = name;
45
- this.#constructed = constructed;
46
- }
47
-
48
- get constructed() { return this.#constructed; }
49
- }
50
-
51
- (Nested as Component).source = IMPORT_URL;
52
-
53
- export class PrivateFieldClass
54
- {
55
- #a: number;
56
- #b: boolean;
57
- c?: string;
58
-
59
- constructor(a: number, b: boolean)
60
- {
61
- this.#a = a;
62
- this.#b = b;
63
- }
64
-
65
- get d() { return this.#a; }
66
- }
67
-
68
- (PrivateFieldClass as Component).source = IMPORT_URL;
69
-
70
- const errorClass = new Error('hello');
71
- errorClass.stack = 'stacktrace';
72
-
73
- const numberValue = 1;
74
- const boolValue = true;
75
- const stringValue = 'hello';
76
- const nullValue = null;
77
- const undefinedValue = undefined;
78
-
79
- const emptyArray: unknown[] = [];
80
- const mixedArray: unknown[] = ['a', 1, true];
81
- const nestedArray: unknown[] = ['b', 2, ['c', false], true];
82
-
83
- const emptyObject: unknown = {};
84
- const mixedObject: unknown = { a: 1, b: true, c: 'hello' };
85
- const nestedObject: unknown = { a: 1, b: true, c: { d: false, e: true } };
86
-
87
- const emptyMap: Map<unknown, unknown> = new Map();
88
- const mixedMap: Map<unknown, unknown> = new Map().set('a', 1).set('b', true);
89
- const nestedMap: Map<unknown, unknown> = new Map().set('b', 'hello').set('c', new Map().set('d', false));
90
-
91
- const serializedEmptyMap = { serialized: true, name: 'Map', entries: { keys: [], values: [] } };
92
- const serializedMixedMap = { serialized: true, name: 'Map', entries: { keys: ['a', 'b'], values: [1, true] } }
93
- const serializedNestedMap = { serialized: true, name: 'Map', entries: { keys: ['b', 'c'], values: ['hello', { serialized: true, name: 'Map', entries: { keys: ['d'], values: [false] } }] } }
94
-
95
- const emptySet: Set<unknown> = new Set();
96
- const mixedSet: Set<unknown> = new Set().add(1).add(true);
97
- const nestedSet: Set<unknown> = new Set().add('hello').add(new Set().add(false));
98
-
99
- const serializedEmptySet = { serialized: true, name: 'Set', values: [] };
100
- const serializedMixedSet = { serialized: true, name: 'Set', values: [1, true] };
101
- const serializedNestedSet = { serialized: true, name: 'Set', values: ['hello', { serialized: true, name: 'Set', values: [false] }] };
102
-
103
- const serializedError = { serialized: true, name: 'Error', source: null, args: [], fields: { stack: 'stacktrace', message: 'hello' } };
104
-
105
- const dataClass = new Data();
106
- dataClass.a = 1;
107
- dataClass.b = true;
108
-
109
- const constructedClass = new Constructed(1, true);
110
- constructedClass.c = 'hello';
111
-
112
- const nestedClass = new Nested('hello', constructedClass);
113
- const privateClass = new PrivateFieldClass(1, true);
114
-
115
- const serializedDataClass = { serialized: true, name: 'Data', source: IMPORT_URL, args: [], fields: { a: 1, b: true } };
116
- const serializedConstructedClass = { serialized: true, name: 'Constructed', source: IMPORT_URL, args: [1, true], fields: { c: 'hello' } };
117
- const serializedNestedClass = { serialized: true, name: 'Nested', source: IMPORT_URL, args: ['hello', { serialized: true, name: 'Constructed', source: IMPORT_URL, args: [1, true], fields: { c: 'hello' } }], fields: {} };
118
- const serializedPrivateClass = { serialized: true, name: 'PrivateFieldClass', source: IMPORT_URL, args: [], fields: { c: undefined } };
119
-
120
- const serializedInvalidClass = { serialized: true, name: 'Invalid', source: null, args: [], fields: {} };
121
- const serializedUnserializableClass = { serialized: true, name: 'Infinity', source: null, args: [], fields: {} };
122
-
123
- export
124
- {
125
- numberValue, boolValue, stringValue, nullValue, undefinedValue,
126
- emptyArray, mixedArray, nestedArray,
127
- emptyObject, mixedObject, nestedObject,
128
- emptyMap, mixedMap, nestedMap, serializedEmptyMap, serializedMixedMap, serializedNestedMap,
129
- emptySet, mixedSet, nestedSet, serializedEmptySet, serializedMixedSet, serializedNestedSet,
130
- dataClass, constructedClass, nestedClass, serializedDataClass, serializedConstructedClass, serializedNestedClass,
131
- serializedInvalidClass, serializedUnserializableClass,
132
- privateClass, serializedPrivateClass,
133
- errorClass, serializedError
134
- }
@@ -1,26 +0,0 @@
1
-
2
- import Module from '../../../../src/core/types/Module';
3
-
4
- const string = 'Hello World';
5
-
6
- const pojo = { a: 10, b: 20 }
7
-
8
- function realFunction(a: number, b: number): number
9
- {
10
- return a + b;
11
- }
12
-
13
- class realClass {}
14
-
15
- const theModule: Module = {};
16
- theModule.string = string;
17
- theModule.pojo = pojo;
18
- theModule.realFunction = realFunction;
19
- theModule.realClass = realClass;
20
-
21
- export {
22
- theModule,
23
- pojo,
24
- realFunction,
25
- realClass
26
- }
@@ -1,89 +0,0 @@
1
-
2
- import MissingParameterValue from '../../src/core/errors/MissingParameterValue';
3
-
4
- import
5
- {
6
- privateImplementation,
7
- publicImplementation,
8
- parameterImplementation
9
- } from '../_fixtures/core/Implementation.fixture';
10
-
11
- describe('core/Implementation', () =>
12
- {
13
- describe('.version', () =>
14
- {
15
- it('should have a version', () =>
16
- {
17
- expect(privateImplementation.version.toString()).toBe('0.0.0');
18
- });
19
- });
20
-
21
- describe('.public', () =>
22
- {
23
- it('should be private', () =>
24
- {
25
- expect(privateImplementation.public).toBe(false);
26
- });
27
-
28
- it('should be public', () =>
29
- {
30
- expect(publicImplementation.public).toBe(true);
31
- });
32
- });
33
-
34
- describe('.parameters', () =>
35
- {
36
- it('should have no parameters', () =>
37
- {
38
- const parameters = publicImplementation.parameters;
39
-
40
- expect(parameters.length).toBe(0);
41
- });
42
-
43
- it('should have parameters', () =>
44
- {
45
- const parameters = parameterImplementation.parameters;
46
-
47
- expect(parameters.length).toBe(2);
48
-
49
- expect(parameters[0].name).toBe('mandatory');
50
- expect(parameters[0].isOptional).toBe(false);
51
-
52
- expect(parameters[1].name).toBe('optional');
53
- expect(parameters[1].isOptional).toBe(true);
54
- });
55
- });
56
-
57
- describe('.run(name, version, args)', () =>
58
- {
59
- it('should run a procedure without parameters', async () =>
60
- {
61
- const result = await publicImplementation.run(new Map());
62
-
63
- expect(result).toBe('public');
64
- });
65
-
66
- it('should run a procedure with parameter values', async () =>
67
- {
68
- const args = new Map().set('mandatory', 'mandatory').set('optional', 'optional');
69
- const result = await parameterImplementation.run(args);
70
-
71
- expect(result).toBe('mandatory optional');
72
- });
73
-
74
- it('should run a procedure without an optional parameter value', async () =>
75
- {
76
- const args = new Map().set('mandatory', 'mandatory');
77
- const result = await parameterImplementation.run(args);
78
-
79
- expect(result).toBe('mandatory default');
80
- });
81
-
82
- it('should not run a procedure without a mandatory parameter value', async () =>
83
- {
84
- const run = async () => await parameterImplementation.run(new Map());
85
-
86
- expect(run).rejects.toEqual(new MissingParameterValue('mandatory'));
87
- });
88
- });
89
- });
@@ -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
- });