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,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,16 +19,46 @@
|
|
|
18
19
|
* See the License for the specific language governing permissions and
|
|
19
20
|
* limitations under the License.
|
|
20
21
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
46
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
|
+
};
|
|
48
|
+
const os = __importStar(require("node:os"));
|
|
49
|
+
const node_util_1 = require("node:util");
|
|
50
|
+
const json2yaml_1 = __importDefault(require("json2yaml"));
|
|
51
|
+
const package_json_1 = __importDefault(require("../../../package.json"));
|
|
52
|
+
const kerror = __importStar(require("../../kerror"));
|
|
53
|
+
const baseController_1 = require("./baseController");
|
|
54
|
+
/** Whatever a health probe rejected with, as an `Error`. */
|
|
55
|
+
function causeOf(thrown) {
|
|
56
|
+
return thrown instanceof Error ? thrown : new Error((0, node_util_1.inspect)(thrown));
|
|
57
|
+
}
|
|
27
58
|
/**
|
|
28
59
|
* @class ServerController
|
|
29
60
|
*/
|
|
30
|
-
class ServerController extends NativeController {
|
|
61
|
+
class ServerController extends baseController_1.NativeController {
|
|
31
62
|
constructor() {
|
|
32
63
|
super([
|
|
33
64
|
"adminExists",
|
|
@@ -100,7 +131,7 @@ class ServerController extends NativeController {
|
|
|
100
131
|
* @returns {Promise<Object>}
|
|
101
132
|
*/
|
|
102
133
|
async getConfig() {
|
|
103
|
-
const config = JSON.parse(JSON.stringify(global.kuzzle.config));
|
|
134
|
+
const config = JSON.parse(JSON.stringify(global.kuzzle.config)); // NOSONAR: intentional JSON-safe deep clone (strips non-serializable config values); structuredClone would change semantics / can throw
|
|
104
135
|
// Already and more appropriately returned by server:info
|
|
105
136
|
config.http.routes = undefined;
|
|
106
137
|
// Not a good idea to export Kuzzle's salt, hash algorithm
|
|
@@ -116,20 +147,25 @@ class ServerController extends NativeController {
|
|
|
116
147
|
* @returns {Promise<Object>}
|
|
117
148
|
*/
|
|
118
149
|
async capabilities() {
|
|
119
|
-
const config = JSON.parse(JSON.stringify(global.kuzzle.config));
|
|
150
|
+
const config = JSON.parse(JSON.stringify(global.kuzzle.config)); // NOSONAR: intentional JSON-safe deep clone (strips non-serializable config values); structuredClone would change semantics / can throw
|
|
120
151
|
const publicApi = await this.publicApi();
|
|
121
152
|
const services = {};
|
|
122
153
|
const plugins = {};
|
|
123
154
|
for (const plugin of config.plugins.common.include) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
155
|
+
// A plugin listed in `plugins.common.include` that is not a dependency
|
|
156
|
+
// of this package has no version to report. It was read off the
|
|
157
|
+
// manifest's dependency map by a name only known at runtime.
|
|
158
|
+
const dependencies = package_json_1.default.dependencies;
|
|
159
|
+
plugins[plugin] = { version: dependencies[plugin] ?? "" };
|
|
127
160
|
}
|
|
128
161
|
for (const [name, info] of Object.entries(config.services)) {
|
|
129
|
-
|
|
162
|
+
const reported = info.backend === undefined ? undefined : this._info[info.backend];
|
|
163
|
+
// `_info` holds one entry per service `init()` asked, so a service
|
|
164
|
+
// configured against a backend Kuzzle does not run has none.
|
|
165
|
+
if (info.backend !== undefined && reported) {
|
|
130
166
|
services[name] = {
|
|
131
167
|
backend: info.backend,
|
|
132
|
-
version:
|
|
168
|
+
version: reported.version,
|
|
133
169
|
};
|
|
134
170
|
}
|
|
135
171
|
}
|
|
@@ -161,11 +197,13 @@ class ServerController extends NativeController {
|
|
|
161
197
|
*/
|
|
162
198
|
async healthCheck(request) {
|
|
163
199
|
const getServiceUnavailableError = (err) => kerror.get("core", "fatal", "service_unavailable", err);
|
|
164
|
-
const result = {
|
|
200
|
+
const result = {
|
|
201
|
+
services: {},
|
|
202
|
+
status: "green",
|
|
203
|
+
};
|
|
165
204
|
let services;
|
|
166
205
|
if (typeof request.input.args.services === "string") {
|
|
167
|
-
|
|
168
|
-
services = request.getArrayLegacy("services");
|
|
206
|
+
services = request.getArrayOrCsv("services");
|
|
169
207
|
}
|
|
170
208
|
if (!services || services.includes("internalCache")) {
|
|
171
209
|
try {
|
|
@@ -173,7 +211,7 @@ class ServerController extends NativeController {
|
|
|
173
211
|
result.services.internalCache = "green";
|
|
174
212
|
}
|
|
175
213
|
catch (error) {
|
|
176
|
-
request.setError(getServiceUnavailableError(error));
|
|
214
|
+
request.setError(getServiceUnavailableError(causeOf(error)));
|
|
177
215
|
result.services.internalCache = "red";
|
|
178
216
|
result.status = "red";
|
|
179
217
|
}
|
|
@@ -184,7 +222,7 @@ class ServerController extends NativeController {
|
|
|
184
222
|
result.services.memoryStorage = "green";
|
|
185
223
|
}
|
|
186
224
|
catch (error) {
|
|
187
|
-
request.setError(getServiceUnavailableError(error));
|
|
225
|
+
request.setError(getServiceUnavailableError(causeOf(error)));
|
|
188
226
|
result.services.memoryStorage = "red";
|
|
189
227
|
result.status = "red";
|
|
190
228
|
}
|
|
@@ -198,7 +236,7 @@ class ServerController extends NativeController {
|
|
|
198
236
|
result.services.storageEngine = "green";
|
|
199
237
|
}
|
|
200
238
|
catch (error) {
|
|
201
|
-
request.setError(getServiceUnavailableError(error));
|
|
239
|
+
request.setError(getServiceUnavailableError(causeOf(error)));
|
|
202
240
|
result.services.storageEngine = "red";
|
|
203
241
|
result.status = "red";
|
|
204
242
|
}
|
|
@@ -232,13 +270,15 @@ class ServerController extends NativeController {
|
|
|
232
270
|
};
|
|
233
271
|
const kuzzleApi = this._buildApiDefinition(global.kuzzle.funnel.controllers, global.kuzzle.config.http.routes);
|
|
234
272
|
const pluginsApi = this._buildApiDefinition(global.kuzzle.pluginsManager.controllers, global.kuzzle.pluginsManager.routes);
|
|
235
|
-
const apiDefinition =
|
|
236
|
-
// @todo kuzzle.api should contain the apiDefinition directly
|
|
273
|
+
const apiDefinition = { ...kuzzleApi, ...pluginsApi };
|
|
274
|
+
// NOSONAR: pre-existing @todo — kuzzle.api should contain the apiDefinition directly
|
|
237
275
|
response.kuzzle.api.routes = apiDefinition;
|
|
238
276
|
response.kuzzle.plugins =
|
|
239
277
|
global.kuzzle.pluginsManager.getPluginsDescription();
|
|
278
|
+
// A Kuzzle started without an application has none to describe, and this
|
|
279
|
+
// route answered by throwing on `undefined.info()`.
|
|
240
280
|
response.kuzzle.application =
|
|
241
|
-
global.kuzzle.pluginsManager.application
|
|
281
|
+
global.kuzzle.pluginsManager.application?.info() ?? {};
|
|
242
282
|
response.services = {
|
|
243
283
|
internalCache: await global.kuzzle.ask("core:cache:internal:info:get"),
|
|
244
284
|
internalStorage: await global.kuzzle.ask("core:storage:private:info:get"),
|
|
@@ -274,7 +314,7 @@ class ServerController extends NativeController {
|
|
|
274
314
|
format: "raw",
|
|
275
315
|
headers: { "Content-Type": `application/${format}` },
|
|
276
316
|
});
|
|
277
|
-
return format === "json" ? definition :
|
|
317
|
+
return format === "json" ? definition : json2yaml_1.default.stringify(definition);
|
|
278
318
|
}
|
|
279
319
|
/**
|
|
280
320
|
* Fetches and returns Kuzzle core metrics
|
|
@@ -292,7 +332,8 @@ class ServerController extends NativeController {
|
|
|
292
332
|
for (const [name, controller] of controllers.entries()) {
|
|
293
333
|
const actionList = {};
|
|
294
334
|
for (const action of controller._actions) {
|
|
295
|
-
|
|
335
|
+
const definition = { action, controller: name };
|
|
336
|
+
actionList[action] = definition;
|
|
296
337
|
// resolve associated http route for each actions
|
|
297
338
|
const routes = httpRoutes.filter((route) => {
|
|
298
339
|
return ((route.controller === name ||
|
|
@@ -300,10 +341,9 @@ class ServerController extends NativeController {
|
|
|
300
341
|
route.action === action);
|
|
301
342
|
});
|
|
302
343
|
for (const route of routes) {
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
actionList[action].http.push({
|
|
344
|
+
// The entry was just created above, and read back three times.
|
|
345
|
+
definition.http ?? (definition.http = []);
|
|
346
|
+
definition.http.push({
|
|
307
347
|
path: route.path,
|
|
308
348
|
url: route.path,
|
|
309
349
|
verb: route.verb.toUpperCase(),
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
import type { JSONObject } from "../types/JSONObject";
|
|
2
|
+
import type { KuzzleRequest } from "./request";
|
|
2
3
|
declare class DocumentExtractor {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
extract():
|
|
8
|
-
insert(documents:
|
|
4
|
+
private readonly request;
|
|
5
|
+
private readonly extractMethod;
|
|
6
|
+
private readonly insertMethod;
|
|
7
|
+
constructor(request: KuzzleRequest);
|
|
8
|
+
extract(): JSONObject[];
|
|
9
|
+
insert(documents: JSONObject[]): KuzzleRequest;
|
|
9
10
|
}
|
|
11
|
+
export = DocumentExtractor;
|
|
@@ -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,26 +19,67 @@
|
|
|
18
19
|
* See the License for the specific language governing permissions and
|
|
19
20
|
* limitations under the License.
|
|
20
21
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
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
|
+
const kerror = __importStar(require("../kerror"));
|
|
23
46
|
const assertionError = kerror.wrap("api", "assert");
|
|
24
|
-
|
|
47
|
+
/**
|
|
48
|
+
* The body of a request whose action declares one. Every extractor below runs
|
|
49
|
+
* on an action that takes a body — `deleteFields`, `mCreate`, `upsert` — and
|
|
50
|
+
* read `request.input.body` straight through; `body` is `JSONObject | null`
|
|
51
|
+
* on every request, and a request arriving without one raised a TypeError
|
|
52
|
+
* rather than the 400 this error is.
|
|
53
|
+
*/
|
|
54
|
+
function bodyOf(request) {
|
|
55
|
+
const body = request.input.body;
|
|
56
|
+
if (body === null) {
|
|
57
|
+
throw assertionError.get("body_required");
|
|
58
|
+
}
|
|
59
|
+
return body;
|
|
60
|
+
}
|
|
61
|
+
const extractorDefinitions = [
|
|
25
62
|
{
|
|
26
63
|
methods: {
|
|
27
64
|
extractFromRequest: (request) => [
|
|
28
65
|
{
|
|
29
66
|
_id: request.input.args._id,
|
|
30
|
-
_source: request.
|
|
67
|
+
_source: bodyOf(request).fields,
|
|
31
68
|
},
|
|
32
69
|
],
|
|
33
70
|
extractFromResult: (request) => [request.result],
|
|
34
|
-
insertInRequest: ([
|
|
35
|
-
|
|
36
|
-
|
|
71
|
+
insertInRequest: ([document], request) => {
|
|
72
|
+
if (document) {
|
|
73
|
+
request.input.args._id = document._id;
|
|
74
|
+
bodyOf(request).fields = document._source;
|
|
75
|
+
}
|
|
37
76
|
return request;
|
|
38
77
|
},
|
|
39
78
|
insertInResult: ([document], request) => {
|
|
40
|
-
request.
|
|
79
|
+
request.response.configure({
|
|
80
|
+
result: document,
|
|
81
|
+
status: request.status,
|
|
82
|
+
});
|
|
41
83
|
return request;
|
|
42
84
|
},
|
|
43
85
|
},
|
|
@@ -48,11 +90,14 @@ const extractors = [
|
|
|
48
90
|
extractFromRequest: (request) => [{ _id: request.input.args._id }],
|
|
49
91
|
extractFromResult: (request) => [request.result],
|
|
50
92
|
insertInRequest: (documents, request) => {
|
|
51
|
-
request.input.args._id = documents[0]
|
|
93
|
+
request.input.args._id = documents[0]?._id;
|
|
52
94
|
return request;
|
|
53
95
|
},
|
|
54
96
|
insertInResult: (documents, request) => {
|
|
55
|
-
request.
|
|
97
|
+
request.response.configure({
|
|
98
|
+
result: documents[0],
|
|
99
|
+
status: request.status,
|
|
100
|
+
});
|
|
56
101
|
return request;
|
|
57
102
|
},
|
|
58
103
|
},
|
|
@@ -62,8 +107,7 @@ const extractors = [
|
|
|
62
107
|
methods: {
|
|
63
108
|
extractFromRequest: (request) => {
|
|
64
109
|
let ids = [];
|
|
65
|
-
if (request.input.body &&
|
|
66
|
-
request.input.body.ids &&
|
|
110
|
+
if (request.input.body?.ids &&
|
|
67
111
|
Object.keys(request.input.body.ids).length) {
|
|
68
112
|
ids = request.input.body.ids;
|
|
69
113
|
}
|
|
@@ -72,8 +116,7 @@ const extractors = [
|
|
|
72
116
|
ids = request.input.args.ids;
|
|
73
117
|
}
|
|
74
118
|
else if (typeof request.input.args.ids === "string") {
|
|
75
|
-
|
|
76
|
-
ids = request.getArrayLegacy("ids");
|
|
119
|
+
ids = request.getArrayOrCsv("ids");
|
|
77
120
|
}
|
|
78
121
|
else {
|
|
79
122
|
throw assertionError.get("invalid_type", request.input.args.ids, "Array or String");
|
|
@@ -86,14 +129,15 @@ const extractors = [
|
|
|
86
129
|
return request.result.successes;
|
|
87
130
|
}
|
|
88
131
|
const documents = [];
|
|
89
|
-
for (
|
|
90
|
-
documents.push({ _id:
|
|
132
|
+
for (const success of request.result.successes) {
|
|
133
|
+
documents.push({ _id: success });
|
|
91
134
|
}
|
|
92
135
|
return documents;
|
|
93
136
|
},
|
|
94
137
|
insertInRequest: (documents, request) => {
|
|
95
|
-
|
|
96
|
-
|
|
138
|
+
const body = request.input.body;
|
|
139
|
+
if (body && Object.keys(body).length) {
|
|
140
|
+
body.ids = documents.map((document) => document._id);
|
|
97
141
|
}
|
|
98
142
|
else {
|
|
99
143
|
request.input.args.ids = documents.map((document) => document._id);
|
|
@@ -102,10 +146,12 @@ const extractors = [
|
|
|
102
146
|
},
|
|
103
147
|
insertInResult: (documents, request) => {
|
|
104
148
|
if (request.input.action === "mGet") {
|
|
105
|
-
|
|
149
|
+
const mResult = {
|
|
106
150
|
errors: request.result.errors,
|
|
107
151
|
successes: documents,
|
|
108
|
-
}
|
|
152
|
+
};
|
|
153
|
+
request.response.configure({
|
|
154
|
+
result: mResult,
|
|
109
155
|
status: request.status,
|
|
110
156
|
});
|
|
111
157
|
return request;
|
|
@@ -114,10 +160,10 @@ const extractors = [
|
|
|
114
160
|
errors: request.result.errors,
|
|
115
161
|
successes: [],
|
|
116
162
|
};
|
|
117
|
-
for (
|
|
118
|
-
result.successes.push(
|
|
163
|
+
for (const document of documents) {
|
|
164
|
+
result.successes.push(document._id);
|
|
119
165
|
}
|
|
120
|
-
request.
|
|
166
|
+
request.response.configure({ result: result, status: request.status });
|
|
121
167
|
return request;
|
|
122
168
|
},
|
|
123
169
|
},
|
|
@@ -127,8 +173,7 @@ const extractors = [
|
|
|
127
173
|
methods: {
|
|
128
174
|
extractFromRequest: (request) => {
|
|
129
175
|
const documents = [];
|
|
130
|
-
for (
|
|
131
|
-
const document = request.input.body.documents[it];
|
|
176
|
+
for (const document of bodyOf(request).documents) {
|
|
132
177
|
if (request.input.action === "mUpsert") {
|
|
133
178
|
documents.push({
|
|
134
179
|
_id: document._id,
|
|
@@ -143,24 +188,25 @@ const extractors = [
|
|
|
143
188
|
},
|
|
144
189
|
extractFromResult: (request) => request.result.successes,
|
|
145
190
|
insertInRequest: (documents, request) => {
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
191
|
+
const body = bodyOf(request);
|
|
192
|
+
const tmpDocuments = body.documents;
|
|
193
|
+
const rewritten = [];
|
|
194
|
+
for (const [it, document] of documents.entries()) {
|
|
150
195
|
if (request.input.action === "mUpsert") {
|
|
151
|
-
|
|
196
|
+
rewritten.push({
|
|
152
197
|
_id: document._id,
|
|
153
198
|
changes: document._source,
|
|
154
|
-
default: tmpDocuments[it]
|
|
199
|
+
default: tmpDocuments[it]?.default,
|
|
155
200
|
});
|
|
156
201
|
}
|
|
157
202
|
else {
|
|
158
|
-
|
|
203
|
+
rewritten.push({
|
|
159
204
|
_id: document._id,
|
|
160
205
|
body: document._source,
|
|
161
206
|
});
|
|
162
207
|
}
|
|
163
208
|
}
|
|
209
|
+
body.documents = rewritten;
|
|
164
210
|
return request;
|
|
165
211
|
},
|
|
166
212
|
insertInResult: (documents, request) => {
|
|
@@ -168,7 +214,7 @@ const extractors = [
|
|
|
168
214
|
errors: request.result.errors,
|
|
169
215
|
successes: documents,
|
|
170
216
|
};
|
|
171
|
-
request.
|
|
217
|
+
request.response.configure({ result: result, status: request.status });
|
|
172
218
|
return request;
|
|
173
219
|
},
|
|
174
220
|
},
|
|
@@ -207,12 +253,15 @@ const extractors = [
|
|
|
207
253
|
],
|
|
208
254
|
extractFromResult: (request) => [request.result],
|
|
209
255
|
insertInRequest: (documents, request) => {
|
|
210
|
-
request.input.args._id = documents[0]
|
|
211
|
-
request.input.body = documents[0]
|
|
256
|
+
request.input.args._id = documents[0]?._id;
|
|
257
|
+
request.input.body = documents[0]?._source;
|
|
212
258
|
return request;
|
|
213
259
|
},
|
|
214
260
|
insertInResult: (documents, request) => {
|
|
215
|
-
request.
|
|
261
|
+
request.response.configure({
|
|
262
|
+
result: documents[0],
|
|
263
|
+
status: request.status,
|
|
264
|
+
});
|
|
216
265
|
return request;
|
|
217
266
|
},
|
|
218
267
|
},
|
|
@@ -223,25 +272,29 @@ const extractors = [
|
|
|
223
272
|
extractFromRequest: (request) => [
|
|
224
273
|
{
|
|
225
274
|
_id: request.input.args._id,
|
|
226
|
-
_source: request.
|
|
275
|
+
_source: bodyOf(request).changes,
|
|
227
276
|
},
|
|
228
277
|
],
|
|
229
278
|
extractFromResult: (request) => [request.result],
|
|
230
279
|
insertInRequest: ([document], request) => {
|
|
231
280
|
if (document) {
|
|
232
281
|
request.input.args._id = document._id;
|
|
233
|
-
request.
|
|
282
|
+
bodyOf(request).changes = document._source;
|
|
234
283
|
}
|
|
235
284
|
return request;
|
|
236
285
|
},
|
|
237
286
|
insertInResult: ([document], request) => {
|
|
238
|
-
request.
|
|
287
|
+
request.response.configure({
|
|
288
|
+
result: document,
|
|
289
|
+
status: request.status,
|
|
290
|
+
});
|
|
239
291
|
return request;
|
|
240
292
|
},
|
|
241
293
|
},
|
|
242
294
|
targets: ["upsert"],
|
|
243
295
|
},
|
|
244
|
-
]
|
|
296
|
+
];
|
|
297
|
+
const extractors = extractorDefinitions.reduce((acc, extractor) => {
|
|
245
298
|
extractor.targets.forEach((target) => {
|
|
246
299
|
acc[target] = extractor.methods;
|
|
247
300
|
});
|
|
@@ -250,7 +303,9 @@ const extractors = [
|
|
|
250
303
|
class DocumentExtractor {
|
|
251
304
|
constructor(request) {
|
|
252
305
|
this.request = request;
|
|
253
|
-
const extractor =
|
|
306
|
+
const extractor = request.input.action === null
|
|
307
|
+
? undefined
|
|
308
|
+
: extractors[request.input.action];
|
|
254
309
|
if (extractor === undefined) {
|
|
255
310
|
throw kerror.get("core", "fatal", "assertion_failed", `no generic documents extractor for ${request.input.action}`);
|
|
256
311
|
}
|
|
@@ -264,9 +319,18 @@ class DocumentExtractor {
|
|
|
264
319
|
}
|
|
265
320
|
}
|
|
266
321
|
extract() {
|
|
322
|
+
// `search`, `deleteByQuery` and `export` have no request-side extractor:
|
|
323
|
+
// they are in `documentEventAliases.notBefore`, so the "before" pass that
|
|
324
|
+
// would ask for one never runs. Both were invoked unchecked.
|
|
325
|
+
if (this.extractMethod === null) {
|
|
326
|
+
throw kerror.get("core", "fatal", "assertion_failed", `no request-side documents extractor for ${this.request.input.action}`);
|
|
327
|
+
}
|
|
267
328
|
return this.extractMethod(this.request);
|
|
268
329
|
}
|
|
269
330
|
insert(documents) {
|
|
331
|
+
if (this.insertMethod === null) {
|
|
332
|
+
throw kerror.get("core", "fatal", "assertion_failed", `no request-side documents extractor for ${this.request.input.action}`);
|
|
333
|
+
}
|
|
270
334
|
return this.insertMethod(documents, this.request);
|
|
271
335
|
}
|
|
272
336
|
}
|