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
|
@@ -1,19 +1,36 @@
|
|
|
1
|
-
|
|
1
|
+
import type { Client } from "sdk-es7";
|
|
2
|
+
import type { JSONObject } from "../../../types/JSONObject";
|
|
3
|
+
import { KuzzleError } from "../../../kerror/errors";
|
|
4
|
+
/**
|
|
5
|
+
* What the Elasticsearch client throws: an Error, carrying the server's
|
|
6
|
+
* response on `meta` for the ones that came back from the cluster. `catch`
|
|
7
|
+
* hands callers `unknown`, and this is the shape every reader below assumes.
|
|
8
|
+
*/
|
|
9
|
+
type ThrownESError = Error & {
|
|
10
|
+
meta?: JSONObject;
|
|
11
|
+
body?: JSONObject;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* One that came back from the cluster rather than from the client itself, so
|
|
15
|
+
* its `meta` is present — which is what `formatESError` checks before handing
|
|
16
|
+
* it to the handlers below.
|
|
17
|
+
*/
|
|
18
|
+
type ThrownESResponseError = ThrownESError & {
|
|
19
|
+
meta: JSONObject;
|
|
20
|
+
};
|
|
2
21
|
declare class ESWrapper {
|
|
3
|
-
|
|
4
|
-
client:
|
|
22
|
+
client: Client;
|
|
23
|
+
constructor(client: Client);
|
|
5
24
|
/**
|
|
6
25
|
* Transforms raw ES errors into a normalized Kuzzle version
|
|
7
26
|
*
|
|
8
|
-
* @param
|
|
9
|
-
* @returns {KuzzleError}
|
|
27
|
+
* @param error
|
|
10
28
|
*/
|
|
11
|
-
formatESError(error:
|
|
12
|
-
reject(error:
|
|
13
|
-
_handleConflictError(error:
|
|
14
|
-
_handleNotFoundError(error:
|
|
15
|
-
_handleBadRequestError(error:
|
|
16
|
-
_handleUnknownError(error:
|
|
29
|
+
formatESError(error: unknown): KuzzleError;
|
|
30
|
+
reject(error: unknown): Promise<never>;
|
|
31
|
+
_handleConflictError(error: ThrownESResponseError, message: string): KuzzleError;
|
|
32
|
+
_handleNotFoundError(error: ThrownESResponseError, message: string): KuzzleError;
|
|
33
|
+
_handleBadRequestError(error: ThrownESResponseError, message: string): KuzzleError;
|
|
34
|
+
_handleUnknownError(error: ThrownESError, message: string): KuzzleError;
|
|
17
35
|
}
|
|
18
|
-
|
|
19
|
-
import Bluebird = require("bluebird");
|
|
36
|
+
export = ESWrapper;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*
|
|
2
3
|
* Kuzzle, a backend software, self-hostable and ready to use
|
|
3
4
|
* to power modern apps
|
|
@@ -18,18 +19,26 @@
|
|
|
18
19
|
* See the License for the specific language governing permissions and
|
|
19
20
|
* limitations under the License.
|
|
20
21
|
*/
|
|
22
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
+
};
|
|
21
25
|
/* eslint sort-keys: 0 */
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const
|
|
26
|
+
const node_util_1 = require("node:util");
|
|
27
|
+
const bluebird_1 = __importDefault(require("bluebird"));
|
|
28
|
+
const get_1 = __importDefault(require("lodash/get"));
|
|
29
|
+
const sdk_es7_1 = require("sdk-es7");
|
|
30
|
+
const errors_1 = require("../../../kerror/errors");
|
|
31
|
+
const debug_1 = __importDefault(require("../../../util/debug"));
|
|
32
|
+
const kerror_1 = require("../../../kerror");
|
|
33
|
+
const debug = (0, debug_1.default)("kuzzle:services:storage:ESCommon");
|
|
34
|
+
const kerror = (0, kerror_1.wrap)("services", "storage");
|
|
35
|
+
function isResponseError(error) {
|
|
36
|
+
return Boolean(error.meta);
|
|
37
|
+
}
|
|
29
38
|
const errorMessagesMapping = [
|
|
30
39
|
{
|
|
31
40
|
regex: /^\[es_rejected_execution_exception] rejected execution .*? on EsThreadPoolExecutor\[(.*?), .*$/,
|
|
32
|
-
|
|
41
|
+
subcode: "too_many_operations",
|
|
33
42
|
getPlaceholders: (esError, matches) => [matches[1]],
|
|
34
43
|
},
|
|
35
44
|
{
|
|
@@ -89,7 +98,7 @@ const errorMessagesMapping = [
|
|
|
89
98
|
},
|
|
90
99
|
{
|
|
91
100
|
// [index_not_found_exception] no such index, with { resource.type=index_or_alias & resource.id=foso & index=foso }
|
|
92
|
-
regex: /^no such index \[([%&])(
|
|
101
|
+
regex: /^no such index \[([%&])([^\]]*)\.([^.\]]*)\]$/,
|
|
93
102
|
subcode: "unknown_collection",
|
|
94
103
|
getPlaceholders: (esError, matches) => [matches[2], matches[3]],
|
|
95
104
|
},
|
|
@@ -122,9 +131,9 @@ const errorMessagesMapping = [
|
|
|
122
131
|
subcode: "strict_mapping_rejection",
|
|
123
132
|
getPlaceholders: (esError, matches) => {
|
|
124
133
|
// "/%26index.collection/_doc"
|
|
125
|
-
const esPath = esError
|
|
134
|
+
const esPath = (0, get_1.default)(esError, "meta.meta.request.params.path", "");
|
|
126
135
|
// keep only "index"
|
|
127
|
-
const index = esPath.split(".")[0]
|
|
136
|
+
const index = esPath.split(".")[0]?.split("%26")[1];
|
|
128
137
|
// keep only "collection"
|
|
129
138
|
const collection = esPath.substr(esPath.indexOf(".") + 1).split("/")[0];
|
|
130
139
|
return [matches[1], index, collection];
|
|
@@ -150,47 +159,58 @@ class ESWrapper {
|
|
|
150
159
|
/**
|
|
151
160
|
* Transforms raw ES errors into a normalized Kuzzle version
|
|
152
161
|
*
|
|
153
|
-
* @param
|
|
154
|
-
* @returns {KuzzleError}
|
|
162
|
+
* @param error
|
|
155
163
|
*/
|
|
156
164
|
formatESError(error) {
|
|
157
|
-
if (error instanceof KuzzleError) {
|
|
165
|
+
if (error instanceof errors_1.KuzzleError) {
|
|
158
166
|
return error;
|
|
159
167
|
}
|
|
168
|
+
// `catch` answers `unknown`, and a rejected client promise can in principle
|
|
169
|
+
// carry anything. Everything below reads an Error's shape, so that is what
|
|
170
|
+
// it gets — without asserting that whatever arrived already was one.
|
|
171
|
+
// `inspect`, not `String`: a thrown object stringifies to "[object
|
|
172
|
+
// Object]", which is the one thing the message must not say.
|
|
173
|
+
const esError = error instanceof Error ? error : new Error((0, node_util_1.inspect)(error));
|
|
160
174
|
global.kuzzle.emit("services:storage:error", {
|
|
161
|
-
message: `Elasticsearch Client error: ${
|
|
175
|
+
message: `Elasticsearch Client error: ${esError.message}`,
|
|
162
176
|
// /!\ not all ES error classes have a "meta" property
|
|
163
|
-
meta:
|
|
164
|
-
stack:
|
|
177
|
+
meta: esError.meta || null,
|
|
178
|
+
stack: esError.stack,
|
|
165
179
|
});
|
|
166
|
-
if (error instanceof
|
|
180
|
+
if (error instanceof sdk_es7_1.errors.NoLivingConnectionsError) {
|
|
167
181
|
throw kerror.get("not_connected");
|
|
168
182
|
}
|
|
169
|
-
const message =
|
|
183
|
+
const message = (0, get_1.default)(esError, "meta.body.error.reason", esError.message);
|
|
170
184
|
// Try to match a known elasticsearch error
|
|
171
185
|
for (const betterError of errorMessagesMapping) {
|
|
172
186
|
const matches = message.match(betterError.regex);
|
|
173
187
|
if (matches) {
|
|
174
|
-
return kerror.get(betterError.subcode, ...betterError.getPlaceholders(
|
|
188
|
+
return kerror.get(betterError.subcode, ...betterError.getPlaceholders(esError, matches));
|
|
175
189
|
}
|
|
176
190
|
}
|
|
177
191
|
// Try to match using error codes
|
|
178
|
-
|
|
179
|
-
|
|
192
|
+
// `meta` is what tells a cluster response from a client-side failure, so
|
|
193
|
+
// the three handlers below are declared to require it rather than
|
|
194
|
+
// re-checking it four times each. The error itself is handed over, never a
|
|
195
|
+
// copy: the client's `ResponseError` exposes `body` as a prototype getter,
|
|
196
|
+
// which a spread does not carry — and without it every missing document
|
|
197
|
+
// answered `unexpected_not_found` instead of `not_found`.
|
|
198
|
+
if (isResponseError(esError)) {
|
|
199
|
+
switch (esError.meta.statusCode) {
|
|
180
200
|
case 400:
|
|
181
|
-
return this._handleBadRequestError(
|
|
201
|
+
return this._handleBadRequestError(esError, message);
|
|
182
202
|
case 404:
|
|
183
|
-
return this._handleNotFoundError(
|
|
203
|
+
return this._handleNotFoundError(esError, message);
|
|
184
204
|
case 409:
|
|
185
|
-
return this._handleConflictError(
|
|
205
|
+
return this._handleConflictError(esError, message);
|
|
186
206
|
default:
|
|
187
207
|
break;
|
|
188
208
|
}
|
|
189
209
|
}
|
|
190
|
-
return this._handleUnknownError(
|
|
210
|
+
return this._handleUnknownError(esError, message);
|
|
191
211
|
}
|
|
192
212
|
reject(error) {
|
|
193
|
-
return
|
|
213
|
+
return bluebird_1.default.reject(this.formatESError(error));
|
|
194
214
|
}
|
|
195
215
|
_handleConflictError(error, message) {
|
|
196
216
|
debug('unhandled "Conflict" elasticsearch error: %a', error);
|
|
@@ -198,46 +218,47 @@ class ESWrapper {
|
|
|
198
218
|
}
|
|
199
219
|
_handleNotFoundError(error, message) {
|
|
200
220
|
let errorMessage = message;
|
|
201
|
-
|
|
221
|
+
const indice = (0, get_1.default)(error, "body._index");
|
|
222
|
+
if (!indice) {
|
|
202
223
|
return kerror.get("unexpected_not_found", errorMessage);
|
|
203
224
|
}
|
|
204
225
|
// _index= "&nyc-open-data.yellow-taxi"
|
|
205
|
-
const index =
|
|
206
|
-
const collection =
|
|
226
|
+
const index = indice.split(".")[0]?.slice(1);
|
|
227
|
+
const collection = indice.split(".")[1];
|
|
207
228
|
// 404 on a GET document
|
|
208
|
-
if (error.body
|
|
229
|
+
if (error.body?.found === false) {
|
|
209
230
|
return kerror.get("not_found", error.body._id, index, collection);
|
|
210
231
|
}
|
|
211
232
|
// 404 on DELETE document (ES error payloads are so cool!)
|
|
212
233
|
if (error.meta.body._id) {
|
|
213
234
|
return kerror.get("not_found", error.meta.body._id, index, collection);
|
|
214
235
|
}
|
|
215
|
-
if (error.meta.body
|
|
236
|
+
if (error.meta.body?.error) {
|
|
216
237
|
errorMessage = error.meta.body.error
|
|
217
238
|
? `${error.meta.body.error.reason}: ${error.meta.body.error["resource.id"]}`
|
|
218
|
-
: `${error.message}: ${error.body
|
|
239
|
+
: `${error.message}: ${error.body?._id}`;
|
|
219
240
|
}
|
|
220
241
|
debug('unhandled "NotFound" elasticsearch error: %a', error);
|
|
221
242
|
return kerror.get("unexpected_not_found", errorMessage);
|
|
222
243
|
}
|
|
223
244
|
_handleBadRequestError(error, message) {
|
|
224
245
|
let errorMessage = message;
|
|
225
|
-
if (error.meta.body
|
|
246
|
+
if (error.meta.body?.error) {
|
|
226
247
|
errorMessage = error.meta.body.error.root_cause
|
|
227
248
|
? error.meta.body.error.root_cause[0].reason
|
|
228
249
|
: error.meta.body.error.reason;
|
|
229
250
|
// empty query throws exception with ES 7
|
|
230
251
|
if (error.meta.body.error.type === "parsing_exception" &&
|
|
231
|
-
|
|
252
|
+
(0, get_1.default)(error, "meta.body.error.caused_by.type") ===
|
|
232
253
|
"illegal_argument_exception") {
|
|
233
254
|
errorMessage = error.meta.body.error.caused_by.reason;
|
|
234
255
|
}
|
|
235
256
|
}
|
|
236
|
-
debug('unhandled "BadRequest" elasticsearch error: %a',
|
|
257
|
+
debug('unhandled "BadRequest" elasticsearch error: %a', (0, get_1.default)(error, "meta.body.error.reason", error.message));
|
|
237
258
|
return kerror.get("unexpected_bad_request", errorMessage);
|
|
238
259
|
}
|
|
239
260
|
_handleUnknownError(error, message) {
|
|
240
|
-
debug("unhandled elasticsearch error (unhandled type: %s): %o",
|
|
261
|
+
debug("unhandled elasticsearch error (unhandled type: %s): %o", (0, get_1.default)(error, "error.meta.statusCode", "<no status code>"), error);
|
|
241
262
|
return kerror.get("unexpected_error", message);
|
|
242
263
|
}
|
|
243
264
|
}
|