jitar 0.1.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/.eslintignore +3 -0
- package/.eslintrc +16 -0
- package/README.md +15 -0
- package/coverage/clover.xml +2483 -0
- package/coverage/coverage-final.json +56 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +356 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov-report/src/core/ErrorManager.ts.html +139 -0
- package/coverage/lcov-report/src/core/Implementation.ts.html +244 -0
- package/coverage/lcov-report/src/core/ImplementationBuilder.ts.html +148 -0
- package/coverage/lcov-report/src/core/Procedure.ts.html +379 -0
- package/coverage/lcov-report/src/core/Segment.ts.html +271 -0
- package/coverage/lcov-report/src/core/SegmentBuilder.ts.html +250 -0
- package/coverage/lcov-report/src/core/Version.ts.html +289 -0
- package/coverage/lcov-report/src/core/definitions/AccessLevel.ts.html +94 -0
- package/coverage/lcov-report/src/core/definitions/index.html +116 -0
- package/coverage/lcov-report/src/core/errors/ErrorManager.ts.html +139 -0
- package/coverage/lcov-report/src/core/errors/ImplementationNotFound.ts.html +121 -0
- package/coverage/lcov-report/src/core/errors/InvalidVersionNumber.ts.html +121 -0
- package/coverage/lcov-report/src/core/errors/MissingParameterValue.ts.html +121 -0
- package/coverage/lcov-report/src/core/errors/ProcedureNotFound.ts.html +121 -0
- package/coverage/lcov-report/src/core/errors/index.html +161 -0
- package/coverage/lcov-report/src/core/index.html +191 -0
- package/coverage/lcov-report/src/core/reflection/ParameterParser.ts.html +307 -0
- package/coverage/lcov-report/src/core/reflection/ReflectionHelper.ts.html +439 -0
- package/coverage/lcov-report/src/core/reflection/index.html +131 -0
- package/coverage/lcov-report/src/core/reflection/models/ReflectionField.ts.html +151 -0
- package/coverage/lcov-report/src/core/reflection/models/ReflectionParameter.ts.html +139 -0
- package/coverage/lcov-report/src/core/reflection/models/index.html +131 -0
- package/coverage/lcov-report/src/core/utils/FqnBuilder.ts.html +115 -0
- package/coverage/lcov-report/src/core/utils/index.html +116 -0
- package/coverage/lcov-report/src/hooks.ts.html +88 -0
- package/coverage/lcov-report/src/index.html +116 -0
- package/coverage/lcov-report/src/runtime/Gateway.ts.html +139 -0
- package/coverage/lcov-report/src/runtime/LocalGateway.ts.html +364 -0
- package/coverage/lcov-report/src/runtime/LocalNode.ts.html +475 -0
- package/coverage/lcov-report/src/runtime/LocalRepository.ts.html +556 -0
- package/coverage/lcov-report/src/runtime/Node.ts.html +130 -0
- package/coverage/lcov-report/src/runtime/NodeBalancer.ts.html +268 -0
- package/coverage/lcov-report/src/runtime/NodeMonitor.ts.html +274 -0
- package/coverage/lcov-report/src/runtime/Remote.ts.html +562 -0
- package/coverage/lcov-report/src/runtime/RemoteNode.ts.html +232 -0
- package/coverage/lcov-report/src/runtime/Repository.ts.html +145 -0
- package/coverage/lcov-report/src/runtime/Runtime.ts.html +226 -0
- package/coverage/lcov-report/src/runtime/caching/ImportRewriter.ts.html +313 -0
- package/coverage/lcov-report/src/runtime/caching/ModuleAppender.ts.html +208 -0
- package/coverage/lcov-report/src/runtime/caching/RemoteBuilder.ts.html +238 -0
- package/coverage/lcov-report/src/runtime/caching/SourceAppender.ts.html +256 -0
- package/coverage/lcov-report/src/runtime/caching/definitions/Keywords.ts.html +94 -0
- package/coverage/lcov-report/src/runtime/caching/definitions/index.html +116 -0
- package/coverage/lcov-report/src/runtime/caching/index.html +146 -0
- package/coverage/lcov-report/src/runtime/caching/models/ApplicationModule.ts.html +175 -0
- package/coverage/lcov-report/src/runtime/caching/models/Implementation.ts.html +208 -0
- package/coverage/lcov-report/src/runtime/caching/models/SegmentModule.ts.html +163 -0
- package/coverage/lcov-report/src/runtime/caching/models/index.html +146 -0
- package/coverage/lcov-report/src/runtime/errors/ClientNotFound.ts.html +121 -0
- package/coverage/lcov-report/src/runtime/errors/InvalidClientId.ts.html +121 -0
- package/coverage/lcov-report/src/runtime/errors/InvalidSegmentFile.ts.html +121 -0
- package/coverage/lcov-report/src/runtime/errors/ModuleNotLoaded.ts.html +121 -0
- package/coverage/lcov-report/src/runtime/errors/NoNodeAvailable.ts.html +121 -0
- package/coverage/lcov-report/src/runtime/errors/RepositoryNotAvaiable.ts.html +121 -0
- package/coverage/lcov-report/src/runtime/errors/RuntimeNotAvailable.ts.html +121 -0
- package/coverage/lcov-report/src/runtime/errors/index.html +206 -0
- package/coverage/lcov-report/src/runtime/hooks/dependencies.ts.html +142 -0
- package/coverage/lcov-report/src/runtime/hooks/index.html +131 -0
- package/coverage/lcov-report/src/runtime/hooks/runtime.ts.html +160 -0
- package/coverage/lcov-report/src/runtime/index.html +251 -0
- package/coverage/lcov-report/src/runtime/models/File.ts.html +151 -0
- package/coverage/lcov-report/src/runtime/models/index.html +116 -0
- package/coverage/lcov-report/src/runtime/serialization/ArraySerializer.ts.html +166 -0
- package/coverage/lcov-report/src/runtime/serialization/ClassSerializer.ts.html +400 -0
- package/coverage/lcov-report/src/runtime/serialization/MapSerializer.ts.html +217 -0
- package/coverage/lcov-report/src/runtime/serialization/ObjectSerializer.ts.html +211 -0
- package/coverage/lcov-report/src/runtime/serialization/SetSerializer.ts.html +178 -0
- package/coverage/lcov-report/src/runtime/serialization/ValueSerializer.ts.html +328 -0
- package/coverage/lcov-report/src/runtime/serialization/errors/ClassNotFound.ts.html +121 -0
- package/coverage/lcov-report/src/runtime/serialization/errors/InvalidClass.ts.html +121 -0
- package/coverage/lcov-report/src/runtime/serialization/errors/index.html +131 -0
- package/coverage/lcov-report/src/runtime/serialization/index.html +191 -0
- package/coverage/lcov-report/src/runtime/utils/ModuleAnalyser.ts.html +265 -0
- package/coverage/lcov-report/src/runtime/utils/ModuleLoader.ts.html +238 -0
- package/coverage/lcov-report/src/runtime/utils/UrlRewriter.ts.html +262 -0
- package/coverage/lcov-report/src/runtime/utils/index.html +146 -0
- package/coverage/lcov-report/test/_fixtures/core/Implementation.fixture.ts.html +184 -0
- package/coverage/lcov-report/test/_fixtures/core/Procedure.fixture.ts.html +172 -0
- package/coverage/lcov-report/test/_fixtures/core/Segment.fixture.ts.html +193 -0
- package/coverage/lcov-report/test/_fixtures/core/SegmentBuilder.fixture.ts.html +220 -0
- package/coverage/lcov-report/test/_fixtures/core/Version.fixture.ts.html +139 -0
- package/coverage/lcov-report/test/_fixtures/core/index.html +176 -0
- package/coverage/lcov-report/test/_fixtures/core/procedures/allDefault.ts.html +100 -0
- package/coverage/lcov-report/test/_fixtures/core/procedures/hasParameters.ts.html +100 -0
- package/coverage/lcov-report/test/_fixtures/core/procedures/hasVersion_v1_0_0.ts.html +115 -0
- package/coverage/lcov-report/test/_fixtures/core/procedures/hasVersion_v1_0_5.ts.html +115 -0
- package/coverage/lcov-report/test/_fixtures/core/procedures/hasVersion_v1_1_0.ts.html +115 -0
- package/coverage/lcov-report/test/_fixtures/core/procedures/hasVersion_v1_2_3.ts.html +115 -0
- package/coverage/lcov-report/test/_fixtures/core/procedures/inModule.ts.html +115 -0
- package/coverage/lcov-report/test/_fixtures/core/procedures/index.html +251 -0
- package/coverage/lcov-report/test/_fixtures/core/procedures/isBroken.ts.html +112 -0
- package/coverage/lcov-report/test/_fixtures/core/procedures/isPrivate.ts.html +112 -0
- package/coverage/lcov-report/test/_fixtures/core/procedures/isPublic.ts.html +112 -0
- package/coverage/lcov-report/test/_fixtures/core/reflection/ReflectionHelper.fixture.ts.html +241 -0
- package/coverage/lcov-report/test/_fixtures/core/reflection/index.html +116 -0
- package/coverage/lcov-report/test/_fixtures/core/segments/default.segment.ts.html +94 -0
- package/coverage/lcov-report/test/_fixtures/core/segments/index.html +116 -0
- package/coverage/lcov-report/test/_fixtures/runtime/LocalGateway.fixture.ts.html +157 -0
- package/coverage/lcov-report/test/_fixtures/runtime/LocalNode.fixture.ts.html +133 -0
- package/coverage/lcov-report/test/_fixtures/runtime/LocalRepository.fixture.ts.html +304 -0
- package/coverage/lcov-report/test/_fixtures/runtime/NodeBalancer.fixture.ts.html +142 -0
- package/coverage/lcov-report/test/_fixtures/runtime/NodeMonitor.fixture.ts.html +187 -0
- package/coverage/lcov-report/test/_fixtures/runtime/RemoteNode.fixture.ts.html +109 -0
- package/coverage/lcov-report/test/_fixtures/runtime/caching/ImportRewriter.fixture.ts.html +304 -0
- package/coverage/lcov-report/test/_fixtures/runtime/caching/ModuleAppender.fixture.ts.html +181 -0
- package/coverage/lcov-report/test/_fixtures/runtime/caching/RemoteBuilder.fixture.ts.html +217 -0
- package/coverage/lcov-report/test/_fixtures/runtime/caching/SourceAppender.fixture.ts.html +178 -0
- package/coverage/lcov-report/test/_fixtures/runtime/caching/index.html +146 -0
- package/coverage/lcov-report/test/_fixtures/runtime/index.html +206 -0
- package/coverage/lcov-report/test/_fixtures/runtime/procedures/firstPrivateTask.ts.html +109 -0
- package/coverage/lcov-report/test/_fixtures/runtime/procedures/firstPublicTask.ts.html +118 -0
- package/coverage/lcov-report/test/_fixtures/runtime/procedures/fourthPublicTask.ts.html +109 -0
- package/coverage/lcov-report/test/_fixtures/runtime/procedures/index.html +191 -0
- package/coverage/lcov-report/test/_fixtures/runtime/procedures/secondPrivateTask.ts.html +109 -0
- package/coverage/lcov-report/test/_fixtures/runtime/procedures/secondPublicTask.ts.html +118 -0
- package/coverage/lcov-report/test/_fixtures/runtime/procedures/thirdPublicTask.ts.html +118 -0
- package/coverage/lcov-report/test/_fixtures/runtime/segments/first.segment.files.ts.html +85 -0
- package/coverage/lcov-report/test/_fixtures/runtime/segments/first.segment.ts.html +91 -0
- package/coverage/lcov-report/test/_fixtures/runtime/segments/index.html +161 -0
- package/coverage/lcov-report/test/_fixtures/runtime/segments/second.segment.files.ts.html +85 -0
- package/coverage/lcov-report/test/_fixtures/runtime/segments/second.segment.ts.html +91 -0
- package/coverage/lcov-report/test/_fixtures/runtime/segments.ts.html +319 -0
- package/coverage/lcov-report/test/_fixtures/runtime/serialization/ValueSerializer.fixture.ts.html +394 -0
- package/coverage/lcov-report/test/_fixtures/runtime/serialization/index.html +116 -0
- package/coverage/lcov-report/test/_fixtures/runtime/utils/ModuleAnaliser.fixture.ts.html +163 -0
- package/coverage/lcov-report/test/_fixtures/runtime/utils/index.html +116 -0
- package/coverage/lcov.info +3565 -0
- package/dist/client.d.ts +2 -0
- package/dist/client.js +12 -0
- package/dist/core/AccessLevel.d.ts +5 -0
- package/dist/core/AccessLevel.js +6 -0
- package/dist/core/ErrorManager.d.ts +3 -0
- package/dist/core/ErrorManager.js +11 -0
- package/dist/core/Implementation.d.ts +10 -0
- package/dist/core/Implementation.js +32 -0
- package/dist/core/ImplementationBuilder.d.ts +4 -0
- package/dist/core/ImplementationBuilder.js +14 -0
- package/dist/core/Procedure.d.ts +13 -0
- package/dist/core/Procedure.js +58 -0
- package/dist/core/Segment.d.ts +13 -0
- package/dist/core/Segment.js +36 -0
- package/dist/core/SegmentBuilder.d.ts +6 -0
- package/dist/core/SegmentBuilder.js +33 -0
- package/dist/core/Version.d.ts +13 -0
- package/dist/core/Version.js +50 -0
- package/dist/core/definitions/AccessLevel.d.ts +2 -0
- package/dist/core/definitions/AccessLevel.js +2 -0
- package/dist/core/errors/ErrorManager.d.ts +3 -0
- package/dist/core/errors/ErrorManager.js +11 -0
- package/dist/core/errors/ImplementationNotFound.d.ts +3 -0
- package/dist/core/errors/ImplementationNotFound.js +6 -0
- package/dist/core/errors/InvalidVersionNumber.d.ts +3 -0
- package/dist/core/errors/InvalidVersionNumber.js +6 -0
- package/dist/core/errors/MissingParameterValue.d.ts +3 -0
- package/dist/core/errors/MissingParameterValue.js +6 -0
- package/dist/core/errors/NotImplemented.d.ts +3 -0
- package/dist/core/errors/NotImplemented.js +6 -0
- package/dist/core/errors/ProcedureNotFound.d.ts +3 -0
- package/dist/core/errors/ProcedureNotFound.js +6 -0
- package/dist/core/interfaces/Runner.d.ts +4 -0
- package/dist/core/interfaces/Runner.js +1 -0
- package/dist/core/reflection/ParameterParser.d.ts +5 -0
- package/dist/core/reflection/ParameterParser.js +51 -0
- package/dist/core/reflection/ReflectionHelper.d.ts +13 -0
- package/dist/core/reflection/ReflectionHelper.js +69 -0
- package/dist/core/reflection/models/ReflectionField.d.ts +8 -0
- package/dist/core/reflection/models/ReflectionField.js +14 -0
- package/dist/core/reflection/models/ReflectionParameter.d.ts +7 -0
- package/dist/core/reflection/models/ReflectionParameter.js +11 -0
- package/dist/core/types/Component.d.ts +5 -0
- package/dist/core/types/Component.js +1 -0
- package/dist/core/types/FlexObject.d.ts +4 -0
- package/dist/core/types/FlexObject.js +1 -0
- package/dist/core/types/Module.d.ts +3 -0
- package/dist/core/types/Module.js +1 -0
- package/dist/core/types/SegmentImplementation.d.ts +6 -0
- package/dist/core/types/SegmentImplementation.js +1 -0
- package/dist/core/types/SegmentModule.d.ts +5 -0
- package/dist/core/types/SegmentModule.js +1 -0
- package/dist/core/types/SegmentProcedure.d.ts +7 -0
- package/dist/core/types/SegmentProcedure.js +1 -0
- package/dist/core/utils/FqnBuilder.d.ts +3 -0
- package/dist/core/utils/FqnBuilder.js +5 -0
- package/dist/hooks.d.ts +2 -0
- package/dist/hooks.js +2 -0
- package/dist/lib.d.ts +4 -0
- package/dist/lib.js +3 -0
- package/dist/runtime/Gateway.d.ts +10 -0
- package/dist/runtime/Gateway.js +3 -0
- package/dist/runtime/LocalGateway.d.ts +12 -0
- package/dist/runtime/LocalGateway.js +54 -0
- package/dist/runtime/LocalNode.d.ts +18 -0
- package/dist/runtime/LocalNode.js +75 -0
- package/dist/runtime/LocalRepository.d.ts +17 -0
- package/dist/runtime/LocalRepository.js +86 -0
- package/dist/runtime/Node.d.ts +8 -0
- package/dist/runtime/Node.js +3 -0
- package/dist/runtime/NodeBalancer.d.ts +10 -0
- package/dist/runtime/NodeBalancer.js +34 -0
- package/dist/runtime/NodeMonitor.d.ts +7 -0
- package/dist/runtime/NodeMonitor.js +38 -0
- package/dist/runtime/Proxy.d.ts +19 -0
- package/dist/runtime/Proxy.js +31 -0
- package/dist/runtime/Remote.d.ts +15 -0
- package/dist/runtime/Remote.js +100 -0
- package/dist/runtime/RemoteGateway.d.ts +11 -0
- package/dist/runtime/RemoteGateway.js +22 -0
- package/dist/runtime/RemoteNode.d.ts +12 -0
- package/dist/runtime/RemoteNode.js +29 -0
- package/dist/runtime/RemoteNodeBuilder.d.ts +4 -0
- package/dist/runtime/RemoteNodeBuilder.js +10 -0
- package/dist/runtime/RemoteRepository.d.ts +14 -0
- package/dist/runtime/RemoteRepository.js +34 -0
- package/dist/runtime/Repository.d.ts +11 -0
- package/dist/runtime/Repository.js +3 -0
- package/dist/runtime/Runtime.d.ts +9 -0
- package/dist/runtime/Runtime.js +27 -0
- package/dist/runtime/caching/CachBuilder.d.ts +6 -0
- package/dist/runtime/caching/CachBuilder.js +150 -0
- package/dist/runtime/caching/CacheBuilder.d.ts +6 -0
- package/dist/runtime/caching/CacheBuilder.js +249 -0
- package/dist/runtime/caching/ImportRewriter.d.ts +4 -0
- package/dist/runtime/caching/ImportRewriter.js +49 -0
- package/dist/runtime/caching/ModuleAppender.d.ts +5 -0
- package/dist/runtime/caching/ModuleAppender.js +22 -0
- package/dist/runtime/caching/RemoteBuilder.d.ts +5 -0
- package/dist/runtime/caching/RemoteBuilder.js +31 -0
- package/dist/runtime/caching/SourceAppender.d.ts +5 -0
- package/dist/runtime/caching/SourceAppender.js +30 -0
- package/dist/runtime/caching/definitions/Keywords.d.ts +2 -0
- package/dist/runtime/caching/definitions/Keywords.js +2 -0
- package/dist/runtime/caching/errors/FunctionFilenameNotFound.d.ts +3 -0
- package/dist/runtime/caching/errors/FunctionFilenameNotFound.js +5 -0
- package/dist/runtime/caching/errors/InvalidSegmentFilename.d.ts +3 -0
- package/dist/runtime/caching/errors/InvalidSegmentFilename.js +5 -0
- package/dist/runtime/caching/errors/MissingModuleExport.d.ts +3 -0
- package/dist/runtime/caching/errors/MissingModuleExport.js +5 -0
- package/dist/runtime/caching/errors/SegmentFileNotLoaded.d.ts +3 -0
- package/dist/runtime/caching/errors/SegmentFileNotLoaded.js +5 -0
- package/dist/runtime/caching/errors/SegmentModuleNotLoaded.d.ts +3 -0
- package/dist/runtime/caching/errors/SegmentModuleNotLoaded.js +5 -0
- package/dist/runtime/caching/models/ApplicationModule.d.ts +9 -0
- package/dist/runtime/caching/models/ApplicationModule.js +19 -0
- package/dist/runtime/caching/models/Implementation.d.ts +12 -0
- package/dist/runtime/caching/models/Implementation.js +27 -0
- package/dist/runtime/caching/models/Procedure.d.ts +9 -0
- package/dist/runtime/caching/models/Procedure.js +15 -0
- package/dist/runtime/caching/models/Segment.d.ts +10 -0
- package/dist/runtime/caching/models/Segment.js +16 -0
- package/dist/runtime/caching/models/SegmentModule.d.ts +10 -0
- package/dist/runtime/caching/models/SegmentModule.js +14 -0
- package/dist/runtime/caching/types/SegmentFile.d.ts +5 -0
- package/dist/runtime/caching/types/SegmentFile.js +1 -0
- package/dist/runtime/caching/types/SegmentImportProperties.d.ts +6 -0
- package/dist/runtime/caching/types/SegmentImportProperties.js +1 -0
- package/dist/runtime/caching/types/SegmentImports.d.ts +5 -0
- package/dist/runtime/caching/types/SegmentImports.js +1 -0
- package/dist/runtime/caching/types/models/ApplicationModule.d.ts +9 -0
- package/dist/runtime/caching/types/models/ApplicationModule.js +19 -0
- package/dist/runtime/caching/types/models/Implementation.d.ts +12 -0
- package/dist/runtime/caching/types/models/Implementation.js +27 -0
- package/dist/runtime/caching/types/models/Procedure.d.ts +9 -0
- package/dist/runtime/caching/types/models/Procedure.js +15 -0
- package/dist/runtime/caching/types/models/Segment.d.ts +10 -0
- package/dist/runtime/caching/types/models/Segment.js +16 -0
- package/dist/runtime/caching/types/models/SegmentModule.d.ts +10 -0
- package/dist/runtime/caching/types/models/SegmentModule.js +14 -0
- package/dist/runtime/errors/ClientNotFound.d.ts +3 -0
- package/dist/runtime/errors/ClientNotFound.js +6 -0
- package/dist/runtime/errors/FileNotFound.d.ts +3 -0
- package/dist/runtime/errors/FileNotFound.js +6 -0
- package/dist/runtime/errors/InvalidClientId.d.ts +3 -0
- package/dist/runtime/errors/InvalidClientId.js +6 -0
- package/dist/runtime/errors/InvalidJitarHooks.d.ts +3 -0
- package/dist/runtime/errors/InvalidJitarHooks.js +6 -0
- package/dist/runtime/errors/InvalidSegmentFile.d.ts +3 -0
- package/dist/runtime/errors/InvalidSegmentFile.js +6 -0
- package/dist/runtime/errors/ModuleNotLoaded.d.ts +3 -0
- package/dist/runtime/errors/ModuleNotLoaded.js +6 -0
- package/dist/runtime/errors/NoNodeAvailable.d.ts +3 -0
- package/dist/runtime/errors/NoNodeAvailable.js +6 -0
- package/dist/runtime/errors/RepositoryNotAvaiable.d.ts +3 -0
- package/dist/runtime/errors/RepositoryNotAvaiable.js +6 -0
- package/dist/runtime/errors/RuntimeNotAvailable.d.ts +3 -0
- package/dist/runtime/errors/RuntimeNotAvailable.js +6 -0
- package/dist/runtime/errors/SegmentNotFound.d.ts +3 -0
- package/dist/runtime/errors/SegmentNotFound.js +6 -0
- package/dist/runtime/hooks/dependencies.d.ts +2 -0
- package/dist/runtime/hooks/dependencies.js +9 -0
- package/dist/runtime/hooks/runtime.d.ts +3 -0
- package/dist/runtime/hooks/runtime.js +14 -0
- package/dist/runtime/interfaces/FileManager.d.ts +11 -0
- package/dist/runtime/interfaces/FileManager.js +1 -0
- package/dist/runtime/interfaces/HealthCheck.d.ts +3 -0
- package/dist/runtime/interfaces/HealthCheck.js +1 -0
- package/dist/runtime/interfaces/ProcedureContainer.d.ts +5 -0
- package/dist/runtime/interfaces/ProcedureContainer.js +1 -0
- package/dist/runtime/models/File.d.ts +9 -0
- package/dist/runtime/models/File.js +14 -0
- package/dist/runtime/serialization/ArraySerializer.d.ts +7 -0
- package/dist/runtime/serialization/ArraySerializer.js +15 -0
- package/dist/runtime/serialization/ClassSerializer.d.ts +10 -0
- package/dist/runtime/serialization/ClassSerializer.js +58 -0
- package/dist/runtime/serialization/MapSerializer.d.ts +8 -0
- package/dist/runtime/serialization/MapSerializer.js +25 -0
- package/dist/runtime/serialization/ObjectSerializer.d.ts +9 -0
- package/dist/runtime/serialization/ObjectSerializer.js +21 -0
- package/dist/runtime/serialization/SetSerializer.d.ts +8 -0
- package/dist/runtime/serialization/SetSerializer.js +16 -0
- package/dist/runtime/serialization/ValueSerializer.d.ts +7 -0
- package/dist/runtime/serialization/ValueSerializer.js +46 -0
- package/dist/runtime/serialization/errors/ClassNotFound.d.ts +3 -0
- package/dist/runtime/serialization/errors/ClassNotFound.js +6 -0
- package/dist/runtime/serialization/errors/InvalidClass.d.ts +3 -0
- package/dist/runtime/serialization/errors/InvalidClass.js +6 -0
- package/dist/runtime/serialization/interfaces/Serializer.d.ts +4 -0
- package/dist/runtime/serialization/interfaces/Serializer.js +1 -0
- package/dist/runtime/serialization/types/SerializableObject.d.ts +3 -0
- package/dist/runtime/serialization/types/SerializableObject.js +1 -0
- package/dist/runtime/serialization/types/Serialized.d.ts +5 -0
- package/dist/runtime/serialization/types/Serialized.js +1 -0
- package/dist/runtime/serialization/types/SerializedClass.d.ts +8 -0
- package/dist/runtime/serialization/types/SerializedClass.js +1 -0
- package/dist/runtime/serialization/types/SerializedMap.d.ts +8 -0
- package/dist/runtime/serialization/types/SerializedMap.js +1 -0
- package/dist/runtime/serialization/types/SerializedObject.d.ts +4 -0
- package/dist/runtime/serialization/types/SerializedObject.js +1 -0
- package/dist/runtime/serialization/types/SerializedSet.d.ts +5 -0
- package/dist/runtime/serialization/types/SerializedSet.js +1 -0
- package/dist/runtime/types/JitarHooks.d.ts +6 -0
- package/dist/runtime/types/JitarHooks.js +1 -0
- package/dist/runtime/types/ModuleImporter.d.ts +3 -0
- package/dist/runtime/types/ModuleImporter.js +1 -0
- package/dist/runtime/utils/ModuleAnalyser.d.ts +7 -0
- package/dist/runtime/utils/ModuleAnalyser.js +34 -0
- package/dist/runtime/utils/ModuleLoader.d.ts +8 -0
- package/dist/runtime/utils/ModuleLoader.js +30 -0
- package/dist/runtime/utils/UrlRewriter.d.ts +4 -0
- package/dist/runtime/utils/UrlRewriter.js +36 -0
- package/dist/server/JitarServer.d.ts +8 -0
- package/dist/server/JitarServer.js +109 -0
- package/dist/server/configuration/GatewayConfiguration.d.ts +3 -0
- package/dist/server/configuration/GatewayConfiguration.js +18 -0
- package/dist/server/configuration/NodeConfiguration.d.ts +5 -0
- package/dist/server/configuration/NodeConfiguration.js +28 -0
- package/dist/server/configuration/ProxyConfiguration.d.ts +5 -0
- package/dist/server/configuration/ProxyConfiguration.js +29 -0
- package/dist/server/configuration/RepositoryConfiguration.d.ts +5 -0
- package/dist/server/configuration/RepositoryConfiguration.js +30 -0
- package/dist/server/configuration/RuntimeConfiguration.d.ts +13 -0
- package/dist/server/configuration/RuntimeConfiguration.js +48 -0
- package/dist/server/configuration/ServerOptions.d.ts +4 -0
- package/dist/server/configuration/ServerOptions.js +25 -0
- package/dist/server/configuration/StandaloneConfiguration.d.ts +6 -0
- package/dist/server/configuration/StandaloneConfiguration.js +36 -0
- package/dist/server/controllers/AssetsController.d.ts +8 -0
- package/dist/server/controllers/AssetsController.js +50 -0
- package/dist/server/controllers/HealthController.d.ts +10 -0
- package/dist/server/controllers/HealthController.js +47 -0
- package/dist/server/controllers/JitarController.d.ts +4 -0
- package/dist/server/controllers/JitarController.js +26 -0
- package/dist/server/controllers/ModulesController.d.ts +10 -0
- package/dist/server/controllers/ModulesController.js +62 -0
- package/dist/server/controllers/NodesController.d.ts +9 -0
- package/dist/server/controllers/NodesController.js +60 -0
- package/dist/server/controllers/ProceduresController.d.ts +10 -0
- package/dist/server/controllers/ProceduresController.js +35 -0
- package/dist/server/controllers/ProxyController.d.ts +7 -0
- package/dist/server/controllers/ProxyController.js +37 -0
- package/dist/server/controllers/RPCController.d.ts +9 -0
- package/dist/server/controllers/RPCController.js +129 -0
- package/dist/server/definitions/RuntimeDefaults.d.ts +7 -0
- package/dist/server/definitions/RuntimeDefaults.js +8 -0
- package/dist/server/definitions/RuntimeMode.d.ts +8 -0
- package/dist/server/definitions/RuntimeMode.js +9 -0
- package/dist/server/errors/MissingConfigurationValue.d.ts +3 -0
- package/dist/server/errors/MissingConfigurationValue.js +5 -0
- package/dist/server/errors/RuntimeNotAvaiable.d.ts +3 -0
- package/dist/server/errors/RuntimeNotAvaiable.js +5 -0
- package/dist/server/errors/UnknownRuntimeMode.d.ts +3 -0
- package/dist/server/errors/UnknownRuntimeMode.js +5 -0
- package/dist/server/models/HealthDto.d.ts +4 -0
- package/dist/server/models/HealthDto.js +22 -0
- package/dist/server/models/NodeDto.d.ts +4 -0
- package/dist/server/models/NodeDto.js +22 -0
- package/dist/server/models/RuntimeConfiguration.d.ts +12 -0
- package/dist/server/models/RuntimeConfiguration.js +68 -0
- package/dist/server/models/ServerOptions.d.ts +4 -0
- package/dist/server/models/ServerOptions.js +25 -0
- package/dist/server/utils/DataConverter.d.ts +4 -0
- package/dist/server/utils/DataConverter.js +9 -0
- package/dist/server/utils/LocalFileManager.d.ts +20 -0
- package/dist/server/utils/LocalFileManager.js +73 -0
- package/dist/server/utils/RuntimeConfigurationLoader.d.ts +4 -0
- package/dist/server/utils/RuntimeConfigurationLoader.js +11 -0
- package/dist/server/utils/RuntimeConfigurator.d.ts +6 -0
- package/dist/server/utils/RuntimeConfigurator.js +130 -0
- package/dist/server/utils/ServerOptionsReader.d.ts +4 -0
- package/dist/server/utils/ServerOptionsReader.js +10 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.js +8 -0
- package/jest.config.js +20 -0
- package/package.json +48 -0
- package/src/client.ts +18 -0
- package/src/core/ErrorManager.ts +18 -0
- package/src/core/Implementation.ts +53 -0
- package/src/core/Procedure.ts +98 -0
- package/src/core/Segment.ts +62 -0
- package/src/core/SegmentBuilder.ts +55 -0
- package/src/core/Version.ts +68 -0
- package/src/core/definitions/AccessLevel.ts +3 -0
- package/src/core/errors/ImplementationNotFound.ts +12 -0
- package/src/core/errors/InvalidVersionNumber.ts +12 -0
- package/src/core/errors/MissingParameterValue.ts +12 -0
- package/src/core/errors/NotImplemented.ts +12 -0
- package/src/core/errors/ProcedureNotFound.ts +12 -0
- package/src/core/interfaces/Runner.ts +7 -0
- package/src/core/reflection/ParameterParser.ts +74 -0
- package/src/core/reflection/ReflectionHelper.ts +118 -0
- package/src/core/reflection/models/ReflectionField.ts +22 -0
- package/src/core/reflection/models/ReflectionParameter.ts +18 -0
- package/src/core/types/Component.ts +8 -0
- package/src/core/types/FlexObject.ts +4 -0
- package/src/core/types/Module.ts +6 -0
- package/src/core/types/SegmentImplementation.ts +9 -0
- package/src/core/types/SegmentModule.ts +9 -0
- package/src/core/types/SegmentProcedure.ts +11 -0
- package/src/core/utils/FqnBuilder.ts +11 -0
- package/src/hooks.ts +2 -0
- package/src/lib.ts +7 -0
- package/src/runtime/Gateway.ts +18 -0
- package/src/runtime/LocalGateway.ts +93 -0
- package/src/runtime/LocalNode.ts +130 -0
- package/src/runtime/LocalRepository.ts +157 -0
- package/src/runtime/Node.ts +15 -0
- package/src/runtime/NodeBalancer.ts +61 -0
- package/src/runtime/NodeMonitor.ts +63 -0
- package/src/runtime/Proxy.ts +60 -0
- package/src/runtime/Remote.ts +157 -0
- package/src/runtime/RemoteGateway.ts +40 -0
- package/src/runtime/RemoteNode.ts +49 -0
- package/src/runtime/RemoteRepository.ts +60 -0
- package/src/runtime/Repository.ts +20 -0
- package/src/runtime/Runtime.ts +47 -0
- package/src/runtime/caching/CacheBuilder.ts +424 -0
- package/src/runtime/caching/ImportRewriter.ts +76 -0
- package/src/runtime/caching/RemoteBuilder.ts +51 -0
- package/src/runtime/caching/SourceAppender.ts +57 -0
- package/src/runtime/caching/definitions/Keywords.ts +3 -0
- package/src/runtime/caching/errors/InvalidSegmentFilename.ts +8 -0
- package/src/runtime/caching/errors/MissingModuleExport.ts +8 -0
- package/src/runtime/caching/errors/SegmentFileNotLoaded.ts +8 -0
- package/src/runtime/caching/errors/SegmentModuleNotLoaded.ts +8 -0
- package/src/runtime/caching/models/ApplicationModule.ts +30 -0
- package/src/runtime/caching/models/Implementation.ts +41 -0
- package/src/runtime/caching/models/Procedure.ts +26 -0
- package/src/runtime/caching/models/Segment.ts +28 -0
- package/src/runtime/caching/models/SegmentModule.ts +26 -0
- package/src/runtime/caching/types/SegmentFile.ts +6 -0
- package/src/runtime/caching/types/SegmentImportProperties.ts +9 -0
- package/src/runtime/caching/types/SegmentImports.ts +6 -0
- package/src/runtime/errors/ClientNotFound.ts +12 -0
- package/src/runtime/errors/FileNotFound.ts +12 -0
- package/src/runtime/errors/InvalidClientId.ts +12 -0
- package/src/runtime/errors/InvalidJitarHooks.ts +12 -0
- package/src/runtime/errors/InvalidSegmentFile.ts +12 -0
- package/src/runtime/errors/ModuleNotLoaded.ts +12 -0
- package/src/runtime/errors/NoNodeAvailable.ts +12 -0
- package/src/runtime/errors/RepositoryNotAvaiable.ts +12 -0
- package/src/runtime/errors/RuntimeNotAvailable.ts +12 -0
- package/src/runtime/errors/SegmentNotFound.ts +12 -0
- package/src/runtime/hooks/dependencies.ts +19 -0
- package/src/runtime/hooks/runtime.ts +25 -0
- package/src/runtime/interfaces/FileManager.ts +19 -0
- package/src/runtime/interfaces/HealthCheck.ts +5 -0
- package/src/runtime/interfaces/ProcedureContainer.ts +9 -0
- package/src/runtime/models/File.ts +22 -0
- package/src/runtime/serialization/ArraySerializer.ts +27 -0
- package/src/runtime/serialization/ClassSerializer.ts +105 -0
- package/src/runtime/serialization/MapSerializer.ts +44 -0
- package/src/runtime/serialization/ObjectSerializer.ts +42 -0
- package/src/runtime/serialization/SetSerializer.ts +31 -0
- package/src/runtime/serialization/ValueSerializer.ts +81 -0
- package/src/runtime/serialization/errors/ClassNotFound.ts +12 -0
- package/src/runtime/serialization/errors/InvalidClass.ts +12 -0
- package/src/runtime/serialization/interfaces/Serializer.ts +10 -0
- package/src/runtime/serialization/types/SerializableObject.ts +6 -0
- package/src/runtime/serialization/types/Serialized.ts +8 -0
- package/src/runtime/serialization/types/SerializedClass.ts +13 -0
- package/src/runtime/serialization/types/SerializedMap.ts +13 -0
- package/src/runtime/serialization/types/SerializedObject.ts +4 -0
- package/src/runtime/serialization/types/SerializedSet.ts +9 -0
- package/src/runtime/types/JitarHooks.ts +10 -0
- package/src/runtime/types/ModuleImporter.ts +6 -0
- package/src/runtime/utils/ModuleAnalyser.ts +60 -0
- package/src/runtime/utils/ModuleLoader.ts +51 -0
- package/src/runtime/utils/UrlRewriter.ts +59 -0
- package/src/server/JitarServer.ts +161 -0
- package/src/server/configuration/GatewayConfiguration.ts +9 -0
- package/src/server/configuration/NodeConfiguration.ts +15 -0
- package/src/server/configuration/ProxyConfiguration.ts +16 -0
- package/src/server/configuration/RepositoryConfiguration.ts +17 -0
- package/src/server/configuration/RuntimeConfiguration.ts +30 -0
- package/src/server/configuration/ServerOptions.ts +14 -0
- package/src/server/configuration/StandaloneConfiguration.ts +21 -0
- package/src/server/controllers/AssetsController.ts +59 -0
- package/src/server/controllers/HealthController.ts +41 -0
- package/src/server/controllers/JitarController.ts +18 -0
- package/src/server/controllers/ModulesController.ts +66 -0
- package/src/server/controllers/NodesController.ts +58 -0
- package/src/server/controllers/ProceduresController.ts +31 -0
- package/src/server/controllers/ProxyController.ts +38 -0
- package/src/server/controllers/RPCController.ts +173 -0
- package/src/server/definitions/RuntimeDefaults.ts +10 -0
- package/src/server/errors/MissingConfigurationValue.ts +8 -0
- package/src/server/errors/RuntimeNotAvaiable.ts +8 -0
- package/src/server/errors/UnknownRuntimeMode.ts +8 -0
- package/src/server/models/HealthDto.ts +11 -0
- package/src/server/models/NodeDto.ts +11 -0
- package/src/server/utils/DataConverter.ts +15 -0
- package/src/server/utils/LocalFileManager.ts +122 -0
- package/src/server/utils/RuntimeConfigurationLoader.ts +19 -0
- package/src/server/utils/RuntimeConfigurator.ts +207 -0
- package/src/server/utils/ServerOptionsReader.ts +17 -0
- package/src/server.ts +16 -0
- package/test/_fixtures/core/Implementation.fixture.ts +33 -0
- package/test/_fixtures/core/Procedure.fixture.ts +33 -0
- package/test/_fixtures/core/Segment.fixture.ts +36 -0
- package/test/_fixtures/core/SegmentBuilder.fixture.ts +45 -0
- package/test/_fixtures/core/Version.fixture.ts +18 -0
- package/test/_fixtures/core/reflection/ReflectionHelper.fixture.ts +56 -0
- package/test/_fixtures/runtime/LocalGateway.fixture.ts +24 -0
- package/test/_fixtures/runtime/LocalNode.fixture.ts +16 -0
- package/test/_fixtures/runtime/LocalRepository.fixture.ts +73 -0
- package/test/_fixtures/runtime/NodeBalancer.fixture.ts +19 -0
- package/test/_fixtures/runtime/NodeMonitor.fixture.ts +34 -0
- package/test/_fixtures/runtime/RemoteNode.fixture.ts +8 -0
- package/test/_fixtures/runtime/caching/ImportRewriter.fixture.ts +81 -0
- package/test/_fixtures/runtime/caching/RemoteBuilder.fixture.ts +50 -0
- package/test/_fixtures/runtime/caching/SourceAppender.fixture.ts +35 -0
- package/test/_fixtures/runtime/segments.ts +78 -0
- package/test/_fixtures/runtime/serialization/ValueSerializer.fixture.ts +134 -0
- package/test/_fixtures/runtime/utils/ModuleAnaliser.fixture.ts +26 -0
- package/test/core/Implementation.spec.ts +89 -0
- package/test/core/Procedure.spec.ts +108 -0
- package/test/core/Segment.spec.ts +74 -0
- package/test/core/SegmentBuilder.spec.ts +39 -0
- package/test/core/Version.spec.ts +103 -0
- package/test/core/errors/ErrorManager.spec.ts +32 -0
- package/test/core/reflection/ReflectionHelper.spec.ts +128 -0
- package/test/core/utils/FqnBuilder.spec.ts +22 -0
- package/test/runtime/LocalGateway.spec.ts +40 -0
- package/test/runtime/LocalNode.spec.ts +87 -0
- package/test/runtime/LocalRepository.spec.ts +50 -0
- package/test/runtime/NodeBalancer.spec.ts +39 -0
- package/test/runtime/NodeMonitor.spec.ts +31 -0
- package/test/runtime/RemoteNode.spec.ts +43 -0
- package/test/runtime/caching/ImportRewriter.spec.ts +68 -0
- package/test/runtime/caching/RemoteBuilder.spec.ts +21 -0
- package/test/runtime/caching/SourceAppender.spec.ts +31 -0
- package/test/runtime/serialization/ValueSerializer.spec.ts +203 -0
- package/test/runtime/utils/ModuleAnalyser.spec.ts +54 -0
- package/test/runtime/utils/UrlRewriter.spec.ts +57 -0
- package/tsconfig.json +23 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
|
|
2
|
+
import { readFileSync } from 'fs';
|
|
3
|
+
|
|
4
|
+
import RuntimeConfiguration from '../configuration/RuntimeConfiguration.js';
|
|
5
|
+
|
|
6
|
+
import DataConverter from './DataConverter.js';
|
|
7
|
+
|
|
8
|
+
export default class RuntimeConfigurationLoader
|
|
9
|
+
{
|
|
10
|
+
static async load(filename: string): Promise<RuntimeConfiguration>
|
|
11
|
+
{
|
|
12
|
+
const plainContents = readFileSync(filename, 'utf-8');
|
|
13
|
+
const parsedContents = JSON.parse(plainContents);
|
|
14
|
+
|
|
15
|
+
const configuration = await DataConverter.convert<RuntimeConfiguration>(RuntimeConfiguration, parsedContents);
|
|
16
|
+
|
|
17
|
+
return configuration;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
|
|
2
|
+
import CacheBuilder from '../../runtime/caching/CacheBuilder.js';
|
|
3
|
+
import Gateway from '../../runtime/Gateway.js';
|
|
4
|
+
import LocalGateway from '../../runtime/LocalGateway.js';
|
|
5
|
+
import LocalNode from '../../runtime/LocalNode.js';
|
|
6
|
+
import LocalRepository from '../../runtime/LocalRepository.js';
|
|
7
|
+
import Node from '../../runtime/Node.js';
|
|
8
|
+
import NodeMonitor from '../../runtime/NodeMonitor.js';
|
|
9
|
+
import Proxy from '../../runtime/Proxy.js';
|
|
10
|
+
import RemoteGateway from '../../runtime/RemoteGateway.js';
|
|
11
|
+
import RemoteNode from '../../runtime/RemoteNode.js';
|
|
12
|
+
import RemoteRepository from '../../runtime/RemoteRepository.js';
|
|
13
|
+
import Repository from '../../runtime/Repository.js';
|
|
14
|
+
import Runtime from '../../runtime/Runtime.js';
|
|
15
|
+
|
|
16
|
+
import LocalFileManager from './LocalFileManager.js';
|
|
17
|
+
|
|
18
|
+
import RuntimeConfiguration from '../configuration/RuntimeConfiguration.js';
|
|
19
|
+
import StandaloneConfiguration from '../configuration/StandaloneConfiguration.js';
|
|
20
|
+
import RepositoryConfiguration from '../configuration/RepositoryConfiguration.js';
|
|
21
|
+
import GatewayConfiguration from '../configuration/GatewayConfiguration.js';
|
|
22
|
+
import NodeConfiguration from '../configuration/NodeConfiguration.js';
|
|
23
|
+
import ProxyConfiguration from '../configuration/ProxyConfiguration.js';
|
|
24
|
+
|
|
25
|
+
import RuntimeDefaults from '../definitions/RuntimeDefaults.js';
|
|
26
|
+
|
|
27
|
+
import MissingConfigurationValue from '../errors/MissingConfigurationValue.js';
|
|
28
|
+
import UnknownRuntimeMode from '../errors/UnknownRuntimeMode.js';
|
|
29
|
+
|
|
30
|
+
export default class RuntimeConfigurator
|
|
31
|
+
{
|
|
32
|
+
static async configure(configuration: RuntimeConfiguration): Promise<Runtime>
|
|
33
|
+
{
|
|
34
|
+
const url = configuration.url ?? RuntimeDefaults.URL;
|
|
35
|
+
|
|
36
|
+
if (configuration.standalone !== undefined) return this.#configureStandAlone(url, configuration.standalone);
|
|
37
|
+
if (configuration.repository !== undefined) return this.#configureRepository(url, configuration.repository);
|
|
38
|
+
if (configuration.gateway !== undefined) return this.#configureGateway(url, configuration.gateway);
|
|
39
|
+
if (configuration.node !== undefined) return this.#configureNode(url, configuration.node);
|
|
40
|
+
if (configuration.proxy !== undefined) return this.#configureProxy(url, configuration.proxy);
|
|
41
|
+
|
|
42
|
+
throw new UnknownRuntimeMode();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
static async #configureStandAlone(url: string, configuration: StandaloneConfiguration): Promise<Proxy>
|
|
46
|
+
{
|
|
47
|
+
const sourceLocation = configuration.source ?? RuntimeDefaults.SOURCE;
|
|
48
|
+
const cacheLocation = configuration.cache ?? RuntimeDefaults.CACHE;
|
|
49
|
+
|
|
50
|
+
await this.#buildCache(sourceLocation, cacheLocation);
|
|
51
|
+
|
|
52
|
+
const segmentNames = configuration.segments === undefined
|
|
53
|
+
? await this.#getSegmentNames(cacheLocation)
|
|
54
|
+
: configuration.segments;
|
|
55
|
+
|
|
56
|
+
const repository = await this.#buildRepository(url, cacheLocation);
|
|
57
|
+
const node = await this.#buildNode(url, segmentNames, repository);
|
|
58
|
+
|
|
59
|
+
return this.#buildProxy(url, repository, node);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
static async #configureRepository(url: string, configuration: RepositoryConfiguration): Promise<LocalRepository>
|
|
63
|
+
{
|
|
64
|
+
const sourceLocation = configuration.source ?? RuntimeDefaults.SOURCE;
|
|
65
|
+
const cacheLocation = configuration.cache ?? RuntimeDefaults.CACHE;
|
|
66
|
+
|
|
67
|
+
await this.#buildCache(sourceLocation, cacheLocation);
|
|
68
|
+
return this.#buildRepository(url, cacheLocation);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
static async #configureGateway(url: string, configuration: GatewayConfiguration): Promise<LocalGateway>
|
|
72
|
+
{
|
|
73
|
+
return this.#buildGateway(url, configuration.monitor);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
static async #configureNode(url: string, configuration: NodeConfiguration): Promise<LocalNode>
|
|
77
|
+
{
|
|
78
|
+
const segmentNames = configuration.segments ?? [];
|
|
79
|
+
|
|
80
|
+
const repository = configuration.repository !== undefined
|
|
81
|
+
? new RemoteRepository(configuration.repository)
|
|
82
|
+
: undefined;
|
|
83
|
+
|
|
84
|
+
const gateway = configuration.gateway !== undefined
|
|
85
|
+
? new RemoteGateway(configuration.gateway)
|
|
86
|
+
: undefined;
|
|
87
|
+
|
|
88
|
+
return this.#buildNode(url, segmentNames, repository, gateway);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
static async #configureProxy(url: string, configuration: ProxyConfiguration): Promise<Proxy>
|
|
92
|
+
{
|
|
93
|
+
if (configuration.repository === undefined)
|
|
94
|
+
{
|
|
95
|
+
throw new MissingConfigurationValue('proxy.repository');
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const repository = new RemoteRepository(configuration.repository);
|
|
99
|
+
|
|
100
|
+
const gateway = configuration.gateway !== undefined
|
|
101
|
+
? new RemoteGateway(configuration.gateway)
|
|
102
|
+
: undefined;
|
|
103
|
+
|
|
104
|
+
const node = configuration.node !== undefined
|
|
105
|
+
? new RemoteNode(configuration.node, [])
|
|
106
|
+
: undefined;
|
|
107
|
+
|
|
108
|
+
const runner = gateway ?? node;
|
|
109
|
+
|
|
110
|
+
if (runner === undefined)
|
|
111
|
+
{
|
|
112
|
+
throw new MissingConfigurationValue('proxy.gateway or proxy.node');
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return this.#buildProxy(url, repository, runner);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
static async #buildCache(sourceLocation: string, cacheLocation: string): Promise<LocalFileManager>
|
|
119
|
+
{
|
|
120
|
+
const rootManager = new LocalFileManager('./');
|
|
121
|
+
await rootManager.remove(cacheLocation);
|
|
122
|
+
await rootManager.copy(sourceLocation, cacheLocation);
|
|
123
|
+
|
|
124
|
+
const sourceManager = new LocalFileManager(sourceLocation);
|
|
125
|
+
const cacheManager = new LocalFileManager(cacheLocation);
|
|
126
|
+
|
|
127
|
+
const segmentFiles = await rootManager.getSegmentFiles();
|
|
128
|
+
const moduleFiles = await sourceManager.getModuleFileNames();
|
|
129
|
+
|
|
130
|
+
const cacheBuilder = new CacheBuilder(sourceManager, cacheManager);
|
|
131
|
+
await cacheBuilder.build(segmentFiles, moduleFiles);
|
|
132
|
+
|
|
133
|
+
return cacheManager;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
static async #getSegmentNames(cacheLocation: string): Promise<string[]>
|
|
137
|
+
{
|
|
138
|
+
const fileManager = new LocalFileManager(cacheLocation);
|
|
139
|
+
const segmentFilenames = await fileManager.getNodeSegmentFiles();
|
|
140
|
+
|
|
141
|
+
return segmentFilenames.map(filename => this.#extractSegmentName(filename));
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
static #extractSegmentName(filename: string): string
|
|
145
|
+
{
|
|
146
|
+
const name = filename.split('/').pop() ?? '';
|
|
147
|
+
const endIndex = name.indexOf('.segment');
|
|
148
|
+
|
|
149
|
+
return name.substring(0, endIndex);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
static async #buildRepository(url: string | undefined, cacheLocation: string): Promise<LocalRepository>
|
|
153
|
+
{
|
|
154
|
+
const fileManager = new LocalFileManager(cacheLocation);
|
|
155
|
+
const repository = new LocalRepository(fileManager, url);
|
|
156
|
+
|
|
157
|
+
const segmentFilenames = await fileManager.getRepositorySegmentFiles();
|
|
158
|
+
const segmentNames = segmentFilenames.map(filename => this.#extractSegmentName(filename));
|
|
159
|
+
|
|
160
|
+
for (const name of segmentNames)
|
|
161
|
+
{
|
|
162
|
+
await repository.loadSegment(name);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return repository;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
static async #buildGateway(url?: string, monitorInterval?: number): Promise<LocalGateway>
|
|
169
|
+
{
|
|
170
|
+
const gateway = new LocalGateway(url);
|
|
171
|
+
const monitor = new NodeMonitor(gateway, monitorInterval);
|
|
172
|
+
|
|
173
|
+
monitor.start();
|
|
174
|
+
|
|
175
|
+
return gateway;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
static async #buildNode(url: string | undefined, segmentNames: string[], repository?: Repository, gateway?: Gateway): Promise<LocalNode>
|
|
179
|
+
{
|
|
180
|
+
const node = new LocalNode(url);
|
|
181
|
+
|
|
182
|
+
if (repository !== undefined)
|
|
183
|
+
{
|
|
184
|
+
await node.setRepository(repository, segmentNames);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
for (const segmentName of segmentNames)
|
|
188
|
+
{
|
|
189
|
+
await node.loadSegment(segmentName);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// All segments have to be loaded before a node
|
|
193
|
+
// can be registered at the gateway
|
|
194
|
+
|
|
195
|
+
if (gateway !== undefined)
|
|
196
|
+
{
|
|
197
|
+
node.setGateway(gateway);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
return node;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
static async #buildProxy(url: string | undefined, repository: Repository, runner: Gateway | Node): Promise<Proxy>
|
|
204
|
+
{
|
|
205
|
+
return new Proxy(repository, runner, url);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
import yargs from 'yargs';
|
|
3
|
+
|
|
4
|
+
import ServerOptions from '../configuration/ServerOptions.js';
|
|
5
|
+
|
|
6
|
+
import DataConverter from './DataConverter.js';
|
|
7
|
+
|
|
8
|
+
export default class ServerOptionsReader
|
|
9
|
+
{
|
|
10
|
+
static async read(): Promise<ServerOptions>
|
|
11
|
+
{
|
|
12
|
+
const args: object = yargs(process.argv).argv
|
|
13
|
+
const options = await DataConverter.convert<ServerOptions>(ServerOptions, args);
|
|
14
|
+
|
|
15
|
+
return options;
|
|
16
|
+
}
|
|
17
|
+
}
|
package/src/server.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
import ModuleImporter from './runtime/types/ModuleImporter.js';
|
|
3
|
+
import ModuleLoader from './runtime/utils/ModuleLoader.js';
|
|
4
|
+
|
|
5
|
+
import JitarServer from './server/JitarServer.js';
|
|
6
|
+
|
|
7
|
+
export async function startServer(moduleImporter: ModuleImporter): Promise<JitarServer>
|
|
8
|
+
{
|
|
9
|
+
ModuleLoader.setImporter(moduleImporter);
|
|
10
|
+
|
|
11
|
+
const server = new JitarServer();
|
|
12
|
+
|
|
13
|
+
await server.start();
|
|
14
|
+
|
|
15
|
+
return server;
|
|
16
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
|
|
2
|
+
import * as AccessLevel from '../../../src/core/definitions/AccessLevel';
|
|
3
|
+
import Implementation from '../../../src/core/Implementation';
|
|
4
|
+
import Version from '../../../src/core/Version';
|
|
5
|
+
import ReflectionHelper from '../../../src/core/reflection/ReflectionHelper';
|
|
6
|
+
|
|
7
|
+
function getPrivate(): string
|
|
8
|
+
{
|
|
9
|
+
return 'private';
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function getPublic(): string
|
|
13
|
+
{
|
|
14
|
+
return 'public';
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function getParameters(mandatory: string, optional = 'default')
|
|
18
|
+
{
|
|
19
|
+
return `${mandatory} ${optional}`;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const parameters = ReflectionHelper.getFunctionParameters(getParameters);
|
|
23
|
+
|
|
24
|
+
const privateImplementation = new Implementation(Version.DEFAULT, AccessLevel.PRIVATE, [], getPrivate);
|
|
25
|
+
const publicImplementation = new Implementation(Version.DEFAULT, AccessLevel.PUBLIC, [], getPublic);
|
|
26
|
+
const parameterImplementation = new Implementation(Version.DEFAULT, AccessLevel.PUBLIC, parameters, getParameters);
|
|
27
|
+
|
|
28
|
+
export
|
|
29
|
+
{
|
|
30
|
+
privateImplementation,
|
|
31
|
+
publicImplementation,
|
|
32
|
+
parameterImplementation
|
|
33
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
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 }
|
|
@@ -0,0 +1,45 @@
|
|
|
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 }
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
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 }
|
|
@@ -0,0 +1,16 @@
|
|
|
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 }
|
|
@@ -0,0 +1,73 @@
|
|
|
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 }
|
|
@@ -0,0 +1,19 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
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
|
+
}
|