jitar 0.1.2 → 0.2.0
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/lib.d.ts +27 -1
- package/dist/lib.js +24 -1
- package/dist/runtime/serialization/ArrayBufferSerializer.d.ts +10 -0
- package/dist/runtime/serialization/ArrayBufferSerializer.js +54 -0
- package/dist/runtime/serialization/DateSerializer.d.ts +9 -0
- package/dist/runtime/serialization/DateSerializer.js +21 -0
- package/dist/runtime/serialization/ValueSerializer.d.ts +1 -0
- package/dist/runtime/serialization/ValueSerializer.js +24 -1
- package/dist/runtime/serialization/types/SerializedArrayBuffer.d.ts +6 -0
- package/dist/runtime/serialization/types/SerializedArrayBuffer.js +1 -0
- package/dist/runtime/serialization/types/SerializedDate.d.ts +5 -0
- package/dist/runtime/serialization/types/SerializedDate.js +1 -0
- package/dist/runtime/serialization/types/TypedArray.d.ts +2 -0
- package/dist/runtime/serialization/types/TypedArray.js +1 -0
- package/package.json +5 -20
- package/dist/server/JitarServer.d.ts +0 -8
- package/dist/server/JitarServer.js +0 -109
- package/dist/server/configuration/GatewayConfiguration.d.ts +0 -3
- package/dist/server/configuration/GatewayConfiguration.js +0 -18
- package/dist/server/configuration/NodeConfiguration.d.ts +0 -5
- package/dist/server/configuration/NodeConfiguration.js +0 -28
- package/dist/server/configuration/ProxyConfiguration.d.ts +0 -5
- package/dist/server/configuration/ProxyConfiguration.js +0 -29
- package/dist/server/configuration/RepositoryConfiguration.d.ts +0 -6
- package/dist/server/configuration/RepositoryConfiguration.js +0 -36
- package/dist/server/configuration/RuntimeConfiguration.d.ts +0 -13
- package/dist/server/configuration/RuntimeConfiguration.js +0 -48
- package/dist/server/configuration/ServerOptions.d.ts +0 -4
- package/dist/server/configuration/ServerOptions.js +0 -25
- package/dist/server/configuration/StandaloneConfiguration.d.ts +0 -7
- package/dist/server/configuration/StandaloneConfiguration.js +0 -42
- package/dist/server/controllers/AssetsController.d.ts +0 -8
- package/dist/server/controllers/AssetsController.js +0 -50
- package/dist/server/controllers/HealthController.d.ts +0 -10
- package/dist/server/controllers/HealthController.js +0 -47
- package/dist/server/controllers/JitarController.d.ts +0 -4
- package/dist/server/controllers/JitarController.js +0 -26
- package/dist/server/controllers/ModulesController.d.ts +0 -10
- package/dist/server/controllers/ModulesController.js +0 -68
- package/dist/server/controllers/NodesController.d.ts +0 -9
- package/dist/server/controllers/NodesController.js +0 -60
- package/dist/server/controllers/ProceduresController.d.ts +0 -10
- package/dist/server/controllers/ProceduresController.js +0 -35
- package/dist/server/controllers/ProxyController.d.ts +0 -7
- package/dist/server/controllers/ProxyController.js +0 -37
- package/dist/server/controllers/RPCController.d.ts +0 -9
- package/dist/server/controllers/RPCController.js +0 -129
- package/dist/server/definitions/RuntimeDefaults.d.ts +0 -7
- package/dist/server/definitions/RuntimeDefaults.js +0 -8
- package/dist/server/errors/MissingConfigurationValue.d.ts +0 -3
- package/dist/server/errors/MissingConfigurationValue.js +0 -5
- package/dist/server/errors/RuntimeNotAvaiable.d.ts +0 -3
- package/dist/server/errors/RuntimeNotAvaiable.js +0 -5
- package/dist/server/errors/UnknownRuntimeMode.d.ts +0 -3
- package/dist/server/errors/UnknownRuntimeMode.js +0 -5
- package/dist/server/models/HealthDto.d.ts +0 -4
- package/dist/server/models/HealthDto.js +0 -22
- package/dist/server/models/NodeDto.d.ts +0 -4
- package/dist/server/models/NodeDto.js +0 -22
- package/dist/server/utils/DataConverter.d.ts +0 -4
- package/dist/server/utils/DataConverter.js +0 -9
- package/dist/server/utils/LocalFileManager.d.ts +0 -21
- package/dist/server/utils/LocalFileManager.js +0 -81
- package/dist/server/utils/RuntimeConfigurationLoader.d.ts +0 -4
- package/dist/server/utils/RuntimeConfigurationLoader.js +0 -11
- package/dist/server/utils/RuntimeConfigurator.d.ts +0 -6
- package/dist/server/utils/RuntimeConfigurator.js +0 -135
- package/dist/server/utils/ServerOptionsReader.d.ts +0 -4
- package/dist/server/utils/ServerOptionsReader.js +0 -10
- package/dist/server.d.ts +0 -3
- package/dist/server.js +0 -8
package/dist/client.d.ts
CHANGED
package/dist/client.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import LocalNode from './runtime/LocalNode.js';
|
|
2
2
|
import RemoteGateway from './runtime/RemoteGateway.js';
|
|
3
3
|
import RemoteRepository from './runtime/RemoteRepository.js';
|
|
4
|
+
let client = undefined;
|
|
5
|
+
const resolvers = [];
|
|
4
6
|
export async function startClient(...segmentFiles) {
|
|
5
7
|
const remoteUrl = document.location.origin;
|
|
6
8
|
const node = new LocalNode();
|
|
@@ -8,5 +10,15 @@ export async function startClient(...segmentFiles) {
|
|
|
8
10
|
const repository = new RemoteRepository(remoteUrl);
|
|
9
11
|
await node.setGateway(gateway);
|
|
10
12
|
await node.setRepository(repository, segmentFiles);
|
|
13
|
+
client = node;
|
|
14
|
+
resolvers.forEach((resolve) => resolve(node));
|
|
11
15
|
return node;
|
|
12
16
|
}
|
|
17
|
+
export async function getClient() {
|
|
18
|
+
if (client === undefined) {
|
|
19
|
+
return new Promise((resolve) => {
|
|
20
|
+
resolvers.push(resolve);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return client;
|
|
24
|
+
}
|
package/dist/lib.d.ts
CHANGED
|
@@ -1,4 +1,30 @@
|
|
|
1
1
|
export { default as HealthCheck } from './runtime/interfaces/HealthCheck.js';
|
|
2
|
+
export { default as Version } from './core/Version.js';
|
|
3
|
+
export { default as ImplementationNotFound } from './core/errors/ImplementationNotFound.js';
|
|
4
|
+
export { default as InvalidVersionNumber } from './core/errors/InvalidVersionNumber.js';
|
|
5
|
+
export { default as MissingParameterValue } from './core/errors/MissingParameterValue.js';
|
|
6
|
+
export { default as ProcedureNotFound } from './core/errors/ProcedureNotFound.js';
|
|
7
|
+
export { default as UnknownParameter } from './core/errors/UnknownParameter.js';
|
|
8
|
+
export { default as FileNotFound } from './runtime/errors/FileNotFound.js';
|
|
9
|
+
export { default as LocalRepository } from './runtime/LocalRepository.js';
|
|
10
|
+
export { default as LocalNode } from './runtime/LocalNode.js';
|
|
11
|
+
export { default as Proxy } from './runtime/Proxy.js';
|
|
12
|
+
export { default as ValueSerializer } from './runtime/serialization/ValueSerializer.js';
|
|
13
|
+
export { default as ClientId } from './runtime/ClientId.js';
|
|
14
|
+
export { default as RemoteNode } from './runtime/RemoteNode.js';
|
|
15
|
+
export { default as LocalGateway } from './runtime/LocalGateway.js';
|
|
16
|
+
export { default as ProcedureContainer } from './runtime/interfaces/ProcedureContainer.js';
|
|
17
|
+
export { default as FileManager } from './runtime/interfaces/FileManager.js';
|
|
18
|
+
export { default as File } from './runtime/models/File.js';
|
|
19
|
+
export { default as CacheBuilder } from './runtime/caching/CacheBuilder.js';
|
|
20
|
+
export { default as Gateway } from './runtime/Gateway.js';
|
|
21
|
+
export { default as Node } from './runtime/Node.js';
|
|
22
|
+
export { default as NodeMonitor } from './runtime/NodeMonitor.js';
|
|
23
|
+
export { default as RemoteGateway } from './runtime/RemoteGateway.js';
|
|
24
|
+
export { default as Repository } from './runtime/Repository.js';
|
|
25
|
+
export { default as Runtime } from './runtime/Runtime.js';
|
|
26
|
+
export { default as RemoteRepository } from './runtime/RemoteRepository.js';
|
|
27
|
+
export { default as ModuleImporter } from './runtime/types/ModuleImporter.js';
|
|
28
|
+
export { default as ModuleLoader } from './runtime/utils/ModuleLoader.js';
|
|
2
29
|
export * from './client.js';
|
|
3
|
-
export * from './server.js';
|
|
4
30
|
export * from './hooks.js';
|
package/dist/lib.js
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
|
+
export { default as Version } from './core/Version.js';
|
|
2
|
+
export { default as ImplementationNotFound } from './core/errors/ImplementationNotFound.js';
|
|
3
|
+
export { default as InvalidVersionNumber } from './core/errors/InvalidVersionNumber.js';
|
|
4
|
+
export { default as MissingParameterValue } from './core/errors/MissingParameterValue.js';
|
|
5
|
+
export { default as ProcedureNotFound } from './core/errors/ProcedureNotFound.js';
|
|
6
|
+
export { default as UnknownParameter } from './core/errors/UnknownParameter.js';
|
|
7
|
+
export { default as FileNotFound } from './runtime/errors/FileNotFound.js';
|
|
8
|
+
export { default as LocalRepository } from './runtime/LocalRepository.js';
|
|
9
|
+
export { default as LocalNode } from './runtime/LocalNode.js';
|
|
10
|
+
export { default as Proxy } from './runtime/Proxy.js';
|
|
11
|
+
export { default as ValueSerializer } from './runtime/serialization/ValueSerializer.js';
|
|
12
|
+
export { default as ClientId } from './runtime/ClientId.js';
|
|
13
|
+
export { default as RemoteNode } from './runtime/RemoteNode.js';
|
|
14
|
+
export { default as LocalGateway } from './runtime/LocalGateway.js';
|
|
15
|
+
export { default as File } from './runtime/models/File.js';
|
|
16
|
+
export { default as CacheBuilder } from './runtime/caching/CacheBuilder.js';
|
|
17
|
+
export { default as Gateway } from './runtime/Gateway.js';
|
|
18
|
+
export { default as Node } from './runtime/Node.js';
|
|
19
|
+
export { default as NodeMonitor } from './runtime/NodeMonitor.js';
|
|
20
|
+
export { default as RemoteGateway } from './runtime/RemoteGateway.js';
|
|
21
|
+
export { default as Repository } from './runtime/Repository.js';
|
|
22
|
+
export { default as Runtime } from './runtime/Runtime.js';
|
|
23
|
+
export { default as RemoteRepository } from './runtime/RemoteRepository.js';
|
|
24
|
+
export { default as ModuleLoader } from './runtime/utils/ModuleLoader.js';
|
|
1
25
|
export * from './client.js';
|
|
2
|
-
export * from './server.js';
|
|
3
26
|
export * from './hooks.js';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import Serializer from './interfaces/Serializer.js';
|
|
2
|
+
import SerializedArrayBuffer from './types/SerializedArrayBuffer.js';
|
|
3
|
+
import TypedArray from './types/TypedArray.js';
|
|
4
|
+
declare class ArrayBufferSerializer implements Serializer {
|
|
5
|
+
#private;
|
|
6
|
+
serialize(data: TypedArray): SerializedArrayBuffer;
|
|
7
|
+
deserialize(object: SerializedArrayBuffer): Promise<TypedArray>;
|
|
8
|
+
}
|
|
9
|
+
declare const instance: ArrayBufferSerializer;
|
|
10
|
+
export default instance;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import InvalidPropertyType from './errors/InvalidPropertyType.js';
|
|
2
|
+
import ReflectionHelper from '../../core/reflection/ReflectionHelper.js';
|
|
3
|
+
class ArrayBufferSerializer {
|
|
4
|
+
serialize(data) {
|
|
5
|
+
const type = data.constructor.name;
|
|
6
|
+
const view = new DataView(data.buffer);
|
|
7
|
+
const bytes = [];
|
|
8
|
+
for (let index = 0; index < view.byteLength; index++) {
|
|
9
|
+
bytes.push(view.getUint8(index));
|
|
10
|
+
}
|
|
11
|
+
const returnvalue = { serialized: true, name: 'ArrayBuffer', type: type, bytes: bytes };
|
|
12
|
+
return returnvalue;
|
|
13
|
+
}
|
|
14
|
+
async deserialize(object) {
|
|
15
|
+
this.#validateSerializedArrayBuffer(object);
|
|
16
|
+
const type = object.type;
|
|
17
|
+
const bytes = object.bytes;
|
|
18
|
+
const buffer = new ArrayBuffer(bytes.length);
|
|
19
|
+
const view = new DataView(buffer);
|
|
20
|
+
for (let index = 0; index < bytes.length; index++) {
|
|
21
|
+
view.setUint8(index, bytes[index]);
|
|
22
|
+
}
|
|
23
|
+
const clazz = globalThis[type];
|
|
24
|
+
return ReflectionHelper.createInstance(clazz, [buffer]);
|
|
25
|
+
}
|
|
26
|
+
#validateSerializedArrayBuffer(object) {
|
|
27
|
+
if ((object.bytes instanceof Array) === false) {
|
|
28
|
+
throw new InvalidPropertyType('ArrayBuffer', 'bytes', 'Array');
|
|
29
|
+
}
|
|
30
|
+
if (this.#isValidType(object.type) === false) {
|
|
31
|
+
throw new InvalidPropertyType('ArrayBuffer', 'type', 'TypedArray');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
#isValidType(type) {
|
|
35
|
+
switch (type) {
|
|
36
|
+
case 'Int8Array':
|
|
37
|
+
case 'Uint8Array':
|
|
38
|
+
case 'Uint8ClampedArray':
|
|
39
|
+
case 'Int16Array':
|
|
40
|
+
case 'Uint16Array':
|
|
41
|
+
case 'Int32Array':
|
|
42
|
+
case 'Uint32Array':
|
|
43
|
+
case 'Float32Array':
|
|
44
|
+
case 'Float64Array':
|
|
45
|
+
case 'BigInt64Array':
|
|
46
|
+
case 'BigUint64Array':
|
|
47
|
+
return true;
|
|
48
|
+
default:
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const instance = new ArrayBufferSerializer();
|
|
54
|
+
export default instance;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import Serializer from './interfaces/Serializer.js';
|
|
2
|
+
import SerializedDate from './types/SerializedDate.js';
|
|
3
|
+
declare class DateSerializer implements Serializer {
|
|
4
|
+
#private;
|
|
5
|
+
serialize(date: Date): SerializedDate;
|
|
6
|
+
deserialize(serializedDate: SerializedDate): Promise<Date>;
|
|
7
|
+
}
|
|
8
|
+
declare const instance: DateSerializer;
|
|
9
|
+
export default instance;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import InvalidPropertyType from './errors/InvalidPropertyType.js';
|
|
2
|
+
class DateSerializer {
|
|
3
|
+
serialize(date) {
|
|
4
|
+
return { serialized: true, name: 'Date', value: date.toISOString() };
|
|
5
|
+
}
|
|
6
|
+
async deserialize(serializedDate) {
|
|
7
|
+
this.#validateDate(serializedDate);
|
|
8
|
+
return new Date(serializedDate.value);
|
|
9
|
+
}
|
|
10
|
+
#validateDate(serializedDate) {
|
|
11
|
+
if (typeof serializedDate.value !== 'string') {
|
|
12
|
+
throw new InvalidPropertyType('date', 'value', 'string');
|
|
13
|
+
}
|
|
14
|
+
const date = Date.parse(serializedDate.value);
|
|
15
|
+
if (Number.isNaN(date)) {
|
|
16
|
+
throw new InvalidPropertyType('date', 'value', 'date');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const instance = new DateSerializer();
|
|
21
|
+
export default instance;
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import ReflectionHelper from '../../core/reflection/ReflectionHelper.js';
|
|
2
|
+
import ArrayBufferSerializer from './ArrayBufferSerializer.js';
|
|
2
3
|
import ArraySerializer from './ArraySerializer.js';
|
|
3
4
|
import ClassSerializer from './ClassSerializer.js';
|
|
4
5
|
import MapSerializer from './MapSerializer.js';
|
|
5
6
|
import ObjectSerializer from './ObjectSerializer.js';
|
|
6
7
|
import SetSerializer from './SetSerializer.js';
|
|
8
|
+
import DateSerializer from './DateSerializer.js';
|
|
7
9
|
class ValueSerializer {
|
|
8
10
|
serialize(value) {
|
|
9
|
-
if (value
|
|
11
|
+
if (this.#isTypedArray(value)) {
|
|
12
|
+
return ArrayBufferSerializer.serialize(value);
|
|
13
|
+
}
|
|
14
|
+
else if (value instanceof Array) {
|
|
10
15
|
return ArraySerializer.serialize(value);
|
|
11
16
|
}
|
|
12
17
|
else if (value instanceof Map) {
|
|
@@ -15,6 +20,9 @@ class ValueSerializer {
|
|
|
15
20
|
else if (value instanceof Set) {
|
|
16
21
|
return SetSerializer.serialize(value);
|
|
17
22
|
}
|
|
23
|
+
if (value instanceof Date) {
|
|
24
|
+
return DateSerializer.serialize(value);
|
|
25
|
+
}
|
|
18
26
|
else if (value instanceof Error) {
|
|
19
27
|
return ClassSerializer.serialize(value);
|
|
20
28
|
}
|
|
@@ -38,9 +46,24 @@ class ValueSerializer {
|
|
|
38
46
|
switch (value.name) {
|
|
39
47
|
case 'Map': return await MapSerializer.deserialize(value);
|
|
40
48
|
case 'Set': return await SetSerializer.deserialize(value);
|
|
49
|
+
case 'Date': return await DateSerializer.deserialize(value);
|
|
50
|
+
case 'ArrayBuffer': return await ArrayBufferSerializer.deserialize(value);
|
|
41
51
|
default: return await ClassSerializer.deserialize(value);
|
|
42
52
|
}
|
|
43
53
|
}
|
|
54
|
+
#isTypedArray(value) {
|
|
55
|
+
return (value instanceof Int8Array)
|
|
56
|
+
|| (value instanceof Uint8Array)
|
|
57
|
+
|| (value instanceof Uint8ClampedArray)
|
|
58
|
+
|| (value instanceof Int16Array)
|
|
59
|
+
|| (value instanceof Uint16Array)
|
|
60
|
+
|| (value instanceof Int32Array)
|
|
61
|
+
|| (value instanceof Uint32Array)
|
|
62
|
+
|| (value instanceof Float32Array)
|
|
63
|
+
|| (value instanceof Float64Array)
|
|
64
|
+
|| (value instanceof BigInt64Array)
|
|
65
|
+
|| (value instanceof BigUint64Array);
|
|
66
|
+
}
|
|
44
67
|
}
|
|
45
68
|
const instance = new ValueSerializer();
|
|
46
69
|
export default instance;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jitar",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Distributed runtime for JavaScript and TypeScript to chop monolithic applications into micros.",
|
|
5
5
|
"author": "Masking Technology <info@masking.tech> (https://jitar.dev)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
"exports": {
|
|
11
11
|
".": "./dist/lib.js",
|
|
12
12
|
"./client.js": "./dist/client.js",
|
|
13
|
-
"./server.js": "./dist/server.js",
|
|
14
13
|
"./hooks.js": "./dist/hooks.js"
|
|
15
14
|
},
|
|
16
15
|
"scripts": {
|
|
@@ -18,30 +17,16 @@
|
|
|
18
17
|
"test-coverage": "jest --coverage",
|
|
19
18
|
"lint": "eslint . --ext .ts",
|
|
20
19
|
"build": "tsc -p tsconfig.json",
|
|
21
|
-
"clean": "rm -rf dist build"
|
|
20
|
+
"clean": "rm -rf dist build",
|
|
21
|
+
"release": "npm run clean && npm run build && npm publish"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
|
|
25
|
-
"class-transformer": "^0.5.1",
|
|
26
|
-
"class-validator": "^0.13.2",
|
|
27
|
-
"express": "^4.18.1",
|
|
28
|
-
"express-http-proxy": "^1.6.3",
|
|
29
|
-
"fs-extra": "^10.1.0",
|
|
30
|
-
"glob": "^8.0.3",
|
|
31
|
-
"glob-promise": "^5.0.0",
|
|
32
|
-
"mime-types": "^2.1.35",
|
|
33
|
-
"tslog": "^3.3.3",
|
|
34
|
-
"yargs": "^17.6.0"
|
|
24
|
+
|
|
35
25
|
},
|
|
36
26
|
"devDependencies": {
|
|
37
|
-
"@types/express": "^4.17.13",
|
|
38
|
-
"@types/express-http-proxy": "^1.6.3",
|
|
39
|
-
"@types/fs-extra": "^9.0.13",
|
|
40
|
-
"@types/jest": "^28.1.3",
|
|
41
|
-
"@types/mime-types": "^2.1.1",
|
|
42
|
-
"@types/yargs": "^17.0.13",
|
|
43
27
|
"@typescript-eslint/eslint-plugin": "^5.29.0",
|
|
44
28
|
"@typescript-eslint/parser": "^5.29.0",
|
|
29
|
+
"@types/jest": "^28.1.3",
|
|
45
30
|
"eslint": "^8.18.0",
|
|
46
31
|
"jest": "^28.1.3",
|
|
47
32
|
"ts-jest": "^28.0.8"
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { Server as OvernightServer } from '@overnightjs/core';
|
|
2
|
-
import HealthCheck from '../runtime/interfaces/HealthCheck.js';
|
|
3
|
-
export default class JitarServer extends OvernightServer {
|
|
4
|
-
#private;
|
|
5
|
-
constructor();
|
|
6
|
-
start(): Promise<void>;
|
|
7
|
-
addHealthCheck(name: string, healthCheck: HealthCheck): void;
|
|
8
|
-
}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { Server as OvernightServer } from '@overnightjs/core';
|
|
2
|
-
import bodyParser from 'body-parser';
|
|
3
|
-
import { Logger } from 'tslog';
|
|
4
|
-
import LocalGateway from '../runtime/LocalGateway.js';
|
|
5
|
-
import LocalNode from '../runtime/LocalNode.js';
|
|
6
|
-
import LocalRepository from '../runtime/LocalRepository.js';
|
|
7
|
-
import Proxy from '../runtime/Proxy.js';
|
|
8
|
-
import RuntimeConfigurationLoader from './utils/RuntimeConfigurationLoader.js';
|
|
9
|
-
import RuntimeConfigurator from './utils/RuntimeConfigurator.js';
|
|
10
|
-
import ServerOptionsReader from './utils/ServerOptionsReader.js';
|
|
11
|
-
import AssetsController from './controllers/AssetsController.js';
|
|
12
|
-
import HealthController from './controllers/HealthController.js';
|
|
13
|
-
import JitarController from './controllers/JitarController.js';
|
|
14
|
-
import ModulesController from './controllers/ModulesController.js';
|
|
15
|
-
import NodesController from './controllers/NodesController.js';
|
|
16
|
-
import ProceduresController from './controllers/ProceduresController.js';
|
|
17
|
-
import ProxyController from './controllers/ProxyController.js';
|
|
18
|
-
import RPCController from './controllers/RPCController.js';
|
|
19
|
-
import RuntimeDefaults from './definitions/RuntimeDefaults.js';
|
|
20
|
-
import RuntimeNotAvaiable from './errors/RuntimeNotAvaiable.js';
|
|
21
|
-
const STARTUP_MESSAGE = `
|
|
22
|
-
██ ██ ████████ █████ ██████
|
|
23
|
-
██ ██ ██ ██ ██ ██ ██
|
|
24
|
-
██ ██ ██ ███████ ██████
|
|
25
|
-
██ ██ ██ ██ ██ ██ ██ ██
|
|
26
|
-
█████ ██ ██ ██ ██ ██ ██
|
|
27
|
-
____________________________________
|
|
28
|
-
By Masking Technology (masking.tech)
|
|
29
|
-
`;
|
|
30
|
-
export default class JitarServer extends OvernightServer {
|
|
31
|
-
#runtime;
|
|
32
|
-
constructor() {
|
|
33
|
-
super(false);
|
|
34
|
-
this.app.use(bodyParser.json());
|
|
35
|
-
this.app.use(bodyParser.urlencoded({ extended: true }));
|
|
36
|
-
}
|
|
37
|
-
async start() {
|
|
38
|
-
console.log(STARTUP_MESSAGE);
|
|
39
|
-
const options = await ServerOptionsReader.read();
|
|
40
|
-
const configuration = await RuntimeConfigurationLoader.load(options.config);
|
|
41
|
-
const runtime = await RuntimeConfigurator.configure(configuration);
|
|
42
|
-
const logger = this.#createLogger(options.loglevel);
|
|
43
|
-
this.#addControllers(configuration, runtime, logger);
|
|
44
|
-
const url = new URL(configuration.url ?? RuntimeDefaults.URL);
|
|
45
|
-
await this.#startServer(url.port);
|
|
46
|
-
this.#runtime = runtime;
|
|
47
|
-
logger.info(`Server started and listening at port ${url.port}`);
|
|
48
|
-
}
|
|
49
|
-
addHealthCheck(name, healthCheck) {
|
|
50
|
-
if (this.#runtime === undefined) {
|
|
51
|
-
throw new RuntimeNotAvaiable();
|
|
52
|
-
}
|
|
53
|
-
this.#runtime.addHealthCheck(name, healthCheck);
|
|
54
|
-
}
|
|
55
|
-
#createLogger(level) {
|
|
56
|
-
return new Logger({
|
|
57
|
-
displayFilePath: 'hidden',
|
|
58
|
-
minLevel: level
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
#addControllers(configuration, runtime, logger) {
|
|
62
|
-
if (configuration.standalone !== undefined && runtime instanceof Proxy) {
|
|
63
|
-
const index = configuration.standalone.index ?? RuntimeDefaults.INDEX;
|
|
64
|
-
this.#addStandAloneControllers(runtime, logger, index);
|
|
65
|
-
}
|
|
66
|
-
else if (configuration.repository !== undefined && runtime instanceof LocalRepository) {
|
|
67
|
-
const index = configuration.repository.index ?? RuntimeDefaults.INDEX;
|
|
68
|
-
this.#addRepositoryControllers(runtime, logger, index);
|
|
69
|
-
}
|
|
70
|
-
else if (configuration.gateway !== undefined && runtime instanceof LocalGateway) {
|
|
71
|
-
this.#addGatewayControllers(runtime, logger);
|
|
72
|
-
}
|
|
73
|
-
else if (configuration.node !== undefined && runtime instanceof LocalNode) {
|
|
74
|
-
this.#addNodeControllers(runtime, logger);
|
|
75
|
-
}
|
|
76
|
-
else if (configuration.proxy !== undefined && runtime instanceof Proxy) {
|
|
77
|
-
this.#addProxyControllers(runtime, logger);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
#addStandAloneControllers(proxy, logger, index) {
|
|
81
|
-
super.addControllers(new HealthController(proxy, logger));
|
|
82
|
-
super.addControllers(new JitarController(this.app));
|
|
83
|
-
super.addControllers(new ModulesController(proxy, logger));
|
|
84
|
-
super.addControllers(new ProceduresController(proxy, logger));
|
|
85
|
-
super.addControllers(new RPCController(proxy, logger, true));
|
|
86
|
-
super.addControllers(new AssetsController(this.app, proxy, index, logger));
|
|
87
|
-
}
|
|
88
|
-
#addRepositoryControllers(repository, logger, index) {
|
|
89
|
-
super.addControllers(new JitarController(this.app));
|
|
90
|
-
super.addControllers(new ModulesController(repository, logger));
|
|
91
|
-
super.addControllers(new AssetsController(this.app, repository, index, logger));
|
|
92
|
-
}
|
|
93
|
-
#addGatewayControllers(gateway, logger) {
|
|
94
|
-
super.addControllers(new NodesController(gateway, logger));
|
|
95
|
-
super.addControllers(new ProceduresController(gateway, logger));
|
|
96
|
-
super.addControllers(new RPCController(gateway, logger, false));
|
|
97
|
-
}
|
|
98
|
-
#addNodeControllers(node, logger) {
|
|
99
|
-
super.addControllers(new HealthController(node, logger));
|
|
100
|
-
super.addControllers(new ProceduresController(node, logger));
|
|
101
|
-
super.addControllers(new RPCController(node, logger, true));
|
|
102
|
-
}
|
|
103
|
-
#addProxyControllers(proxy, logger) {
|
|
104
|
-
super.addControllers(new ProxyController(this.app, proxy, logger));
|
|
105
|
-
}
|
|
106
|
-
async #startServer(port) {
|
|
107
|
-
return new Promise(resolve => { this.app.listen(port, resolve); });
|
|
108
|
-
}
|
|
109
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { IsOptional, IsNumber } from 'class-validator';
|
|
11
|
-
export default class GatewayConfiguration {
|
|
12
|
-
monitor;
|
|
13
|
-
}
|
|
14
|
-
__decorate([
|
|
15
|
-
IsNumber(),
|
|
16
|
-
IsOptional(),
|
|
17
|
-
__metadata("design:type", Number)
|
|
18
|
-
], GatewayConfiguration.prototype, "monitor", void 0);
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { IsArray, IsUrl, IsOptional } from 'class-validator';
|
|
11
|
-
export default class NodeConfiguration {
|
|
12
|
-
gateway;
|
|
13
|
-
repository = '';
|
|
14
|
-
segments;
|
|
15
|
-
}
|
|
16
|
-
__decorate([
|
|
17
|
-
IsUrl(),
|
|
18
|
-
IsOptional(),
|
|
19
|
-
__metadata("design:type", String)
|
|
20
|
-
], NodeConfiguration.prototype, "gateway", void 0);
|
|
21
|
-
__decorate([
|
|
22
|
-
IsUrl(),
|
|
23
|
-
__metadata("design:type", Object)
|
|
24
|
-
], NodeConfiguration.prototype, "repository", void 0);
|
|
25
|
-
__decorate([
|
|
26
|
-
IsArray(),
|
|
27
|
-
__metadata("design:type", Array)
|
|
28
|
-
], NodeConfiguration.prototype, "segments", void 0);
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { IsUrl, IsOptional } from 'class-validator';
|
|
11
|
-
export default class ProxyConfiguration {
|
|
12
|
-
node;
|
|
13
|
-
gateway;
|
|
14
|
-
repository;
|
|
15
|
-
}
|
|
16
|
-
__decorate([
|
|
17
|
-
IsUrl(),
|
|
18
|
-
IsOptional(),
|
|
19
|
-
__metadata("design:type", String)
|
|
20
|
-
], ProxyConfiguration.prototype, "node", void 0);
|
|
21
|
-
__decorate([
|
|
22
|
-
IsUrl(),
|
|
23
|
-
IsOptional(),
|
|
24
|
-
__metadata("design:type", String)
|
|
25
|
-
], ProxyConfiguration.prototype, "gateway", void 0);
|
|
26
|
-
__decorate([
|
|
27
|
-
IsUrl(),
|
|
28
|
-
__metadata("design:type", String)
|
|
29
|
-
], ProxyConfiguration.prototype, "repository", void 0);
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
-
};
|
|
10
|
-
import { IsArray, IsOptional, IsString } from 'class-validator';
|
|
11
|
-
export default class RepositoryConfiguration {
|
|
12
|
-
source;
|
|
13
|
-
cache;
|
|
14
|
-
index;
|
|
15
|
-
assets;
|
|
16
|
-
}
|
|
17
|
-
__decorate([
|
|
18
|
-
IsString(),
|
|
19
|
-
IsOptional(),
|
|
20
|
-
__metadata("design:type", String)
|
|
21
|
-
], RepositoryConfiguration.prototype, "source", void 0);
|
|
22
|
-
__decorate([
|
|
23
|
-
IsString(),
|
|
24
|
-
IsOptional(),
|
|
25
|
-
__metadata("design:type", String)
|
|
26
|
-
], RepositoryConfiguration.prototype, "cache", void 0);
|
|
27
|
-
__decorate([
|
|
28
|
-
IsString(),
|
|
29
|
-
IsOptional(),
|
|
30
|
-
__metadata("design:type", String)
|
|
31
|
-
], RepositoryConfiguration.prototype, "index", void 0);
|
|
32
|
-
__decorate([
|
|
33
|
-
IsArray(),
|
|
34
|
-
IsOptional(),
|
|
35
|
-
__metadata("design:type", Array)
|
|
36
|
-
], RepositoryConfiguration.prototype, "assets", void 0);
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import GatewayConfiguration from './GatewayConfiguration.js';
|
|
2
|
-
import NodeConfiguration from './NodeConfiguration.js';
|
|
3
|
-
import ProxyConfiguration from './ProxyConfiguration.js';
|
|
4
|
-
import RepositoryConfiguration from './RepositoryConfiguration.js';
|
|
5
|
-
import StandaloneConfiguration from './StandaloneConfiguration.js';
|
|
6
|
-
export default class RuntimeConfiguration {
|
|
7
|
-
url?: string;
|
|
8
|
-
standalone?: StandaloneConfiguration;
|
|
9
|
-
repository?: RepositoryConfiguration;
|
|
10
|
-
gateway?: GatewayConfiguration;
|
|
11
|
-
node?: NodeConfiguration;
|
|
12
|
-
proxy?: ProxyConfiguration;
|
|
13
|
-
}
|