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.
- package/dist/client.d.ts +1 -0
- package/dist/client.js +12 -0
- package/dist/core/Implementation.js +7 -0
- package/dist/core/errors/UnknownParameter.d.ts +3 -0
- package/dist/core/errors/UnknownParameter.js +6 -0
- package/dist/runtime/LocalRepository.d.ts +1 -1
- package/dist/runtime/LocalRepository.js +13 -4
- package/dist/server/configuration/RepositoryConfiguration.d.ts +1 -0
- package/dist/server/configuration/RepositoryConfiguration.js +7 -1
- package/dist/server/configuration/StandaloneConfiguration.d.ts +1 -0
- package/dist/server/configuration/StandaloneConfiguration.js +6 -0
- package/dist/server/controllers/RPCController.js +20 -3
- package/dist/server/utils/LocalFileManager.d.ts +1 -0
- package/dist/server/utils/LocalFileManager.js +19 -11
- package/dist/server/utils/RuntimeConfigurator.js +9 -4
- package/package.json +6 -2
- package/.eslintignore +0 -3
- package/.eslintrc +0 -16
- package/jest.config.js +0 -20
- package/src/client.ts +0 -18
- package/src/core/ErrorManager.ts +0 -18
- package/src/core/Implementation.ts +0 -53
- package/src/core/Procedure.ts +0 -98
- package/src/core/Segment.ts +0 -62
- package/src/core/SegmentBuilder.ts +0 -55
- package/src/core/Version.ts +0 -68
- package/src/core/definitions/AccessLevel.ts +0 -3
- package/src/core/errors/ImplementationNotFound.ts +0 -12
- package/src/core/errors/InvalidVersionNumber.ts +0 -12
- package/src/core/errors/MissingParameterValue.ts +0 -12
- package/src/core/errors/NotImplemented.ts +0 -12
- package/src/core/errors/ProcedureNotFound.ts +0 -12
- package/src/core/interfaces/Runner.ts +0 -7
- package/src/core/reflection/ParameterParser.ts +0 -74
- package/src/core/reflection/ReflectionHelper.ts +0 -118
- package/src/core/reflection/models/ReflectionField.ts +0 -22
- package/src/core/reflection/models/ReflectionParameter.ts +0 -18
- package/src/core/types/Component.ts +0 -8
- package/src/core/types/FlexObject.ts +0 -4
- package/src/core/types/Module.ts +0 -6
- package/src/core/types/SegmentImplementation.ts +0 -9
- package/src/core/types/SegmentModule.ts +0 -9
- package/src/core/types/SegmentProcedure.ts +0 -11
- package/src/core/utils/FqnBuilder.ts +0 -11
- package/src/hooks.ts +0 -2
- package/src/lib.ts +0 -7
- package/src/runtime/ClientId.ts +0 -18
- package/src/runtime/Gateway.ts +0 -18
- package/src/runtime/LocalGateway.ts +0 -93
- package/src/runtime/LocalNode.ts +0 -130
- package/src/runtime/LocalRepository.ts +0 -154
- package/src/runtime/Node.ts +0 -15
- package/src/runtime/NodeBalancer.ts +0 -61
- package/src/runtime/NodeMonitor.ts +0 -63
- package/src/runtime/Proxy.ts +0 -60
- package/src/runtime/Remote.ts +0 -157
- package/src/runtime/RemoteGateway.ts +0 -40
- package/src/runtime/RemoteNode.ts +0 -49
- package/src/runtime/RemoteRepository.ts +0 -60
- package/src/runtime/Repository.ts +0 -20
- package/src/runtime/Runtime.ts +0 -47
- package/src/runtime/caching/CacheBuilder.ts +0 -424
- package/src/runtime/caching/ImportRewriter.ts +0 -76
- package/src/runtime/caching/RemoteBuilder.ts +0 -51
- package/src/runtime/caching/SourceAppender.ts +0 -57
- package/src/runtime/caching/definitions/Keywords.ts +0 -3
- package/src/runtime/caching/errors/InvalidSegmentFilename.ts +0 -8
- package/src/runtime/caching/errors/MissingModuleExport.ts +0 -8
- package/src/runtime/caching/errors/SegmentFileNotLoaded.ts +0 -8
- package/src/runtime/caching/errors/SegmentModuleNotLoaded.ts +0 -8
- package/src/runtime/caching/models/ApplicationModule.ts +0 -30
- package/src/runtime/caching/models/Implementation.ts +0 -41
- package/src/runtime/caching/models/Procedure.ts +0 -26
- package/src/runtime/caching/models/Segment.ts +0 -28
- package/src/runtime/caching/models/SegmentModule.ts +0 -26
- package/src/runtime/caching/types/SegmentFile.ts +0 -6
- package/src/runtime/caching/types/SegmentImportProperties.ts +0 -9
- package/src/runtime/caching/types/SegmentImports.ts +0 -6
- package/src/runtime/errors/ClientNotFound.ts +0 -12
- package/src/runtime/errors/FileNotFound.ts +0 -12
- package/src/runtime/errors/InvalidClientId.ts +0 -12
- package/src/runtime/errors/InvalidJitarHooks.ts +0 -12
- package/src/runtime/errors/InvalidSegmentFile.ts +0 -12
- package/src/runtime/errors/ModuleNotLoaded.ts +0 -12
- package/src/runtime/errors/NoNodeAvailable.ts +0 -12
- package/src/runtime/errors/RepositoryNotAvaiable.ts +0 -12
- package/src/runtime/errors/RuntimeNotAvailable.ts +0 -12
- package/src/runtime/errors/SegmentNotFound.ts +0 -12
- package/src/runtime/hooks/dependencies.ts +0 -19
- package/src/runtime/hooks/runtime.ts +0 -25
- package/src/runtime/interfaces/FileManager.ts +0 -19
- package/src/runtime/interfaces/HealthCheck.ts +0 -5
- package/src/runtime/interfaces/ProcedureContainer.ts +0 -9
- package/src/runtime/models/File.ts +0 -22
- package/src/runtime/serialization/ArraySerializer.ts +0 -27
- package/src/runtime/serialization/ClassSerializer.ts +0 -133
- package/src/runtime/serialization/MapSerializer.ts +0 -60
- package/src/runtime/serialization/ObjectSerializer.ts +0 -42
- package/src/runtime/serialization/SetSerializer.ts +0 -42
- package/src/runtime/serialization/ValueSerializer.ts +0 -81
- package/src/runtime/serialization/errors/ClassNotFound.ts +0 -12
- package/src/runtime/serialization/errors/InvalidClass.ts +0 -12
- package/src/runtime/serialization/errors/InvalidPropertyType.ts +0 -12
- package/src/runtime/serialization/interfaces/Serializer.ts +0 -10
- package/src/runtime/serialization/types/SerializableObject.ts +0 -6
- package/src/runtime/serialization/types/Serialized.ts +0 -8
- package/src/runtime/serialization/types/SerializedClass.ts +0 -13
- package/src/runtime/serialization/types/SerializedMap.ts +0 -13
- package/src/runtime/serialization/types/SerializedObject.ts +0 -4
- package/src/runtime/serialization/types/SerializedSet.ts +0 -9
- package/src/runtime/types/JitarHooks.ts +0 -10
- package/src/runtime/types/ModuleImporter.ts +0 -6
- package/src/runtime/utils/ModuleAnalyser.ts +0 -60
- package/src/runtime/utils/ModuleLoader.ts +0 -51
- package/src/runtime/utils/UrlRewriter.ts +0 -59
- package/src/server/JitarServer.ts +0 -161
- package/src/server/configuration/GatewayConfiguration.ts +0 -9
- package/src/server/configuration/NodeConfiguration.ts +0 -15
- package/src/server/configuration/ProxyConfiguration.ts +0 -16
- package/src/server/configuration/RepositoryConfiguration.ts +0 -17
- package/src/server/configuration/RuntimeConfiguration.ts +0 -30
- package/src/server/configuration/ServerOptions.ts +0 -14
- package/src/server/configuration/StandaloneConfiguration.ts +0 -21
- package/src/server/controllers/AssetsController.ts +0 -59
- package/src/server/controllers/HealthController.ts +0 -41
- package/src/server/controllers/JitarController.ts +0 -18
- package/src/server/controllers/ModulesController.ts +0 -77
- package/src/server/controllers/NodesController.ts +0 -58
- package/src/server/controllers/ProceduresController.ts +0 -31
- package/src/server/controllers/ProxyController.ts +0 -38
- package/src/server/controllers/RPCController.ts +0 -173
- package/src/server/definitions/RuntimeDefaults.ts +0 -10
- package/src/server/errors/MissingConfigurationValue.ts +0 -8
- package/src/server/errors/RuntimeNotAvaiable.ts +0 -8
- package/src/server/errors/UnknownRuntimeMode.ts +0 -8
- package/src/server/models/HealthDto.ts +0 -11
- package/src/server/models/NodeDto.ts +0 -11
- package/src/server/utils/DataConverter.ts +0 -15
- package/src/server/utils/LocalFileManager.ts +0 -122
- package/src/server/utils/RuntimeConfigurationLoader.ts +0 -19
- package/src/server/utils/RuntimeConfigurator.ts +0 -207
- package/src/server/utils/ServerOptionsReader.ts +0 -17
- package/src/server.ts +0 -16
- package/test/_fixtures/core/Implementation.fixture.ts +0 -33
- package/test/_fixtures/core/Procedure.fixture.ts +0 -33
- package/test/_fixtures/core/Segment.fixture.ts +0 -36
- package/test/_fixtures/core/SegmentBuilder.fixture.ts +0 -45
- package/test/_fixtures/core/Version.fixture.ts +0 -18
- package/test/_fixtures/core/reflection/ReflectionHelper.fixture.ts +0 -56
- package/test/_fixtures/runtime/LocalGateway.fixture.ts +0 -24
- package/test/_fixtures/runtime/LocalNode.fixture.ts +0 -16
- package/test/_fixtures/runtime/LocalRepository.fixture.ts +0 -73
- package/test/_fixtures/runtime/NodeBalancer.fixture.ts +0 -19
- package/test/_fixtures/runtime/NodeMonitor.fixture.ts +0 -34
- package/test/_fixtures/runtime/RemoteNode.fixture.ts +0 -8
- package/test/_fixtures/runtime/caching/ImportRewriter.fixture.ts +0 -81
- package/test/_fixtures/runtime/caching/RemoteBuilder.fixture.ts +0 -50
- package/test/_fixtures/runtime/caching/SourceAppender.fixture.ts +0 -35
- package/test/_fixtures/runtime/segments.ts +0 -78
- package/test/_fixtures/runtime/serialization/ValueSerializer.fixture.ts +0 -134
- package/test/_fixtures/runtime/utils/ModuleAnaliser.fixture.ts +0 -26
- package/test/core/Implementation.spec.ts +0 -89
- package/test/core/Procedure.spec.ts +0 -108
- package/test/core/Segment.spec.ts +0 -74
- package/test/core/SegmentBuilder.spec.ts +0 -39
- package/test/core/Version.spec.ts +0 -103
- package/test/core/errors/ErrorManager.spec.ts +0 -32
- package/test/core/reflection/ReflectionHelper.spec.ts +0 -128
- package/test/core/utils/FqnBuilder.spec.ts +0 -22
- package/test/runtime/ClientId.spec.ts +0 -43
- package/test/runtime/LocalGateway.spec.ts +0 -40
- package/test/runtime/LocalNode.spec.ts +0 -87
- package/test/runtime/LocalRepository.spec.ts +0 -50
- package/test/runtime/NodeBalancer.spec.ts +0 -39
- package/test/runtime/NodeMonitor.spec.ts +0 -31
- package/test/runtime/RemoteNode.spec.ts +0 -43
- package/test/runtime/caching/ImportRewriter.spec.ts +0 -68
- package/test/runtime/caching/RemoteBuilder.spec.ts +0 -21
- package/test/runtime/caching/SourceAppender.spec.ts +0 -31
- package/test/runtime/serialization/ValueSerializer.spec.ts +0 -203
- package/test/runtime/utils/ModuleAnalyser.spec.ts +0 -54
- package/test/runtime/utils/UrlRewriter.spec.ts +0 -57
- package/tsconfig.json +0 -23
|
@@ -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
|
-
});
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import InvalidClientId from '../../src/runtime/errors/InvalidClientId';
|
|
3
|
-
import ClientNotFound from '../../src/runtime/errors/ClientNotFound';
|
|
4
|
-
|
|
5
|
-
import
|
|
6
|
-
{
|
|
7
|
-
repository, client,
|
|
8
|
-
UNSEGMENTED_FILE, LOCAL_FILE, REMOTE_FILE
|
|
9
|
-
} from '../_fixtures/runtime/LocalRepository.fixture';
|
|
10
|
-
|
|
11
|
-
describe('runtime/LocalRepository', () =>
|
|
12
|
-
{
|
|
13
|
-
describe('.loadModule(clientId, filename)', () =>
|
|
14
|
-
{
|
|
15
|
-
it('should not accept an invalid client id', () =>
|
|
16
|
-
{
|
|
17
|
-
const run = async () => await repository.loadModule('INVALID', '/some/file');
|
|
18
|
-
|
|
19
|
-
expect(run).rejects.toEqual(new InvalidClientId('INVALID'));
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('should not accept an unknown client id', () =>
|
|
23
|
-
{
|
|
24
|
-
const run = async () => await repository.loadModule('CLIENT_9999', '/some/file');
|
|
25
|
-
|
|
26
|
-
expect(run).rejects.toEqual(new ClientNotFound('CLIENT_9999'));
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
it('should return an unsegmented module file', async () =>
|
|
30
|
-
{
|
|
31
|
-
const result = await repository.loadModule(client.id, UNSEGMENTED_FILE);
|
|
32
|
-
|
|
33
|
-
expect(result.content.toString()).toContain('fourthPrivateTask()');
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it('should return the actual module file', async () =>
|
|
37
|
-
{
|
|
38
|
-
const result = await repository.loadModule(client.id, LOCAL_FILE);
|
|
39
|
-
|
|
40
|
-
expect(result.content).toContain('firstPublicTask()');
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it('should return a remote module file', async () =>
|
|
44
|
-
{
|
|
45
|
-
const result = await repository.loadModule(client.id, REMOTE_FILE);
|
|
46
|
-
|
|
47
|
-
expect(result.content.toString()).toContain('runProcedure()');
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
});
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import NoNodeAvailable from '../../src/runtime/errors/NoNodeAvailable';
|
|
3
|
-
import Version from '../../src/core/Version';
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
balancer,
|
|
7
|
-
emptyBalancer,
|
|
8
|
-
firstNode,
|
|
9
|
-
secondNode
|
|
10
|
-
} from '../_fixtures/runtime/NodeBalancer.fixture';
|
|
11
|
-
|
|
12
|
-
describe('runtime/LocalGateway', () =>
|
|
13
|
-
{
|
|
14
|
-
describe('.getNextNode()', () =>
|
|
15
|
-
{
|
|
16
|
-
it('should select nodes round robin', async () =>
|
|
17
|
-
{
|
|
18
|
-
const firstSelectedNode = balancer.getNextNode();
|
|
19
|
-
const secondSelectedNode = balancer.getNextNode();
|
|
20
|
-
const thirdSelectedNode = balancer.getNextNode();
|
|
21
|
-
const fouthSelectedNode = balancer.getNextNode();
|
|
22
|
-
|
|
23
|
-
expect(firstSelectedNode).toBe(firstNode);
|
|
24
|
-
expect(secondSelectedNode).toBe(secondNode);
|
|
25
|
-
expect(thirdSelectedNode).toBe(firstNode);
|
|
26
|
-
expect(fouthSelectedNode).toBe(secondNode);
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
describe('.run(name, version, parameters)', () =>
|
|
31
|
-
{
|
|
32
|
-
it('throw a node not available error', async () =>
|
|
33
|
-
{
|
|
34
|
-
const run = async() => await emptyBalancer.run('NoProcedure', Version.DEFAULT, new Map());
|
|
35
|
-
|
|
36
|
-
expect(run).rejects.toEqual(new NoNodeAvailable('NoProcedure'));
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
});
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
goodNode,
|
|
4
|
-
badNode,
|
|
5
|
-
gateway,
|
|
6
|
-
monitor
|
|
7
|
-
} from '../_fixtures/runtime/NodeMonitor.fixture';
|
|
8
|
-
|
|
9
|
-
describe('runtime/LocalGateway', () =>
|
|
10
|
-
{
|
|
11
|
-
describe('.monitor()', () =>
|
|
12
|
-
{
|
|
13
|
-
it('should keep a node and remove a node', async () =>
|
|
14
|
-
{
|
|
15
|
-
const beforeNodes = gateway.nodes;
|
|
16
|
-
|
|
17
|
-
expect(beforeNodes.length).toBe(2);
|
|
18
|
-
expect(beforeNodes[0]).toBe(goodNode);
|
|
19
|
-
expect(beforeNodes[1]).toBe(badNode);
|
|
20
|
-
|
|
21
|
-
monitor.start();
|
|
22
|
-
await new Promise(resolve => setTimeout(resolve, 300));
|
|
23
|
-
monitor.stop();
|
|
24
|
-
|
|
25
|
-
const afterNodes = gateway.nodes;
|
|
26
|
-
|
|
27
|
-
expect(afterNodes.length).toBe(1);
|
|
28
|
-
expect(afterNodes[0]).toBe(goodNode);
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
});
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { API_URL, node } from '../_fixtures/runtime/RemoteNode.fixture';
|
|
3
|
-
|
|
4
|
-
describe('runtime/LocalGateway', () =>
|
|
5
|
-
{
|
|
6
|
-
describe('.url', () =>
|
|
7
|
-
{
|
|
8
|
-
it('should contain an url', () =>
|
|
9
|
-
{
|
|
10
|
-
expect(node.url).toContain(API_URL);
|
|
11
|
-
});
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
describe('.getProcedureNames()', () =>
|
|
15
|
-
{
|
|
16
|
-
it('should contain all registered procedure', () =>
|
|
17
|
-
{
|
|
18
|
-
const names = node.getProcedureNames();
|
|
19
|
-
|
|
20
|
-
expect(names).toContain('FirstProcedure');
|
|
21
|
-
expect(names).toContain('SecondProcedure');
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
describe('.hasProcedure(name)', () =>
|
|
26
|
-
{
|
|
27
|
-
it('should find a procedure', () =>
|
|
28
|
-
{
|
|
29
|
-
const hasFirstProcedure = node.hasProcedure('FirstProcedure');
|
|
30
|
-
const hasSecondProcedure = node.hasProcedure('FirstProcedure');
|
|
31
|
-
|
|
32
|
-
expect(hasFirstProcedure).toBeTruthy();
|
|
33
|
-
expect(hasSecondProcedure).toBeTruthy();
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it('should not find a procedure', () =>
|
|
37
|
-
{
|
|
38
|
-
const hasNoProcedure = node.hasProcedure('NoProcedure');
|
|
39
|
-
|
|
40
|
-
expect(hasNoProcedure).toBeFalsy();
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
});
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import ImportRewriter from '../../../src/runtime/caching/ImportRewriter';
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
{
|
|
6
|
-
noSystemImports, noSystemImportsResult,
|
|
7
|
-
hasSystemImports, hasSystemImportsResult,
|
|
8
|
-
hasJitarImports, hasJitarImportsResult,
|
|
9
|
-
hasMixedImports, hasMixedImportsResult,
|
|
10
|
-
hasDynamicImports, hasDynamicImportsResult,
|
|
11
|
-
hasImportsAndContent, hasImportsAndContentResult,
|
|
12
|
-
hasImportsNoSemicolon, hasImportsResultNoSemicolon
|
|
13
|
-
} from '../../_fixtures/runtime/caching/ImportRewriter.fixture';
|
|
14
|
-
|
|
15
|
-
describe('runtime/utils/ImportRewriter', () =>
|
|
16
|
-
{
|
|
17
|
-
describe('.rewrite(module)', () =>
|
|
18
|
-
{
|
|
19
|
-
it('should not rewrite non-system imports', () =>
|
|
20
|
-
{
|
|
21
|
-
const result = ImportRewriter.rewrite(noSystemImports);
|
|
22
|
-
|
|
23
|
-
expect(result).toBe(noSystemImportsResult);
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
it('should rewrite all system imports', () =>
|
|
27
|
-
{
|
|
28
|
-
const result = ImportRewriter.rewrite(hasSystemImports);
|
|
29
|
-
|
|
30
|
-
expect(result).toBe(hasSystemImportsResult);
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it('should rewrite all jitar imports', () =>
|
|
34
|
-
{
|
|
35
|
-
const result = ImportRewriter.rewrite(hasJitarImports);
|
|
36
|
-
|
|
37
|
-
expect(result).toBe(hasJitarImportsResult);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it('should rewrite all imports without semicolon', () =>
|
|
41
|
-
{
|
|
42
|
-
const result = ImportRewriter.rewrite(hasImportsNoSemicolon);
|
|
43
|
-
|
|
44
|
-
expect(result).toBe(hasImportsResultNoSemicolon);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
it('should rewrite mixed system and jitar imports', () =>
|
|
48
|
-
{
|
|
49
|
-
const result = ImportRewriter.rewrite(hasMixedImports);
|
|
50
|
-
|
|
51
|
-
expect(result).toBe(hasMixedImportsResult);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
it('should not rewrite dynamic imports', () =>
|
|
55
|
-
{
|
|
56
|
-
const result = ImportRewriter.rewrite(hasDynamicImports);
|
|
57
|
-
|
|
58
|
-
expect(result).toBe(hasDynamicImportsResult);
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
it('should not modify any content', () =>
|
|
62
|
-
{
|
|
63
|
-
const result = ImportRewriter.rewrite(hasImportsAndContent);
|
|
64
|
-
|
|
65
|
-
expect(result).toBe(hasImportsAndContentResult);
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
});
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import RemoteBuilder from '../../../src/runtime/caching/RemoteBuilder';
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
{
|
|
6
|
-
segmentModule,
|
|
7
|
-
codeResult
|
|
8
|
-
} from '../../_fixtures/runtime/caching/RemoteBuilder.fixture';
|
|
9
|
-
|
|
10
|
-
describe('runtime/utils/RemoteBuilder', () =>
|
|
11
|
-
{
|
|
12
|
-
describe('.build(module)', () =>
|
|
13
|
-
{
|
|
14
|
-
it('should create remote implementations for all exported functions', () =>
|
|
15
|
-
{
|
|
16
|
-
const result = RemoteBuilder.build(segmentModule);
|
|
17
|
-
|
|
18
|
-
expect(result).toBe(codeResult);
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
});
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import SourceAppender from '../../../src/runtime/caching/SourceAppender';
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
{
|
|
6
|
-
applicationModule,
|
|
7
|
-
emptyModule,
|
|
8
|
-
filecode,
|
|
9
|
-
filename,
|
|
10
|
-
codeResult
|
|
11
|
-
} from '../../_fixtures/runtime/caching/SourceAppender.fixture';
|
|
12
|
-
|
|
13
|
-
describe('runtime/utils/SourceAppender', () =>
|
|
14
|
-
{
|
|
15
|
-
describe('.append(module, code, filename)', () =>
|
|
16
|
-
{
|
|
17
|
-
it('should append a source properties to all exported classes', () =>
|
|
18
|
-
{
|
|
19
|
-
const result = SourceAppender.append(applicationModule, filecode, filename);
|
|
20
|
-
|
|
21
|
-
expect(result).toBe(codeResult);
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it('should not append any source', () =>
|
|
25
|
-
{
|
|
26
|
-
const result = SourceAppender.append(emptyModule, filecode, filename);
|
|
27
|
-
|
|
28
|
-
expect(result).toBe(filecode);
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
});
|