kuzzle 2.56.0 → 2.57.0-beta.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/bin/copy-binaries.js +71 -4
- package/dist/bin/start-kuzzle-server +191 -97
- package/dist/index.d.ts +31 -1
- package/dist/index.js +45 -2
- package/dist/lib/api/controllers/adminController.d.ts +4 -3
- package/dist/lib/api/controllers/adminController.js +1 -2
- package/dist/lib/api/controllers/authController.d.ts +37 -16
- package/dist/lib/api/controllers/authController.js +88 -39
- package/dist/lib/api/controllers/baseController.d.ts +10 -5
- package/dist/lib/api/controllers/baseController.js +36 -15
- package/dist/lib/api/controllers/bulkController.d.ts +11 -7
- package/dist/lib/api/controllers/bulkController.js +28 -5
- package/dist/lib/api/controllers/clusterController.d.ts +2 -2
- package/dist/lib/api/controllers/clusterController.js +3 -3
- package/dist/lib/api/controllers/collectionController.d.ts +57 -21
- package/dist/lib/api/controllers/collectionController.js +40 -11
- package/dist/lib/api/controllers/debugController.d.ts +1 -1
- package/dist/lib/api/controllers/documentController.d.ts +137 -28
- package/dist/lib/api/controllers/documentController.js +156 -125
- package/dist/lib/api/controllers/index.d.ts +27 -12
- package/dist/lib/api/controllers/index.js +28 -13
- package/dist/lib/api/controllers/indexController.d.ts +17 -10
- package/dist/lib/api/controllers/indexController.js +13 -11
- package/dist/lib/api/controllers/memoryStorageController.d.ts +2 -5
- package/dist/lib/api/controllers/memoryStorageController.js +199 -127
- package/dist/lib/api/controllers/realtimeController.d.ts +19 -9
- package/dist/lib/api/controllers/realtimeController.js +8 -4
- package/dist/lib/api/controllers/securityController.d.ts +42 -29
- package/dist/lib/api/controllers/securityController.js +35 -19
- package/dist/lib/api/controllers/serverController.d.ts +114 -19
- package/dist/lib/api/controllers/serverController.js +69 -29
- package/dist/lib/api/documentExtractor.d.ts +9 -7
- package/dist/lib/api/documentExtractor.js +105 -41
- package/dist/lib/api/funnel.d.ts +131 -29
- package/dist/lib/api/funnel.js +436 -225
- package/dist/lib/api/httpRoutes.d.ts +16 -11
- package/dist/lib/api/httpRoutes.js +272 -2
- package/dist/lib/api/openapi/OpenApiManager.d.ts +1 -1
- package/dist/lib/api/openapi/openApiGenerator.d.ts +1 -1
- package/dist/lib/api/rateLimiter.d.ts +15 -5
- package/dist/lib/api/rateLimiter.js +42 -14
- package/dist/lib/api/request/kuzzleRequest.d.ts +83 -12
- package/dist/lib/api/request/kuzzleRequest.js +88 -23
- package/dist/lib/api/request/requestContext.d.ts +20 -5
- package/dist/lib/api/request/requestContext.js +14 -4
- package/dist/lib/api/request/requestInput.d.ts +37 -6
- package/dist/lib/api/request/requestInput.js +22 -9
- package/dist/lib/api/request/requestResponse.d.ts +45 -9
- package/dist/lib/api/request/requestResponse.js +34 -3
- package/dist/lib/cluster/command.d.ts +131 -37
- package/dist/lib/cluster/command.js +243 -71
- package/dist/lib/cluster/idCardHandler.d.ts +18 -5
- package/dist/lib/cluster/idCardHandler.js +52 -19
- package/dist/lib/cluster/index.d.ts +8 -2
- package/dist/lib/cluster/index.js +6 -2
- package/dist/lib/cluster/node.d.ts +127 -49
- package/dist/lib/cluster/node.js +412 -179
- package/dist/lib/cluster/protobuf/command.proto +18 -0
- package/dist/lib/cluster/protobuf/commandMessages.d.ts +104 -0
- package/dist/lib/cluster/protobuf/commandMessages.js +30 -0
- package/dist/lib/cluster/protobuf/syncMessages.d.ts +184 -0
- package/dist/lib/cluster/protobuf/syncMessages.js +23 -0
- package/dist/lib/cluster/publisher.d.ts +118 -78
- package/dist/lib/cluster/publisher.js +174 -72
- package/dist/lib/cluster/state.d.ts +15 -9
- package/dist/lib/cluster/state.js +12 -8
- package/dist/lib/cluster/subscriber.d.ts +185 -131
- package/dist/lib/cluster/subscriber.js +357 -95
- package/dist/lib/cluster/workers/IDCardRenewer.d.ts +39 -8
- package/dist/lib/cluster/workers/IDCardRenewer.js +88 -23
- package/dist/lib/config/default.config.d.ts +2 -2
- package/dist/lib/config/default.config.js +10 -3
- package/dist/lib/config/documentEventAliases.d.ts +1 -1
- package/dist/lib/config/index.d.ts +2 -5
- package/dist/lib/config/index.js +30 -17
- package/dist/lib/core/auth/formatProcessing.d.ts +3 -3
- package/dist/lib/core/auth/passportResponse.d.ts +1 -1
- package/dist/lib/core/auth/passportWrapper.d.ts +1 -1
- package/dist/lib/core/auth/passportWrapper.js +14 -13
- package/dist/lib/core/auth/tokenManager.d.ts +24 -3
- package/dist/lib/core/auth/tokenManager.js +47 -19
- package/dist/lib/core/backend/applicationManager.d.ts +2 -2
- package/dist/lib/core/backend/backend.d.ts +16 -5
- package/dist/lib/core/backend/backend.js +14 -6
- package/dist/lib/core/backend/backendCluster.d.ts +1 -1
- package/dist/lib/core/backend/backendConfig.d.ts +17 -5
- package/dist/lib/core/backend/backendConfig.js +1 -0
- package/dist/lib/core/backend/backendController.d.ts +1 -1
- package/dist/lib/core/backend/backendController.js +8 -1
- package/dist/lib/core/backend/backendErrors.d.ts +15 -8
- package/dist/lib/core/backend/backendErrors.js +5 -0
- package/dist/lib/core/backend/backendHook.d.ts +1 -1
- package/dist/lib/core/backend/backendImport.d.ts +1 -1
- package/dist/lib/core/backend/backendOpenApi.d.ts +3 -2
- package/dist/lib/core/backend/backendPipe.d.ts +1 -1
- package/dist/lib/core/backend/backendPipe.js +9 -1
- package/dist/lib/core/backend/backendPlugin.d.ts +2 -2
- package/dist/lib/core/backend/backendSubscription.d.ts +2 -2
- package/dist/lib/core/backend/backendVault.d.ts +1 -1
- package/dist/lib/core/backend/backendVault.js +8 -1
- package/dist/lib/core/cache/cacheEngine.d.ts +7 -4
- package/dist/lib/core/cache/cacheEngine.js +25 -8
- package/dist/lib/core/debug/kuzzleDebugger.d.ts +2 -1
- package/dist/lib/core/debug/kuzzleDebugger.js +31 -17
- package/dist/lib/core/network/accessLogger.d.ts +33 -18
- package/dist/lib/core/network/accessLogger.js +135 -73
- package/dist/lib/core/network/clientConnection.d.ts +13 -11
- package/dist/lib/core/network/clientConnection.js +33 -9
- package/dist/lib/core/network/context.d.ts +17 -22
- package/dist/lib/core/network/context.js +43 -26
- package/dist/lib/core/network/entryPoint.d.ts +38 -16
- package/dist/lib/core/network/entryPoint.js +119 -48
- package/dist/lib/core/network/httpRouter/index.d.ts +20 -50
- package/dist/lib/core/network/httpRouter/index.js +61 -75
- package/dist/lib/core/network/httpRouter/routeHandler.d.ts +17 -32
- package/dist/lib/core/network/httpRouter/routeHandler.js +26 -36
- package/dist/lib/core/network/httpRouter/routePart.d.ts +9 -18
- package/dist/lib/core/network/httpRouter/routePart.js +61 -43
- package/dist/lib/core/network/httpRouter/routeTypes.d.ts +3 -0
- package/dist/lib/core/network/httpRouter/routeTypes.js +23 -0
- package/dist/lib/core/network/networkEntryPoint.d.ts +20 -0
- package/dist/lib/core/network/networkEntryPoint.js +23 -0
- package/dist/lib/core/network/protocolManifest.d.ts +5 -4
- package/dist/lib/core/network/protocolManifest.js +6 -3
- package/dist/lib/core/network/protocols/httpMessage.d.ts +25 -18
- package/dist/lib/core/network/protocols/httpMessage.js +14 -11
- package/dist/lib/core/network/protocols/httpwsProtocol.d.ts +84 -93
- package/dist/lib/core/network/protocols/httpwsProtocol.js +284 -129
- package/dist/lib/core/network/protocols/internalProtocol.d.ts +26 -15
- package/dist/lib/core/network/protocols/internalProtocol.js +17 -16
- package/dist/lib/core/network/protocols/mqttProtocol.d.ts +56 -32
- package/dist/lib/core/network/protocols/mqttProtocol.js +91 -44
- package/dist/lib/core/network/protocols/protocol.d.ts +85 -21
- package/dist/lib/core/network/protocols/protocol.js +83 -27
- package/dist/lib/core/network/router.d.ts +13 -22
- package/dist/lib/core/network/router.js +59 -46
- package/dist/lib/core/plugin/plugin.d.ts +57 -51
- package/dist/lib/core/plugin/plugin.js +218 -103
- package/dist/lib/core/plugin/pluginContext.d.ts +54 -11
- package/dist/lib/core/plugin/pluginContext.js +99 -58
- package/dist/lib/core/plugin/pluginManifest.d.ts +6 -2
- package/dist/lib/core/plugin/pluginManifest.js +18 -11
- package/dist/lib/core/plugin/pluginRepository.d.ts +35 -44
- package/dist/lib/core/plugin/pluginRepository.js +35 -50
- package/dist/lib/core/plugin/pluginsManager.d.ts +128 -46
- package/dist/lib/core/plugin/pluginsManager.js +468 -231
- package/dist/lib/core/plugin/privilegedContext.d.ts +4 -9
- package/dist/lib/core/plugin/privilegedContext.js +5 -10
- package/dist/lib/core/realtime/actionEnum.d.ts +12 -21
- package/dist/lib/core/realtime/actionEnum.js +6 -7
- package/dist/lib/core/realtime/channel.d.ts +11 -5
- package/dist/lib/core/realtime/channel.js +17 -2
- package/dist/lib/core/realtime/connectionRooms.d.ts +2 -2
- package/dist/lib/core/realtime/hotelClerk.d.ts +12 -6
- package/dist/lib/core/realtime/hotelClerk.js +29 -11
- package/dist/lib/core/realtime/index.d.ts +8 -3
- package/dist/lib/core/realtime/index.js +12 -5
- package/dist/lib/core/realtime/notification/document.d.ts +54 -25
- package/dist/lib/core/realtime/notification/document.js +10 -13
- package/dist/lib/core/realtime/notification/index.d.ts +9 -3
- package/dist/lib/core/realtime/notification/index.js +10 -4
- package/dist/lib/core/realtime/notification/server.d.ts +7 -10
- package/dist/lib/core/realtime/notification/server.js +4 -7
- package/dist/lib/core/realtime/notification/user.d.ts +45 -21
- package/dist/lib/core/realtime/notification/user.js +8 -9
- package/dist/lib/core/realtime/notifier.d.ts +52 -40
- package/dist/lib/core/realtime/notifier.js +60 -25
- package/dist/lib/core/realtime/room.d.ts +1 -1
- package/dist/lib/core/realtime/subscription.d.ts +11 -6
- package/dist/lib/core/realtime/subscription.js +5 -1
- package/dist/lib/core/security/index.d.ts +14 -6
- package/dist/lib/core/security/index.js +27 -13
- package/dist/lib/core/security/profileRepository.d.ts +24 -19
- package/dist/lib/core/security/profileRepository.js +23 -10
- package/dist/lib/core/security/roleRepository.d.ts +60 -23
- package/dist/lib/core/security/roleRepository.js +122 -53
- package/dist/lib/core/security/securityLoader.d.ts +33 -18
- package/dist/lib/core/security/securityLoader.js +43 -16
- package/dist/lib/core/security/tokenRepository.d.ts +21 -7
- package/dist/lib/core/security/tokenRepository.js +50 -23
- package/dist/lib/core/security/userRepository.d.ts +44 -21
- package/dist/lib/core/security/userRepository.js +59 -19
- package/dist/lib/core/shared/KoncordeWrapper.d.ts +1 -1
- package/dist/lib/core/shared/ObjectRepository.d.ts +80 -18
- package/dist/lib/core/shared/ObjectRepository.js +57 -29
- package/dist/lib/core/shared/abstractManifest.d.ts +21 -8
- package/dist/lib/core/shared/abstractManifest.js +57 -17
- package/dist/lib/core/shared/sdk/embeddedSdk.d.ts +3 -1
- package/dist/lib/core/shared/sdk/embeddedSdk.js +8 -7
- package/dist/lib/core/shared/sdk/funnelProtocol.d.ts +2 -1
- package/dist/lib/core/shared/sdk/funnelProtocol.js +12 -3
- package/dist/lib/core/shared/sdk/impersonatedSdk.d.ts +11 -5
- package/dist/lib/core/shared/sdk/impersonatedSdk.js +22 -9
- package/dist/lib/core/shared/store.d.ts +45 -29
- package/dist/lib/core/shared/store.js +48 -27
- package/dist/lib/core/statistics/statistics.d.ts +1 -1
- package/dist/lib/core/storage/clientAdapter.d.ts +39 -21
- package/dist/lib/core/storage/clientAdapter.js +88 -48
- package/dist/lib/core/storage/indexCache.d.ts +8 -0
- package/dist/lib/core/storage/indexCache.js +16 -7
- package/dist/lib/core/storage/storageEngine.d.ts +7 -6
- package/dist/lib/core/storage/storageEngine.js +11 -8
- package/dist/lib/core/validation/baseType.d.ts +22 -22
- package/dist/lib/core/validation/baseType.js +11 -26
- package/dist/lib/core/validation/specification.d.ts +148 -0
- package/dist/lib/core/validation/specification.js +34 -0
- package/dist/lib/core/validation/typeOptions.d.ts +62 -0
- package/dist/lib/core/validation/typeOptions.js +23 -0
- package/dist/lib/core/validation/types/anything.d.ts +3 -6
- package/dist/lib/core/validation/types/anything.js +7 -7
- package/dist/lib/core/validation/types/boolean.d.ts +5 -12
- package/dist/lib/core/validation/types/boolean.js +7 -12
- package/dist/lib/core/validation/types/date.d.ts +19 -11
- package/dist/lib/core/validation/types/date.js +212 -161
- package/dist/lib/core/validation/types/email.d.ts +7 -11
- package/dist/lib/core/validation/types/email.js +13 -17
- package/dist/lib/core/validation/types/enum.d.ts +7 -11
- package/dist/lib/core/validation/types/enum.js +39 -20
- package/dist/lib/core/validation/types/geoPoint.d.ts +5 -13
- package/dist/lib/core/validation/types/geoPoint.js +10 -15
- package/dist/lib/core/validation/types/geoShape.d.ts +22 -21
- package/dist/lib/core/validation/types/geoShape.js +113 -129
- package/dist/lib/core/validation/types/geoShapeUtils.d.ts +15 -0
- package/dist/lib/core/validation/types/geoShapeUtils.js +75 -0
- package/dist/lib/core/validation/types/integer.d.ts +7 -5
- package/dist/lib/core/validation/types/integer.js +7 -13
- package/dist/lib/core/validation/types/ipAddress.d.ts +7 -11
- package/dist/lib/core/validation/types/ipAddress.js +13 -17
- package/dist/lib/core/validation/types/numeric.d.ts +7 -11
- package/dist/lib/core/validation/types/numeric.js +22 -29
- package/dist/lib/core/validation/types/object.d.ts +8 -15
- package/dist/lib/core/validation/types/object.js +12 -21
- package/dist/lib/core/validation/types/string.d.ts +7 -11
- package/dist/lib/core/validation/types/string.js +22 -29
- package/dist/lib/core/validation/types/url.d.ts +7 -11
- package/dist/lib/core/validation/types/url.js +14 -18
- package/dist/lib/core/validation/validation.d.ts +119 -80
- package/dist/lib/core/validation/validation.js +470 -412
- package/dist/lib/core/validation/validationUtils.d.ts +31 -0
- package/dist/lib/core/validation/validationUtils.js +190 -0
- package/dist/lib/kerror/codes/4-plugin.json +0 -12
- package/dist/lib/kerror/codes/index.d.ts +12 -2
- package/dist/lib/kerror/codes/index.js +5 -4
- package/dist/lib/kerror/errors/badRequestError.d.ts +1 -1
- package/dist/lib/kerror/errors/badRequestError.js +1 -1
- package/dist/lib/kerror/errors/externalServiceError.d.ts +1 -1
- package/dist/lib/kerror/errors/externalServiceError.js +1 -1
- package/dist/lib/kerror/errors/forbiddenError.d.ts +1 -1
- package/dist/lib/kerror/errors/forbiddenError.js +1 -1
- package/dist/lib/kerror/errors/gatewayTimeoutError.d.ts +1 -1
- package/dist/lib/kerror/errors/gatewayTimeoutError.js +1 -1
- package/dist/lib/kerror/errors/internalError.d.ts +1 -1
- package/dist/lib/kerror/errors/internalError.js +1 -1
- package/dist/lib/kerror/errors/kuzzleError.d.ts +32 -3
- package/dist/lib/kerror/errors/kuzzleError.js +21 -7
- package/dist/lib/kerror/errors/multipleErrorsError.d.ts +2 -2
- package/dist/lib/kerror/errors/multipleErrorsError.js +2 -2
- package/dist/lib/kerror/errors/notFoundError.d.ts +1 -1
- package/dist/lib/kerror/errors/notFoundError.js +1 -1
- package/dist/lib/kerror/errors/partialError.d.ts +8 -2
- package/dist/lib/kerror/errors/partialError.js +22 -9
- package/dist/lib/kerror/errors/pluginImplementationError.d.ts +9 -1
- package/dist/lib/kerror/errors/pluginImplementationError.js +9 -3
- package/dist/lib/kerror/errors/preconditionError.d.ts +1 -1
- package/dist/lib/kerror/errors/preconditionError.js +1 -1
- package/dist/lib/kerror/errors/serviceUnavailableError.d.ts +1 -1
- package/dist/lib/kerror/errors/serviceUnavailableError.js +1 -1
- package/dist/lib/kerror/errors/sizeLimitError.d.ts +1 -1
- package/dist/lib/kerror/errors/sizeLimitError.js +1 -1
- package/dist/lib/kerror/errors/tooManyRequestsError.d.ts +1 -1
- package/dist/lib/kerror/errors/tooManyRequestsError.js +1 -1
- package/dist/lib/kerror/errors/unauthorizedError.d.ts +1 -1
- package/dist/lib/kerror/errors/unauthorizedError.js +1 -1
- package/dist/lib/kerror/index.d.ts +19 -13
- package/dist/lib/kerror/index.js +60 -19
- package/dist/lib/kuzzle/Logger.d.ts +2 -2
- package/dist/lib/kuzzle/dumpGenerator.d.ts +12 -8
- package/dist/lib/kuzzle/dumpGenerator.js +130 -62
- package/dist/lib/kuzzle/event/KuzzleEventEmitter.d.ts +18 -9
- package/dist/lib/kuzzle/event/KuzzleEventEmitter.js +45 -18
- package/dist/lib/kuzzle/event/pipeRunner.d.ts +37 -16
- package/dist/lib/kuzzle/event/pipeRunner.js +73 -26
- package/dist/lib/kuzzle/event/waterfall.d.ts +11 -1
- package/dist/lib/kuzzle/event/waterfall.js +38 -13
- package/dist/lib/kuzzle/internalIndexHandler.d.ts +11 -174
- package/dist/lib/kuzzle/internalIndexHandler.js +58 -29
- package/dist/lib/kuzzle/kuzzle.d.ts +25 -10
- package/dist/lib/kuzzle/kuzzle.js +74 -17
- package/dist/lib/kuzzle/kuzzleStateEnum.d.ts +16 -12
- package/dist/lib/kuzzle/kuzzleStateEnum.js +5 -7
- package/dist/lib/kuzzle/vault.d.ts +5 -1
- package/dist/lib/kuzzle/vault.js +29 -17
- package/dist/lib/model/security/profile.d.ts +34 -5
- package/dist/lib/model/security/profile.js +6 -5
- package/dist/lib/model/security/rights.d.ts +12 -4
- package/dist/lib/model/security/rights.js +7 -6
- package/dist/lib/model/security/role.d.ts +8 -4
- package/dist/lib/model/security/role.js +12 -6
- package/dist/lib/model/security/token.d.ts +8 -0
- package/dist/lib/model/security/user.d.ts +8 -2
- package/dist/lib/model/security/user.js +7 -4
- package/dist/lib/model/storage/apiKey.d.ts +55 -26
- package/dist/lib/model/storage/apiKey.js +97 -24
- package/dist/lib/model/storage/baseModel.d.ts +77 -66
- package/dist/lib/model/storage/baseModel.js +21 -34
- package/dist/lib/service/cache/redis.d.ts +53 -36
- package/dist/lib/service/cache/redis.js +148 -71
- package/dist/lib/service/service.d.ts +14 -19
- package/dist/lib/service/service.js +41 -22
- package/dist/lib/service/storage/7/elasticsearch.d.ts +136 -93
- package/dist/lib/service/storage/7/elasticsearch.js +218 -165
- package/dist/lib/service/storage/7/esWrapper.d.ts +30 -13
- package/dist/lib/service/storage/7/esWrapper.js +58 -37
- package/dist/lib/service/storage/8/elasticsearch.d.ts +153 -119
- package/dist/lib/service/storage/8/elasticsearch.js +286 -213
- package/dist/lib/service/storage/8/esWrapper.d.ts +30 -13
- package/dist/lib/service/storage/8/esWrapper.js +59 -38
- package/dist/lib/service/storage/commons/queryTranslator.d.ts +3 -3
- package/dist/lib/service/storage/commons/queryTranslator.js +71 -35
- package/dist/lib/types/ApiRoute.d.ts +12 -0
- package/dist/lib/types/ApiRoute.js +23 -0
- package/dist/lib/types/ClientConnection.d.ts +1 -1
- package/dist/lib/types/EventHandler.d.ts +10 -0
- package/dist/lib/types/Global.d.ts +8 -3
- package/dist/lib/types/HttpMessage.d.ts +2 -2
- package/dist/lib/types/HttpStream.d.ts +1 -1
- package/dist/lib/types/HttpStream.js +3 -1
- package/dist/lib/types/JSONObject.d.ts +9 -0
- package/dist/lib/types/JSONObject.js +23 -0
- package/dist/lib/types/Kuzzle.d.ts +5 -3
- package/dist/lib/types/KuzzleDocument.d.ts +1 -1
- package/dist/lib/types/KuzzleWebSocket.d.ts +24 -0
- package/dist/lib/types/KuzzleWebSocket.js +23 -0
- package/dist/lib/types/OpenApiDefinition.d.ts +1 -1
- package/dist/lib/types/Plugin.d.ts +33 -8
- package/dist/lib/types/PluginInstance.d.ts +67 -0
- package/dist/lib/types/PluginInstance.js +23 -0
- package/dist/lib/types/Policy.d.ts +1 -1
- package/dist/lib/types/Target.d.ts +8 -0
- package/dist/lib/types/Token.d.ts +14 -2
- package/dist/lib/types/config/HttpConfiguration.d.ts +5 -0
- package/dist/lib/types/config/KuzzleConfiguration.d.ts +102 -1
- package/dist/lib/types/config/PluginsConfiguration.d.ts +3 -2
- package/dist/lib/types/config/SecurityConfiguration.d.ts +6 -2
- package/dist/lib/types/config/ServerConfiguration.d.ts +2 -2
- package/dist/lib/types/config/ServicesConfiguration.d.ts +1 -1
- package/dist/lib/types/config/cache/BaseCacheRedisConfiguration.d.ts +131 -0
- package/dist/lib/types/config/cache/BaseCacheRedisConfiguration.js +3 -0
- package/dist/lib/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +2 -106
- package/dist/lib/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +2 -26
- package/dist/lib/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +3 -0
- package/dist/lib/types/controllers/Controller.d.ts +12 -3
- package/dist/lib/types/controllers/ControllerDefinition.d.ts +2 -2
- package/dist/lib/types/controllers/{adminControlller.type.js → adminController.type.js} +1 -1
- package/dist/lib/types/controllers/authController.type.d.ts +2 -2
- package/dist/lib/types/core/auth/formatProcessing.type.d.ts +7 -1
- package/dist/lib/types/errors/ErrorDomains.d.ts +1 -1
- package/dist/lib/types/events/EventGenericDocument.d.ts +10 -9
- package/dist/lib/types/events/EventProtocol.d.ts +4 -4
- package/dist/lib/types/index.d.ts +7 -0
- package/dist/lib/types/index.js +7 -0
- package/dist/lib/types/shared/StoreCollectionsDefinition.d.ts +1 -1
- package/dist/lib/types/storage/7/Elasticsearch.d.ts +62 -13
- package/dist/lib/types/storage/8/Elasticsearch.d.ts +62 -13
- package/dist/lib/util/Inflector.d.ts +4 -1
- package/dist/lib/util/Inflector.js +0 -3
- package/dist/lib/util/assertType.d.ts +24 -27
- package/dist/lib/util/assertType.js +28 -39
- package/dist/lib/util/async.js +19 -6
- package/dist/lib/util/asyncStore.js +1 -1
- package/dist/lib/util/bufferedPassThrough.d.ts +9 -0
- package/dist/lib/util/bufferedPassThrough.js +27 -13
- package/dist/lib/util/bytes.d.ts +1 -1
- package/dist/lib/util/bytes.js +6 -2
- package/dist/lib/util/debug.d.ts +3 -1
- package/dist/lib/util/debug.js +42 -10
- package/dist/lib/util/deprecate.d.ts +9 -1
- package/dist/lib/util/deprecate.js +10 -6
- package/dist/lib/util/didYouMean.d.ts +2 -1
- package/dist/lib/util/didYouMean.js +8 -4
- package/dist/lib/util/distributedLock.d.ts +56 -0
- package/dist/lib/util/distributedLock.js +166 -0
- package/dist/lib/util/dump-collection.d.ts +1 -1
- package/dist/lib/util/dump-collection.js +4 -5
- package/dist/lib/util/extractFields.d.ts +15 -11
- package/dist/lib/util/extractFields.js +8 -9
- package/dist/lib/util/koncordeCompat.d.ts +2 -2
- package/dist/lib/util/koncordeCompat.js +33 -0
- package/dist/lib/util/memoize.d.ts +7 -6
- package/dist/lib/util/memoize.js +3 -3
- package/dist/lib/util/mutex.d.ts +22 -2
- package/dist/lib/util/mutex.js +39 -1
- package/dist/lib/util/name-generator.js +14 -2
- package/dist/lib/util/promback.d.ts +20 -11
- package/dist/lib/util/promback.js +14 -7
- package/dist/lib/util/requestAssertions.d.ts +30 -10
- package/dist/lib/util/requestAssertions.js +125 -121
- package/dist/lib/util/safeObject.d.ts +3 -3
- package/dist/lib/util/safeObject.js +7 -3
- package/dist/lib/util/stackTrace.d.ts +13 -5
- package/dist/lib/util/stackTrace.js +17 -12
- package/dist/lib/util/thrown.d.ts +13 -0
- package/dist/lib/util/thrown.js +46 -0
- package/dist/package.json +26 -19
- package/package.json +26 -19
- package/dist/lib/util/wildcard.d.ts +0 -1
- package/dist/lib/util/wildcard.js +0 -46
- /package/dist/lib/types/controllers/{adminControlller.type.d.ts → adminController.type.d.ts} +0 -0
|
@@ -60,3 +60,21 @@ message HandshakeResponse {
|
|
|
60
60
|
bool added = 1;
|
|
61
61
|
uint64 lastMessageId = 2;
|
|
62
62
|
}
|
|
63
|
+
|
|
64
|
+
// Retransmit request: the messages a subscriber missed from this node's sync
|
|
65
|
+
// stream, by message id, both ends included (#2785)
|
|
66
|
+
message RetransmitRequest {
|
|
67
|
+
uint64 from = 1;
|
|
68
|
+
uint64 to = 2;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Retransmit response: the missed messages, in order, exactly as they were
|
|
72
|
+
// published (topic + encoded sync message)
|
|
73
|
+
message RetransmitResponse {
|
|
74
|
+
message Frame {
|
|
75
|
+
string topic = 1;
|
|
76
|
+
bytes data = 2;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
repeated Frame frames = 1;
|
|
80
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type Long from "long";
|
|
2
|
+
import type { NewAuthStrategyMessage } from "./syncMessages";
|
|
3
|
+
/**
|
|
4
|
+
* The shapes `command.proto` puts on the wire, as `protobufjs`' `toObject()`
|
|
5
|
+
* returns them.
|
|
6
|
+
*
|
|
7
|
+
* Same contract as [`syncMessages.ts`](./syncMessages.ts): `command.proto` is
|
|
8
|
+
* the source of truth and these types mirror it field for field, so the command
|
|
9
|
+
* layer is checked against the schema rather than against a reader's memory of
|
|
10
|
+
* it. Keep them in step with the `.proto`.
|
|
11
|
+
*
|
|
12
|
+
* The two decoding details `syncMessages.ts` documents apply here too: a proto
|
|
13
|
+
* `uint64` comes back as a **`Long`** (`lastMessageId`, `messageId`), a `uint32`
|
|
14
|
+
* as a plain number (`subscribers`, `event`), and a field the schema comments as
|
|
15
|
+
* needing to be "stringified beforehand" is a **string** its reader parses.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* A message as `toObject()` hands it back, before anything has established that
|
|
19
|
+
* its fields are there. Every proto3 field is optional on the wire, and
|
|
20
|
+
* `toObject()` returns an index-signature object — so this is what a decode
|
|
21
|
+
* actually yields, and narrowing it is the reader's job. `subscriber.ts`'s
|
|
22
|
+
* `DecodedMessage` is the same admission for `sync.proto`.
|
|
23
|
+
*/
|
|
24
|
+
export type Decoded<T> = Partial<T> & Record<string, unknown>;
|
|
25
|
+
/** `FullStateResponse.NodeSubscribers` — who subscribed to a realtime room. */
|
|
26
|
+
export type NodeSubscribers = {
|
|
27
|
+
nodeId: string;
|
|
28
|
+
subscribers: number;
|
|
29
|
+
messageId: Long;
|
|
30
|
+
};
|
|
31
|
+
/** `FullStateResponse.RealtimeRoom`. */
|
|
32
|
+
export type RealtimeRoom = {
|
|
33
|
+
roomId: string;
|
|
34
|
+
index: string;
|
|
35
|
+
collection: string;
|
|
36
|
+
/**
|
|
37
|
+
* Serialized JSON. The schema says so explicitly: protobuf cannot carry an
|
|
38
|
+
* array of polymorphic objects, so the filters travel stringified.
|
|
39
|
+
*/
|
|
40
|
+
filters: string;
|
|
41
|
+
nodes: NodeSubscribers[];
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* `FullStateResponse.Activity`. `event` is a `nodeActivityEnum` value, which
|
|
45
|
+
* the schema can only express as a `uint32`.
|
|
46
|
+
*/
|
|
47
|
+
export type Activity = {
|
|
48
|
+
id: string;
|
|
49
|
+
date: string;
|
|
50
|
+
address: string;
|
|
51
|
+
event: number;
|
|
52
|
+
reason?: string;
|
|
53
|
+
};
|
|
54
|
+
/** `FullStateResponse.NodeState` — a node and the last message it published. */
|
|
55
|
+
export type NodeState = {
|
|
56
|
+
id: string;
|
|
57
|
+
lastMessageId: Long;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* `command.proto` declares `authStrategies` as `repeated sync.NewAuthStrategy`,
|
|
61
|
+
* but the `messageId` that message carries is **never populated on this path**:
|
|
62
|
+
* the full state stores the strategy triple exactly as `addAuthStrategy()`
|
|
63
|
+
* received it, with no message id. The schema reuses a type that has a field
|
|
64
|
+
* this payload has no value for; the `Omit` says so rather than inventing one.
|
|
65
|
+
*/
|
|
66
|
+
export type FullStateAuthStrategy = Omit<NewAuthStrategyMessage, "messageId">;
|
|
67
|
+
export type FullStateResponse = {
|
|
68
|
+
rooms: RealtimeRoom[];
|
|
69
|
+
authStrategies: FullStateAuthStrategy[];
|
|
70
|
+
activity: Activity[];
|
|
71
|
+
nodesState: NodeState[];
|
|
72
|
+
};
|
|
73
|
+
export type HandshakeRequest = {
|
|
74
|
+
nodeId: string;
|
|
75
|
+
lastMessageId: Long;
|
|
76
|
+
ip: string;
|
|
77
|
+
};
|
|
78
|
+
export type HandshakeResponse = {
|
|
79
|
+
added: boolean;
|
|
80
|
+
lastMessageId: Long;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* The topics the command REP/REQ socket answers on. `DISCARDED` is the reply to
|
|
84
|
+
* anything else: REQ/REP requires a reply to every request, so an unknown topic
|
|
85
|
+
* still gets an (empty) answer rather than leaving the peer waiting.
|
|
86
|
+
*/
|
|
87
|
+
export type RetransmitRequest = {
|
|
88
|
+
from: Long;
|
|
89
|
+
to: Long;
|
|
90
|
+
};
|
|
91
|
+
/** One sync message as it was published: its topic and its encoded payload. */
|
|
92
|
+
export type RetransmitFrame = {
|
|
93
|
+
topic: string;
|
|
94
|
+
data: Uint8Array;
|
|
95
|
+
};
|
|
96
|
+
export type RetransmitResponse = {
|
|
97
|
+
frames: RetransmitFrame[];
|
|
98
|
+
};
|
|
99
|
+
export declare const commandTopic: Readonly<{
|
|
100
|
+
DISCARDED: "discarded";
|
|
101
|
+
FULLSTATE: "fullstate";
|
|
102
|
+
HANDSHAKE: "handshake";
|
|
103
|
+
RETRANSMIT: "retransmit";
|
|
104
|
+
}>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Kuzzle, a backend software, self-hostable and ready to use
|
|
4
|
+
* to power modern apps
|
|
5
|
+
*
|
|
6
|
+
* Copyright 2015-2022 Kuzzle
|
|
7
|
+
* mailto: support AT kuzzle.io
|
|
8
|
+
* website: http://kuzzle.io
|
|
9
|
+
*
|
|
10
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
11
|
+
* you may not use this file except in compliance with the License.
|
|
12
|
+
* You may obtain a copy of the License at
|
|
13
|
+
*
|
|
14
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
|
15
|
+
*
|
|
16
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
* See the License for the specific language governing permissions and
|
|
20
|
+
* limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.commandTopic = void 0;
|
|
24
|
+
exports.commandTopic = Object.freeze({
|
|
25
|
+
DISCARDED: "discarded",
|
|
26
|
+
FULLSTATE: "fullstate",
|
|
27
|
+
HANDSHAKE: "handshake",
|
|
28
|
+
RETRANSMIT: "retransmit",
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=commandMessages.js.map
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import type Long from "long";
|
|
2
|
+
/**
|
|
3
|
+
* The shapes `sync.proto` puts on the wire, as `protobufjs`' `toObject()`
|
|
4
|
+
* returns them.
|
|
5
|
+
*
|
|
6
|
+
* `sync.proto` is the source of truth: these types mirror it field for field
|
|
7
|
+
* and exist so the cluster's message handlers are checked against the schema
|
|
8
|
+
* rather than against a reader's memory of it. Keep them in step with the
|
|
9
|
+
* `.proto` — a field added there and forgotten here is a field the compiler
|
|
10
|
+
* will say does not exist.
|
|
11
|
+
*
|
|
12
|
+
* Two decoding details are load-bearing:
|
|
13
|
+
* - a proto `uint64` comes back as a **`Long`**, not a number, because the
|
|
14
|
+
* `long` package is installed (`messageId` and `timestamp`);
|
|
15
|
+
* - a proto `uint32` comes back as a plain number (`status`);
|
|
16
|
+
* - fields commented "serialized JSON" in the schema are **strings** here, and
|
|
17
|
+
* every handler that reads one calls `JSON.parse` on it.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Every sync message carries a `messageId`: it is what lets a subscriber detect
|
|
21
|
+
* that it missed one. `sync.proto` states the rule in its header comment, and
|
|
22
|
+
* `validateMessage()` enforces it on the wire.
|
|
23
|
+
*/
|
|
24
|
+
export type SyncMessage = {
|
|
25
|
+
messageId: Long;
|
|
26
|
+
};
|
|
27
|
+
export type HeartbeatMessage = SyncMessage & {
|
|
28
|
+
address: string;
|
|
29
|
+
};
|
|
30
|
+
export type NodeEvictedMessage = SyncMessage & {
|
|
31
|
+
nodeId: string;
|
|
32
|
+
reason: string;
|
|
33
|
+
evictor: string;
|
|
34
|
+
};
|
|
35
|
+
export type NodeShutdownMessage = SyncMessage & {
|
|
36
|
+
nodeId: string;
|
|
37
|
+
};
|
|
38
|
+
export type NodePreventEvictionMessage = SyncMessage & {
|
|
39
|
+
evictionPrevented: boolean;
|
|
40
|
+
};
|
|
41
|
+
export type NewRealtimeRoomMessage = SyncMessage & {
|
|
42
|
+
/** Koncorde index, i.e. an index/collection pair encoded as one string */
|
|
43
|
+
index: string;
|
|
44
|
+
id: string;
|
|
45
|
+
/** serialized JSON */
|
|
46
|
+
filter: string;
|
|
47
|
+
};
|
|
48
|
+
export type RemoveRealtimeRoomMessage = SyncMessage & {
|
|
49
|
+
roomId: string;
|
|
50
|
+
};
|
|
51
|
+
export type SubscriptionMessage = SyncMessage & {
|
|
52
|
+
roomId: string;
|
|
53
|
+
};
|
|
54
|
+
export type UnsubscriptionMessage = SyncMessage & {
|
|
55
|
+
roomId: string;
|
|
56
|
+
};
|
|
57
|
+
export type DocumentNotificationMessage = SyncMessage & {
|
|
58
|
+
rooms: string[];
|
|
59
|
+
status: number;
|
|
60
|
+
requestId: string;
|
|
61
|
+
timestamp: Long;
|
|
62
|
+
index: string;
|
|
63
|
+
collection: string;
|
|
64
|
+
controller: string;
|
|
65
|
+
action: string;
|
|
66
|
+
protocol: string;
|
|
67
|
+
scope: string;
|
|
68
|
+
/** serialized JSON */
|
|
69
|
+
volatile: string;
|
|
70
|
+
/** serialized JSON */
|
|
71
|
+
result: string;
|
|
72
|
+
};
|
|
73
|
+
export type UserNotificationMessage = SyncMessage & {
|
|
74
|
+
room: string;
|
|
75
|
+
status: number;
|
|
76
|
+
timestamp: Long;
|
|
77
|
+
index: string;
|
|
78
|
+
collection: string;
|
|
79
|
+
controller: string;
|
|
80
|
+
action: string;
|
|
81
|
+
protocol: string;
|
|
82
|
+
user: string;
|
|
83
|
+
/** serialized JSON */
|
|
84
|
+
volatile: string;
|
|
85
|
+
/** serialized JSON */
|
|
86
|
+
result: string;
|
|
87
|
+
};
|
|
88
|
+
export type AuthStrategyConfig = {
|
|
89
|
+
authenticator: string;
|
|
90
|
+
fields: string[];
|
|
91
|
+
/** serialized JSON */
|
|
92
|
+
authenticateOptions: string;
|
|
93
|
+
/** serialized JSON */
|
|
94
|
+
strategyOptions: string;
|
|
95
|
+
};
|
|
96
|
+
export type AuthStrategyMethods = {
|
|
97
|
+
create: string;
|
|
98
|
+
delete: string;
|
|
99
|
+
exists: string;
|
|
100
|
+
update: string;
|
|
101
|
+
validate: string;
|
|
102
|
+
verify: string;
|
|
103
|
+
getById?: string;
|
|
104
|
+
getInfo?: string;
|
|
105
|
+
afterRegister?: string;
|
|
106
|
+
};
|
|
107
|
+
export type AuthStrategy = {
|
|
108
|
+
methods: AuthStrategyMethods;
|
|
109
|
+
config: AuthStrategyConfig;
|
|
110
|
+
};
|
|
111
|
+
export type NewAuthStrategyMessage = SyncMessage & {
|
|
112
|
+
strategyName: string;
|
|
113
|
+
pluginName: string;
|
|
114
|
+
strategy: AuthStrategy;
|
|
115
|
+
};
|
|
116
|
+
export type RemoveAuthStrategyMessage = SyncMessage & {
|
|
117
|
+
strategyName: string;
|
|
118
|
+
pluginName: string;
|
|
119
|
+
};
|
|
120
|
+
export type DumpRequestMessage = SyncMessage & {
|
|
121
|
+
suffix: string;
|
|
122
|
+
};
|
|
123
|
+
export type InvalidateProfileMessage = SyncMessage & {
|
|
124
|
+
profileId: string;
|
|
125
|
+
};
|
|
126
|
+
export type InvalidateRoleMessage = SyncMessage & {
|
|
127
|
+
roleId: string;
|
|
128
|
+
};
|
|
129
|
+
export type AddIndexMessage = SyncMessage & {
|
|
130
|
+
scope: string;
|
|
131
|
+
index: string;
|
|
132
|
+
};
|
|
133
|
+
export type AddCollectionMessage = SyncMessage & {
|
|
134
|
+
scope: string;
|
|
135
|
+
index: string;
|
|
136
|
+
collection: string;
|
|
137
|
+
};
|
|
138
|
+
export type RemoveIndexesMessage = SyncMessage & {
|
|
139
|
+
scope: string;
|
|
140
|
+
indexes: string[];
|
|
141
|
+
};
|
|
142
|
+
export type RemoveCollectionMessage = SyncMessage & {
|
|
143
|
+
scope: string;
|
|
144
|
+
index: string;
|
|
145
|
+
collection: string;
|
|
146
|
+
};
|
|
147
|
+
export type ClusterWideEventMessage = SyncMessage & {
|
|
148
|
+
event: string;
|
|
149
|
+
/** serialized JSON */
|
|
150
|
+
payload: string;
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* Topic name → the message that topic carries. A topic is a protobuf type name,
|
|
154
|
+
* so this map is the same list as `sync.proto`'s, and `ClusterSubscriber`'s
|
|
155
|
+
* handler table is typed against it: a handler registered under the wrong topic
|
|
156
|
+
* stops compiling.
|
|
157
|
+
*/
|
|
158
|
+
export type SyncMessages = {
|
|
159
|
+
AddCollection: AddCollectionMessage;
|
|
160
|
+
AddIndex: AddIndexMessage;
|
|
161
|
+
ClusterWideEvent: ClusterWideEventMessage;
|
|
162
|
+
DocumentNotification: DocumentNotificationMessage;
|
|
163
|
+
DumpRequest: DumpRequestMessage;
|
|
164
|
+
Heartbeat: HeartbeatMessage;
|
|
165
|
+
InvalidateProfile: InvalidateProfileMessage;
|
|
166
|
+
InvalidateRole: InvalidateRoleMessage;
|
|
167
|
+
NewAuthStrategy: NewAuthStrategyMessage;
|
|
168
|
+
NewRealtimeRoom: NewRealtimeRoomMessage;
|
|
169
|
+
NodeEvicted: NodeEvictedMessage;
|
|
170
|
+
NodePreventEviction: NodePreventEvictionMessage;
|
|
171
|
+
NodeShutdown: NodeShutdownMessage;
|
|
172
|
+
RefreshIndexCache: SyncMessage;
|
|
173
|
+
RefreshValidators: SyncMessage;
|
|
174
|
+
RemoveAuthStrategy: RemoveAuthStrategyMessage;
|
|
175
|
+
RemoveCollection: RemoveCollectionMessage;
|
|
176
|
+
RemoveIndexes: RemoveIndexesMessage;
|
|
177
|
+
RemoveRealtimeRoom: RemoveRealtimeRoomMessage;
|
|
178
|
+
ResetSecurity: SyncMessage;
|
|
179
|
+
Shutdown: SyncMessage;
|
|
180
|
+
Subscription: SubscriptionMessage;
|
|
181
|
+
Unsubscription: UnsubscriptionMessage;
|
|
182
|
+
UserNotification: UserNotificationMessage;
|
|
183
|
+
};
|
|
184
|
+
export type SyncTopic = keyof SyncMessages;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Kuzzle, a backend software, self-hostable and ready to use
|
|
4
|
+
* to power modern apps
|
|
5
|
+
*
|
|
6
|
+
* Copyright 2015-2022 Kuzzle
|
|
7
|
+
* mailto: support AT kuzzle.io
|
|
8
|
+
* website: http://kuzzle.io
|
|
9
|
+
*
|
|
10
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
11
|
+
* you may not use this file except in compliance with the License.
|
|
12
|
+
* You may obtain a copy of the License at
|
|
13
|
+
*
|
|
14
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
|
15
|
+
*
|
|
16
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
+
* See the License for the specific language governing permissions and
|
|
20
|
+
* limitations under the License.
|
|
21
|
+
*/
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
//# sourceMappingURL=syncMessages.js.map
|
|
@@ -1,164 +1,196 @@
|
|
|
1
|
-
|
|
1
|
+
import Long from "long";
|
|
2
|
+
import type { JSONObject } from "../types/JSONObject";
|
|
3
|
+
import type { NormalizedFilter } from "koncorde";
|
|
4
|
+
import type DocumentNotification from "../core/realtime/notification/document";
|
|
5
|
+
import type UserNotification from "../core/realtime/notification/user";
|
|
6
|
+
import type { storeScopeEnum } from "../core/storage/storeScopeEnum";
|
|
7
|
+
import type { IKuzzleConfiguration } from "../types/config/KuzzleConfiguration";
|
|
8
|
+
/**
|
|
9
|
+
* What the publisher needs from the node that owns it. `node.js` is converted
|
|
10
|
+
* in J3; this is the part of its surface this file actually reads, not a
|
|
11
|
+
* placeholder for the whole class.
|
|
12
|
+
*/
|
|
13
|
+
type PublishingNode = {
|
|
14
|
+
config: IKuzzleConfiguration["cluster"];
|
|
15
|
+
};
|
|
16
|
+
type BufferedMessage = {
|
|
17
|
+
topic: string;
|
|
18
|
+
/**
|
|
19
|
+
* protobuf's `finish()` returns a `Uint8Array`, not a `Buffer` — the JSDoc on
|
|
20
|
+
* `bufferSend` claimed `Buffer` for as long as the file was JavaScript.
|
|
21
|
+
*/
|
|
22
|
+
data: Uint8Array;
|
|
23
|
+
};
|
|
2
24
|
declare class ClusterPublisher {
|
|
25
|
+
private readonly node;
|
|
3
26
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
27
|
+
* ID of the last message sent. Read by `command.js` to answer a handshake,
|
|
28
|
+
* and by every `send*` caller that needs to name the message it just queued.
|
|
6
29
|
*/
|
|
7
|
-
constructor(node: ClusterNode);
|
|
8
|
-
node: ClusterNode;
|
|
9
30
|
lastMessageId: Long;
|
|
10
|
-
socket
|
|
11
|
-
protoroot
|
|
12
|
-
state
|
|
13
|
-
buffer
|
|
31
|
+
private socket;
|
|
32
|
+
private protoroot;
|
|
33
|
+
private state;
|
|
34
|
+
private buffer;
|
|
35
|
+
/**
|
|
36
|
+
* The last messages sent, oldest first, with contiguous ids: what
|
|
37
|
+
* `replay()` answers from. Bounded by `cluster.retransmitBuffer`.
|
|
38
|
+
*/
|
|
39
|
+
private readonly history;
|
|
40
|
+
private historyBytes;
|
|
41
|
+
private readonly dropHeartbeatEvery;
|
|
42
|
+
private heartbeatsSent;
|
|
43
|
+
/**
|
|
44
|
+
* @param node the cluster node this publisher belongs to
|
|
45
|
+
*/
|
|
46
|
+
constructor(node: PublishingNode);
|
|
14
47
|
init(): Promise<void>;
|
|
15
48
|
/**
|
|
16
49
|
* Publishes an event telling them that this node has created a new room
|
|
17
50
|
*
|
|
18
|
-
* @param
|
|
19
|
-
* @return
|
|
51
|
+
* @param normalized - Obtained with Koncorde.normalize()
|
|
52
|
+
* @return ID of the message sent to other nodes
|
|
20
53
|
*/
|
|
21
54
|
sendNewRealtimeRoom(normalized: NormalizedFilter): Long;
|
|
22
55
|
/**
|
|
23
56
|
* Publishes an event telling telling them that this node
|
|
24
57
|
* no longer has subscribers on the provided realtime room.
|
|
25
58
|
*
|
|
26
|
-
* @param
|
|
27
|
-
* @return
|
|
59
|
+
* @param roomId
|
|
60
|
+
* @return ID of the message sent to other nodes
|
|
28
61
|
*/
|
|
29
62
|
sendRemoveRealtimeRoom(roomId: string): Long;
|
|
30
63
|
/**
|
|
31
64
|
* Publishes an event telling that a room has one less subscriber
|
|
32
|
-
* @param
|
|
33
|
-
* @return
|
|
65
|
+
* @param roomId
|
|
66
|
+
* @return ID of the message sent to other nodes
|
|
34
67
|
*/
|
|
35
68
|
sendUnsubscription(roomId: string): Long;
|
|
36
69
|
/**
|
|
37
70
|
* Publishes an event telling that a new subscription has been made
|
|
38
71
|
* made to an existing room
|
|
39
72
|
*
|
|
40
|
-
* @param
|
|
41
|
-
* @return
|
|
73
|
+
* @param roomId
|
|
74
|
+
* @return Id of the message sent to other nodes
|
|
42
75
|
*/
|
|
43
76
|
sendSubscription(roomId: string): Long;
|
|
44
77
|
/**
|
|
45
78
|
* Publishes an event telling that a document notification must be
|
|
46
79
|
* propagated
|
|
47
80
|
*
|
|
48
|
-
* @param
|
|
49
|
-
* @param
|
|
50
|
-
* @return
|
|
81
|
+
* @param rooms - Koncorde rooms
|
|
82
|
+
* @param notification
|
|
83
|
+
* @return Id of the message sent to other nodes
|
|
51
84
|
*/
|
|
52
|
-
sendDocumentNotification(rooms:
|
|
85
|
+
sendDocumentNotification(rooms: string[], notification: DocumentNotification): Long;
|
|
53
86
|
/**
|
|
54
87
|
* Publishes an event telling that a user notification must be
|
|
55
88
|
* propagated
|
|
56
89
|
*
|
|
57
|
-
* @param
|
|
58
|
-
* @param
|
|
59
|
-
* @return
|
|
90
|
+
* @param room - Koncorde room
|
|
91
|
+
* @param notification
|
|
92
|
+
* @return Id of the message sent to other nodes
|
|
60
93
|
*/
|
|
61
94
|
sendUserNotification(room: string, notification: UserNotification): Long;
|
|
62
95
|
/**
|
|
63
96
|
* Publishes an event telling that a new authentication strategy has been
|
|
64
97
|
* dynamically added
|
|
65
98
|
*
|
|
66
|
-
* @param
|
|
67
|
-
* @param
|
|
68
|
-
* @param
|
|
69
|
-
* @return
|
|
99
|
+
* @param strategyName
|
|
100
|
+
* @param pluginName
|
|
101
|
+
* @param strategy
|
|
102
|
+
* @return Id of the message sent to other nodes
|
|
70
103
|
*/
|
|
71
|
-
sendNewAuthStrategy(strategyName: string, pluginName: string, strategy:
|
|
104
|
+
sendNewAuthStrategy(strategyName: string, pluginName: string, strategy: JSONObject): Long;
|
|
72
105
|
/**
|
|
73
106
|
* Publishes an event telling that a new authentication strategy has been
|
|
74
107
|
* dynamically added
|
|
75
108
|
*
|
|
76
|
-
* @param
|
|
77
|
-
* @param
|
|
78
|
-
* @
|
|
79
|
-
* @return {Long} Id of the message sent to other nodes
|
|
109
|
+
* @param strategyName
|
|
110
|
+
* @param pluginName
|
|
111
|
+
* @return Id of the message sent to other nodes
|
|
80
112
|
*/
|
|
81
113
|
sendRemoveAuthStrategy(strategyName: string, pluginName: string): Long;
|
|
82
114
|
/**
|
|
83
115
|
* Publishes an event telling other nodes to create an info dump
|
|
84
116
|
*
|
|
85
|
-
* @param
|
|
86
|
-
* @returns
|
|
117
|
+
* @param suffix - dump directory suffix name
|
|
118
|
+
* @returns ID of the message sent
|
|
87
119
|
*/
|
|
88
120
|
sendDumpRequest(suffix: string): Long;
|
|
89
121
|
/**
|
|
90
122
|
* Publishes an event about a new index being added
|
|
91
123
|
*
|
|
92
|
-
* @param
|
|
93
|
-
* @param
|
|
94
|
-
* @returns
|
|
124
|
+
* @param scope
|
|
125
|
+
* @param index
|
|
126
|
+
* @returns ID of the message sent
|
|
95
127
|
*/
|
|
96
128
|
sendAddIndex(scope: storeScopeEnum, index: string): Long;
|
|
97
129
|
/**
|
|
98
130
|
* Publishes an event about a new collection being added
|
|
99
131
|
*
|
|
100
|
-
* @param
|
|
101
|
-
* @param
|
|
102
|
-
* @param
|
|
103
|
-
* @returns
|
|
132
|
+
* @param scope
|
|
133
|
+
* @param index
|
|
134
|
+
* @param collection
|
|
135
|
+
* @returns ID of the message sent
|
|
104
136
|
*/
|
|
105
137
|
sendAddCollection(scope: storeScopeEnum, index: string, collection: string): Long;
|
|
106
138
|
/**
|
|
107
139
|
* Publishes an event about indexes been removed
|
|
108
140
|
*
|
|
109
|
-
* @param
|
|
110
|
-
* @param
|
|
111
|
-
* @returns
|
|
141
|
+
* @param scope
|
|
142
|
+
* @param indexes
|
|
143
|
+
* @returns ID of the message sent
|
|
112
144
|
*/
|
|
113
|
-
sendRemoveIndexes(scope: storeScopeEnum, indexes:
|
|
145
|
+
sendRemoveIndexes(scope: storeScopeEnum, indexes: string[]): Long;
|
|
114
146
|
/**
|
|
115
147
|
* Publishes an event about a collection been removed
|
|
116
148
|
*
|
|
117
|
-
* @param
|
|
118
|
-
* @param
|
|
119
|
-
* @param
|
|
120
|
-
* @returns
|
|
149
|
+
* @param scope
|
|
150
|
+
* @param index
|
|
151
|
+
* @param collection
|
|
152
|
+
* @returns ID of the message sent
|
|
121
153
|
*/
|
|
122
154
|
sendRemoveCollection(scope: storeScopeEnum, index: string, collection: string): Long;
|
|
123
155
|
/**
|
|
124
156
|
* Publishes an event about a cluster-wide event emission
|
|
125
157
|
*
|
|
126
|
-
* @param
|
|
127
|
-
* @param
|
|
128
|
-
* @returns
|
|
158
|
+
* @param event name
|
|
159
|
+
* @param payload - event payload
|
|
160
|
+
* @returns ID of the message sent
|
|
129
161
|
*/
|
|
130
|
-
sendClusterWideEvent(event: string, payload:
|
|
162
|
+
sendClusterWideEvent(event: string, payload: JSONObject): Long;
|
|
131
163
|
/**
|
|
132
164
|
* Publishes an event about shutdown
|
|
133
165
|
*
|
|
134
|
-
* @param
|
|
166
|
+
* @param nodeId - node ID
|
|
135
167
|
*
|
|
136
|
-
* @returns
|
|
168
|
+
* @returns ID of the message sent
|
|
137
169
|
*/
|
|
138
|
-
sendNodeShutdown(nodeId:
|
|
170
|
+
sendNodeShutdown(nodeId: string): Long;
|
|
139
171
|
/**
|
|
140
172
|
* Publishes an event about the node being in debug mode
|
|
141
|
-
* @param
|
|
173
|
+
* @param evictionPrevented
|
|
142
174
|
*
|
|
143
|
-
* @returns
|
|
175
|
+
* @returns ID of the message sent
|
|
144
176
|
*/
|
|
145
|
-
sendNodePreventEviction(evictionPrevented:
|
|
177
|
+
sendNodePreventEviction(evictionPrevented: boolean): Long;
|
|
146
178
|
/**
|
|
147
179
|
* Publishes an event about a node being evicted
|
|
148
180
|
*
|
|
149
|
-
* @param
|
|
150
|
-
* @param
|
|
151
|
-
* @param
|
|
181
|
+
* @param evictor node ID of the evictor
|
|
182
|
+
* @param nodeId - node ID of the node being evicted
|
|
183
|
+
* @param reason - reason of the eviction
|
|
152
184
|
*
|
|
153
|
-
* @returns
|
|
185
|
+
* @returns ID of the message sent
|
|
154
186
|
*/
|
|
155
|
-
sendNodeEvicted(evictor: string, nodeId:
|
|
187
|
+
sendNodeEvicted(evictor: string, nodeId: string, reason: string): Long;
|
|
156
188
|
/**
|
|
157
189
|
* Publishes an event about heartbeat
|
|
158
190
|
*
|
|
159
|
-
* @param
|
|
191
|
+
* @param address node sync address
|
|
160
192
|
*
|
|
161
|
-
* @returns
|
|
193
|
+
* @returns ID of the message sent
|
|
162
194
|
*/
|
|
163
195
|
sendHeartbeat(address: string): Long;
|
|
164
196
|
/**
|
|
@@ -166,23 +198,31 @@ declare class ClusterPublisher {
|
|
|
166
198
|
* Returns immediately, but the message to be sent migh be bufferized and send
|
|
167
199
|
* later.
|
|
168
200
|
*
|
|
169
|
-
* @param
|
|
170
|
-
* @param
|
|
171
|
-
* @returns
|
|
201
|
+
* @param topic name
|
|
202
|
+
* @param data
|
|
203
|
+
* @returns ID of the message sent
|
|
172
204
|
* @throws If the topic's protobuf type cannot be found
|
|
173
205
|
*/
|
|
174
|
-
send(topic: string, data:
|
|
206
|
+
send(topic: string, data: JSONObject): Long;
|
|
207
|
+
/**
|
|
208
|
+
* The messages sent with ids `from` to `to`, both included, in order — or
|
|
209
|
+
* `null` if any of them is no longer kept (or never was).
|
|
210
|
+
*/
|
|
211
|
+
replay(from: Long, to: Long): BufferedMessage[] | null;
|
|
212
|
+
/**
|
|
213
|
+
* Keeps a sent message for `replay()`, then trims the oldest ones until
|
|
214
|
+
* both of `cluster.retransmitBuffer`'s bounds hold. A bound of 0 keeps
|
|
215
|
+
* nothing: retransmission is disabled.
|
|
216
|
+
*/
|
|
217
|
+
private remember;
|
|
175
218
|
/**
|
|
176
219
|
* Sends the provided message, and then sends all pending ones waiting in
|
|
177
220
|
* the buffer, in order
|
|
178
221
|
*
|
|
179
|
-
* @param
|
|
180
|
-
* @param
|
|
181
|
-
* @return {void}
|
|
222
|
+
* @param topic
|
|
223
|
+
* @param data
|
|
182
224
|
*/
|
|
183
|
-
bufferSend(topic: string, data:
|
|
225
|
+
bufferSend(topic: string, data: Uint8Array): Promise<void>;
|
|
184
226
|
dispose(): Promise<void>;
|
|
185
227
|
}
|
|
186
|
-
|
|
187
|
-
import { Publisher } from "zeromq";
|
|
188
|
-
import protobuf = require("protobufjs");
|
|
228
|
+
export = ClusterPublisher;
|