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,33 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Procedure from '../../../src/core/Procedure';
|
|
3
|
-
import * as AccessLevel from '../../../src/core/definitions/AccessLevel';
|
|
4
|
-
import Implementation from '../../../src/core/Implementation';
|
|
5
|
-
import Version from '../../../src/core/Version';
|
|
6
|
-
|
|
7
|
-
function v1_0_0(): string { return '1.0.0'; }
|
|
8
|
-
function v1_0_5(): string { return '1.0.5'; }
|
|
9
|
-
function v1_1_0(): string { return '1.1.0'; }
|
|
10
|
-
|
|
11
|
-
const v100Implementation = new Implementation(new Version(1, 0, 0), AccessLevel.PRIVATE, [], v1_0_0);
|
|
12
|
-
const v105Implementation = new Implementation(new Version(1, 0, 5), AccessLevel.PUBLIC, [], v1_0_5);
|
|
13
|
-
const v110Implementation = new Implementation(new Version(1, 1, 0), AccessLevel.PUBLIC, [], v1_1_0);
|
|
14
|
-
|
|
15
|
-
const rootProcedure = new Procedure('', 'myRootProcedure');
|
|
16
|
-
rootProcedure.addImplementation(v100Implementation);
|
|
17
|
-
rootProcedure.addImplementation(v105Implementation);
|
|
18
|
-
rootProcedure.addImplementation(v110Implementation);
|
|
19
|
-
|
|
20
|
-
const moduleProcedure = new Procedure('my/module', 'myModuleProcedure');
|
|
21
|
-
moduleProcedure.addImplementation(v100Implementation);
|
|
22
|
-
moduleProcedure.addImplementation(v105Implementation);
|
|
23
|
-
moduleProcedure.addImplementation(v110Implementation);
|
|
24
|
-
|
|
25
|
-
const privateProcedure = new Procedure('my/module', 'myPrivateProcedure');
|
|
26
|
-
privateProcedure.addImplementation(v100Implementation);
|
|
27
|
-
|
|
28
|
-
export
|
|
29
|
-
{
|
|
30
|
-
rootProcedure,
|
|
31
|
-
moduleProcedure,
|
|
32
|
-
privateProcedure
|
|
33
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Procedure from '../../../src/core/Procedure';
|
|
3
|
-
import * as AccessLevel from '../../../src/core/definitions/AccessLevel';
|
|
4
|
-
import Implementation from '../../../src/core/Implementation';
|
|
5
|
-
import Version from '../../../src/core/Version';
|
|
6
|
-
import Segment from '../../../src/core/Segment';
|
|
7
|
-
|
|
8
|
-
function getPrivate(): string { return 'private'; }
|
|
9
|
-
function getPublic(): string { return 'public'; }
|
|
10
|
-
function getModule(): string { return 'my/module'; }
|
|
11
|
-
function throwError(): void { throw new Error('broken'); }
|
|
12
|
-
|
|
13
|
-
const privateImplementation = new Implementation(Version.DEFAULT, AccessLevel.PRIVATE, [], getPrivate);
|
|
14
|
-
const publicImplementation = new Implementation(Version.DEFAULT, AccessLevel.PUBLIC, [], getPublic);
|
|
15
|
-
const moduleImplementation = new Implementation(Version.DEFAULT, AccessLevel.PRIVATE, [], getModule);
|
|
16
|
-
const errorImplementation = new Implementation(Version.DEFAULT, AccessLevel.PRIVATE, [], throwError);
|
|
17
|
-
|
|
18
|
-
const privateProcedure = new Procedure('', 'getPrivate');
|
|
19
|
-
privateProcedure.addImplementation(privateImplementation);
|
|
20
|
-
|
|
21
|
-
const publicProcedure = new Procedure('', 'getPublic');
|
|
22
|
-
publicProcedure.addImplementation(publicImplementation);
|
|
23
|
-
|
|
24
|
-
const moduleProcedure = new Procedure('my/module', 'getModule');
|
|
25
|
-
moduleProcedure.addImplementation(moduleImplementation);
|
|
26
|
-
|
|
27
|
-
const errorProcedure = new Procedure('', 'throwError');
|
|
28
|
-
errorProcedure.addImplementation(errorImplementation);
|
|
29
|
-
|
|
30
|
-
const segment = new Segment('my-segment');
|
|
31
|
-
segment.addProcedure(privateProcedure);
|
|
32
|
-
segment.addProcedure(publicProcedure);
|
|
33
|
-
segment.addProcedure(moduleProcedure);
|
|
34
|
-
segment.addProcedure(errorProcedure);
|
|
35
|
-
|
|
36
|
-
export { segment }
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import SegmentModule from '../../../src/core/types/SegmentModule';
|
|
3
|
-
|
|
4
|
-
function defaultFunction(): string
|
|
5
|
-
{
|
|
6
|
-
return 'default';
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
function anotherFunction(a: string, b: string): string
|
|
10
|
-
{
|
|
11
|
-
return a + b;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const segmentModule: SegmentModule =
|
|
15
|
-
{
|
|
16
|
-
procedures:
|
|
17
|
-
[
|
|
18
|
-
{
|
|
19
|
-
module: '',
|
|
20
|
-
name: 'defaultFunction',
|
|
21
|
-
implementations:
|
|
22
|
-
[
|
|
23
|
-
{
|
|
24
|
-
access: 'public',
|
|
25
|
-
version: '0.0.0',
|
|
26
|
-
executable: defaultFunction
|
|
27
|
-
}
|
|
28
|
-
]
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
module: '',
|
|
32
|
-
name: 'anotherFunction',
|
|
33
|
-
implementations:
|
|
34
|
-
[
|
|
35
|
-
{
|
|
36
|
-
access: 'public',
|
|
37
|
-
version: '1.0.0',
|
|
38
|
-
executable: anotherFunction
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
}
|
|
42
|
-
]
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export { segmentModule }
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Version from '../../../src/core/Version';
|
|
3
|
-
|
|
4
|
-
const actualVersion = new Version(1, 2, 3);
|
|
5
|
-
const equalVersion = new Version(1, 2, 3);
|
|
6
|
-
const greaterVersion = new Version(10, 2, 3);
|
|
7
|
-
const lesserVersion = new Version(1, 1, 3);
|
|
8
|
-
const majorVersion = new Version(1, 0, 0);
|
|
9
|
-
const majorMinorVersion = new Version(1, 2, 0);
|
|
10
|
-
|
|
11
|
-
export {
|
|
12
|
-
actualVersion,
|
|
13
|
-
equalVersion,
|
|
14
|
-
greaterVersion,
|
|
15
|
-
lesserVersion,
|
|
16
|
-
majorVersion,
|
|
17
|
-
majorMinorVersion,
|
|
18
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
class Human {}
|
|
3
|
-
|
|
4
|
-
class Person extends Human
|
|
5
|
-
{
|
|
6
|
-
id: number;
|
|
7
|
-
#firstName: string; // No getter and setter
|
|
8
|
-
#lastName: string; // No getter and setter
|
|
9
|
-
#age: number; // No setter
|
|
10
|
-
#state: string; // No getter
|
|
11
|
-
|
|
12
|
-
constructor(id: number, firstName: string, lastName: string, age: number)
|
|
13
|
-
{
|
|
14
|
-
super();
|
|
15
|
-
|
|
16
|
-
this.id = id;
|
|
17
|
-
this.#firstName = firstName;
|
|
18
|
-
this.#lastName = lastName;
|
|
19
|
-
this.#age = age;
|
|
20
|
-
this.#state = 'Ottawa';
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
get fullName() { return `${this.#firstName} ${this.#lastName}`; }
|
|
24
|
-
|
|
25
|
-
get age() { return this.#age; }
|
|
26
|
-
|
|
27
|
-
set state(state: string) { this.#state = state; }
|
|
28
|
-
|
|
29
|
-
toString(): string
|
|
30
|
-
{
|
|
31
|
-
return `${this.fullName} is ${this.#age} years old and lives in ${this.#state}`;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
class User extends Person {}
|
|
36
|
-
|
|
37
|
-
const johnDoe = new Person(1, 'John', 'Doe', 42);
|
|
38
|
-
|
|
39
|
-
function requiredArgedFunction(a: string, b: Person, c: number): string
|
|
40
|
-
{
|
|
41
|
-
return a + b + c;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
function optionalArgedFunction(a: string, b = new Person(1, 'Jane', 'Doe', 42), c = 0): string
|
|
45
|
-
{
|
|
46
|
-
return a + b + c;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export
|
|
50
|
-
{
|
|
51
|
-
Person,
|
|
52
|
-
User,
|
|
53
|
-
johnDoe,
|
|
54
|
-
requiredArgedFunction,
|
|
55
|
-
optionalArgedFunction
|
|
56
|
-
};
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import LocalNode from '../../../src/runtime/LocalNode';
|
|
3
|
-
import LocalGateway from '../../../src/runtime/LocalGateway';
|
|
4
|
-
|
|
5
|
-
import { setRuntime } from '../../../src/hooks';
|
|
6
|
-
|
|
7
|
-
import { firstSegment, secondSegment } from './segments';
|
|
8
|
-
|
|
9
|
-
const API_URL = 'http://localhost:80';
|
|
10
|
-
|
|
11
|
-
const gateway = new LocalGateway(API_URL);
|
|
12
|
-
|
|
13
|
-
const firstNode = new LocalNode();
|
|
14
|
-
firstNode.addSegment(firstSegment);
|
|
15
|
-
firstNode.setGateway(gateway);
|
|
16
|
-
|
|
17
|
-
const secondNode = new LocalNode();
|
|
18
|
-
secondNode.addSegment(secondSegment);
|
|
19
|
-
secondNode.setGateway(gateway);
|
|
20
|
-
|
|
21
|
-
// All test cases have to start from this node
|
|
22
|
-
setRuntime(firstNode);
|
|
23
|
-
|
|
24
|
-
export { API_URL, gateway }
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import LocalNode from '../../../src/runtime/LocalNode';
|
|
3
|
-
|
|
4
|
-
import { setRuntime } from '../../../src/hooks';
|
|
5
|
-
|
|
6
|
-
import { firstSegment, secondSegment } from './segments';
|
|
7
|
-
|
|
8
|
-
const API_URL = 'http://localhost:80';
|
|
9
|
-
|
|
10
|
-
const node = new LocalNode(API_URL);
|
|
11
|
-
node.addSegment(firstSegment);
|
|
12
|
-
node.addSegment(secondSegment);
|
|
13
|
-
|
|
14
|
-
setRuntime(node);
|
|
15
|
-
|
|
16
|
-
export { API_URL, node }
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import FileLoader from '../../../src/runtime/interfaces/FileManager';
|
|
3
|
-
import LocalRepository from '../../../src/runtime/LocalRepository';
|
|
4
|
-
import File from '../../../src/runtime/models/File';
|
|
5
|
-
|
|
6
|
-
class TestFileManager implements FileLoader
|
|
7
|
-
{
|
|
8
|
-
getRootLocation(): string
|
|
9
|
-
{
|
|
10
|
-
return '';
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
getAbsoluteLocation(filename: string): string
|
|
14
|
-
{
|
|
15
|
-
return filename;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
getRelativeLocation(filename: string): string
|
|
19
|
-
{
|
|
20
|
-
return filename;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
24
|
-
async getType(filename: string): Promise<string>
|
|
25
|
-
{
|
|
26
|
-
return 'application/javascript';
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
async getContent(filename: string): Promise<Buffer | string>
|
|
30
|
-
{
|
|
31
|
-
switch (filename)
|
|
32
|
-
{
|
|
33
|
-
case 'fourthPrivateTask.js':
|
|
34
|
-
return Buffer.from('fourthPrivateTask()');
|
|
35
|
-
|
|
36
|
-
case 'firstPublicTask.local.js':
|
|
37
|
-
return Buffer.from('firstPublicTask()');
|
|
38
|
-
|
|
39
|
-
case 'secondPublicTask.remote.js':
|
|
40
|
-
return Buffer.from('runProcedure()');
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return Buffer.from('');
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
async load(filename: string): Promise<File>
|
|
47
|
-
{
|
|
48
|
-
const type = await this.getType(filename);
|
|
49
|
-
const content = await this.getContent(filename);
|
|
50
|
-
|
|
51
|
-
return new File(filename, type, content);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
55
|
-
async store(filename: string, content: string): Promise<void>
|
|
56
|
-
{
|
|
57
|
-
// Do nothing
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
const fileManager = new TestFileManager();
|
|
62
|
-
const repository = new LocalRepository(fileManager);
|
|
63
|
-
const client = { id: '' };
|
|
64
|
-
|
|
65
|
-
repository.registerSegment('first', ['firstPrivateTask.js', 'firstPublicTask.js', 'thirdPublicTask.js']);
|
|
66
|
-
repository.registerSegment('second', ['secondPrivateTask.js', 'secondPublicTask.js', 'fourthPublicTask.js']);
|
|
67
|
-
repository.registerClient(['first']).then(clientId => client.id = clientId);
|
|
68
|
-
|
|
69
|
-
const UNSEGMENTED_FILE = 'fourthPrivateTask.js';
|
|
70
|
-
const LOCAL_FILE = 'firstPublicTask.js';
|
|
71
|
-
const REMOTE_FILE = 'secondPublicTask.js';
|
|
72
|
-
|
|
73
|
-
export { repository, client, UNSEGMENTED_FILE, LOCAL_FILE, REMOTE_FILE }
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import LocalNode from '../../../src/runtime/LocalNode';
|
|
3
|
-
import NodeBalancer from '../../../src/runtime/NodeBalancer';
|
|
4
|
-
|
|
5
|
-
const firstNode = new LocalNode();
|
|
6
|
-
const secondNode = new LocalNode();
|
|
7
|
-
|
|
8
|
-
const balancer = new NodeBalancer();
|
|
9
|
-
balancer.addNode(firstNode);
|
|
10
|
-
balancer.addNode(secondNode);
|
|
11
|
-
|
|
12
|
-
const emptyBalancer = new NodeBalancer();
|
|
13
|
-
|
|
14
|
-
export {
|
|
15
|
-
balancer,
|
|
16
|
-
emptyBalancer,
|
|
17
|
-
firstNode,
|
|
18
|
-
secondNode
|
|
19
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import LocalNode from '../../../src/runtime/LocalNode';
|
|
3
|
-
import LocalGateway from '../../../src/runtime/LocalGateway';
|
|
4
|
-
import NodeMonitor from '../../../src/runtime/NodeMonitor';
|
|
5
|
-
import HealthCheck from '../../../src/runtime/interfaces/HealthCheck';
|
|
6
|
-
|
|
7
|
-
class HealthyCheck implements HealthCheck
|
|
8
|
-
{
|
|
9
|
-
async isHealthy(): Promise<boolean> { return true; }
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
class UnhealthyCheck implements HealthCheck
|
|
13
|
-
{
|
|
14
|
-
async isHealthy(): Promise<boolean> { return false; }
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const goodNode = new LocalNode();
|
|
18
|
-
goodNode.addHealthCheck('good', new HealthyCheck());
|
|
19
|
-
|
|
20
|
-
const badNode = new LocalNode();
|
|
21
|
-
badNode.addHealthCheck('bad', new UnhealthyCheck());
|
|
22
|
-
|
|
23
|
-
const gateway = new LocalGateway('http://localhost:80');
|
|
24
|
-
gateway.addNode(goodNode);
|
|
25
|
-
gateway.addNode(badNode);
|
|
26
|
-
|
|
27
|
-
const monitor = new NodeMonitor(gateway, 100);
|
|
28
|
-
|
|
29
|
-
export {
|
|
30
|
-
goodNode,
|
|
31
|
-
badNode,
|
|
32
|
-
gateway,
|
|
33
|
-
monitor
|
|
34
|
-
}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
const noSystemImports =
|
|
3
|
-
`import './path/to/file.js';
|
|
4
|
-
import component from '/path/to/component.js;';
|
|
5
|
-
import { component1, component2 } from '../path/to/components.js';
|
|
6
|
-
`;
|
|
7
|
-
|
|
8
|
-
const noSystemImportsResult = noSystemImports;
|
|
9
|
-
|
|
10
|
-
const hasSystemImports =
|
|
11
|
-
`import fs from 'fs';
|
|
12
|
-
import component from 'http';
|
|
13
|
-
import { component1, component2 } from 'https';
|
|
14
|
-
`;
|
|
15
|
-
|
|
16
|
-
const hasSystemImportsResult =
|
|
17
|
-
`import { getDependency } from "/jitar/hooks.js";
|
|
18
|
-
const fs = await getDependency('fs');
|
|
19
|
-
const component = await getDependency('http');
|
|
20
|
-
const { component1, component2 } = await getDependency('https');
|
|
21
|
-
`;
|
|
22
|
-
|
|
23
|
-
const hasJitarImports = `import { runProcedure } from 'jitar';`;
|
|
24
|
-
|
|
25
|
-
const hasJitarImportsResult =
|
|
26
|
-
`import { getDependency } from "/jitar/hooks.js";
|
|
27
|
-
import { runProcedure } from "/jitar/hooks.js";`;
|
|
28
|
-
|
|
29
|
-
const hasImportsNoSemicolon = `import { runProcedure } from 'jitar'`;
|
|
30
|
-
|
|
31
|
-
const hasImportsResultNoSemicolon =
|
|
32
|
-
`import { getDependency } from "/jitar/hooks.js";
|
|
33
|
-
import { runProcedure } from "/jitar/hooks.js";`;
|
|
34
|
-
|
|
35
|
-
const hasMixedImports =
|
|
36
|
-
`import component from './path/to/component.js';
|
|
37
|
-
import os from 'os';
|
|
38
|
-
import { runProcedure } from 'jitar';
|
|
39
|
-
`;
|
|
40
|
-
|
|
41
|
-
const hasMixedImportsResult =
|
|
42
|
-
`import { getDependency } from "/jitar/hooks.js";
|
|
43
|
-
import component from './path/to/component.js';
|
|
44
|
-
const os = await getDependency('os');
|
|
45
|
-
import { runProcedure } from "/jitar/hooks.js";
|
|
46
|
-
`;
|
|
47
|
-
|
|
48
|
-
const hasDynamicImports =
|
|
49
|
-
`import component from './path/to/component.js';
|
|
50
|
-
const os = await import('os');
|
|
51
|
-
`;
|
|
52
|
-
|
|
53
|
-
const hasDynamicImportsResult = hasDynamicImports;
|
|
54
|
-
|
|
55
|
-
const hasImportsAndContent =
|
|
56
|
-
`import os from 'os';
|
|
57
|
-
|
|
58
|
-
export default function test() {}
|
|
59
|
-
|
|
60
|
-
import { runProcedure } from 'jitar';
|
|
61
|
-
`;
|
|
62
|
-
|
|
63
|
-
const hasImportsAndContentResult =
|
|
64
|
-
`import { getDependency } from "/jitar/hooks.js";
|
|
65
|
-
const os = await getDependency('os');
|
|
66
|
-
|
|
67
|
-
export default function test() {}
|
|
68
|
-
|
|
69
|
-
import { runProcedure } from "/jitar/hooks.js";
|
|
70
|
-
`;
|
|
71
|
-
|
|
72
|
-
export
|
|
73
|
-
{
|
|
74
|
-
noSystemImports, noSystemImportsResult,
|
|
75
|
-
hasSystemImports, hasSystemImportsResult,
|
|
76
|
-
hasJitarImports, hasJitarImportsResult,
|
|
77
|
-
hasImportsNoSemicolon, hasImportsResultNoSemicolon,
|
|
78
|
-
hasMixedImports, hasMixedImportsResult,
|
|
79
|
-
hasDynamicImports, hasDynamicImportsResult,
|
|
80
|
-
hasImportsAndContent, hasImportsAndContentResult
|
|
81
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import FlexObject from '../../../../src/core/types/FlexObject';
|
|
3
|
-
import Implementation from '../../../../src/runtime/caching/models/Implementation';
|
|
4
|
-
import SegmentModule from '../../../../src/runtime/caching/models/SegmentModule';
|
|
5
|
-
|
|
6
|
-
function defaultFunction(): string
|
|
7
|
-
{
|
|
8
|
-
return 'default';
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
function anotherFunction(a: string, b: string): string
|
|
12
|
-
{
|
|
13
|
-
return a + b;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function privateFunction(): string
|
|
17
|
-
{
|
|
18
|
-
return 'private';
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const functions: FlexObject =
|
|
22
|
-
{
|
|
23
|
-
default: defaultFunction,
|
|
24
|
-
anotherFunction
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const implementations: Map<string, Implementation> = new Map();
|
|
28
|
-
implementations.set('default', new Implementation('', 'defaultFunction', 'public', '0.0.0', defaultFunction));
|
|
29
|
-
implementations.set('anotherFunction', new Implementation('', 'anotherFunction', 'public', '1.0.0', anotherFunction));
|
|
30
|
-
implementations.set('privateFunction', new Implementation('', 'privateFunction', 'private', '1.0.0', privateFunction));
|
|
31
|
-
|
|
32
|
-
const segmentModule = new SegmentModule('app/module.js', functions, implementations);
|
|
33
|
-
|
|
34
|
-
const codeResult =
|
|
35
|
-
`import { runProcedure } from "/jitar/hooks.js";
|
|
36
|
-
|
|
37
|
-
export default async function defaultFunction() {
|
|
38
|
-
\treturn runProcedure('defaultFunction', '0.0.0', { })
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export async function anotherFunction(a, b) {
|
|
42
|
-
\treturn runProcedure('anotherFunction', '1.0.0', { 'a': a, 'b': b })
|
|
43
|
-
}
|
|
44
|
-
`;
|
|
45
|
-
|
|
46
|
-
export
|
|
47
|
-
{
|
|
48
|
-
segmentModule,
|
|
49
|
-
codeResult
|
|
50
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import ApplicationModule from '../../../../src/runtime/caching/models/ApplicationModule';
|
|
3
|
-
|
|
4
|
-
class AClass {}
|
|
5
|
-
class BClass {}
|
|
6
|
-
class CClass {}
|
|
7
|
-
class DClass {}
|
|
8
|
-
|
|
9
|
-
const classes: Map<string, Function> = new Map();
|
|
10
|
-
classes.set('AClass', AClass);
|
|
11
|
-
classes.set('BClass', BClass);
|
|
12
|
-
classes.set('AliasClass', CClass); // Aliasses should be ignored
|
|
13
|
-
classes.set('AnonymousClass', class {}) // Anonymous classes should be ignored
|
|
14
|
-
classes.set('default', DClass); // Defaults should be accepted
|
|
15
|
-
|
|
16
|
-
const applicationModule = new ApplicationModule('app/module.js', classes, new Map());
|
|
17
|
-
const filecode = '/* code */';
|
|
18
|
-
const filename = 'app/core/classes.js';
|
|
19
|
-
|
|
20
|
-
const codeResult =
|
|
21
|
-
`/* code */
|
|
22
|
-
AClass.source = 'app/core/classes.js';
|
|
23
|
-
BClass.source = 'app/core/classes.js';
|
|
24
|
-
DClass.source = 'app/core/classes.js';`;
|
|
25
|
-
|
|
26
|
-
const emptyModule = new ApplicationModule('app/module.js', new Map(), new Map());
|
|
27
|
-
|
|
28
|
-
export
|
|
29
|
-
{
|
|
30
|
-
applicationModule,
|
|
31
|
-
emptyModule,
|
|
32
|
-
filecode,
|
|
33
|
-
filename,
|
|
34
|
-
codeResult
|
|
35
|
-
}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Procedure from '../../../src/core/Procedure';
|
|
3
|
-
import * as AccessLevel from '../../../src/core/definitions/AccessLevel';
|
|
4
|
-
import Implementation from '../../../src/core/Implementation';
|
|
5
|
-
import Version from '../../../src/core/Version';
|
|
6
|
-
import Segment from '../../../src/core/Segment';
|
|
7
|
-
|
|
8
|
-
import { runProcedure } from '../../../src/hooks';
|
|
9
|
-
|
|
10
|
-
function firstPrivateTask()
|
|
11
|
-
{
|
|
12
|
-
return 'first';
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
// Runs a private task on the same segment
|
|
16
|
-
function firstPublicTask()
|
|
17
|
-
{
|
|
18
|
-
return runProcedure('my/module/firstPrivateTask', '0.0.0', new Map());
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// Runs a public task on another segment
|
|
22
|
-
function thirdPublicTask()
|
|
23
|
-
{
|
|
24
|
-
return runProcedure('my/module/fourthPublicTask', '0.0.0', new Map());
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function fourthPublicTask()
|
|
28
|
-
{
|
|
29
|
-
return 'fourth';
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
function secondPrivateTask()
|
|
33
|
-
{
|
|
34
|
-
return 'second';
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Runs a private task on another segment
|
|
38
|
-
function secondPublicTask()
|
|
39
|
-
{
|
|
40
|
-
return runProcedure('my/module/firstPrivateTask', '0.0.0', new Map());
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const firstImplementation = new Implementation(Version.DEFAULT, AccessLevel.PRIVATE, [], firstPrivateTask);
|
|
44
|
-
const secondImplementation = new Implementation(Version.DEFAULT, AccessLevel.PUBLIC, [], firstPublicTask);
|
|
45
|
-
const thirdImplementation = new Implementation(Version.DEFAULT, AccessLevel.PUBLIC, [], thirdPublicTask);
|
|
46
|
-
const fourthImplementation = new Implementation(Version.DEFAULT, AccessLevel.PUBLIC, [], fourthPublicTask);
|
|
47
|
-
const fifthImplementation = new Implementation(Version.DEFAULT, AccessLevel.PRIVATE, [], secondPrivateTask);
|
|
48
|
-
const sixthImplementation = new Implementation(Version.DEFAULT, AccessLevel.PUBLIC, [], secondPublicTask);
|
|
49
|
-
|
|
50
|
-
const firstProcedure = new Procedure('my/module', 'firstPrivateTask');
|
|
51
|
-
firstProcedure.addImplementation(firstImplementation);
|
|
52
|
-
|
|
53
|
-
const secondProcedure = new Procedure('my/module', 'firstPublicTask');
|
|
54
|
-
secondProcedure.addImplementation(secondImplementation);
|
|
55
|
-
|
|
56
|
-
const thirdProcedure = new Procedure('my/module', 'thirdPublicTask');
|
|
57
|
-
thirdProcedure.addImplementation(thirdImplementation);
|
|
58
|
-
|
|
59
|
-
const fourthProcedure = new Procedure('my/module', 'fourthPublicTask');
|
|
60
|
-
fourthProcedure.addImplementation(fourthImplementation);
|
|
61
|
-
|
|
62
|
-
const fifthProcedure = new Procedure('my/module', 'secondPrivateTask');
|
|
63
|
-
fifthProcedure.addImplementation(fifthImplementation);
|
|
64
|
-
|
|
65
|
-
const sixthProcedure = new Procedure('my/module', 'secondPublicTask');
|
|
66
|
-
sixthProcedure.addImplementation(sixthImplementation);
|
|
67
|
-
|
|
68
|
-
const firstSegment = new Segment('first');
|
|
69
|
-
firstSegment.addProcedure(firstProcedure);
|
|
70
|
-
firstSegment.addProcedure(secondProcedure);
|
|
71
|
-
firstSegment.addProcedure(thirdProcedure);
|
|
72
|
-
|
|
73
|
-
const secondSegment = new Segment('second');
|
|
74
|
-
secondSegment.addProcedure(fourthProcedure);
|
|
75
|
-
secondSegment.addProcedure(fifthProcedure);
|
|
76
|
-
secondSegment.addProcedure(sixthProcedure);
|
|
77
|
-
|
|
78
|
-
export { firstSegment, secondSegment }
|