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,53 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import MissingParameterValue from './errors/MissingParameterValue.js';
|
|
3
|
-
import ReflectionParameter from './reflection/models/ReflectionParameter.js';
|
|
4
|
-
import * as AccessLevel from './definitions/AccessLevel.js';
|
|
5
|
-
import Version from './Version.js';
|
|
6
|
-
|
|
7
|
-
export default class Implementation
|
|
8
|
-
{
|
|
9
|
-
#version: Version;
|
|
10
|
-
#access: string;
|
|
11
|
-
#parameters: ReflectionParameter[];
|
|
12
|
-
#executable: Function;
|
|
13
|
-
|
|
14
|
-
constructor(version: Version, access: string, parameters: ReflectionParameter[], executable: Function)
|
|
15
|
-
{
|
|
16
|
-
this.#version = version;
|
|
17
|
-
this.#access = access;
|
|
18
|
-
this.#parameters = parameters;
|
|
19
|
-
this.#executable = executable;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
get version() { return this.#version; }
|
|
23
|
-
|
|
24
|
-
get public() { return this.#access === AccessLevel.PUBLIC; }
|
|
25
|
-
|
|
26
|
-
get parameters() { return this.#parameters; }
|
|
27
|
-
|
|
28
|
-
async run(args: Map<string, unknown>): Promise<unknown>
|
|
29
|
-
{
|
|
30
|
-
const values = this.#extractParameterValues(args);
|
|
31
|
-
|
|
32
|
-
return await this.#executable.call(this.#executable, ...values);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
#extractParameterValues(parameters: Map<string, unknown>): unknown[]
|
|
36
|
-
{
|
|
37
|
-
const values: unknown[] = [];
|
|
38
|
-
|
|
39
|
-
for (const parameter of this.#parameters)
|
|
40
|
-
{
|
|
41
|
-
const value = parameters.get(parameter.name);
|
|
42
|
-
|
|
43
|
-
if (value === undefined && parameter.isOptional === false)
|
|
44
|
-
{
|
|
45
|
-
throw new MissingParameterValue(parameter.name);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
values.push(value);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return values;
|
|
52
|
-
}
|
|
53
|
-
}
|
package/src/core/Procedure.ts
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import ImplementationNotFound from './errors/ImplementationNotFound.js';
|
|
3
|
-
import Implementation from './Implementation.js';
|
|
4
|
-
import FqnBuilder from './utils/FqnBuilder.js';
|
|
5
|
-
import Version from './Version.js';
|
|
6
|
-
|
|
7
|
-
export default class Procedure
|
|
8
|
-
{
|
|
9
|
-
#module: string;
|
|
10
|
-
#name: string;
|
|
11
|
-
#fqn: string;
|
|
12
|
-
#implementations: Map<Version, Implementation> = new Map();
|
|
13
|
-
#latestImplementation?: Implementation;
|
|
14
|
-
|
|
15
|
-
constructor(module: string, name: string)
|
|
16
|
-
{
|
|
17
|
-
this.#module = module;
|
|
18
|
-
this.#name = name;
|
|
19
|
-
|
|
20
|
-
this.#fqn = FqnBuilder.build(module, name);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
get module() { return this.#module; }
|
|
24
|
-
|
|
25
|
-
get name() { return this.#name; }
|
|
26
|
-
|
|
27
|
-
get fqn() { return this.#fqn; }
|
|
28
|
-
|
|
29
|
-
get public()
|
|
30
|
-
{
|
|
31
|
-
// If at least one implementation is public, the procedure is public
|
|
32
|
-
// Public procedures can be called from outside the segment
|
|
33
|
-
|
|
34
|
-
const implementations = [...this.#implementations.values()];
|
|
35
|
-
|
|
36
|
-
return implementations.some(implementation => implementation.public);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
addImplementation(implementation: Implementation): void
|
|
40
|
-
{
|
|
41
|
-
this.#implementations.set(implementation.version, implementation);
|
|
42
|
-
|
|
43
|
-
if (this.#isNewLatestImplementation(implementation))
|
|
44
|
-
{
|
|
45
|
-
this.#latestImplementation = implementation;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
#isNewLatestImplementation(implementation: Implementation): boolean
|
|
50
|
-
{
|
|
51
|
-
return this.#latestImplementation === undefined
|
|
52
|
-
|| implementation.version.greater(this.#latestImplementation.version);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
getImplementation(version: Version): Implementation | undefined
|
|
56
|
-
{
|
|
57
|
-
const selectedVersion = this.#selectAvailableVersion(version);
|
|
58
|
-
|
|
59
|
-
return this.#implementations.get(selectedVersion);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
#selectAvailableVersion(version: Version): Version
|
|
63
|
-
{
|
|
64
|
-
let selectedVersion = Version.DEFAULT;
|
|
65
|
-
|
|
66
|
-
for (const implementationVersion of this.#implementations.keys())
|
|
67
|
-
{
|
|
68
|
-
if (implementationVersion.equals(version))
|
|
69
|
-
{
|
|
70
|
-
return implementationVersion;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
if (implementationVersion.greater(version))
|
|
74
|
-
{
|
|
75
|
-
continue;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
if (selectedVersion.less(implementationVersion))
|
|
79
|
-
{
|
|
80
|
-
selectedVersion = implementationVersion;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return selectedVersion;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
async run(version: Version, args: Map<string, unknown>): Promise<unknown>
|
|
88
|
-
{
|
|
89
|
-
const implementation = this.getImplementation(version);
|
|
90
|
-
|
|
91
|
-
if (implementation === undefined)
|
|
92
|
-
{
|
|
93
|
-
throw new ImplementationNotFound(this.fqn, version.toString());
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
return implementation.run(args);
|
|
97
|
-
}
|
|
98
|
-
}
|
package/src/core/Segment.ts
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import ErrorManager from './ErrorManager.js';
|
|
3
|
-
import ProcedureNotFound from './errors/ProcedureNotFound.js';
|
|
4
|
-
import Runner from './interfaces/Runner.js';
|
|
5
|
-
import Procedure from './Procedure.js';
|
|
6
|
-
import Version from './Version.js';
|
|
7
|
-
|
|
8
|
-
export default class Segment implements Runner
|
|
9
|
-
{
|
|
10
|
-
#id: string;
|
|
11
|
-
#procedures: Map<string, Procedure> = new Map();
|
|
12
|
-
|
|
13
|
-
constructor(id: string)
|
|
14
|
-
{
|
|
15
|
-
this.#id = id;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
get id() { return this.#id; }
|
|
19
|
-
|
|
20
|
-
addProcedure(procedure: Procedure): void
|
|
21
|
-
{
|
|
22
|
-
this.#procedures.set(procedure.fqn, procedure);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
hasProcedure(fqn: string): boolean
|
|
26
|
-
{
|
|
27
|
-
const procedure = this.getProcedure(fqn);
|
|
28
|
-
|
|
29
|
-
return procedure !== undefined;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
getProcedure(fqn: string): Procedure | undefined
|
|
33
|
-
{
|
|
34
|
-
return this.#procedures.get(fqn);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
getPublicProcedures()
|
|
38
|
-
{
|
|
39
|
-
const procedures = [...this.#procedures.values()];
|
|
40
|
-
|
|
41
|
-
return procedures.filter(procedure => procedure.public);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
async run(fqn: string, version: Version, args: Map<string, unknown>): Promise<unknown>
|
|
45
|
-
{
|
|
46
|
-
const procedure = this.getProcedure(fqn);
|
|
47
|
-
|
|
48
|
-
if (procedure === undefined)
|
|
49
|
-
{
|
|
50
|
-
throw new ProcedureNotFound(fqn);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
try
|
|
54
|
-
{
|
|
55
|
-
return await procedure.run(version, args);
|
|
56
|
-
}
|
|
57
|
-
catch (error: unknown)
|
|
58
|
-
{
|
|
59
|
-
throw ErrorManager.handle(error, fqn, version.toString());
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import SegmentModule from './types/SegmentModule.js';
|
|
3
|
-
import SegmentProcedure from './types/SegmentProcedure.js';
|
|
4
|
-
import SegmentImplementation from './types/SegmentImplementation.js';
|
|
5
|
-
|
|
6
|
-
import ReflectionHelper from './reflection/ReflectionHelper.js';
|
|
7
|
-
|
|
8
|
-
import Implementation from './Implementation.js';
|
|
9
|
-
import Procedure from './Procedure.js';
|
|
10
|
-
import Segment from './Segment.js';
|
|
11
|
-
import Version from './Version.js';
|
|
12
|
-
|
|
13
|
-
export default class SegmentBuilder
|
|
14
|
-
{
|
|
15
|
-
static build(id: string, module: SegmentModule): Segment
|
|
16
|
-
{
|
|
17
|
-
const segment = new Segment(id);
|
|
18
|
-
|
|
19
|
-
for (const definition of module.procedures)
|
|
20
|
-
{
|
|
21
|
-
const procedure = this.#buildProcedure(definition);
|
|
22
|
-
|
|
23
|
-
segment.addProcedure(procedure);
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
return segment;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
static #buildProcedure(definition: SegmentProcedure): Procedure
|
|
30
|
-
{
|
|
31
|
-
const module = definition.module;
|
|
32
|
-
const name = definition.name;
|
|
33
|
-
|
|
34
|
-
const procedure = new Procedure(module, name);
|
|
35
|
-
|
|
36
|
-
for (const implementationDefinition of definition.implementations)
|
|
37
|
-
{
|
|
38
|
-
const implementation = this.#buildImplementation(implementationDefinition);
|
|
39
|
-
|
|
40
|
-
procedure.addImplementation(implementation);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return procedure;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
static #buildImplementation(definition: SegmentImplementation): Implementation
|
|
47
|
-
{
|
|
48
|
-
const version = Version.parse(definition.version);
|
|
49
|
-
const access = definition.access;
|
|
50
|
-
const executable = definition.executable;
|
|
51
|
-
const parameters = ReflectionHelper.getFunctionParameters(executable);
|
|
52
|
-
|
|
53
|
-
return new Implementation(version, access, parameters, executable);
|
|
54
|
-
}
|
|
55
|
-
}
|
package/src/core/Version.ts
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import InvalidVersionNumber from './errors/InvalidVersionNumber.js';
|
|
3
|
-
|
|
4
|
-
export default class Version
|
|
5
|
-
{
|
|
6
|
-
static get DEFAULT(): Version { return new Version(0, 0, 0); }
|
|
7
|
-
|
|
8
|
-
#major: number;
|
|
9
|
-
#minor: number;
|
|
10
|
-
#patch: number;
|
|
11
|
-
|
|
12
|
-
constructor(major = 0, minor = 0, patch = 0)
|
|
13
|
-
{
|
|
14
|
-
this.#major = major;
|
|
15
|
-
this.#minor = minor;
|
|
16
|
-
this.#patch = patch;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
get major() { return this.#major; }
|
|
20
|
-
|
|
21
|
-
get minor() { return this.#minor; }
|
|
22
|
-
|
|
23
|
-
get patch() { return this.#patch; }
|
|
24
|
-
|
|
25
|
-
equals(version: Version): boolean
|
|
26
|
-
{
|
|
27
|
-
return this.#major === version.major
|
|
28
|
-
&& this.#minor === version.minor
|
|
29
|
-
&& this.#patch === version.patch;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
greater(version: Version): boolean
|
|
33
|
-
{
|
|
34
|
-
if (this.#major !== version.major) return this.#major > version.major;
|
|
35
|
-
if (this.#minor !== version.minor) return this.#minor > version.minor;
|
|
36
|
-
if (this.#patch !== version.patch) return this.#patch > version.patch;
|
|
37
|
-
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
less(version: Version): boolean
|
|
42
|
-
{
|
|
43
|
-
if (this.#major !== version.major) return this.#major < version.major;
|
|
44
|
-
if (this.#minor !== version.minor) return this.#minor < version.minor;
|
|
45
|
-
if (this.#patch !== version.patch) return this.#patch < version.patch;
|
|
46
|
-
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
toString(): string
|
|
51
|
-
{
|
|
52
|
-
return `${this.#major}.${this.#minor}.${this.#patch}`;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
static parse(number: string): Version
|
|
56
|
-
{
|
|
57
|
-
const parts = number.split('.');
|
|
58
|
-
|
|
59
|
-
switch (parts.length)
|
|
60
|
-
{
|
|
61
|
-
case 1: return new Version(Number.parseInt(parts[0]));
|
|
62
|
-
case 2: return new Version(Number.parseInt(parts[0]), Number.parseInt(parts[1]));
|
|
63
|
-
case 3: return new Version(Number.parseInt(parts[0]), Number.parseInt(parts[1]), Number.parseInt(parts[2]));
|
|
64
|
-
|
|
65
|
-
default: throw new InvalidVersionNumber(number);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Component from '../types/Component.js';
|
|
3
|
-
|
|
4
|
-
export default class ImplementationNotFound extends Error
|
|
5
|
-
{
|
|
6
|
-
constructor(fqn: string, version: string)
|
|
7
|
-
{
|
|
8
|
-
super(`No implementation found for procedure '${fqn}' with version '${version}'`);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
(ImplementationNotFound as Component).source = '/jitar/core/errors/ImplementationNotFound.js';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Component from '../types/Component.js';
|
|
3
|
-
|
|
4
|
-
export default class InvalidVersionNumber extends Error
|
|
5
|
-
{
|
|
6
|
-
constructor(number: string)
|
|
7
|
-
{
|
|
8
|
-
super(`Invalid version number '${number}'`);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
(InvalidVersionNumber as Component).source = '/jitar/core/errors/InvalidVersionNumber.js';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Component from '../types/Component.js';
|
|
3
|
-
|
|
4
|
-
export default class MissingParameterValue extends Error
|
|
5
|
-
{
|
|
6
|
-
constructor(parameterName: string)
|
|
7
|
-
{
|
|
8
|
-
super(`Missing value for parameter '${parameterName}'`);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
(MissingParameterValue as Component).source = '/jitar/core/errors/MissingParameterValue.js';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Component from '../types/Component.js';
|
|
3
|
-
|
|
4
|
-
export default class ProcedureNotFound extends Error
|
|
5
|
-
{
|
|
6
|
-
constructor(fqn: string)
|
|
7
|
-
{
|
|
8
|
-
super(`Procedure '${fqn}' not found`);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
(ProcedureNotFound as Component).source = '/jitar/core/errors/ProcedureNotFound.js';
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import ReflectionParameter from './models/ReflectionParameter.js';
|
|
3
|
-
|
|
4
|
-
const STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
|
|
5
|
-
|
|
6
|
-
export default class ParameterParser
|
|
7
|
-
{
|
|
8
|
-
static parse(code: string, functionIndicator: string): ReflectionParameter[]
|
|
9
|
-
{
|
|
10
|
-
const pureCode = this.#removeComments(code);
|
|
11
|
-
const parameterString = this.#extractParameterString(pureCode, functionIndicator);
|
|
12
|
-
const parameterList = this.#parseParamaterString(parameterString);
|
|
13
|
-
|
|
14
|
-
return parameterList.map(parameter => this.#extractParameter(parameter));
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
static #removeComments(code: string): string
|
|
18
|
-
{
|
|
19
|
-
return code.replace(STRIP_COMMENTS, '');
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
static #extractParameterString(code: string, functionIndicator: string): string
|
|
23
|
-
{
|
|
24
|
-
const indicatorPosition = code.indexOf(functionIndicator);
|
|
25
|
-
|
|
26
|
-
const bodyStart = code.indexOf('{', indicatorPosition);
|
|
27
|
-
const definition = code.substring(indicatorPosition, bodyStart).trim();
|
|
28
|
-
|
|
29
|
-
const startPosition = definition.indexOf('(') + 1;
|
|
30
|
-
const endPosition = definition.lastIndexOf(')', startPosition);
|
|
31
|
-
|
|
32
|
-
return definition.slice(startPosition, endPosition);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
static #parseParamaterString(parameterString: string): string[]
|
|
36
|
-
{
|
|
37
|
-
const parameters: string[] = [];
|
|
38
|
-
|
|
39
|
-
let level = 0;
|
|
40
|
-
let buffer = '';
|
|
41
|
-
|
|
42
|
-
for (let character of parameterString)
|
|
43
|
-
{
|
|
44
|
-
switch (character)
|
|
45
|
-
{
|
|
46
|
-
case '(': level++; break;
|
|
47
|
-
case ')': level--; break;
|
|
48
|
-
case ',':
|
|
49
|
-
if (level === 0)
|
|
50
|
-
{
|
|
51
|
-
parameters.push(buffer);
|
|
52
|
-
character = '';
|
|
53
|
-
buffer = '';
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
buffer += character;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
if (buffer !== '')
|
|
61
|
-
{
|
|
62
|
-
parameters.push(buffer);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return parameters;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
static #extractParameter(parameter: string): ReflectionParameter
|
|
69
|
-
{
|
|
70
|
-
const [name, defaultValue] = parameter.split('=').map(part => part.trim());
|
|
71
|
-
|
|
72
|
-
return new ReflectionParameter(name, defaultValue);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import ReflectionField from './models/ReflectionField.js';
|
|
3
|
-
import ReflectionParameter from './models/ReflectionParameter.js';
|
|
4
|
-
import ParameterParser from './ParameterParser.js';
|
|
5
|
-
|
|
6
|
-
const CONSTRUCTOR_NAME = 'constructor';
|
|
7
|
-
const FUNCTION_NAME = 'function';
|
|
8
|
-
|
|
9
|
-
export default class ReflectionHelper
|
|
10
|
-
{
|
|
11
|
-
static createInstance(clazz: Function, args: unknown[] = []): object
|
|
12
|
-
{
|
|
13
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
14
|
-
return new (clazz as any)(...args);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
static isClassObject(object: object): boolean
|
|
18
|
-
{
|
|
19
|
-
return object.constructor.toString().startsWith('class');
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
static getObjectClass(object: object): Function
|
|
23
|
-
{
|
|
24
|
-
return object.constructor;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
static getParentClass(clazz: Function): Function
|
|
28
|
-
{
|
|
29
|
-
return Object.getPrototypeOf(clazz);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
static getFields(clazz: Function): ReflectionField[]
|
|
33
|
-
{
|
|
34
|
-
const object = this.createInstance(clazz);
|
|
35
|
-
const publicFields = this.#getPublicFields(object);
|
|
36
|
-
const propertyFields = this.#getPropertyFields(clazz);
|
|
37
|
-
|
|
38
|
-
return [...publicFields, ...propertyFields];
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
static getObjectFields(object: object): ReflectionField[]
|
|
42
|
-
{
|
|
43
|
-
const clazz = this.getObjectClass(object);
|
|
44
|
-
const publicFields = this.#getPublicFields(object);
|
|
45
|
-
const propertyFields = this.#getPropertyFields(clazz);
|
|
46
|
-
|
|
47
|
-
return [...publicFields, ...propertyFields];
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
static #getPublicFields(object: object): ReflectionField[]
|
|
51
|
-
{
|
|
52
|
-
const fieldNames = Object.getOwnPropertyNames(object);
|
|
53
|
-
|
|
54
|
-
return fieldNames.map(fieldName => new ReflectionField(fieldName, true, true));
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
static #getPropertyFields(clazz: Function): ReflectionField[]
|
|
58
|
-
{
|
|
59
|
-
const methods = Object.getOwnPropertyDescriptors(clazz.prototype);
|
|
60
|
-
|
|
61
|
-
const fields = [];
|
|
62
|
-
|
|
63
|
-
for (const name in methods)
|
|
64
|
-
{
|
|
65
|
-
const description = methods[name];
|
|
66
|
-
|
|
67
|
-
const hasGetter = description.get !== undefined;
|
|
68
|
-
const hasSetter = description.set !== undefined;
|
|
69
|
-
|
|
70
|
-
if (hasGetter === false && hasSetter === false)
|
|
71
|
-
{
|
|
72
|
-
// This is not a property.
|
|
73
|
-
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
fields.push(new ReflectionField(name, hasGetter, hasSetter));
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
const parentClazz = this.getParentClass(clazz);
|
|
81
|
-
|
|
82
|
-
if (parentClazz.name !== '')
|
|
83
|
-
{
|
|
84
|
-
const parentFields = this.#getPropertyFields(parentClazz);
|
|
85
|
-
|
|
86
|
-
return [...fields, ...parentFields];
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
return fields;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
static getConstructorParameters(clazz: Function): ReflectionParameter[]
|
|
93
|
-
{
|
|
94
|
-
const code = clazz.toString();
|
|
95
|
-
const hasConstructor = code.includes(CONSTRUCTOR_NAME);
|
|
96
|
-
|
|
97
|
-
if (hasConstructor === false)
|
|
98
|
-
{
|
|
99
|
-
const parentClazz = this.getParentClass(clazz);
|
|
100
|
-
|
|
101
|
-
if (parentClazz.name === '')
|
|
102
|
-
{
|
|
103
|
-
return [];
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
return this.getConstructorParameters(parentClazz);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
return ParameterParser.parse(code, CONSTRUCTOR_NAME);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
static getFunctionParameters(funktion: Function): ReflectionParameter[]
|
|
113
|
-
{
|
|
114
|
-
const code = funktion.toString();
|
|
115
|
-
|
|
116
|
-
return ParameterParser.parse(code, FUNCTION_NAME);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
export default class ReflectionField
|
|
3
|
-
{
|
|
4
|
-
#name: string;
|
|
5
|
-
#canGet: boolean;
|
|
6
|
-
#canSet: boolean;
|
|
7
|
-
|
|
8
|
-
constructor(name: string, canGet: boolean, canSet: boolean)
|
|
9
|
-
{
|
|
10
|
-
this.#name = name;
|
|
11
|
-
this.#canGet = canGet;
|
|
12
|
-
this.#canSet = canSet;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
get name() { return this.#name; }
|
|
16
|
-
|
|
17
|
-
get canGet() { return this.#canGet; }
|
|
18
|
-
|
|
19
|
-
get canSet() { return this.#canSet; }
|
|
20
|
-
|
|
21
|
-
get canGetAndSet() { return this.#canGet && this.#canSet; }
|
|
22
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
export default class ReflectionParameter
|
|
3
|
-
{
|
|
4
|
-
#name: string;
|
|
5
|
-
#defaultValue?: string;
|
|
6
|
-
|
|
7
|
-
constructor(name: string, defaultValue?: string)
|
|
8
|
-
{
|
|
9
|
-
this.#name = name;
|
|
10
|
-
this.#defaultValue = defaultValue;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
get name() { return this.#name; }
|
|
14
|
-
|
|
15
|
-
get defaultValue() { return this.#defaultValue; }
|
|
16
|
-
|
|
17
|
-
get isOptional() { return this.#defaultValue !== undefined; }
|
|
18
|
-
}
|
package/src/core/types/Module.ts
DELETED