jitar 0.1.0 → 0.1.2
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/core/Implementation.js +7 -0
- package/dist/core/SegmentBuilder.js +0 -1
- package/dist/core/errors/UnknownParameter.d.ts +3 -0
- package/dist/core/errors/UnknownParameter.js +6 -0
- package/dist/runtime/ClientId.d.ts +4 -0
- package/dist/runtime/ClientId.js +11 -0
- package/dist/runtime/LocalRepository.d.ts +3 -3
- package/dist/runtime/LocalRepository.js +17 -9
- package/dist/runtime/caching/CacheBuilder.js +3 -3
- package/dist/runtime/serialization/ClassSerializer.js +16 -0
- package/dist/runtime/serialization/MapSerializer.d.ts +1 -0
- package/dist/runtime/serialization/MapSerializer.js +10 -0
- package/dist/runtime/serialization/SetSerializer.d.ts +1 -0
- package/dist/runtime/serialization/SetSerializer.js +7 -0
- package/dist/runtime/serialization/errors/InvalidPropertyType.d.ts +3 -0
- package/dist/runtime/serialization/errors/InvalidPropertyType.js +6 -0
- package/dist/server/configuration/RepositoryConfiguration.d.ts +1 -0
- package/dist/server/configuration/RepositoryConfiguration.js +7 -1
- package/dist/server/configuration/StandaloneConfiguration.d.ts +1 -0
- package/dist/server/configuration/StandaloneConfiguration.js +6 -0
- package/dist/server/controllers/ModulesController.js +6 -0
- package/dist/server/utils/LocalFileManager.d.ts +1 -0
- package/dist/server/utils/LocalFileManager.js +19 -11
- package/dist/server/utils/RuntimeConfigurator.js +9 -4
- package/package.json +26 -4
- package/.eslintignore +0 -3
- package/.eslintrc +0 -16
- package/coverage/clover.xml +0 -2483
- package/coverage/coverage-final.json +0 -56
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -356
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/src/core/ErrorManager.ts.html +0 -139
- package/coverage/lcov-report/src/core/Implementation.ts.html +0 -244
- package/coverage/lcov-report/src/core/ImplementationBuilder.ts.html +0 -148
- package/coverage/lcov-report/src/core/Procedure.ts.html +0 -379
- package/coverage/lcov-report/src/core/Segment.ts.html +0 -271
- package/coverage/lcov-report/src/core/SegmentBuilder.ts.html +0 -250
- package/coverage/lcov-report/src/core/Version.ts.html +0 -289
- package/coverage/lcov-report/src/core/definitions/AccessLevel.ts.html +0 -94
- package/coverage/lcov-report/src/core/definitions/index.html +0 -116
- package/coverage/lcov-report/src/core/errors/ErrorManager.ts.html +0 -139
- package/coverage/lcov-report/src/core/errors/ImplementationNotFound.ts.html +0 -121
- package/coverage/lcov-report/src/core/errors/InvalidVersionNumber.ts.html +0 -121
- package/coverage/lcov-report/src/core/errors/MissingParameterValue.ts.html +0 -121
- package/coverage/lcov-report/src/core/errors/ProcedureNotFound.ts.html +0 -121
- package/coverage/lcov-report/src/core/errors/index.html +0 -161
- package/coverage/lcov-report/src/core/index.html +0 -191
- package/coverage/lcov-report/src/core/reflection/ParameterParser.ts.html +0 -307
- package/coverage/lcov-report/src/core/reflection/ReflectionHelper.ts.html +0 -439
- package/coverage/lcov-report/src/core/reflection/index.html +0 -131
- package/coverage/lcov-report/src/core/reflection/models/ReflectionField.ts.html +0 -151
- package/coverage/lcov-report/src/core/reflection/models/ReflectionParameter.ts.html +0 -139
- package/coverage/lcov-report/src/core/reflection/models/index.html +0 -131
- package/coverage/lcov-report/src/core/utils/FqnBuilder.ts.html +0 -115
- package/coverage/lcov-report/src/core/utils/index.html +0 -116
- package/coverage/lcov-report/src/hooks.ts.html +0 -88
- package/coverage/lcov-report/src/index.html +0 -116
- package/coverage/lcov-report/src/runtime/Gateway.ts.html +0 -139
- package/coverage/lcov-report/src/runtime/LocalGateway.ts.html +0 -364
- package/coverage/lcov-report/src/runtime/LocalNode.ts.html +0 -475
- package/coverage/lcov-report/src/runtime/LocalRepository.ts.html +0 -556
- package/coverage/lcov-report/src/runtime/Node.ts.html +0 -130
- package/coverage/lcov-report/src/runtime/NodeBalancer.ts.html +0 -268
- package/coverage/lcov-report/src/runtime/NodeMonitor.ts.html +0 -274
- package/coverage/lcov-report/src/runtime/Remote.ts.html +0 -562
- package/coverage/lcov-report/src/runtime/RemoteNode.ts.html +0 -232
- package/coverage/lcov-report/src/runtime/Repository.ts.html +0 -145
- package/coverage/lcov-report/src/runtime/Runtime.ts.html +0 -226
- package/coverage/lcov-report/src/runtime/caching/ImportRewriter.ts.html +0 -313
- package/coverage/lcov-report/src/runtime/caching/ModuleAppender.ts.html +0 -208
- package/coverage/lcov-report/src/runtime/caching/RemoteBuilder.ts.html +0 -238
- package/coverage/lcov-report/src/runtime/caching/SourceAppender.ts.html +0 -256
- package/coverage/lcov-report/src/runtime/caching/definitions/Keywords.ts.html +0 -94
- package/coverage/lcov-report/src/runtime/caching/definitions/index.html +0 -116
- package/coverage/lcov-report/src/runtime/caching/index.html +0 -146
- package/coverage/lcov-report/src/runtime/caching/models/ApplicationModule.ts.html +0 -175
- package/coverage/lcov-report/src/runtime/caching/models/Implementation.ts.html +0 -208
- package/coverage/lcov-report/src/runtime/caching/models/SegmentModule.ts.html +0 -163
- package/coverage/lcov-report/src/runtime/caching/models/index.html +0 -146
- package/coverage/lcov-report/src/runtime/errors/ClientNotFound.ts.html +0 -121
- package/coverage/lcov-report/src/runtime/errors/InvalidClientId.ts.html +0 -121
- package/coverage/lcov-report/src/runtime/errors/InvalidSegmentFile.ts.html +0 -121
- package/coverage/lcov-report/src/runtime/errors/ModuleNotLoaded.ts.html +0 -121
- package/coverage/lcov-report/src/runtime/errors/NoNodeAvailable.ts.html +0 -121
- package/coverage/lcov-report/src/runtime/errors/RepositoryNotAvaiable.ts.html +0 -121
- package/coverage/lcov-report/src/runtime/errors/RuntimeNotAvailable.ts.html +0 -121
- package/coverage/lcov-report/src/runtime/errors/index.html +0 -206
- package/coverage/lcov-report/src/runtime/hooks/dependencies.ts.html +0 -142
- package/coverage/lcov-report/src/runtime/hooks/index.html +0 -131
- package/coverage/lcov-report/src/runtime/hooks/runtime.ts.html +0 -160
- package/coverage/lcov-report/src/runtime/index.html +0 -251
- package/coverage/lcov-report/src/runtime/models/File.ts.html +0 -151
- package/coverage/lcov-report/src/runtime/models/index.html +0 -116
- package/coverage/lcov-report/src/runtime/serialization/ArraySerializer.ts.html +0 -166
- package/coverage/lcov-report/src/runtime/serialization/ClassSerializer.ts.html +0 -400
- package/coverage/lcov-report/src/runtime/serialization/MapSerializer.ts.html +0 -217
- package/coverage/lcov-report/src/runtime/serialization/ObjectSerializer.ts.html +0 -211
- package/coverage/lcov-report/src/runtime/serialization/SetSerializer.ts.html +0 -178
- package/coverage/lcov-report/src/runtime/serialization/ValueSerializer.ts.html +0 -328
- package/coverage/lcov-report/src/runtime/serialization/errors/ClassNotFound.ts.html +0 -121
- package/coverage/lcov-report/src/runtime/serialization/errors/InvalidClass.ts.html +0 -121
- package/coverage/lcov-report/src/runtime/serialization/errors/index.html +0 -131
- package/coverage/lcov-report/src/runtime/serialization/index.html +0 -191
- package/coverage/lcov-report/src/runtime/utils/ModuleAnalyser.ts.html +0 -265
- package/coverage/lcov-report/src/runtime/utils/ModuleLoader.ts.html +0 -238
- package/coverage/lcov-report/src/runtime/utils/UrlRewriter.ts.html +0 -262
- package/coverage/lcov-report/src/runtime/utils/index.html +0 -146
- package/coverage/lcov-report/test/_fixtures/core/Implementation.fixture.ts.html +0 -184
- package/coverage/lcov-report/test/_fixtures/core/Procedure.fixture.ts.html +0 -172
- package/coverage/lcov-report/test/_fixtures/core/Segment.fixture.ts.html +0 -193
- package/coverage/lcov-report/test/_fixtures/core/SegmentBuilder.fixture.ts.html +0 -220
- package/coverage/lcov-report/test/_fixtures/core/Version.fixture.ts.html +0 -139
- package/coverage/lcov-report/test/_fixtures/core/index.html +0 -176
- package/coverage/lcov-report/test/_fixtures/core/procedures/allDefault.ts.html +0 -100
- package/coverage/lcov-report/test/_fixtures/core/procedures/hasParameters.ts.html +0 -100
- package/coverage/lcov-report/test/_fixtures/core/procedures/hasVersion_v1_0_0.ts.html +0 -115
- package/coverage/lcov-report/test/_fixtures/core/procedures/hasVersion_v1_0_5.ts.html +0 -115
- package/coverage/lcov-report/test/_fixtures/core/procedures/hasVersion_v1_1_0.ts.html +0 -115
- package/coverage/lcov-report/test/_fixtures/core/procedures/hasVersion_v1_2_3.ts.html +0 -115
- package/coverage/lcov-report/test/_fixtures/core/procedures/inModule.ts.html +0 -115
- package/coverage/lcov-report/test/_fixtures/core/procedures/index.html +0 -251
- package/coverage/lcov-report/test/_fixtures/core/procedures/isBroken.ts.html +0 -112
- package/coverage/lcov-report/test/_fixtures/core/procedures/isPrivate.ts.html +0 -112
- package/coverage/lcov-report/test/_fixtures/core/procedures/isPublic.ts.html +0 -112
- package/coverage/lcov-report/test/_fixtures/core/reflection/ReflectionHelper.fixture.ts.html +0 -241
- package/coverage/lcov-report/test/_fixtures/core/reflection/index.html +0 -116
- package/coverage/lcov-report/test/_fixtures/core/segments/default.segment.ts.html +0 -94
- package/coverage/lcov-report/test/_fixtures/core/segments/index.html +0 -116
- package/coverage/lcov-report/test/_fixtures/runtime/LocalGateway.fixture.ts.html +0 -157
- package/coverage/lcov-report/test/_fixtures/runtime/LocalNode.fixture.ts.html +0 -133
- package/coverage/lcov-report/test/_fixtures/runtime/LocalRepository.fixture.ts.html +0 -304
- package/coverage/lcov-report/test/_fixtures/runtime/NodeBalancer.fixture.ts.html +0 -142
- package/coverage/lcov-report/test/_fixtures/runtime/NodeMonitor.fixture.ts.html +0 -187
- package/coverage/lcov-report/test/_fixtures/runtime/RemoteNode.fixture.ts.html +0 -109
- package/coverage/lcov-report/test/_fixtures/runtime/caching/ImportRewriter.fixture.ts.html +0 -304
- package/coverage/lcov-report/test/_fixtures/runtime/caching/ModuleAppender.fixture.ts.html +0 -181
- package/coverage/lcov-report/test/_fixtures/runtime/caching/RemoteBuilder.fixture.ts.html +0 -217
- package/coverage/lcov-report/test/_fixtures/runtime/caching/SourceAppender.fixture.ts.html +0 -178
- package/coverage/lcov-report/test/_fixtures/runtime/caching/index.html +0 -146
- package/coverage/lcov-report/test/_fixtures/runtime/index.html +0 -206
- package/coverage/lcov-report/test/_fixtures/runtime/procedures/firstPrivateTask.ts.html +0 -109
- package/coverage/lcov-report/test/_fixtures/runtime/procedures/firstPublicTask.ts.html +0 -118
- package/coverage/lcov-report/test/_fixtures/runtime/procedures/fourthPublicTask.ts.html +0 -109
- package/coverage/lcov-report/test/_fixtures/runtime/procedures/index.html +0 -191
- package/coverage/lcov-report/test/_fixtures/runtime/procedures/secondPrivateTask.ts.html +0 -109
- package/coverage/lcov-report/test/_fixtures/runtime/procedures/secondPublicTask.ts.html +0 -118
- package/coverage/lcov-report/test/_fixtures/runtime/procedures/thirdPublicTask.ts.html +0 -118
- package/coverage/lcov-report/test/_fixtures/runtime/segments/first.segment.files.ts.html +0 -85
- package/coverage/lcov-report/test/_fixtures/runtime/segments/first.segment.ts.html +0 -91
- package/coverage/lcov-report/test/_fixtures/runtime/segments/index.html +0 -161
- package/coverage/lcov-report/test/_fixtures/runtime/segments/second.segment.files.ts.html +0 -85
- package/coverage/lcov-report/test/_fixtures/runtime/segments/second.segment.ts.html +0 -91
- package/coverage/lcov-report/test/_fixtures/runtime/segments.ts.html +0 -319
- package/coverage/lcov-report/test/_fixtures/runtime/serialization/ValueSerializer.fixture.ts.html +0 -394
- package/coverage/lcov-report/test/_fixtures/runtime/serialization/index.html +0 -116
- package/coverage/lcov-report/test/_fixtures/runtime/utils/ModuleAnaliser.fixture.ts.html +0 -163
- package/coverage/lcov-report/test/_fixtures/runtime/utils/index.html +0 -116
- package/coverage/lcov.info +0 -3565
- package/dist/core/AccessLevel.d.ts +0 -5
- package/dist/core/AccessLevel.js +0 -6
- package/dist/core/ImplementationBuilder.d.ts +0 -4
- package/dist/core/ImplementationBuilder.js +0 -14
- package/dist/core/errors/ErrorManager.d.ts +0 -3
- package/dist/core/errors/ErrorManager.js +0 -11
- package/dist/runtime/RemoteNodeBuilder.d.ts +0 -4
- package/dist/runtime/RemoteNodeBuilder.js +0 -10
- package/dist/runtime/caching/CachBuilder.d.ts +0 -6
- package/dist/runtime/caching/CachBuilder.js +0 -150
- package/dist/runtime/caching/ModuleAppender.d.ts +0 -5
- package/dist/runtime/caching/ModuleAppender.js +0 -22
- package/dist/runtime/caching/errors/FunctionFilenameNotFound.d.ts +0 -3
- package/dist/runtime/caching/errors/FunctionFilenameNotFound.js +0 -5
- package/dist/runtime/caching/types/models/ApplicationModule.d.ts +0 -9
- package/dist/runtime/caching/types/models/ApplicationModule.js +0 -19
- package/dist/runtime/caching/types/models/Implementation.d.ts +0 -12
- package/dist/runtime/caching/types/models/Implementation.js +0 -27
- package/dist/runtime/caching/types/models/Procedure.d.ts +0 -9
- package/dist/runtime/caching/types/models/Procedure.js +0 -15
- package/dist/runtime/caching/types/models/Segment.d.ts +0 -10
- package/dist/runtime/caching/types/models/Segment.js +0 -16
- package/dist/runtime/caching/types/models/SegmentModule.d.ts +0 -10
- package/dist/runtime/caching/types/models/SegmentModule.js +0 -14
- package/dist/server/definitions/RuntimeMode.d.ts +0 -8
- package/dist/server/definitions/RuntimeMode.js +0 -9
- package/dist/server/models/RuntimeConfiguration.d.ts +0 -12
- package/dist/server/models/RuntimeConfiguration.js +0 -68
- package/dist/server/models/ServerOptions.d.ts +0 -4
- package/dist/server/models/ServerOptions.js +0 -25
- package/jest.config.js +0 -20
- package/src/client.ts +0 -18
- package/src/core/ErrorManager.ts +0 -18
- package/src/core/Implementation.ts +0 -53
- package/src/core/Procedure.ts +0 -98
- package/src/core/Segment.ts +0 -62
- package/src/core/SegmentBuilder.ts +0 -55
- package/src/core/Version.ts +0 -68
- package/src/core/definitions/AccessLevel.ts +0 -3
- package/src/core/errors/ImplementationNotFound.ts +0 -12
- package/src/core/errors/InvalidVersionNumber.ts +0 -12
- package/src/core/errors/MissingParameterValue.ts +0 -12
- package/src/core/errors/NotImplemented.ts +0 -12
- package/src/core/errors/ProcedureNotFound.ts +0 -12
- package/src/core/interfaces/Runner.ts +0 -7
- package/src/core/reflection/ParameterParser.ts +0 -74
- package/src/core/reflection/ReflectionHelper.ts +0 -118
- package/src/core/reflection/models/ReflectionField.ts +0 -22
- package/src/core/reflection/models/ReflectionParameter.ts +0 -18
- package/src/core/types/Component.ts +0 -8
- package/src/core/types/FlexObject.ts +0 -4
- package/src/core/types/Module.ts +0 -6
- package/src/core/types/SegmentImplementation.ts +0 -9
- package/src/core/types/SegmentModule.ts +0 -9
- package/src/core/types/SegmentProcedure.ts +0 -11
- package/src/core/utils/FqnBuilder.ts +0 -11
- package/src/hooks.ts +0 -2
- package/src/lib.ts +0 -7
- package/src/runtime/Gateway.ts +0 -18
- package/src/runtime/LocalGateway.ts +0 -93
- package/src/runtime/LocalNode.ts +0 -130
- package/src/runtime/LocalRepository.ts +0 -157
- package/src/runtime/Node.ts +0 -15
- package/src/runtime/NodeBalancer.ts +0 -61
- package/src/runtime/NodeMonitor.ts +0 -63
- package/src/runtime/Proxy.ts +0 -60
- package/src/runtime/Remote.ts +0 -157
- package/src/runtime/RemoteGateway.ts +0 -40
- package/src/runtime/RemoteNode.ts +0 -49
- package/src/runtime/RemoteRepository.ts +0 -60
- package/src/runtime/Repository.ts +0 -20
- package/src/runtime/Runtime.ts +0 -47
- package/src/runtime/caching/CacheBuilder.ts +0 -424
- package/src/runtime/caching/ImportRewriter.ts +0 -76
- package/src/runtime/caching/RemoteBuilder.ts +0 -51
- package/src/runtime/caching/SourceAppender.ts +0 -57
- package/src/runtime/caching/definitions/Keywords.ts +0 -3
- package/src/runtime/caching/errors/InvalidSegmentFilename.ts +0 -8
- package/src/runtime/caching/errors/MissingModuleExport.ts +0 -8
- package/src/runtime/caching/errors/SegmentFileNotLoaded.ts +0 -8
- package/src/runtime/caching/errors/SegmentModuleNotLoaded.ts +0 -8
- package/src/runtime/caching/models/ApplicationModule.ts +0 -30
- package/src/runtime/caching/models/Implementation.ts +0 -41
- package/src/runtime/caching/models/Procedure.ts +0 -26
- package/src/runtime/caching/models/Segment.ts +0 -28
- package/src/runtime/caching/models/SegmentModule.ts +0 -26
- package/src/runtime/caching/types/SegmentFile.ts +0 -6
- package/src/runtime/caching/types/SegmentImportProperties.ts +0 -9
- package/src/runtime/caching/types/SegmentImports.ts +0 -6
- package/src/runtime/errors/ClientNotFound.ts +0 -12
- package/src/runtime/errors/FileNotFound.ts +0 -12
- package/src/runtime/errors/InvalidClientId.ts +0 -12
- package/src/runtime/errors/InvalidJitarHooks.ts +0 -12
- package/src/runtime/errors/InvalidSegmentFile.ts +0 -12
- package/src/runtime/errors/ModuleNotLoaded.ts +0 -12
- package/src/runtime/errors/NoNodeAvailable.ts +0 -12
- package/src/runtime/errors/RepositoryNotAvaiable.ts +0 -12
- package/src/runtime/errors/RuntimeNotAvailable.ts +0 -12
- package/src/runtime/errors/SegmentNotFound.ts +0 -12
- package/src/runtime/hooks/dependencies.ts +0 -19
- package/src/runtime/hooks/runtime.ts +0 -25
- package/src/runtime/interfaces/FileManager.ts +0 -19
- package/src/runtime/interfaces/HealthCheck.ts +0 -5
- package/src/runtime/interfaces/ProcedureContainer.ts +0 -9
- package/src/runtime/models/File.ts +0 -22
- package/src/runtime/serialization/ArraySerializer.ts +0 -27
- package/src/runtime/serialization/ClassSerializer.ts +0 -105
- package/src/runtime/serialization/MapSerializer.ts +0 -44
- package/src/runtime/serialization/ObjectSerializer.ts +0 -42
- package/src/runtime/serialization/SetSerializer.ts +0 -31
- package/src/runtime/serialization/ValueSerializer.ts +0 -81
- package/src/runtime/serialization/errors/ClassNotFound.ts +0 -12
- package/src/runtime/serialization/errors/InvalidClass.ts +0 -12
- package/src/runtime/serialization/interfaces/Serializer.ts +0 -10
- package/src/runtime/serialization/types/SerializableObject.ts +0 -6
- package/src/runtime/serialization/types/Serialized.ts +0 -8
- package/src/runtime/serialization/types/SerializedClass.ts +0 -13
- package/src/runtime/serialization/types/SerializedMap.ts +0 -13
- package/src/runtime/serialization/types/SerializedObject.ts +0 -4
- package/src/runtime/serialization/types/SerializedSet.ts +0 -9
- package/src/runtime/types/JitarHooks.ts +0 -10
- package/src/runtime/types/ModuleImporter.ts +0 -6
- package/src/runtime/utils/ModuleAnalyser.ts +0 -60
- package/src/runtime/utils/ModuleLoader.ts +0 -51
- package/src/runtime/utils/UrlRewriter.ts +0 -59
- package/src/server/JitarServer.ts +0 -161
- package/src/server/configuration/GatewayConfiguration.ts +0 -9
- package/src/server/configuration/NodeConfiguration.ts +0 -15
- package/src/server/configuration/ProxyConfiguration.ts +0 -16
- package/src/server/configuration/RepositoryConfiguration.ts +0 -17
- package/src/server/configuration/RuntimeConfiguration.ts +0 -30
- package/src/server/configuration/ServerOptions.ts +0 -14
- package/src/server/configuration/StandaloneConfiguration.ts +0 -21
- package/src/server/controllers/AssetsController.ts +0 -59
- package/src/server/controllers/HealthController.ts +0 -41
- package/src/server/controllers/JitarController.ts +0 -18
- package/src/server/controllers/ModulesController.ts +0 -66
- package/src/server/controllers/NodesController.ts +0 -58
- package/src/server/controllers/ProceduresController.ts +0 -31
- package/src/server/controllers/ProxyController.ts +0 -38
- package/src/server/controllers/RPCController.ts +0 -173
- package/src/server/definitions/RuntimeDefaults.ts +0 -10
- package/src/server/errors/MissingConfigurationValue.ts +0 -8
- package/src/server/errors/RuntimeNotAvaiable.ts +0 -8
- package/src/server/errors/UnknownRuntimeMode.ts +0 -8
- package/src/server/models/HealthDto.ts +0 -11
- package/src/server/models/NodeDto.ts +0 -11
- package/src/server/utils/DataConverter.ts +0 -15
- package/src/server/utils/LocalFileManager.ts +0 -122
- package/src/server/utils/RuntimeConfigurationLoader.ts +0 -19
- package/src/server/utils/RuntimeConfigurator.ts +0 -207
- package/src/server/utils/ServerOptionsReader.ts +0 -17
- package/src/server.ts +0 -16
- package/test/_fixtures/core/Implementation.fixture.ts +0 -33
- package/test/_fixtures/core/Procedure.fixture.ts +0 -33
- package/test/_fixtures/core/Segment.fixture.ts +0 -36
- package/test/_fixtures/core/SegmentBuilder.fixture.ts +0 -45
- package/test/_fixtures/core/Version.fixture.ts +0 -18
- package/test/_fixtures/core/reflection/ReflectionHelper.fixture.ts +0 -56
- package/test/_fixtures/runtime/LocalGateway.fixture.ts +0 -24
- package/test/_fixtures/runtime/LocalNode.fixture.ts +0 -16
- package/test/_fixtures/runtime/LocalRepository.fixture.ts +0 -73
- package/test/_fixtures/runtime/NodeBalancer.fixture.ts +0 -19
- package/test/_fixtures/runtime/NodeMonitor.fixture.ts +0 -34
- package/test/_fixtures/runtime/RemoteNode.fixture.ts +0 -8
- package/test/_fixtures/runtime/caching/ImportRewriter.fixture.ts +0 -81
- package/test/_fixtures/runtime/caching/RemoteBuilder.fixture.ts +0 -50
- package/test/_fixtures/runtime/caching/SourceAppender.fixture.ts +0 -35
- package/test/_fixtures/runtime/segments.ts +0 -78
- package/test/_fixtures/runtime/serialization/ValueSerializer.fixture.ts +0 -134
- package/test/_fixtures/runtime/utils/ModuleAnaliser.fixture.ts +0 -26
- package/test/core/Implementation.spec.ts +0 -89
- package/test/core/Procedure.spec.ts +0 -108
- package/test/core/Segment.spec.ts +0 -74
- package/test/core/SegmentBuilder.spec.ts +0 -39
- package/test/core/Version.spec.ts +0 -103
- package/test/core/errors/ErrorManager.spec.ts +0 -32
- package/test/core/reflection/ReflectionHelper.spec.ts +0 -128
- package/test/core/utils/FqnBuilder.spec.ts +0 -22
- package/test/runtime/LocalGateway.spec.ts +0 -40
- package/test/runtime/LocalNode.spec.ts +0 -87
- package/test/runtime/LocalRepository.spec.ts +0 -50
- package/test/runtime/NodeBalancer.spec.ts +0 -39
- package/test/runtime/NodeMonitor.spec.ts +0 -31
- package/test/runtime/RemoteNode.spec.ts +0 -43
- package/test/runtime/caching/ImportRewriter.spec.ts +0 -68
- package/test/runtime/caching/RemoteBuilder.spec.ts +0 -21
- package/test/runtime/caching/SourceAppender.spec.ts +0 -31
- package/test/runtime/serialization/ValueSerializer.spec.ts +0 -203
- package/test/runtime/utils/ModuleAnalyser.spec.ts +0 -54
- package/test/runtime/utils/UrlRewriter.spec.ts +0 -57
- package/tsconfig.json +0 -23
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import MissingParameterValue from './errors/MissingParameterValue.js';
|
|
2
|
+
import UnknownParameter from './errors/UnknownParameter.js';
|
|
2
3
|
import * as AccessLevel from './definitions/AccessLevel.js';
|
|
3
4
|
export default class Implementation {
|
|
4
5
|
#version;
|
|
@@ -20,6 +21,12 @@ export default class Implementation {
|
|
|
20
21
|
}
|
|
21
22
|
#extractParameterValues(parameters) {
|
|
22
23
|
const values = [];
|
|
24
|
+
const incommingKeys = Array.from(parameters.keys());
|
|
25
|
+
const knownKeys = this.#parameters.map(parameter => parameter.name);
|
|
26
|
+
const additionalKeys = incommingKeys.filter(key => knownKeys.includes(key) === false);
|
|
27
|
+
if (additionalKeys.length !== 0) {
|
|
28
|
+
throw new UnknownParameter(additionalKeys[0]);
|
|
29
|
+
}
|
|
23
30
|
for (const parameter of this.#parameters) {
|
|
24
31
|
const value = parameters.get(parameter.name);
|
|
25
32
|
if (value === undefined && parameter.isOptional === false) {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const CLIENT_ID_PREFIX = 'CLIENT_';
|
|
2
|
+
const CLIENT_ID_REGEX = /^CLIENT_\d+$/;
|
|
3
|
+
let lastClientId = 0;
|
|
4
|
+
export default class ClientId {
|
|
5
|
+
static generate() {
|
|
6
|
+
return `${CLIENT_ID_PREFIX}${lastClientId++}`;
|
|
7
|
+
}
|
|
8
|
+
static validate(clientId) {
|
|
9
|
+
return CLIENT_ID_REGEX.test(clientId);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import Module from '../core/types/Module.js';
|
|
2
|
-
import FileManager from './interfaces/FileManager.js';
|
|
3
2
|
import LocalNode from './LocalNode.js';
|
|
4
|
-
import File from './models/File.js';
|
|
5
3
|
import Repository from './Repository.js';
|
|
4
|
+
import FileManager from './interfaces/FileManager.js';
|
|
5
|
+
import File from './models/File.js';
|
|
6
6
|
export default class LocalRepository extends Repository {
|
|
7
7
|
#private;
|
|
8
|
-
constructor(fileManager: FileManager, url?: string);
|
|
8
|
+
constructor(fileManager: FileManager, assets: string[], url?: string);
|
|
9
9
|
loadSegment(name: string): Promise<void>;
|
|
10
10
|
registerSegment(name: string, files: string[]): Promise<void>;
|
|
11
11
|
registerClient(segmentFilenames: string[]): Promise<string>;
|
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
import
|
|
1
|
+
import ClientId from './ClientId.js';
|
|
2
2
|
import Repository from './Repository.js';
|
|
3
|
+
import File from './models/File.js';
|
|
3
4
|
import ModuleLoader from './utils/ModuleLoader.js';
|
|
4
5
|
import ClientNotFound from './errors/ClientNotFound.js';
|
|
6
|
+
import FileNotFound from './errors/FileNotFound.js';
|
|
5
7
|
import InvalidClientId from './errors/InvalidClientId.js';
|
|
6
8
|
import InvalidSegmentFile from './errors/InvalidSegmentFile.js';
|
|
7
9
|
import { setRuntime } from '../hooks.js';
|
|
8
|
-
let lastClientId = 0;
|
|
9
|
-
const CLIENT_ID_PREFIX = 'CLIENT_';
|
|
10
10
|
export default class LocalRepository extends Repository {
|
|
11
11
|
#fileManager;
|
|
12
12
|
#segments = new Map();
|
|
13
13
|
#clients = new Map();
|
|
14
|
-
|
|
14
|
+
#assets;
|
|
15
|
+
constructor(fileManager, assets, url) {
|
|
15
16
|
super(url);
|
|
16
17
|
this.#fileManager = fileManager;
|
|
18
|
+
this.#assets = assets;
|
|
17
19
|
}
|
|
18
20
|
async loadSegment(name) {
|
|
19
21
|
const filename = `./${name}.segment.repository.js`;
|
|
@@ -29,7 +31,7 @@ export default class LocalRepository extends Repository {
|
|
|
29
31
|
files.forEach((file) => this.#segments.set(file, name));
|
|
30
32
|
}
|
|
31
33
|
async registerClient(segmentFilenames) {
|
|
32
|
-
const clientId =
|
|
34
|
+
const clientId = ClientId.generate();
|
|
33
35
|
this.#clients.set(clientId, segmentFilenames);
|
|
34
36
|
return clientId;
|
|
35
37
|
}
|
|
@@ -37,7 +39,10 @@ export default class LocalRepository extends Repository {
|
|
|
37
39
|
setRuntime(runtime);
|
|
38
40
|
}
|
|
39
41
|
async loadAsset(filename) {
|
|
40
|
-
|
|
42
|
+
if (this.#assets.includes(filename) === false) {
|
|
43
|
+
throw new FileNotFound(filename);
|
|
44
|
+
}
|
|
45
|
+
return this.#loadFile(filename);
|
|
41
46
|
}
|
|
42
47
|
async getModuleLocation(clientId) {
|
|
43
48
|
return this.#fileManager.getRootLocation();
|
|
@@ -57,7 +62,7 @@ export default class LocalRepository extends Repository {
|
|
|
57
62
|
return ModuleLoader.import(location);
|
|
58
63
|
}
|
|
59
64
|
#validateClientId(clientId) {
|
|
60
|
-
if (
|
|
65
|
+
if (ClientId.validate(clientId) === false) {
|
|
61
66
|
throw new InvalidClientId(clientId);
|
|
62
67
|
}
|
|
63
68
|
if (this.#clients.has(clientId) === false) {
|
|
@@ -75,12 +80,15 @@ export default class LocalRepository extends Repository {
|
|
|
75
80
|
if (isSegmented) {
|
|
76
81
|
filename = filename.replace('.js', '.local.js');
|
|
77
82
|
}
|
|
78
|
-
const file = await this
|
|
83
|
+
const file = await this.#loadFile(filename);
|
|
79
84
|
const code = file.content.toString();
|
|
80
85
|
return new File(filename, 'application/javascript', code);
|
|
81
86
|
}
|
|
82
87
|
async #getRemoteModule(filename) {
|
|
83
88
|
const remoteFilename = filename.replace('.js', '.remote.js');
|
|
84
|
-
return this
|
|
89
|
+
return this.#loadFile(remoteFilename);
|
|
90
|
+
}
|
|
91
|
+
async #loadFile(filename) {
|
|
92
|
+
return this.#fileManager.load(filename);
|
|
85
93
|
}
|
|
86
94
|
}
|
|
@@ -175,12 +175,12 @@ export default class CacheBuilder {
|
|
|
175
175
|
return `${importCode}\n\n${modelCode}`;
|
|
176
176
|
}
|
|
177
177
|
#createSegmentImportCode(segment) {
|
|
178
|
-
|
|
178
|
+
const codes = [];
|
|
179
179
|
for (const module of segment.modules) {
|
|
180
180
|
const relativeLocation = this.#sourceManager.getRelativeLocation(module.filename);
|
|
181
181
|
const imports = [];
|
|
182
182
|
for (const [importKey, implementation] of module.implementations) {
|
|
183
|
-
imports.push(`${importKey} as
|
|
183
|
+
imports.push(`${importKey} as $${implementation.id}`);
|
|
184
184
|
}
|
|
185
185
|
codes.push(`import { ${imports.join(',')} } from "./${relativeLocation}";`);
|
|
186
186
|
}
|
|
@@ -191,7 +191,7 @@ export default class CacheBuilder {
|
|
|
191
191
|
for (const procedure of segment.procedures.values()) {
|
|
192
192
|
const implementationCode = [];
|
|
193
193
|
for (const implementation of procedure.implementations) {
|
|
194
|
-
implementationCode.push(`{ access: "${implementation.access}", version: "${implementation.version}", executable:
|
|
194
|
+
implementationCode.push(`{ access: "${implementation.access}", version: "${implementation.version}", executable: $${implementation.id} }`);
|
|
195
195
|
}
|
|
196
196
|
procedureCode.push(`{ module: "${procedure.module}", name: "${procedure.name}", implementations: [\n\t\t${implementationCode.join(',\n\t\t')}\n\t]}`);
|
|
197
197
|
}
|
|
@@ -2,6 +2,7 @@ import ReflectionHelper from '../../core/reflection/ReflectionHelper.js';
|
|
|
2
2
|
import ModuleLoader from '../utils/ModuleLoader.js';
|
|
3
3
|
import ClassNotFound from './errors/ClassNotFound.js';
|
|
4
4
|
import InvalidClass from './errors/InvalidClass.js';
|
|
5
|
+
import InvalidPropertyType from './errors/InvalidPropertyType.js';
|
|
5
6
|
import ValueSerializer from './ValueSerializer.js';
|
|
6
7
|
class ClassSerializer {
|
|
7
8
|
serialize(object) {
|
|
@@ -30,6 +31,7 @@ class ClassSerializer {
|
|
|
30
31
|
return { serialized: true, name: name, source: source, args: args, fields: fields };
|
|
31
32
|
}
|
|
32
33
|
async deserialize(object) {
|
|
34
|
+
this.#validateSerializedClass(object);
|
|
33
35
|
const clazz = await this.#loadClass(object.source, object.name);
|
|
34
36
|
if (clazz === undefined) {
|
|
35
37
|
throw new ClassNotFound(object.name);
|
|
@@ -45,6 +47,20 @@ class ClassSerializer {
|
|
|
45
47
|
}
|
|
46
48
|
return instance;
|
|
47
49
|
}
|
|
50
|
+
#validateSerializedClass(object) {
|
|
51
|
+
if (typeof object.name !== 'string') {
|
|
52
|
+
throw new InvalidPropertyType('class', 'name', 'string');
|
|
53
|
+
}
|
|
54
|
+
if (object.source !== null && typeof object.source !== 'string') {
|
|
55
|
+
throw new InvalidPropertyType(`class '${object.name}'`, 'source', 'string | null');
|
|
56
|
+
}
|
|
57
|
+
if ((object.args instanceof Array) === false) {
|
|
58
|
+
throw new InvalidPropertyType(`class '${object.name}'`, 'args', 'Array');
|
|
59
|
+
}
|
|
60
|
+
if ((object.fields instanceof Object) === false) {
|
|
61
|
+
throw new InvalidPropertyType(`class '${object.name}'`, 'fields', 'Object');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
48
64
|
async #loadClass(source, name) {
|
|
49
65
|
if (source === null) {
|
|
50
66
|
const system = typeof window !== 'undefined' ? window : global;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Serializer from './interfaces/Serializer.js';
|
|
2
2
|
import SerializedMap from './types/SerializedMap.js';
|
|
3
3
|
declare class MapSerializer implements Serializer {
|
|
4
|
+
#private;
|
|
4
5
|
serialize(map: Map<unknown, unknown>): SerializedMap;
|
|
5
6
|
deserialize(object: SerializedMap): Promise<Map<unknown, unknown>>;
|
|
6
7
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import InvalidPropertyType from './errors/InvalidPropertyType.js';
|
|
1
2
|
import ValueSerializer from './ValueSerializer.js';
|
|
2
3
|
class MapSerializer {
|
|
3
4
|
serialize(map) {
|
|
@@ -10,6 +11,7 @@ class MapSerializer {
|
|
|
10
11
|
return { serialized: true, name: 'Map', entries: { keys: keys, values: values } };
|
|
11
12
|
}
|
|
12
13
|
async deserialize(object) {
|
|
14
|
+
this.#validateSerializedMap(object);
|
|
13
15
|
const keys = object.entries.keys;
|
|
14
16
|
const values = object.entries.values;
|
|
15
17
|
const result = new Map();
|
|
@@ -20,6 +22,14 @@ class MapSerializer {
|
|
|
20
22
|
}
|
|
21
23
|
return result;
|
|
22
24
|
}
|
|
25
|
+
#validateSerializedMap(object) {
|
|
26
|
+
if ((object.entries?.keys instanceof Array) === false) {
|
|
27
|
+
throw new InvalidPropertyType('map', 'entries.keys', 'Array');
|
|
28
|
+
}
|
|
29
|
+
if ((object.entries?.values instanceof Array) === false) {
|
|
30
|
+
throw new InvalidPropertyType('map', 'entries.values', 'Array');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
23
33
|
}
|
|
24
34
|
const instance = new MapSerializer();
|
|
25
35
|
export default instance;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Serializer from './interfaces/Serializer.js';
|
|
2
2
|
import SerializedSet from './types/SerializedSet.js';
|
|
3
3
|
declare class SetSerializer implements Serializer {
|
|
4
|
+
#private;
|
|
4
5
|
serialize(set: Set<unknown>): SerializedSet;
|
|
5
6
|
deserialize(object: SerializedSet): Promise<Set<unknown>>;
|
|
6
7
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import InvalidPropertyType from './errors/InvalidPropertyType.js';
|
|
1
2
|
import ValueSerializer from './ValueSerializer.js';
|
|
2
3
|
class SetSerializer {
|
|
3
4
|
serialize(set) {
|
|
@@ -8,9 +9,15 @@ class SetSerializer {
|
|
|
8
9
|
return { serialized: true, name: 'Set', values: values };
|
|
9
10
|
}
|
|
10
11
|
async deserialize(object) {
|
|
12
|
+
this.#validateSerializedSet(object);
|
|
11
13
|
const values = await Promise.all(object.values.map(async (value) => await ValueSerializer.deserialize(value)));
|
|
12
14
|
return new Set([...values]);
|
|
13
15
|
}
|
|
16
|
+
#validateSerializedSet(object) {
|
|
17
|
+
if ((object.values instanceof Array) === false) {
|
|
18
|
+
throw new InvalidPropertyType('set', 'values', 'Array');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
14
21
|
}
|
|
15
22
|
const instance = new SetSerializer();
|
|
16
23
|
export default instance;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export default class InvalidPropertyType extends Error {
|
|
2
|
+
constructor(typeName, propertyName, expectedType) {
|
|
3
|
+
super(`The ${typeName} property '${propertyName}' has an invalid type (expected '${expectedType}')`);
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
InvalidPropertyType.source = '/jitar/runtime/serialization/errors/InvalidPropertyType.js';
|
|
@@ -7,11 +7,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
|
-
import { IsOptional, IsString } from 'class-validator';
|
|
10
|
+
import { IsArray, IsOptional, IsString } from 'class-validator';
|
|
11
11
|
export default class RepositoryConfiguration {
|
|
12
12
|
source;
|
|
13
13
|
cache;
|
|
14
14
|
index;
|
|
15
|
+
assets;
|
|
15
16
|
}
|
|
16
17
|
__decorate([
|
|
17
18
|
IsString(),
|
|
@@ -28,3 +29,8 @@ __decorate([
|
|
|
28
29
|
IsOptional(),
|
|
29
30
|
__metadata("design:type", String)
|
|
30
31
|
], RepositoryConfiguration.prototype, "index", void 0);
|
|
32
|
+
__decorate([
|
|
33
|
+
IsArray(),
|
|
34
|
+
IsOptional(),
|
|
35
|
+
__metadata("design:type", Array)
|
|
36
|
+
], RepositoryConfiguration.prototype, "assets", void 0);
|
|
@@ -13,6 +13,7 @@ export default class StandaloneConfiguration {
|
|
|
13
13
|
cache;
|
|
14
14
|
index;
|
|
15
15
|
segments;
|
|
16
|
+
assets;
|
|
16
17
|
}
|
|
17
18
|
__decorate([
|
|
18
19
|
IsString(),
|
|
@@ -34,3 +35,8 @@ __decorate([
|
|
|
34
35
|
IsOptional(),
|
|
35
36
|
__metadata("design:type", Array)
|
|
36
37
|
], StandaloneConfiguration.prototype, "segments", void 0);
|
|
38
|
+
__decorate([
|
|
39
|
+
IsArray(),
|
|
40
|
+
IsOptional(),
|
|
41
|
+
__metadata("design:type", Array)
|
|
42
|
+
], StandaloneConfiguration.prototype, "assets", void 0);
|
|
@@ -9,6 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
import { Controller, Get, Post } from '@overnightjs/core';
|
|
11
11
|
import { Logger } from 'tslog';
|
|
12
|
+
import ClientId from '../../runtime/ClientId.js';
|
|
12
13
|
import ValueSerializer from '../../runtime/serialization/ValueSerializer.js';
|
|
13
14
|
let ModulesController = class ModulesController {
|
|
14
15
|
#repository;
|
|
@@ -18,6 +19,8 @@ let ModulesController = class ModulesController {
|
|
|
18
19
|
this.#logger = logger;
|
|
19
20
|
}
|
|
20
21
|
async registerClient(request, response) {
|
|
22
|
+
if ((request.body instanceof Array) === false) {
|
|
23
|
+
}
|
|
21
24
|
const segmentFiles = request.body;
|
|
22
25
|
const clientId = await this.#repository.registerClient(segmentFiles);
|
|
23
26
|
this.#logger.info(`Registered client -> ${clientId} [${segmentFiles.join(',')}]`);
|
|
@@ -25,6 +28,9 @@ let ModulesController = class ModulesController {
|
|
|
25
28
|
}
|
|
26
29
|
async getModule(request, response) {
|
|
27
30
|
const clientId = request.params.clientId;
|
|
31
|
+
if (typeof clientId !== 'string' || ClientId.validate(clientId) === false) {
|
|
32
|
+
return response.status(400).send('Invalid client id.');
|
|
33
|
+
}
|
|
28
34
|
const pathKey = `/${clientId}/`;
|
|
29
35
|
const pathIndex = request.path.indexOf(pathKey) + pathKey.length;
|
|
30
36
|
const filename = request.path.substring(pathIndex);
|
|
@@ -51,23 +51,31 @@ export default class LocalFileManager {
|
|
|
51
51
|
return fs.remove(location);
|
|
52
52
|
}
|
|
53
53
|
async getModuleFileNames() {
|
|
54
|
-
|
|
55
|
-
const filenames = await glob(`${location}/**/*.js`);
|
|
56
|
-
return filenames;
|
|
54
|
+
return this.#filterFiles('**/*.js');
|
|
57
55
|
}
|
|
58
56
|
async getSegmentFiles() {
|
|
59
|
-
|
|
60
|
-
const filenames = await glob(`${location}/**/*.segment.json`);
|
|
61
|
-
return filenames;
|
|
57
|
+
return this.#filterFiles('**/*.segment.json');
|
|
62
58
|
}
|
|
63
59
|
async getNodeSegmentFiles() {
|
|
64
|
-
|
|
65
|
-
const filenames = await glob(`${location}/**/*.segment.local.js`);
|
|
66
|
-
return filenames;
|
|
60
|
+
return this.#filterFiles('**/*.segment.local.js');
|
|
67
61
|
}
|
|
68
62
|
async getRepositorySegmentFiles() {
|
|
63
|
+
return this.#filterFiles('**/*.segment.repository.js');
|
|
64
|
+
}
|
|
65
|
+
async getAssetFiles(patterns) {
|
|
66
|
+
const promises = patterns.map(pattern => this.#filterFiles(pattern));
|
|
67
|
+
const assetFiles = (await Promise.all(promises)).flat();
|
|
68
|
+
return assetFiles
|
|
69
|
+
.map(filename => this.getRelativeLocation(filename))
|
|
70
|
+
.filter(filename => this.#isGeneratedFile(filename) === false);
|
|
71
|
+
}
|
|
72
|
+
async #filterFiles(pattern) {
|
|
69
73
|
const location = this.getAbsoluteLocation('./');
|
|
70
|
-
|
|
71
|
-
|
|
74
|
+
return await glob(`${location}/${pattern}`);
|
|
75
|
+
}
|
|
76
|
+
#isGeneratedFile(filename) {
|
|
77
|
+
return filename.endsWith('.local.js')
|
|
78
|
+
|| filename.endsWith('.repository.js')
|
|
79
|
+
|| filename.endsWith('.remote.js');
|
|
72
80
|
}
|
|
73
81
|
}
|
|
@@ -29,19 +29,21 @@ export default class RuntimeConfigurator {
|
|
|
29
29
|
static async #configureStandAlone(url, configuration) {
|
|
30
30
|
const sourceLocation = configuration.source ?? RuntimeDefaults.SOURCE;
|
|
31
31
|
const cacheLocation = configuration.cache ?? RuntimeDefaults.CACHE;
|
|
32
|
+
const assetFilePatterns = configuration.assets;
|
|
32
33
|
await this.#buildCache(sourceLocation, cacheLocation);
|
|
33
34
|
const segmentNames = configuration.segments === undefined
|
|
34
35
|
? await this.#getSegmentNames(cacheLocation)
|
|
35
36
|
: configuration.segments;
|
|
36
|
-
const repository = await this.#buildRepository(url, cacheLocation);
|
|
37
|
+
const repository = await this.#buildRepository(url, cacheLocation, assetFilePatterns);
|
|
37
38
|
const node = await this.#buildNode(url, segmentNames, repository);
|
|
38
39
|
return this.#buildProxy(url, repository, node);
|
|
39
40
|
}
|
|
40
41
|
static async #configureRepository(url, configuration) {
|
|
41
42
|
const sourceLocation = configuration.source ?? RuntimeDefaults.SOURCE;
|
|
42
43
|
const cacheLocation = configuration.cache ?? RuntimeDefaults.CACHE;
|
|
44
|
+
const assetFilePatterns = configuration.assets ?? [];
|
|
43
45
|
await this.#buildCache(sourceLocation, cacheLocation);
|
|
44
|
-
return this.#buildRepository(url, cacheLocation);
|
|
46
|
+
return this.#buildRepository(url, cacheLocation, assetFilePatterns);
|
|
45
47
|
}
|
|
46
48
|
static async #configureGateway(url, configuration) {
|
|
47
49
|
return this.#buildGateway(url, configuration.monitor);
|
|
@@ -95,9 +97,12 @@ export default class RuntimeConfigurator {
|
|
|
95
97
|
const endIndex = name.indexOf('.segment');
|
|
96
98
|
return name.substring(0, endIndex);
|
|
97
99
|
}
|
|
98
|
-
static async #buildRepository(url, cacheLocation) {
|
|
100
|
+
static async #buildRepository(url, cacheLocation, assetFilePatterns) {
|
|
99
101
|
const fileManager = new LocalFileManager(cacheLocation);
|
|
100
|
-
const
|
|
102
|
+
const assetFiles = assetFilePatterns !== undefined
|
|
103
|
+
? await fileManager.getAssetFiles(assetFilePatterns)
|
|
104
|
+
: [];
|
|
105
|
+
const repository = new LocalRepository(fileManager, assetFiles, url);
|
|
101
106
|
const segmentFilenames = await fileManager.getRepositorySegmentFiles();
|
|
102
107
|
const segmentNames = segmentFilenames.map(filename => this.#extractSegmentName(filename));
|
|
103
108
|
for (const name of segmentNames) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jitar",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"description": "Distributed runtime for JavaScript and TypeScript to chop monolithic applications into micros.",
|
|
4
5
|
"author": "Masking Technology <info@masking.tech> (https://jitar.dev)",
|
|
5
6
|
"license": "MIT",
|
|
6
7
|
"type": "module",
|
|
@@ -30,7 +31,7 @@
|
|
|
30
31
|
"glob-promise": "^5.0.0",
|
|
31
32
|
"mime-types": "^2.1.35",
|
|
32
33
|
"tslog": "^3.3.3",
|
|
33
|
-
"yargs": "^17.
|
|
34
|
+
"yargs": "^17.6.0"
|
|
34
35
|
},
|
|
35
36
|
"devDependencies": {
|
|
36
37
|
"@types/express": "^4.17.13",
|
|
@@ -38,11 +39,32 @@
|
|
|
38
39
|
"@types/fs-extra": "^9.0.13",
|
|
39
40
|
"@types/jest": "^28.1.3",
|
|
40
41
|
"@types/mime-types": "^2.1.1",
|
|
41
|
-
"@types/yargs": "^17.0.
|
|
42
|
+
"@types/yargs": "^17.0.13",
|
|
42
43
|
"@typescript-eslint/eslint-plugin": "^5.29.0",
|
|
43
44
|
"@typescript-eslint/parser": "^5.29.0",
|
|
44
45
|
"eslint": "^8.18.0",
|
|
45
46
|
"jest": "^28.1.3",
|
|
46
47
|
"ts-jest": "^28.0.8"
|
|
47
|
-
}
|
|
48
|
+
},
|
|
49
|
+
"engines": {
|
|
50
|
+
"node": ">=18.7"
|
|
51
|
+
},
|
|
52
|
+
"repository": {
|
|
53
|
+
"type": "git",
|
|
54
|
+
"url": "https://github.com/MaskingTechnology/jitar"
|
|
55
|
+
},
|
|
56
|
+
"bugs": {
|
|
57
|
+
"url": "https://github.com/MaskingTechnology/jitar/issues"
|
|
58
|
+
},
|
|
59
|
+
"homepage": "https://jitar.dev",
|
|
60
|
+
"keywords": [
|
|
61
|
+
"distributed",
|
|
62
|
+
"runtime",
|
|
63
|
+
"javascript",
|
|
64
|
+
"typescript",
|
|
65
|
+
"microservices",
|
|
66
|
+
"monolith",
|
|
67
|
+
"full stack",
|
|
68
|
+
"web applications"
|
|
69
|
+
]
|
|
48
70
|
}
|
package/.eslintignore
DELETED
package/.eslintrc
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"root": true,
|
|
3
|
-
"parser": "@typescript-eslint/parser",
|
|
4
|
-
"plugins": [
|
|
5
|
-
"@typescript-eslint"
|
|
6
|
-
],
|
|
7
|
-
"extends": [
|
|
8
|
-
"eslint:recommended",
|
|
9
|
-
"plugin:@typescript-eslint/eslint-recommended",
|
|
10
|
-
"plugin:@typescript-eslint/recommended"
|
|
11
|
-
],
|
|
12
|
-
"rules":
|
|
13
|
-
{
|
|
14
|
-
"@typescript-eslint/ban-types": "off"
|
|
15
|
-
}
|
|
16
|
-
}
|