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
|
@@ -76,7 +76,8 @@ class Headers {
|
|
|
76
76
|
if (!name) {
|
|
77
77
|
return;
|
|
78
78
|
}
|
|
79
|
-
|
|
79
|
+
const storedName = this.namesMap.get(name.toLowerCase());
|
|
80
|
+
return storedName === undefined ? undefined : this.headers[storedName];
|
|
80
81
|
}
|
|
81
82
|
removeHeader(name) {
|
|
82
83
|
assert.assertString("header name", name);
|
|
@@ -185,6 +186,11 @@ class RequestResponse {
|
|
|
185
186
|
get error() {
|
|
186
187
|
return this[_request].error;
|
|
187
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* Narrower than the getter on purpose: `setError` throws an InternalError on
|
|
191
|
+
* anything that is not an Error, so assigning null here has never cleared the
|
|
192
|
+
* error — `KuzzleRequest.clearError()` is what does that.
|
|
193
|
+
*/
|
|
188
194
|
set error(e) {
|
|
189
195
|
this[_request].setError(e);
|
|
190
196
|
}
|
|
@@ -249,13 +255,26 @@ class RequestResponse {
|
|
|
249
255
|
* Configure the response
|
|
250
256
|
*
|
|
251
257
|
* @param [options]
|
|
258
|
+
* @param [options.result] - Response result. Set only when the key is
|
|
259
|
+
* present, so `{ result: null }` clears it; the status is left to the
|
|
260
|
+
* `status` option, unlike the `result` setter, which resets it to 200
|
|
252
261
|
* @param [options.headers] - Additional protocol headers
|
|
253
|
-
* @param [options.status
|
|
262
|
+
* @param [options.status] - HTTP status code. When absent, a pending 102
|
|
263
|
+
* becomes 200 and any other status is kept
|
|
254
264
|
* @param [options.format] - Response format, standard or raw
|
|
255
265
|
*
|
|
266
|
+
* @throws {InternalError} if the result is an Error
|
|
267
|
+
* @throws {api.assert.forbidden_stream} if the result is an HttpStream and
|
|
268
|
+
* the protocol is not HTTP
|
|
269
|
+
*
|
|
256
270
|
* @returns void
|
|
257
271
|
*/
|
|
258
272
|
configure(options = {}) {
|
|
273
|
+
// First, so that a refused result (an Error, a stream outside HTTP)
|
|
274
|
+
// throws before anything else is changed.
|
|
275
|
+
if ("result" in options) {
|
|
276
|
+
this[_request].assignResult(options.result);
|
|
277
|
+
}
|
|
259
278
|
if (options.headers) {
|
|
260
279
|
this.setHeaders(options.headers);
|
|
261
280
|
for (const key of Object.keys(options.headers)) {
|
|
@@ -279,20 +298,32 @@ class RequestResponse {
|
|
|
279
298
|
}
|
|
280
299
|
/**
|
|
281
300
|
* Gets a header value (case-insensitive)
|
|
301
|
+
*
|
|
302
|
+
* A missing header gives `undefined`, as it always has. The declared
|
|
303
|
+
* `string | null` is v2.56.0's, which code compiled against it assigns to
|
|
304
|
+
* a `string | null` — so test a result with `== null`, which covers both.
|
|
282
305
|
*/
|
|
283
306
|
getHeader(name) {
|
|
284
307
|
return this[_headers].getHeader(name);
|
|
285
308
|
}
|
|
286
309
|
/**
|
|
287
310
|
* Deletes a header (case-insensitive)
|
|
311
|
+
*
|
|
312
|
+
* Answers `true`. Declared `any`, as v2.56.0 declared it: a `boolean`
|
|
313
|
+
* breaks code compiled against that, e.g. `return` of it from a function
|
|
314
|
+
* declared `void`.
|
|
288
315
|
*/
|
|
316
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- v2.56.0's public type, kept for compatibility
|
|
289
317
|
removeHeader(name) {
|
|
290
318
|
return this[_headers].removeHeader(name);
|
|
291
319
|
}
|
|
292
320
|
/**
|
|
293
321
|
* Sets a new array. Behaves the same as Node.js' HTTP response.setHeader
|
|
294
322
|
* method (@see https://nodejs.org/api/http.html#http_response_setheader_name_value)
|
|
323
|
+
*
|
|
324
|
+
* Answers `true`, declared `any` for the reason given on `removeHeader`.
|
|
295
325
|
*/
|
|
326
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- v2.56.0's public type, kept for compatibility
|
|
296
327
|
setHeader(name, value) {
|
|
297
328
|
return this[_headers].setHeader(name, value);
|
|
298
329
|
}
|
|
@@ -325,7 +356,7 @@ class RequestResponse {
|
|
|
325
356
|
}
|
|
326
357
|
const filteredHeaders = {};
|
|
327
358
|
for (const name of this[_userHeaders]) {
|
|
328
|
-
filteredHeaders[name] = this.getHeader(name);
|
|
359
|
+
filteredHeaders[name] = this[_headers].getHeader(name);
|
|
329
360
|
}
|
|
330
361
|
/**
|
|
331
362
|
* Remove headers that are not allowed to be sent to the client in the response's body
|
|
@@ -1,15 +1,100 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import Long from "long";
|
|
4
|
+
import type { SerializedState } from "./state";
|
|
5
|
+
import type { Activity, Decoded, FullStateResponse, HandshakeResponse } from "./protobuf/commandMessages";
|
|
6
|
+
/**
|
|
7
|
+
* What the command layer needs from the node that owns it. Declared
|
|
8
|
+
* structurally rather than as `ClusterNode` because `node.ts` imports this
|
|
9
|
+
* file: naming the class here would close the cycle.
|
|
10
|
+
*/
|
|
11
|
+
type CommandingNode = {
|
|
12
|
+
/**
|
|
13
|
+
* Only the two settings this file reads, not the whole cluster config: the
|
|
14
|
+
* real `IKuzzleConfiguration["cluster"]` satisfies this structurally, and
|
|
15
|
+
* stating it this way makes a widening of the coupling visible instead of
|
|
16
|
+
* silent.
|
|
17
|
+
*/
|
|
18
|
+
config: {
|
|
19
|
+
ports: {
|
|
20
|
+
command: number;
|
|
21
|
+
};
|
|
22
|
+
syncTimeout: number;
|
|
23
|
+
};
|
|
24
|
+
ip: string;
|
|
25
|
+
nodeId: string;
|
|
26
|
+
activity: Activity[];
|
|
27
|
+
/** Only `serialize()`: the command layer never mutates the state. */
|
|
28
|
+
fullState: {
|
|
29
|
+
serialize(): SerializedState;
|
|
30
|
+
};
|
|
31
|
+
publisher: {
|
|
32
|
+
lastMessageId: Long;
|
|
33
|
+
replay(from: Long, to: Long): Array<{
|
|
34
|
+
topic: string;
|
|
35
|
+
data: Uint8Array;
|
|
36
|
+
}> | null;
|
|
37
|
+
};
|
|
38
|
+
remoteNodes: Map<string, {
|
|
39
|
+
lastMessageId: Long;
|
|
40
|
+
}>;
|
|
41
|
+
addNode(id: string, ip: string, lastMessageId: Long): Promise<boolean>;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* The handshake responses `broadcastHandshake()` returns, keyed by node id. A
|
|
45
|
+
* `null` means the node never answered, and its caller disposes of it.
|
|
46
|
+
*/
|
|
47
|
+
type HandshakeResponses = Record<string, Decoded<HandshakeResponse> | null>;
|
|
2
48
|
declare class ClusterCommand {
|
|
49
|
+
private readonly node;
|
|
50
|
+
private _server;
|
|
51
|
+
private _protoroot;
|
|
52
|
+
/**
|
|
53
|
+
* The REP socket and the protobuf schema, both built by `init()`.
|
|
54
|
+
*
|
|
55
|
+
* Every method below runs on a command layer that has been initialised —
|
|
56
|
+
* `listen()` is started by `init()` itself, and the rest answer requests it
|
|
57
|
+
* received — and all eleven dereferenced them unchecked. Same shape as
|
|
58
|
+
* `Protocol.entryPoint`: said once, where it can fail.
|
|
59
|
+
*/
|
|
60
|
+
private get server();
|
|
61
|
+
private set server(value);
|
|
62
|
+
private get protoroot();
|
|
63
|
+
private set protoroot(value);
|
|
64
|
+
/**
|
|
65
|
+
* One of `stateEnum`'s values. `number` and not the literal union for the
|
|
66
|
+
* same reason as `subscriber.ts`'s `state`: `dispose()` moves it to `CLOSED`
|
|
67
|
+
* while `listen()` is awaiting a socket read, which control-flow narrowing
|
|
68
|
+
* does not model — it would report the deliberate re-check after the `await`
|
|
69
|
+
* as an impossible comparison.
|
|
70
|
+
*/
|
|
71
|
+
private state;
|
|
72
|
+
private readonly logger;
|
|
73
|
+
/**
|
|
74
|
+
* Whether `listen()`'s loop is running: `init()` starts it without awaiting
|
|
75
|
+
* it, and `dispose()` is what stops it.
|
|
76
|
+
*
|
|
77
|
+
* The flag itself stays private — its values are this file's business — but
|
|
78
|
+
* *whether the command layer is listening* is a legitimate question from
|
|
79
|
+
* outside, and it is the one the spec was reading `state` to answer. See
|
|
80
|
+
* docs/adr-001/steps/14-test-program-strict.md (M6).
|
|
81
|
+
*/
|
|
82
|
+
get running(): boolean;
|
|
3
83
|
/**
|
|
4
|
-
* @
|
|
5
|
-
* @param {ClusterNode} localNode
|
|
84
|
+
* @param localNode the cluster node this command layer belongs to
|
|
6
85
|
*/
|
|
7
|
-
constructor(localNode:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
86
|
+
constructor(localNode: CommandingNode);
|
|
87
|
+
/**
|
|
88
|
+
* Loads the wire schema, and nothing else.
|
|
89
|
+
*
|
|
90
|
+
* This class is two things: the **server** every node runs, and the
|
|
91
|
+
* **client** `getFullState()` and `broadcastHandshake()` use to call its
|
|
92
|
+
* peers. Both need the codec; only the first needs a bound port. `init()`
|
|
93
|
+
* did both, so a client-only use had to either bind a port it does not serve
|
|
94
|
+
* on — the port it means to *dial*, which is already taken — or reach into
|
|
95
|
+
* `protoroot`, which is what the spec did before step 14's M6.
|
|
96
|
+
*/
|
|
97
|
+
loadProtobuf(): Promise<void>;
|
|
13
98
|
init(): Promise<void>;
|
|
14
99
|
serve(): Promise<void>;
|
|
15
100
|
/**
|
|
@@ -17,57 +102,66 @@ declare class ClusterCommand {
|
|
|
17
102
|
* Do NOT await this method, it's meant to run indefinitely until the close()
|
|
18
103
|
* method is invoked.
|
|
19
104
|
* This method can (and should) never return a rejected promise.
|
|
20
|
-
*
|
|
21
|
-
* @returns {void}
|
|
22
105
|
*/
|
|
23
|
-
listen(): void
|
|
106
|
+
listen(): Promise<void>;
|
|
24
107
|
/**
|
|
25
108
|
* Closes opened sockets and marks this server as closed.
|
|
26
|
-
* @return {void}
|
|
27
109
|
*/
|
|
28
110
|
dispose(): void;
|
|
29
111
|
/**
|
|
30
112
|
* Sends back the full state to the requesting node
|
|
31
|
-
* @return {void}
|
|
32
113
|
*/
|
|
33
|
-
sendFullState(): void
|
|
114
|
+
sendFullState(): Promise<void>;
|
|
34
115
|
/**
|
|
35
116
|
* Handles a handshake request from a remote node
|
|
36
|
-
* @return {void}
|
|
37
117
|
*/
|
|
38
|
-
handleHandshake(data:
|
|
118
|
+
handleHandshake(data: Buffer): Promise<void>;
|
|
119
|
+
/**
|
|
120
|
+
* Answers a peer that missed messages of this node's sync stream with those
|
|
121
|
+
* messages, as they were published — or with DISCARDED when they are no
|
|
122
|
+
* longer kept, which the peer treats as it treats a node that predates
|
|
123
|
+
* retransmission: it evicts itself (#2785).
|
|
124
|
+
*/
|
|
125
|
+
handleRetransmit(data: Buffer): Promise<void>;
|
|
126
|
+
/**
|
|
127
|
+
* Asks the node at `ip` for the messages of its sync stream with ids `from`
|
|
128
|
+
* to `to`, both included.
|
|
129
|
+
*
|
|
130
|
+
* @returns the messages in order, as `[topic, data]` frames, or `null` if
|
|
131
|
+
* the node could not provide all of them: it no longer keeps them,
|
|
132
|
+
* predates retransmission (it answers DISCARDED to an unknown
|
|
133
|
+
* topic), or did not answer within `cluster.syncTimeout`.
|
|
134
|
+
*/
|
|
135
|
+
requestRetransmit(ip: string, from: Long, to: Long): Promise<Array<[topic: string, data: Buffer]> | null>;
|
|
39
136
|
/**
|
|
40
137
|
* Request the full state from ONE of the remote nodes of the cluster, AT
|
|
41
138
|
* RANDOM (necessary to make sure we distribute the full state serialization
|
|
42
139
|
* load across all nodes)
|
|
43
140
|
*
|
|
44
|
-
* @
|
|
45
|
-
* @return {Object|null} Returns the fetched full state, or null if no node answered
|
|
141
|
+
* @returns the fetched full state, or null if no node answered
|
|
46
142
|
*/
|
|
47
|
-
getFullState(nodes: Array<
|
|
143
|
+
getFullState(nodes: Array<{
|
|
144
|
+
id: string;
|
|
145
|
+
ip: string;
|
|
146
|
+
}>): Promise<Decoded<FullStateResponse> | null>;
|
|
48
147
|
/**
|
|
49
148
|
* Sends a handshake request to other remote nodes and process their response
|
|
50
|
-
* Returns an object with the following structure:
|
|
51
149
|
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* [nodeId]: null, // no response received, node is probably dead
|
|
55
|
-
* }
|
|
56
|
-
*
|
|
57
|
-
* @param {Array.<IdCard>} nodes
|
|
58
|
-
* @return {Object}
|
|
150
|
+
* @returns one entry per node: its decoded response, or `null` if it never
|
|
151
|
+
* answered (the node is probably dead)
|
|
59
152
|
*/
|
|
60
|
-
broadcastHandshake(nodes: Array<
|
|
153
|
+
broadcastHandshake(nodes: Array<{
|
|
154
|
+
id: string;
|
|
155
|
+
ip: string;
|
|
156
|
+
}>): Promise<HandshakeResponses>;
|
|
61
157
|
/**
|
|
62
158
|
* Sends a handshake payload to a remote node, and waits for its response
|
|
63
159
|
*
|
|
64
|
-
* @param
|
|
65
|
-
* @param
|
|
66
|
-
* @param
|
|
67
|
-
* @
|
|
68
|
-
* response was received
|
|
160
|
+
* @param id remote node ID
|
|
161
|
+
* @param ip remote node IP address
|
|
162
|
+
* @param payload handshake payload (protobuf encoded)
|
|
163
|
+
* @returns the handshake encoded response, or null if none was received
|
|
69
164
|
*/
|
|
70
|
-
_sendSingleHandshake(id: string, ip: string, payload:
|
|
165
|
+
_sendSingleHandshake(id: string, ip: string, payload: Uint8Array): Promise<Buffer | null>;
|
|
71
166
|
}
|
|
72
|
-
|
|
73
|
-
import protobuf = require("protobufjs");
|
|
167
|
+
export = ClusterCommand;
|