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,41 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Component from '../../../core/types/Component.js';
|
|
3
|
-
import FqnBuilder from '../../../core/utils/FqnBuilder.js';
|
|
4
|
-
|
|
5
|
-
let lastId = 0;
|
|
6
|
-
|
|
7
|
-
export default class Implementation
|
|
8
|
-
{
|
|
9
|
-
#id: number;
|
|
10
|
-
#module: string;
|
|
11
|
-
#name: string;
|
|
12
|
-
#fqn: string;
|
|
13
|
-
#access: string;
|
|
14
|
-
#version: string;
|
|
15
|
-
#executable: Component;
|
|
16
|
-
|
|
17
|
-
constructor(module: string, name: string, access: string, version: string, executable: Component)
|
|
18
|
-
{
|
|
19
|
-
this.#id = ++lastId;
|
|
20
|
-
this.#module = module;
|
|
21
|
-
this.#name = name;
|
|
22
|
-
this.#fqn = FqnBuilder.build(module, name);
|
|
23
|
-
this.#access = access;
|
|
24
|
-
this.#version = version;
|
|
25
|
-
this.#executable = executable;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
get id() { return this.#id; }
|
|
29
|
-
|
|
30
|
-
get module() { return this.#module; }
|
|
31
|
-
|
|
32
|
-
get name() { return this.#name; }
|
|
33
|
-
|
|
34
|
-
get fqn() { return this.#fqn; }
|
|
35
|
-
|
|
36
|
-
get access() { return this.#access; }
|
|
37
|
-
|
|
38
|
-
get version() { return this.#version; }
|
|
39
|
-
|
|
40
|
-
get executable() { return this.#executable; }
|
|
41
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Implementation from './Implementation.js';
|
|
3
|
-
|
|
4
|
-
export default class Procedure
|
|
5
|
-
{
|
|
6
|
-
#module: string;
|
|
7
|
-
#name: string;
|
|
8
|
-
#implementations: Implementation[] = [];
|
|
9
|
-
|
|
10
|
-
constructor(module: string, name: string)
|
|
11
|
-
{
|
|
12
|
-
this.#module = module;
|
|
13
|
-
this.#name = name;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
get module() { return this.#module; }
|
|
17
|
-
|
|
18
|
-
get name() { return this.#name; }
|
|
19
|
-
|
|
20
|
-
get implementations() { return this.#implementations; }
|
|
21
|
-
|
|
22
|
-
addImplementation(implementation: Implementation): void
|
|
23
|
-
{
|
|
24
|
-
this.#implementations.push(implementation);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Procedure from './Procedure.js';
|
|
3
|
-
import SegmentModule from './SegmentModule.js';
|
|
4
|
-
|
|
5
|
-
export default class Segment
|
|
6
|
-
{
|
|
7
|
-
#filename: string;
|
|
8
|
-
#modules: SegmentModule[];
|
|
9
|
-
#procedures: Map<string, Procedure>;
|
|
10
|
-
|
|
11
|
-
constructor(filename: string, modules: SegmentModule[], procedures: Map<string, Procedure>)
|
|
12
|
-
{
|
|
13
|
-
this.#filename = filename;
|
|
14
|
-
this.#modules = modules;
|
|
15
|
-
this.#procedures = procedures;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
get filename() { return this.#filename; }
|
|
19
|
-
|
|
20
|
-
get modules() { return this.#modules; }
|
|
21
|
-
|
|
22
|
-
get procedures() { return this.#procedures; }
|
|
23
|
-
|
|
24
|
-
getFilenames()
|
|
25
|
-
{
|
|
26
|
-
return this.#modules.map((module: SegmentModule) => module.filename);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Module from '../../../core/types/Module.js';
|
|
3
|
-
|
|
4
|
-
import Implementation from './Implementation.js';
|
|
5
|
-
|
|
6
|
-
export default class SegmentModule
|
|
7
|
-
{
|
|
8
|
-
#filename: string;
|
|
9
|
-
#exports: Module;
|
|
10
|
-
#implementations: Map<string, Implementation>;
|
|
11
|
-
|
|
12
|
-
constructor(filename: string, exports: Module, implementations: Map<string, Implementation>)
|
|
13
|
-
{
|
|
14
|
-
this.#filename = filename;
|
|
15
|
-
this.#exports = exports;
|
|
16
|
-
this.#implementations = implementations;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
get filename() { return this.#filename; }
|
|
20
|
-
|
|
21
|
-
get exports() { return this.#exports; }
|
|
22
|
-
|
|
23
|
-
get implementations() { return this.#implementations; }
|
|
24
|
-
|
|
25
|
-
getImportKeys() { return [...this.#implementations.keys()]; }
|
|
26
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Component from '../../core/types/Component.js';
|
|
3
|
-
|
|
4
|
-
export default class ClientNotFound extends Error
|
|
5
|
-
{
|
|
6
|
-
constructor(clientId: string)
|
|
7
|
-
{
|
|
8
|
-
super(`Client found for id '${clientId}'`);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
(ClientNotFound as Component).source = '/jitar/runtime/errors/ClientNotFound.js';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Component from '../../core/types/Component.js';
|
|
3
|
-
|
|
4
|
-
export default class FileNotFound extends Error
|
|
5
|
-
{
|
|
6
|
-
constructor(filename: string)
|
|
7
|
-
{
|
|
8
|
-
super(`The file '${filename} could not be found'`);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
(FileNotFound as Component).source = '/jitar/runtime/errors/FileNotFound.js';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Component from '../../core/types/Component.js';
|
|
3
|
-
|
|
4
|
-
export default class InvalidClientId extends Error
|
|
5
|
-
{
|
|
6
|
-
constructor(clientId: string)
|
|
7
|
-
{
|
|
8
|
-
super(`Invalid client id '${clientId}'`);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
(InvalidClientId as Component).source = '/jitar/runtime/errors/InvalidClientId.js';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Component from '../../core/types/Component.js';
|
|
3
|
-
|
|
4
|
-
export default class InvalidJitarHooks extends Error
|
|
5
|
-
{
|
|
6
|
-
constructor()
|
|
7
|
-
{
|
|
8
|
-
super(`Invalid Jitar hooks`);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
(InvalidJitarHooks as Component).source = '/jitar/runtime/errors/InvalidJitarHooks.js';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Component from '../../core/types/Component.js';
|
|
3
|
-
|
|
4
|
-
export default class InvalidSegmentFile extends Error
|
|
5
|
-
{
|
|
6
|
-
constructor(filename: string)
|
|
7
|
-
{
|
|
8
|
-
super(`Missing files array in segment file '${filename}'`);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
(InvalidSegmentFile as Component).source = '/jitar/runtime/errors/InvalidSegmentFile.js';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Component from '../../core/types/Component.js';
|
|
3
|
-
|
|
4
|
-
export default class ModuleNotLoaded extends Error
|
|
5
|
-
{
|
|
6
|
-
constructor(url: string, message?: string)
|
|
7
|
-
{
|
|
8
|
-
super(`Module '${url}' could not be loaded${message !== undefined ? ` | ${message}` : ''}`);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
(ModuleNotLoaded as Component).source = '/jitar/runtime/errors/ModuleNotLoaded.js';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Component from '../../core/types/Component.js';
|
|
3
|
-
|
|
4
|
-
export default class NoNodeAvailable extends Error
|
|
5
|
-
{
|
|
6
|
-
constructor(name: string)
|
|
7
|
-
{
|
|
8
|
-
super(`No node available for procedure '${name}'`);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
(NoNodeAvailable as Component).source = '/jitar/runtime/errors/NoNodeAvailable.js';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Component from '../../core/types/Component.js';
|
|
3
|
-
|
|
4
|
-
export default class RepositoryNotAvailable extends Error
|
|
5
|
-
{
|
|
6
|
-
constructor()
|
|
7
|
-
{
|
|
8
|
-
super(`Repository not available`);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
(RepositoryNotAvailable as Component).source = '/jitar/runtime/errors/RepositoryNotAvailable.js';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Component from '../../core/types/Component.js';
|
|
3
|
-
|
|
4
|
-
export default class RuntimeNotAvailable extends Error
|
|
5
|
-
{
|
|
6
|
-
constructor()
|
|
7
|
-
{
|
|
8
|
-
super(`Runtime not available`);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
(RuntimeNotAvailable as Component).source = '/jitar/runtime/errors/RuntimeNotAvailable.js';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Component from '../../core/types/Component.js';
|
|
3
|
-
|
|
4
|
-
export default class SegmentNotFound extends Error
|
|
5
|
-
{
|
|
6
|
-
constructor(source: string)
|
|
7
|
-
{
|
|
8
|
-
super(`Segment found for '${source}'`);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
(SegmentNotFound as Component).source = '/jitar/runtime/errors/SegmentNotFound.js';
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
// The default loader is used by the local repository
|
|
3
|
-
// and gets overridden by the remote repository
|
|
4
|
-
|
|
5
|
-
import ModuleLoader from '../utils/ModuleLoader.js';
|
|
6
|
-
|
|
7
|
-
let _loader: Function = ModuleLoader.import;
|
|
8
|
-
|
|
9
|
-
export function setDependencyLoader(loader: Function): void
|
|
10
|
-
{
|
|
11
|
-
_loader = loader;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export async function getDependency(name: string): Promise<unknown>
|
|
15
|
-
{
|
|
16
|
-
const module = await _loader(name);
|
|
17
|
-
|
|
18
|
-
return module.default !== undefined ? module.default : module;
|
|
19
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Version from '../../core/Version.js';
|
|
3
|
-
|
|
4
|
-
import RuntimeNotAvailable from '../errors/RuntimeNotAvailable.js';
|
|
5
|
-
import LocalNode from '../LocalNode.js';
|
|
6
|
-
|
|
7
|
-
let _runtime: LocalNode;
|
|
8
|
-
|
|
9
|
-
export function setRuntime(runtime: LocalNode): void
|
|
10
|
-
{
|
|
11
|
-
_runtime = runtime;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export async function runProcedure(fqn: string, versionNumber: string, args: object): Promise<unknown>
|
|
15
|
-
{
|
|
16
|
-
if (_runtime === undefined)
|
|
17
|
-
{
|
|
18
|
-
throw new RuntimeNotAvailable();
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const version = Version.parse(versionNumber);
|
|
22
|
-
const argsMap = new Map<string, unknown>(Object.entries(args));
|
|
23
|
-
|
|
24
|
-
return _runtime.run(fqn, version, argsMap);
|
|
25
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import File from '../models/File.js';
|
|
3
|
-
|
|
4
|
-
export default interface FileManager
|
|
5
|
-
{
|
|
6
|
-
getRootLocation(): string;
|
|
7
|
-
|
|
8
|
-
getAbsoluteLocation(filename: string): string;
|
|
9
|
-
|
|
10
|
-
getRelativeLocation(filename: string): string;
|
|
11
|
-
|
|
12
|
-
getType(filename: string): Promise<string>;
|
|
13
|
-
|
|
14
|
-
getContent(filename: string): Promise<Buffer | string>;
|
|
15
|
-
|
|
16
|
-
load(filename: string): Promise<File>;
|
|
17
|
-
|
|
18
|
-
store(filename: string, content: string): Promise<void>;
|
|
19
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
export default class File
|
|
3
|
-
{
|
|
4
|
-
#location: string;
|
|
5
|
-
#type: string;
|
|
6
|
-
#content: Buffer | string;
|
|
7
|
-
|
|
8
|
-
constructor(location: string, type: string, content: Buffer | string)
|
|
9
|
-
{
|
|
10
|
-
this.#location = location;
|
|
11
|
-
this.#type = type;
|
|
12
|
-
this.#content = content;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
get location() { return this.#location; }
|
|
16
|
-
|
|
17
|
-
get type() { return this.#type; }
|
|
18
|
-
|
|
19
|
-
get content() { return this.#content; }
|
|
20
|
-
|
|
21
|
-
get size() { return this.#content.length; }
|
|
22
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Serializer from './interfaces/Serializer.js';
|
|
3
|
-
import ValueSerializer from './ValueSerializer.js';
|
|
4
|
-
|
|
5
|
-
class ArraySerializer implements Serializer
|
|
6
|
-
{
|
|
7
|
-
serialize(array: unknown[]): unknown[]
|
|
8
|
-
{
|
|
9
|
-
const values: unknown[] = [];
|
|
10
|
-
|
|
11
|
-
for (const value of array)
|
|
12
|
-
{
|
|
13
|
-
values.push(ValueSerializer.serialize(value));
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return values;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
async deserialize(values: unknown[]): Promise<unknown[]>
|
|
20
|
-
{
|
|
21
|
-
return await Promise.all(values.map(async (value) => await ValueSerializer.deserialize(value)));
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const instance = new ArraySerializer();
|
|
26
|
-
|
|
27
|
-
export default instance;
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import ReflectionHelper from '../../core/reflection/ReflectionHelper.js';
|
|
3
|
-
import Component from '../../core/types/Component.js';
|
|
4
|
-
import FlexObject from '../../core/types/FlexObject.js';
|
|
5
|
-
import Module from '../../core/types/Module.js';
|
|
6
|
-
|
|
7
|
-
import ModuleLoader from '../utils/ModuleLoader.js';
|
|
8
|
-
import ClassNotFound from './errors/ClassNotFound.js';
|
|
9
|
-
import InvalidClass from './errors/InvalidClass.js';
|
|
10
|
-
|
|
11
|
-
import Serializer from './interfaces/Serializer.js';
|
|
12
|
-
import SerializableObject from './types/SerializableObject.js';
|
|
13
|
-
import SerializedClass from './types/SerializedClass.js';
|
|
14
|
-
import ValueSerializer from './ValueSerializer.js';
|
|
15
|
-
|
|
16
|
-
class ClassSerializer implements Serializer
|
|
17
|
-
{
|
|
18
|
-
serialize(object: SerializableObject): SerializedClass
|
|
19
|
-
{
|
|
20
|
-
const clazz = ReflectionHelper.getObjectClass(object);
|
|
21
|
-
const classFields = ReflectionHelper.getObjectFields(object);
|
|
22
|
-
const constructParameters = ReflectionHelper.getConstructorParameters(clazz);
|
|
23
|
-
|
|
24
|
-
const name = clazz.name;
|
|
25
|
-
const source = (clazz as Component).source || null;
|
|
26
|
-
const args: unknown[] = [];
|
|
27
|
-
const fields: FlexObject = {};
|
|
28
|
-
|
|
29
|
-
for (const parameter of constructParameters)
|
|
30
|
-
{
|
|
31
|
-
const objectValue = object[parameter.name];
|
|
32
|
-
const classFieldIndex = classFields.findIndex(field => field.name === parameter.name);
|
|
33
|
-
|
|
34
|
-
if (classFieldIndex !== -1)
|
|
35
|
-
{
|
|
36
|
-
classFields.splice(classFieldIndex, 1);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
args.push(ValueSerializer.serialize(objectValue));
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
for (const field of classFields)
|
|
43
|
-
{
|
|
44
|
-
if (field.canGetAndSet === false)
|
|
45
|
-
{
|
|
46
|
-
// Fields that can't be accessed or updated are ignored.
|
|
47
|
-
// This is to prevent the serialization of fields that are only used for internal purposes.
|
|
48
|
-
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const objectValue = object[field.name];
|
|
53
|
-
|
|
54
|
-
fields[field.name] = ValueSerializer.serialize(objectValue);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return { serialized: true, name: name, source: source, args: args, fields: fields };
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
async deserialize(object: SerializedClass): Promise<SerializableObject>
|
|
61
|
-
{
|
|
62
|
-
const clazz = await this.#loadClass(object.source, object.name);
|
|
63
|
-
|
|
64
|
-
if (clazz === undefined)
|
|
65
|
-
{
|
|
66
|
-
throw new ClassNotFound(object.name);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
if ((clazz instanceof Function) === false)
|
|
70
|
-
{
|
|
71
|
-
throw new InvalidClass(object.name);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const args = await Promise.all(object.args.map(async (value) => await ValueSerializer.deserialize(value)));
|
|
75
|
-
|
|
76
|
-
const instance = ReflectionHelper.createInstance(clazz as Function, args) as SerializableObject;
|
|
77
|
-
|
|
78
|
-
for (const name in object.fields)
|
|
79
|
-
{
|
|
80
|
-
const fieldValue = object.fields[name];
|
|
81
|
-
|
|
82
|
-
instance[name] = await ValueSerializer.deserialize(fieldValue);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return instance;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
async #loadClass(source: string | null, name: string): Promise<unknown>
|
|
89
|
-
{
|
|
90
|
-
if (source === null)
|
|
91
|
-
{
|
|
92
|
-
const system: unknown = typeof window !== 'undefined' ? window : global;
|
|
93
|
-
|
|
94
|
-
return (system as Module)[name];
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
const module = await ModuleLoader.load(source);
|
|
98
|
-
|
|
99
|
-
return module[name] ?? module.default;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
const instance = new ClassSerializer();
|
|
104
|
-
|
|
105
|
-
export default instance;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Serializer from './interfaces/Serializer.js';
|
|
3
|
-
|
|
4
|
-
import SerializedMap from './types/SerializedMap.js';
|
|
5
|
-
import ValueSerializer from './ValueSerializer.js';
|
|
6
|
-
|
|
7
|
-
class MapSerializer implements Serializer
|
|
8
|
-
{
|
|
9
|
-
serialize(map: Map<unknown, unknown>): SerializedMap
|
|
10
|
-
{
|
|
11
|
-
const keys: unknown[] = [];
|
|
12
|
-
const values: unknown[] = [];
|
|
13
|
-
|
|
14
|
-
for (const [key, value] of map)
|
|
15
|
-
{
|
|
16
|
-
keys.push(ValueSerializer.serialize(key));
|
|
17
|
-
values.push(ValueSerializer.serialize(value));
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
return { serialized: true, name: 'Map', entries: { keys: keys, values: values } };
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
async deserialize(object: SerializedMap): Promise<Map<unknown, unknown>>
|
|
24
|
-
{
|
|
25
|
-
const keys = object.entries.keys;
|
|
26
|
-
const values = object.entries.values;
|
|
27
|
-
|
|
28
|
-
const result = new Map();
|
|
29
|
-
|
|
30
|
-
for (let index = 0; index < keys.length; index++)
|
|
31
|
-
{
|
|
32
|
-
const key = await ValueSerializer.deserialize(keys[index]);
|
|
33
|
-
const value = await ValueSerializer.deserialize(values[index]);
|
|
34
|
-
|
|
35
|
-
result.set(key, value);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
return result;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const instance = new MapSerializer();
|
|
43
|
-
|
|
44
|
-
export default instance;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Serializer from './interfaces/Serializer.js';
|
|
3
|
-
|
|
4
|
-
import SerializableObject from './types/SerializableObject.js';
|
|
5
|
-
import SerializedObject from './types/SerializedObject.js';
|
|
6
|
-
|
|
7
|
-
import ValueSerializer from './ValueSerializer.js';
|
|
8
|
-
|
|
9
|
-
class ObjectSerializer implements Serializer
|
|
10
|
-
{
|
|
11
|
-
serialize(object: SerializableObject): SerializedObject
|
|
12
|
-
{
|
|
13
|
-
const result: SerializedObject = {};
|
|
14
|
-
|
|
15
|
-
for (const key in object)
|
|
16
|
-
{
|
|
17
|
-
const value = object[key];
|
|
18
|
-
|
|
19
|
-
result[key] = ValueSerializer.serialize(value);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
return result;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
async deserialize(object: SerializedObject): Promise<SerializableObject>
|
|
26
|
-
{
|
|
27
|
-
const result: SerializableObject = {};
|
|
28
|
-
|
|
29
|
-
for (const key in object)
|
|
30
|
-
{
|
|
31
|
-
const value = object[key];
|
|
32
|
-
|
|
33
|
-
result[key] = await ValueSerializer.deserialize(value);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return result;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const instance = new ObjectSerializer();
|
|
41
|
-
|
|
42
|
-
export default instance;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Serializer from './interfaces/Serializer.js';
|
|
3
|
-
import SerializedSet from './types/SerializedSet.js';
|
|
4
|
-
|
|
5
|
-
import ValueSerializer from './ValueSerializer.js';
|
|
6
|
-
|
|
7
|
-
class SetSerializer implements Serializer
|
|
8
|
-
{
|
|
9
|
-
serialize(set: Set<unknown>): SerializedSet
|
|
10
|
-
{
|
|
11
|
-
const values: unknown[] = [];
|
|
12
|
-
|
|
13
|
-
for (const value of set.values())
|
|
14
|
-
{
|
|
15
|
-
values.push(ValueSerializer.serialize(value));
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
return { serialized: true, name: 'Set', values: values };
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
async deserialize(object: SerializedSet): Promise<Set<unknown>>
|
|
22
|
-
{
|
|
23
|
-
const values = await Promise.all(object.values.map(async (value: unknown) => await ValueSerializer.deserialize(value)));
|
|
24
|
-
|
|
25
|
-
return new Set([...values]);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const instance = new SetSerializer();
|
|
30
|
-
|
|
31
|
-
export default instance;
|