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
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { CuratedFieldSpecification, ErrorMessages, RawSpecification, StructuredFieldSpecification, VerboseErrorMessages } from "./specification";
|
|
2
|
+
/**
|
|
3
|
+
* Narrows `object` to a plain object holding none but the allowed properties.
|
|
4
|
+
*/
|
|
5
|
+
export declare function checkAllowedProperties(object: unknown, allowedProperties: string[]): object is Record<string, unknown>;
|
|
6
|
+
/**
|
|
7
|
+
* Assembles curated fields, grouped by depth, into the tree the validator
|
|
8
|
+
* walks. Depth counting starts at 1.
|
|
9
|
+
*
|
|
10
|
+
* @throws {PreconditionError}
|
|
11
|
+
*/
|
|
12
|
+
export declare function curateStructuredFields(typeAllowsChildren: string[], fields: Record<number, CuratedFieldSpecification[]>, maxDepth: number): StructuredFieldSpecification;
|
|
13
|
+
/**
|
|
14
|
+
* Walks a field's path down the tree and answers the node that must hold it.
|
|
15
|
+
*
|
|
16
|
+
* @throws {PreconditionError} when an intermediate node is missing
|
|
17
|
+
*/
|
|
18
|
+
export declare function getParent(structuredFields: StructuredFieldSpecification, fieldPath: string[]): StructuredFieldSpecification;
|
|
19
|
+
/**
|
|
20
|
+
* Files a validation message, or throws it.
|
|
21
|
+
*
|
|
22
|
+
* When `structured` holds, the message is hung off `errorHolder` at the field's
|
|
23
|
+
* own path so the caller can report it in place; when it does not, the first
|
|
24
|
+
* message throws and the holder is never written to.
|
|
25
|
+
*
|
|
26
|
+
* @throws {BadRequestError} when `structured` is false
|
|
27
|
+
*/
|
|
28
|
+
export declare function storeErrorMessage(errorContext: string | string[], errorHolder: VerboseErrorMessages, message: string): void;
|
|
29
|
+
export declare function throwErrorMessage(errorContext: string | string[], message: string): never;
|
|
30
|
+
export declare function manageErrorMessage(errorContext: string | string[], errorHolder: ErrorMessages, message: string, structured: boolean): void;
|
|
31
|
+
export declare function getValidationConfiguration(): Promise<RawSpecification>;
|
|
@@ -0,0 +1,190 @@
|
|
|
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
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
23
|
+
if (k2 === undefined) k2 = k;
|
|
24
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
25
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
26
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
27
|
+
}
|
|
28
|
+
Object.defineProperty(o, k2, desc);
|
|
29
|
+
}) : (function(o, m, k, k2) {
|
|
30
|
+
if (k2 === undefined) k2 = k;
|
|
31
|
+
o[k2] = m[k];
|
|
32
|
+
}));
|
|
33
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
34
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
35
|
+
}) : function(o, v) {
|
|
36
|
+
o["default"] = v;
|
|
37
|
+
});
|
|
38
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
39
|
+
if (mod && mod.__esModule) return mod;
|
|
40
|
+
var result = {};
|
|
41
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
42
|
+
__setModuleDefault(result, mod);
|
|
43
|
+
return result;
|
|
44
|
+
};
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.getValidationConfiguration = exports.manageErrorMessage = exports.throwErrorMessage = exports.storeErrorMessage = exports.getParent = exports.curateStructuredFields = exports.checkAllowedProperties = void 0;
|
|
47
|
+
const kerror = __importStar(require("../../kerror"));
|
|
48
|
+
const safeObject_1 = require("../../util/safeObject");
|
|
49
|
+
const specification_1 = require("./specification");
|
|
50
|
+
const assertionError = kerror.wrap("validation", "assert");
|
|
51
|
+
/**
|
|
52
|
+
* Narrows `object` to a plain object holding none but the allowed properties.
|
|
53
|
+
*/
|
|
54
|
+
function checkAllowedProperties(object, allowedProperties) {
|
|
55
|
+
if (!(0, safeObject_1.isPlainObject)(object)) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
return !Object.keys(object).some((propertyName) => !allowedProperties.includes(propertyName));
|
|
59
|
+
}
|
|
60
|
+
exports.checkAllowedProperties = checkAllowedProperties;
|
|
61
|
+
/**
|
|
62
|
+
* Assembles curated fields, grouped by depth, into the tree the validator
|
|
63
|
+
* walks. Depth counting starts at 1.
|
|
64
|
+
*
|
|
65
|
+
* @throws {PreconditionError}
|
|
66
|
+
*/
|
|
67
|
+
function curateStructuredFields(typeAllowsChildren, fields, maxDepth) {
|
|
68
|
+
const structuredFields = {
|
|
69
|
+
children: {},
|
|
70
|
+
root: true,
|
|
71
|
+
};
|
|
72
|
+
for (let i = 1; i <= maxDepth; i++) {
|
|
73
|
+
const sameDepth = fields[i];
|
|
74
|
+
if (sameDepth === undefined) {
|
|
75
|
+
throw assertionError.get("missing_nested_spec");
|
|
76
|
+
}
|
|
77
|
+
sameDepth.forEach((field) => {
|
|
78
|
+
const parent = getParent(structuredFields, field.path),
|
|
79
|
+
// `path` is a field's key split on "/", so it always has a last
|
|
80
|
+
// segment; the fallback is what makes that readable to the compiler.
|
|
81
|
+
childKey = field.path.at(-1) ?? "";
|
|
82
|
+
if (!parent.root && !typeAllowsChildren.includes(parent.type ?? "")) {
|
|
83
|
+
throw assertionError.get("unexpected_children", parent.type);
|
|
84
|
+
}
|
|
85
|
+
const children = (parent.children ?? (parent.children = {}));
|
|
86
|
+
children[childKey] = field;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return structuredFields;
|
|
90
|
+
}
|
|
91
|
+
exports.curateStructuredFields = curateStructuredFields;
|
|
92
|
+
/**
|
|
93
|
+
* Walks a field's path down the tree and answers the node that must hold it.
|
|
94
|
+
*
|
|
95
|
+
* @throws {PreconditionError} when an intermediate node is missing
|
|
96
|
+
*/
|
|
97
|
+
function getParent(structuredFields, fieldPath) {
|
|
98
|
+
if (fieldPath.length === 1) {
|
|
99
|
+
return structuredFields;
|
|
100
|
+
}
|
|
101
|
+
let pointer = structuredFields;
|
|
102
|
+
for (const segment of fieldPath.slice(0, -1)) {
|
|
103
|
+
const child = pointer.children?.[segment];
|
|
104
|
+
if (child === undefined) {
|
|
105
|
+
throw assertionError.get("missing_parent", fieldPath.join("."));
|
|
106
|
+
}
|
|
107
|
+
pointer = child;
|
|
108
|
+
}
|
|
109
|
+
return pointer;
|
|
110
|
+
}
|
|
111
|
+
exports.getParent = getParent;
|
|
112
|
+
/**
|
|
113
|
+
* Files a validation message, or throws it.
|
|
114
|
+
*
|
|
115
|
+
* When `structured` holds, the message is hung off `errorHolder` at the field's
|
|
116
|
+
* own path so the caller can report it in place; when it does not, the first
|
|
117
|
+
* message throws and the holder is never written to.
|
|
118
|
+
*
|
|
119
|
+
* @throws {BadRequestError} when `structured` is false
|
|
120
|
+
*/
|
|
121
|
+
function storeErrorMessage(errorContext, errorHolder, message) {
|
|
122
|
+
if (errorContext === "document") {
|
|
123
|
+
const documentScope = (errorHolder.documentScope ?? (errorHolder.documentScope = []));
|
|
124
|
+
documentScope.push(message);
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
let pointer = (errorHolder.fieldScope ?? (errorHolder.fieldScope = {}));
|
|
128
|
+
for (const segment of errorContext) {
|
|
129
|
+
const children = (pointer.children ?? (pointer.children = {}));
|
|
130
|
+
pointer = children[segment] ?? (children[segment] = {});
|
|
131
|
+
}
|
|
132
|
+
const messages = (pointer.messages ?? (pointer.messages = []));
|
|
133
|
+
messages.push(message);
|
|
134
|
+
}
|
|
135
|
+
exports.storeErrorMessage = storeErrorMessage;
|
|
136
|
+
function throwErrorMessage(errorContext, message) {
|
|
137
|
+
if (errorContext === "document") {
|
|
138
|
+
throw kerror.get("validation", "check", "failed_document", message);
|
|
139
|
+
}
|
|
140
|
+
// Everything that is not the "document" literal is a field path.
|
|
141
|
+
throw kerror.get("validation", "check", "failed_field", Array.isArray(errorContext) ? errorContext.join(".") : errorContext, message);
|
|
142
|
+
}
|
|
143
|
+
exports.throwErrorMessage = throwErrorMessage;
|
|
144
|
+
function manageErrorMessage(errorContext, errorHolder, message, structured) {
|
|
145
|
+
if (!structured) {
|
|
146
|
+
throwErrorMessage(errorContext, message);
|
|
147
|
+
}
|
|
148
|
+
// `structured` and the holder's shape are the same fact: `validate` builds an
|
|
149
|
+
// object exactly when `verbose` holds, and a list when it does not. The
|
|
150
|
+
// narrowing is what says so; the branch cannot be taken.
|
|
151
|
+
if (Array.isArray(errorHolder)) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
storeErrorMessage(errorContext, errorHolder, message);
|
|
155
|
+
}
|
|
156
|
+
exports.manageErrorMessage = manageErrorMessage;
|
|
157
|
+
/**
|
|
158
|
+
* Reads every stored specification, falling back to the one in the
|
|
159
|
+
* configuration when the internal index holds none — the database is not
|
|
160
|
+
* necessarily prepared yet when this first runs.
|
|
161
|
+
*/
|
|
162
|
+
function collectStoredSpecification(validation, hit) {
|
|
163
|
+
var _a;
|
|
164
|
+
const { _id, _source } = hit;
|
|
165
|
+
const collectionName = `${_id.split("#")[0]}/${_id.split("#")[1]}`;
|
|
166
|
+
for (const required of ["index", "collection", "validation"]) {
|
|
167
|
+
if (!(0, safeObject_1.get)(_source, required)) {
|
|
168
|
+
throw assertionError.get("incorrect_validation_format", collectionName, required);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
const indexValidation = (validation[_a = _source.index] ?? (validation[_a] = {}));
|
|
172
|
+
indexValidation[_source.collection] = _source.validation;
|
|
173
|
+
}
|
|
174
|
+
function getValidationConfiguration() {
|
|
175
|
+
return global.kuzzle.internalIndex
|
|
176
|
+
.search("validations", {}, { from: 0, size: 1000 })
|
|
177
|
+
.then((result) => {
|
|
178
|
+
if (!result || !Array.isArray(result.hits) || result.hits.length === 0) {
|
|
179
|
+
// We can't wait prepareDb as it runs outside of the rest of the start
|
|
180
|
+
return (0, specification_1.configuredSpecifications)() || {};
|
|
181
|
+
}
|
|
182
|
+
const validation = {};
|
|
183
|
+
for (const hit of result.hits) {
|
|
184
|
+
collectStoredSpecification(validation, hit);
|
|
185
|
+
}
|
|
186
|
+
return validation;
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
exports.getValidationConfiguration = getValidationConfiguration;
|
|
190
|
+
//# sourceMappingURL=validationUtils.js.map
|
|
@@ -93,12 +93,6 @@
|
|
|
93
93
|
"code": 15,
|
|
94
94
|
"message": "Plugin \"%s\" not found.%s",
|
|
95
95
|
"class": "NotFoundError"
|
|
96
|
-
},
|
|
97
|
-
"invalid_openapi_schema": {
|
|
98
|
-
"description": "OpenAPI specification is invalid",
|
|
99
|
-
"code": 16,
|
|
100
|
-
"message": "Invalid OpenAPI specification: \"%s\"",
|
|
101
|
-
"class": "PluginImplementationError"
|
|
102
96
|
}
|
|
103
97
|
}
|
|
104
98
|
},
|
|
@@ -349,12 +343,6 @@
|
|
|
349
343
|
"code": 9,
|
|
350
344
|
"message": "Unexpected return value from action \"%s:%s\": expected a Promise",
|
|
351
345
|
"class": "PluginImplementationError"
|
|
352
|
-
},
|
|
353
|
-
"invalid_openapi_schema": {
|
|
354
|
-
"description": "OpenAPI specification is invalid",
|
|
355
|
-
"code": 10,
|
|
356
|
-
"message": "Invalid OpenAPI specification in \"%s:%s\", %s : %s",
|
|
357
|
-
"class": "PluginImplementationError"
|
|
358
346
|
}
|
|
359
347
|
}
|
|
360
348
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ErrorDefinition } from "../../types/errors/ErrorDefinition";
|
|
1
|
+
import type { ErrorDefinition } from "../../types/errors/ErrorDefinition";
|
|
2
2
|
type ErrorEntry = Omit<ErrorDefinition, "description"> & {
|
|
3
3
|
description?: string;
|
|
4
4
|
deprecated?: string;
|
|
@@ -15,7 +15,17 @@ export type Domains = Record<string, Domain>;
|
|
|
15
15
|
type CheckOptions = {
|
|
16
16
|
plugin?: boolean;
|
|
17
17
|
};
|
|
18
|
-
declare const domains:
|
|
18
|
+
declare const domains: {
|
|
19
|
+
api: Domain;
|
|
20
|
+
cluster: Domain;
|
|
21
|
+
core: Domain;
|
|
22
|
+
network: Domain;
|
|
23
|
+
plugin: Domain;
|
|
24
|
+
protocol: Domain;
|
|
25
|
+
security: Domain;
|
|
26
|
+
services: Domain;
|
|
27
|
+
validation: Domain;
|
|
28
|
+
};
|
|
19
29
|
declare function checkDomains(errorCodesFiles: Domains, options?: CheckOptions): void;
|
|
20
30
|
declare function loadPluginsErrors(pluginManifest: {
|
|
21
31
|
errors: Record<string, ErrorEntry>;
|
|
@@ -59,6 +59,9 @@ const _6_protocol_json_1 = __importDefault(require("./6-protocol.json"));
|
|
|
59
59
|
const _7_security_json_1 = __importDefault(require("./7-security.json"));
|
|
60
60
|
const _1_services_json_1 = __importDefault(require("./1-services.json"));
|
|
61
61
|
const _5_validation_json_1 = __importDefault(require("./5-validation.json"));
|
|
62
|
+
// `satisfies`, not an annotation: the nine domains are known, and
|
|
63
|
+
// `loadPluginsErrors` reaches into `domains.plugin` — which, through a
|
|
64
|
+
// `Record<string, Domain>`, is `Domain | undefined`.
|
|
62
65
|
const domains = {
|
|
63
66
|
api: _2_api_json_1.default,
|
|
64
67
|
cluster: _8_cluster_json_1.default,
|
|
@@ -94,8 +97,7 @@ function checkErrors(subdomain, domain, options) {
|
|
|
94
97
|
}
|
|
95
98
|
function checkSubdomains(domain, options) {
|
|
96
99
|
const subdomainCodes = new Set();
|
|
97
|
-
for (const subdomainName of Object.
|
|
98
|
-
const subdomain = domain.subDomains[subdomainName];
|
|
100
|
+
for (const [subdomainName, subdomain] of Object.entries(domain.subDomains)) {
|
|
99
101
|
if (!options.plugin) {
|
|
100
102
|
(0, assert_1.default)((0, safeObject_1.has)(subdomain, "code"), `Error configuration file : Missing required 'code' field (domain: ${domain.code}, subdomain: ${subdomainName}).`);
|
|
101
103
|
}
|
|
@@ -115,8 +117,7 @@ function checkSubdomains(domain, options) {
|
|
|
115
117
|
}
|
|
116
118
|
function checkDomains(errorCodesFiles, options = { plugin: false }) {
|
|
117
119
|
const domainCodes = new Set();
|
|
118
|
-
for (const domainName of Object.
|
|
119
|
-
const domain = errorCodesFiles[domainName];
|
|
120
|
+
for (const [domainName, domain] of Object.entries(errorCodesFiles)) {
|
|
120
121
|
(0, assert_1.default)((0, safeObject_1.has)(domain, "code"), `Error configuration file : Missing required 'code' field. (domain: '${domainName}').`);
|
|
121
122
|
(0, assert_1.default)(Number.isInteger(domain.code), `Error configuration file : Field 'code' must be an integer. (domain: '${domainName}').`);
|
|
122
123
|
(0, assert_1.default)(domain.code >= 0x00 && domain.code <= 0xff, `Error configuration file : Field 'code' must be between 0 and 255. (domain: '${domainName}').`);
|
|
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
23
23
|
exports.BadRequestError = void 0;
|
|
24
24
|
const kuzzleError_1 = require("./kuzzleError");
|
|
25
25
|
class BadRequestError extends kuzzleError_1.KuzzleError {
|
|
26
|
-
constructor(message, id, code) {
|
|
26
|
+
constructor(message = "", id, code) {
|
|
27
27
|
super(message, 400, id, code);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
23
23
|
exports.ExternalServiceError = void 0;
|
|
24
24
|
const kuzzleError_1 = require("./kuzzleError");
|
|
25
25
|
class ExternalServiceError extends kuzzleError_1.KuzzleError {
|
|
26
|
-
constructor(message, id, code) {
|
|
26
|
+
constructor(message = "", id, code) {
|
|
27
27
|
super(message, 500, id, code);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
23
23
|
exports.ForbiddenError = void 0;
|
|
24
24
|
const kuzzleError_1 = require("./kuzzleError");
|
|
25
25
|
class ForbiddenError extends kuzzleError_1.KuzzleError {
|
|
26
|
-
constructor(message, id, code) {
|
|
26
|
+
constructor(message = "", id, code) {
|
|
27
27
|
super(message, 403, id, code);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
23
23
|
exports.GatewayTimeoutError = void 0;
|
|
24
24
|
const kuzzleError_1 = require("./kuzzleError");
|
|
25
25
|
class GatewayTimeoutError extends kuzzleError_1.KuzzleError {
|
|
26
|
-
constructor(message, id, code) {
|
|
26
|
+
constructor(message = "", id, code) {
|
|
27
27
|
super(message, 504, id, code);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
23
23
|
exports.InternalError = void 0;
|
|
24
24
|
const kuzzleError_1 = require("./kuzzleError");
|
|
25
25
|
class InternalError extends kuzzleError_1.KuzzleError {
|
|
26
|
-
constructor(message, id, code) {
|
|
26
|
+
constructor(message = "", id, code) {
|
|
27
27
|
super(message, 500, id, code);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { JSONObject } from "
|
|
1
|
+
import type { JSONObject } from "../../types/JSONObject";
|
|
2
2
|
/**
|
|
3
3
|
* API error are instances of this class.
|
|
4
4
|
* See https://docs.kuzzle.io/core/2/api/errors/types/
|
|
@@ -11,17 +11,46 @@ export declare class KuzzleError extends Error {
|
|
|
11
11
|
/**
|
|
12
12
|
* Error unique code
|
|
13
13
|
* @see https://docs.kuzzle.io/core/2/api/errors/error-codes/
|
|
14
|
+
*
|
|
15
|
+
* Set on every error built from the code registry (`kerror`), which is how
|
|
16
|
+
* Kuzzle builds its own; undefined on an error built by hand
|
|
17
|
+
* (`new BadRequestError("...")`), which plugins and Kuzzle itself also do.
|
|
18
|
+
* Declared as always present all the same, because that is what v2.56.0
|
|
19
|
+
* declared and what code compiled against it reads. See the constructor.
|
|
14
20
|
*/
|
|
15
21
|
code: number;
|
|
16
22
|
/**
|
|
17
23
|
* Error unique identifier
|
|
24
|
+
*
|
|
25
|
+
* Undefined under the same conditions as {@link code}, and declared as
|
|
26
|
+
* always present for the same reason.
|
|
18
27
|
*/
|
|
19
28
|
id: string;
|
|
20
29
|
/**
|
|
21
|
-
*
|
|
30
|
+
* The placeholders that were substituted into the message, when `kerror`
|
|
31
|
+
* built the error; undefined otherwise. `kerror.get` takes them from its
|
|
32
|
+
* caller, which may hand it anything — an id, a count, the value that
|
|
33
|
+
* failed a type check — but `string[]` is what v2.56.0 declared, and code
|
|
34
|
+
* compiled against it assigns this to a `string[]`.
|
|
22
35
|
*/
|
|
23
36
|
props: string[];
|
|
24
|
-
|
|
37
|
+
/**
|
|
38
|
+
* The arguments are not narrowed to what they are meant to be (a string or
|
|
39
|
+
* an `Error`, a string id, a numeric code): v2.56.0's subclasses took
|
|
40
|
+
* untyped ones, so `new InternalError(caught)` with a `catch` variable of
|
|
41
|
+
* type `unknown` compiled, and must still.
|
|
42
|
+
*
|
|
43
|
+
* A `message` that is not an `Error` is handed to `Error`, which
|
|
44
|
+
* stringifies it; `undefined` and `null` give an empty one —
|
|
45
|
+
* `doc/build-error-codes.js` constructs one of each class with no arguments
|
|
46
|
+
* just to read its `status`.
|
|
47
|
+
*
|
|
48
|
+
* @param message - a string, or an `Error` whose message and stack are kept
|
|
49
|
+
* @param status - HTTP status code
|
|
50
|
+
* @param id - error unique identifier (a string)
|
|
51
|
+
* @param code - error unique code (a number)
|
|
52
|
+
*/
|
|
53
|
+
constructor(message: unknown, status: number, id?: unknown, code?: unknown);
|
|
25
54
|
/**
|
|
26
55
|
* Error class name (e.g: 'NotFoundError')
|
|
27
56
|
*/
|
|
@@ -45,24 +45,38 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
45
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
46
|
exports.KuzzleError = void 0;
|
|
47
47
|
const util = __importStar(require("util"));
|
|
48
|
+
/**
|
|
49
|
+
* `util.types.isNativeError` rather than `instanceof Error`: it answers true
|
|
50
|
+
* for an error built in another realm, which `instanceof` does not, and false
|
|
51
|
+
* for an object that merely has `Error.prototype`. Node deprecates it in
|
|
52
|
+
* favour of `Error.isError`, which needs Node 24 while this package supports
|
|
53
|
+
* `>=20` — hence the NOSONAR. Revisit when the floor moves.
|
|
54
|
+
*/
|
|
55
|
+
function isError(value) {
|
|
56
|
+
return util.types.isNativeError(value); // NOSONAR
|
|
57
|
+
}
|
|
48
58
|
/**
|
|
49
59
|
* API error are instances of this class.
|
|
50
60
|
* See https://docs.kuzzle.io/core/2/api/errors/types/
|
|
51
61
|
*/
|
|
52
62
|
class KuzzleError extends Error {
|
|
63
|
+
/**
|
|
64
|
+
* The implementation names what `message` is meant to be; the public
|
|
65
|
+
* signature above is what it may be. Anything else goes straight to
|
|
66
|
+
* `Error`'s own conversion.
|
|
67
|
+
*/
|
|
53
68
|
constructor(message, status, id, code) {
|
|
54
|
-
super(message);
|
|
69
|
+
super(isError(message) ? message.message : (message ?? ""));
|
|
55
70
|
this.status = status;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
this.
|
|
71
|
+
// The three fields declared above as always present, stored as handed:
|
|
72
|
+
// their declarations are the ones code compiled against v2.56.0 reads,
|
|
73
|
+
// not a description of every value that reaches this line.
|
|
74
|
+
Object.assign(this, { code, id, props: undefined });
|
|
59
75
|
this.stack = undefined;
|
|
60
|
-
if (
|
|
61
|
-
this.message = message.message;
|
|
76
|
+
if (isError(message)) {
|
|
62
77
|
this.stack = message.stack;
|
|
63
78
|
}
|
|
64
79
|
else {
|
|
65
|
-
this.message = message;
|
|
66
80
|
Error.captureStackTrace(this, KuzzleError);
|
|
67
81
|
}
|
|
68
82
|
}
|
|
@@ -2,6 +2,6 @@ import { KuzzleError } from "./kuzzleError";
|
|
|
2
2
|
export declare class MultipleErrorsError extends KuzzleError {
|
|
3
3
|
errors: Array<KuzzleError>;
|
|
4
4
|
count: number;
|
|
5
|
-
constructor(message
|
|
6
|
-
toJSON(): import("
|
|
5
|
+
constructor(message?: string, errors?: KuzzleError[], id?: string, code?: number);
|
|
6
|
+
toJSON(): import("../../..").JSONObject;
|
|
7
7
|
}
|
|
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
23
23
|
exports.MultipleErrorsError = void 0;
|
|
24
24
|
const kuzzleError_1 = require("./kuzzleError");
|
|
25
25
|
class MultipleErrorsError extends kuzzleError_1.KuzzleError {
|
|
26
|
-
constructor(message, errors = [], id, code) {
|
|
26
|
+
constructor(message = "", errors = [], id, code) {
|
|
27
27
|
super(message, 400, id, code);
|
|
28
28
|
this.errors = errors;
|
|
29
29
|
this.count = errors.length;
|
|
@@ -34,7 +34,7 @@ class MultipleErrorsError extends kuzzleError_1.KuzzleError {
|
|
|
34
34
|
try {
|
|
35
35
|
serialized.errors = this.errors.map((error) => error.toJSON());
|
|
36
36
|
}
|
|
37
|
-
catch
|
|
37
|
+
catch {
|
|
38
38
|
serialized.errors = this.errors;
|
|
39
39
|
}
|
|
40
40
|
return serialized;
|
|
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
23
23
|
exports.NotFoundError = void 0;
|
|
24
24
|
const kuzzleError_1 = require("./kuzzleError");
|
|
25
25
|
class NotFoundError extends kuzzleError_1.KuzzleError {
|
|
26
|
-
constructor(message, id, code) {
|
|
26
|
+
constructor(message = "", id, code) {
|
|
27
27
|
super(message, 404, id, code);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -2,6 +2,12 @@ import { KuzzleError } from "./kuzzleError";
|
|
|
2
2
|
export declare class PartialError extends KuzzleError {
|
|
3
3
|
errors: Array<KuzzleError>;
|
|
4
4
|
count: number;
|
|
5
|
-
constructor(message
|
|
6
|
-
|
|
5
|
+
constructor(message?: string | Error, id?: string, code?: number);
|
|
6
|
+
constructor(message?: string | Error, body?: KuzzleError[], id?: string, code?: number);
|
|
7
|
+
/**
|
|
8
|
+
* v2.56.0 declared all four arguments untyped: a body that is not a list of
|
|
9
|
+
* `KuzzleError` (`[{ _id, reason }]`, `Error[]`) compiled, and must still.
|
|
10
|
+
*/
|
|
11
|
+
constructor(message?: unknown, body?: unknown, id?: unknown, code?: unknown);
|
|
12
|
+
toJSON(): import("../../..").JSONObject;
|
|
7
13
|
}
|
|
@@ -23,18 +23,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
23
23
|
exports.PartialError = void 0;
|
|
24
24
|
const kuzzleError_1 = require("./kuzzleError");
|
|
25
25
|
class PartialError extends kuzzleError_1.KuzzleError {
|
|
26
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Two call shapes, both public API: the documented one carries the partial
|
|
28
|
+
* errors — `(message, body, id, code)` — and the one `kerror` uses for every
|
|
29
|
+
* other error class — `(message, id, code)`. They are told apart the way
|
|
30
|
+
* they always were: a numeric third argument with no fourth means the
|
|
31
|
+
* arguments are shifted by one.
|
|
32
|
+
*/
|
|
33
|
+
constructor(message = "", body, id, code) {
|
|
34
|
+
let errors = [];
|
|
35
|
+
let errorId;
|
|
36
|
+
let errorCode;
|
|
27
37
|
if (code === undefined && typeof id === "number") {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
body = [];
|
|
38
|
+
errorCode = id;
|
|
39
|
+
errorId = typeof body === "string" ? body : undefined;
|
|
31
40
|
}
|
|
32
|
-
else
|
|
33
|
-
|
|
41
|
+
else {
|
|
42
|
+
errorId = typeof id === "string" ? id : undefined;
|
|
43
|
+
errorCode = code;
|
|
44
|
+
if (Array.isArray(body)) {
|
|
45
|
+
errors = body;
|
|
46
|
+
}
|
|
34
47
|
}
|
|
35
|
-
super(message, 206,
|
|
36
|
-
this.errors =
|
|
37
|
-
this.count =
|
|
48
|
+
super(message, 206, errorId, errorCode);
|
|
49
|
+
this.errors = errors;
|
|
50
|
+
this.count = errors.length;
|
|
38
51
|
}
|
|
39
52
|
toJSON() {
|
|
40
53
|
const serialized = super.toJSON();
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { KuzzleError } from "./kuzzleError";
|
|
2
|
+
/**
|
|
3
|
+
* An error in plugin or application code, as opposed to Kuzzle's own.
|
|
4
|
+
*
|
|
5
|
+
* Its message used to end with "This is probably not a Kuzzle error, but a
|
|
6
|
+
* problem with a plugin implementation." on every one of the ~80 ids of this
|
|
7
|
+
* class: it said nothing the id (`plugin.*`) does not, and it came between the
|
|
8
|
+
* message and the stack of the error that actually happened.
|
|
9
|
+
*/
|
|
2
10
|
export declare class PluginImplementationError extends KuzzleError {
|
|
3
|
-
constructor(message
|
|
11
|
+
constructor(message?: unknown, id?: unknown, code?: unknown);
|
|
4
12
|
}
|
|
@@ -22,11 +22,17 @@
|
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
23
|
exports.PluginImplementationError = void 0;
|
|
24
24
|
const kuzzleError_1 = require("./kuzzleError");
|
|
25
|
+
/**
|
|
26
|
+
* An error in plugin or application code, as opposed to Kuzzle's own.
|
|
27
|
+
*
|
|
28
|
+
* Its message used to end with "This is probably not a Kuzzle error, but a
|
|
29
|
+
* problem with a plugin implementation." on every one of the ~80 ids of this
|
|
30
|
+
* class: it said nothing the id (`plugin.*`) does not, and it came between the
|
|
31
|
+
* message and the stack of the error that actually happened.
|
|
32
|
+
*/
|
|
25
33
|
class PluginImplementationError extends kuzzleError_1.KuzzleError {
|
|
26
|
-
constructor(message, id, code) {
|
|
34
|
+
constructor(message = "", id, code) {
|
|
27
35
|
super(message, 500, id, code);
|
|
28
|
-
this.message +=
|
|
29
|
-
"\nThis is probably not a Kuzzle error, but a problem with a plugin implementation.";
|
|
30
36
|
}
|
|
31
37
|
}
|
|
32
38
|
exports.PluginImplementationError = PluginImplementationError;
|
|
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
23
23
|
exports.PreconditionError = void 0;
|
|
24
24
|
const kuzzleError_1 = require("./kuzzleError");
|
|
25
25
|
class PreconditionError extends kuzzleError_1.KuzzleError {
|
|
26
|
-
constructor(message, id, code) {
|
|
26
|
+
constructor(message = "", id, code) {
|
|
27
27
|
super(message, 412, id, code);
|
|
28
28
|
}
|
|
29
29
|
}
|