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,12 +19,47 @@
|
|
|
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 crypto_1 = require("../../util/crypto");
|
|
49
|
+
const safeObject_1 = require("../../util/safeObject");
|
|
50
|
+
const debug_1 = __importDefault(require("../../util/debug"));
|
|
51
|
+
const kerror = __importStar(require("../../kerror"));
|
|
52
|
+
const baseModel_1 = __importDefault(require("./baseModel"));
|
|
53
|
+
const debug = (0, debug_1.default)("models:storage:apiKey");
|
|
54
|
+
/*
|
|
55
|
+
* ApiKey.load(userId, id) intentionally takes an extra ownership argument that
|
|
56
|
+
* BaseModel.load(id) does not, so the two static sides are deliberately not
|
|
57
|
+
* structurally compatible. This is an accepted, pre-existing design divergence
|
|
58
|
+
* (ApiKey scopes a load to its owner); the conversion changes no runtime
|
|
59
|
+
* behaviour.
|
|
60
|
+
*/
|
|
61
|
+
// @ts-expect-error -- intentional static-signature divergence of load() vs BaseModel (TS2417)
|
|
62
|
+
class ApiKey extends baseModel_1.default {
|
|
27
63
|
constructor(_source, _id = null) {
|
|
28
64
|
super(_source, _id);
|
|
29
65
|
}
|
|
@@ -66,20 +102,18 @@ class ApiKey extends BaseModel {
|
|
|
66
102
|
/**
|
|
67
103
|
* Creates a new API key for an user
|
|
68
104
|
*
|
|
69
|
-
* @param
|
|
70
|
-
* @param
|
|
71
|
-
* @param
|
|
72
|
-
* @param
|
|
73
|
-
*
|
|
74
|
-
* @returns {Promise<ApiKey>}
|
|
105
|
+
* @param user
|
|
106
|
+
* @param expiresIn - API key expiration date in ms format
|
|
107
|
+
* @param description
|
|
108
|
+
* @param options - creatorId (null), apiKeyId (null), refresh (null), bypassMaxTTL (false)
|
|
75
109
|
*/
|
|
76
|
-
static async create(user, expiresIn, description, { creatorId = null, apiKeyId = null, refresh, bypassMaxTTL = false } = {}) {
|
|
110
|
+
static async create(user, expiresIn, description, { creatorId = null, apiKeyId = null, refresh, bypassMaxTTL = false, } = {}) {
|
|
77
111
|
const token = await global.kuzzle.ask("core:security:token:create", user, {
|
|
78
112
|
bypassMaxTTL,
|
|
79
113
|
expiresIn,
|
|
80
114
|
type: "apiKey",
|
|
81
115
|
});
|
|
82
|
-
const fingerprint = sha256(token.jwt);
|
|
116
|
+
const fingerprint = (0, crypto_1.sha256)(token.jwt);
|
|
83
117
|
const apiKey = new ApiKey({
|
|
84
118
|
description,
|
|
85
119
|
expiresAt: token.expiresAt,
|
|
@@ -94,13 +128,11 @@ class ApiKey extends BaseModel {
|
|
|
94
128
|
/**
|
|
95
129
|
* Loads an user API key from the database
|
|
96
130
|
*
|
|
97
|
-
* @param
|
|
98
|
-
* @param
|
|
99
|
-
*
|
|
100
|
-
* @returns {Promise<ApiKey>}
|
|
131
|
+
* @param userId - User ID
|
|
132
|
+
* @param id - API key ID
|
|
101
133
|
*/
|
|
102
134
|
static async load(userId, id) {
|
|
103
|
-
const apiKey = await super.load(id);
|
|
135
|
+
const apiKey = (await super.load(id));
|
|
104
136
|
if (userId !== apiKey.userId) {
|
|
105
137
|
throw kerror.get("services", "storage", "not_found", id, {
|
|
106
138
|
message: `ApiKey "${id}" not found for user "${userId}".`,
|
|
@@ -109,18 +141,59 @@ class ApiKey extends BaseModel {
|
|
|
109
141
|
return apiKey;
|
|
110
142
|
}
|
|
111
143
|
/**
|
|
112
|
-
*
|
|
144
|
+
* Loads an user API key from the database by its fingerprint
|
|
145
|
+
*
|
|
146
|
+
* @param userId - User ID
|
|
147
|
+
* @param fingerprint - API key fingerprint
|
|
148
|
+
*/
|
|
149
|
+
static async loadByFingerprint(userId, fingerprint) {
|
|
150
|
+
const [apiKey] = await this.search({
|
|
151
|
+
query: {
|
|
152
|
+
bool: {
|
|
153
|
+
filter: { term: { fingerprint } },
|
|
154
|
+
must: { term: { userId } },
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
}, { size: 1 });
|
|
158
|
+
if (!apiKey) {
|
|
159
|
+
throw kerror.get("services", "storage", "not_found", fingerprint, {
|
|
160
|
+
message: `ApiKey with fingerprint "${fingerprint}" not found for user "${userId}".`,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
// @ts-expect-error We fetch from the api key collection so this is safe
|
|
164
|
+
return apiKey;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Loads a user's API key from a request, identified by its `_id`, its
|
|
168
|
+
* clear-text `key` or its `fingerprint` (in that order of precedence).
|
|
113
169
|
*
|
|
114
|
-
* @param
|
|
115
|
-
* @param
|
|
170
|
+
* @param userId - User ID
|
|
171
|
+
* @param request - Request carrying the `_id`, `key` or `fingerprint` argument
|
|
172
|
+
*/
|
|
173
|
+
static async loadFromRequest(userId, request) {
|
|
174
|
+
const apiKeyId = request.getId({ ifMissing: "ignore" });
|
|
175
|
+
if (apiKeyId) {
|
|
176
|
+
return this.load(userId, apiKeyId);
|
|
177
|
+
}
|
|
178
|
+
if ((0, safeObject_1.has)(request.input.args, "key")) {
|
|
179
|
+
return this.loadByFingerprint(userId, (0, crypto_1.sha256)(request.getString("key")));
|
|
180
|
+
}
|
|
181
|
+
if ((0, safeObject_1.has)(request.input.args, "fingerprint")) {
|
|
182
|
+
return this.loadByFingerprint(userId, request.getString("fingerprint"));
|
|
183
|
+
}
|
|
184
|
+
throw kerror.get("api", "assert", "missing_argument", "_id, key or fingerprint");
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Deletes API keys for an user
|
|
116
188
|
*
|
|
117
|
-
* @
|
|
189
|
+
* @param user
|
|
190
|
+
* @param options - refresh (null)
|
|
118
191
|
*/
|
|
119
192
|
static deleteByUser(user, { refresh } = {}) {
|
|
120
193
|
debug("Delete ApiKeys for user %a", user);
|
|
121
194
|
return this.deleteByQuery({ term: { userId: user._id } }, { refresh });
|
|
122
195
|
}
|
|
123
196
|
}
|
|
124
|
-
|
|
197
|
+
baseModel_1.default.register(ApiKey);
|
|
125
198
|
module.exports = ApiKey;
|
|
126
199
|
//# sourceMappingURL=apiKey.js.map
|
|
@@ -1,100 +1,111 @@
|
|
|
1
|
-
|
|
1
|
+
import type { JSONObject } from "../../types/JSONObject";
|
|
2
|
+
/**
|
|
3
|
+
* Minimal shape of a model class handled by {@link BaseModel.register}.
|
|
4
|
+
*/
|
|
5
|
+
interface RegisterableModel {
|
|
6
|
+
fields: string[];
|
|
7
|
+
prototype: object;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Plain document shape as stored/returned by the internal index.
|
|
11
|
+
*/
|
|
12
|
+
interface StorageDocument {
|
|
13
|
+
_id: string;
|
|
14
|
+
_source: JSONObject;
|
|
15
|
+
}
|
|
2
16
|
declare class BaseModel {
|
|
17
|
+
__id: string | null;
|
|
18
|
+
__source: JSONObject;
|
|
19
|
+
__persisted: boolean;
|
|
20
|
+
constructor(_source?: JSONObject, _id?: string | null);
|
|
3
21
|
/**
|
|
4
22
|
* Register a new model
|
|
5
23
|
*
|
|
6
|
-
* @param
|
|
24
|
+
* @param ModelClass
|
|
7
25
|
*/
|
|
8
|
-
static register(ModelClass:
|
|
26
|
+
static register(ModelClass: RegisterableModel): void;
|
|
9
27
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
28
|
+
* Save the current instance in the database.
|
|
29
|
+
* - use update if the instance already exists
|
|
30
|
+
* - use create otherwise
|
|
13
31
|
*
|
|
14
|
-
* @
|
|
32
|
+
* @param options - userId (null), refresh (undefined)
|
|
15
33
|
*/
|
|
16
|
-
|
|
34
|
+
save({ userId, refresh, }?: {
|
|
35
|
+
userId?: string | null;
|
|
36
|
+
refresh?: boolean | string;
|
|
37
|
+
}): Promise<void>;
|
|
17
38
|
/**
|
|
18
|
-
*
|
|
19
|
-
* - the
|
|
20
|
-
*
|
|
21
|
-
* @param {Object} query - Search query (e.g. { match_all: {} })
|
|
22
|
-
* @param {Object} options - refresh (undefined)
|
|
39
|
+
* Delete the current instance from the database.
|
|
40
|
+
* - call the _afterDelete hook after deletion
|
|
23
41
|
*
|
|
24
|
-
* @
|
|
42
|
+
* @param options - refresh (undefined)
|
|
25
43
|
*/
|
|
26
|
-
|
|
44
|
+
delete({ refresh, }?: {
|
|
45
|
+
refresh?: boolean | string;
|
|
46
|
+
}): Promise<void>;
|
|
27
47
|
/**
|
|
28
|
-
* Returns
|
|
29
|
-
*
|
|
30
|
-
* @param {Object} searchBody
|
|
31
|
-
* @param {Object} options - from, size, scroll
|
|
32
|
-
*
|
|
33
|
-
* @returns {Promise<BaseModel[]>} - Array of instances
|
|
48
|
+
* Returns a plain object representing the instance
|
|
34
49
|
*/
|
|
35
|
-
|
|
50
|
+
serialize(): {
|
|
51
|
+
_id: string | null;
|
|
52
|
+
_source: JSONObject;
|
|
53
|
+
};
|
|
36
54
|
/**
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* @param {Object} options - refresh (undefined)
|
|
40
|
-
*
|
|
41
|
-
* @returns {Promise}
|
|
55
|
+
* Hook called in the delete method after deletion from the database
|
|
42
56
|
*/
|
|
43
|
-
|
|
44
|
-
|
|
57
|
+
_afterDelete(): Promise<void>;
|
|
58
|
+
get _id(): string | null;
|
|
59
|
+
set _id(_id: string | null);
|
|
60
|
+
get _source(): JSONObject;
|
|
61
|
+
set _source(_source: JSONObject);
|
|
45
62
|
/**
|
|
46
|
-
*
|
|
63
|
+
* Loads an instance from the database
|
|
64
|
+
*
|
|
65
|
+
* @param id
|
|
47
66
|
*/
|
|
48
|
-
static
|
|
67
|
+
static load(id: string): Promise<BaseModel>;
|
|
49
68
|
/**
|
|
50
|
-
*
|
|
69
|
+
* Deletes all instances matching the given query.
|
|
70
|
+
* - the instance delete method will be called on each occurence
|
|
71
|
+
*
|
|
72
|
+
* @param query - Search query (e.g. { match_all: {} })
|
|
73
|
+
* @param options - refresh (undefined)
|
|
51
74
|
*/
|
|
52
|
-
static
|
|
75
|
+
static deleteByQuery(query: JSONObject, { refresh }?: {
|
|
76
|
+
refresh?: boolean | string;
|
|
77
|
+
}): Promise<void>;
|
|
53
78
|
/**
|
|
54
|
-
*
|
|
79
|
+
* Returns instances matching the given query
|
|
55
80
|
*
|
|
56
|
-
* @param
|
|
81
|
+
* @param searchBody
|
|
82
|
+
* @param options - from, size, scroll
|
|
57
83
|
*
|
|
58
|
-
* @returns
|
|
84
|
+
* @returns Array of instances
|
|
59
85
|
*/
|
|
60
|
-
static
|
|
61
|
-
constructor(_source?: {}, _id?: any);
|
|
62
|
-
__id: any;
|
|
63
|
-
__source: {};
|
|
64
|
-
set _id(_id: any);
|
|
65
|
-
get _id(): any;
|
|
66
|
-
set _source(_source: {});
|
|
67
|
-
get _source(): {};
|
|
86
|
+
static search(searchBody: JSONObject, options?: JSONObject): Promise<BaseModel[]>;
|
|
68
87
|
/**
|
|
69
|
-
*
|
|
70
|
-
* - use update if the instance already exists
|
|
71
|
-
* - use create otherwise
|
|
72
|
-
*
|
|
73
|
-
* @param {Object} options - userId (null), refresh (undefined)
|
|
88
|
+
* Deletes all instances of the collection
|
|
74
89
|
*
|
|
75
|
-
* @
|
|
90
|
+
* @param options - refresh (undefined)
|
|
76
91
|
*/
|
|
77
|
-
|
|
78
|
-
|
|
92
|
+
static truncate({ refresh, }?: {
|
|
93
|
+
refresh?: boolean | string;
|
|
94
|
+
}): Promise<void>;
|
|
95
|
+
static batchExecute(query: JSONObject, callback: (...args: unknown[]) => unknown): Promise<any>;
|
|
79
96
|
/**
|
|
80
|
-
*
|
|
81
|
-
* - call the _afterDelete hook after deletion
|
|
82
|
-
*
|
|
83
|
-
* @param {Object} options - refresh (undefined)
|
|
84
|
-
*
|
|
85
|
-
* @returns {Promise}
|
|
97
|
+
* Must be overriden by children
|
|
86
98
|
*/
|
|
87
|
-
|
|
99
|
+
static get collection(): string;
|
|
88
100
|
/**
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
* @returns {Object} { _id, _source }
|
|
101
|
+
* Must be overriden by children
|
|
92
102
|
*/
|
|
93
|
-
|
|
103
|
+
static get fields(): string[];
|
|
94
104
|
/**
|
|
95
|
-
*
|
|
105
|
+
* Instantiate the model from a document
|
|
96
106
|
*
|
|
97
|
-
* @
|
|
107
|
+
* @param document - { _id, _source }
|
|
98
108
|
*/
|
|
99
|
-
|
|
109
|
+
static _instantiateFromDb({ _id, _source }: StorageDocument): BaseModel;
|
|
100
110
|
}
|
|
111
|
+
export = BaseModel;
|
|
@@ -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,8 +19,10 @@
|
|
|
18
19
|
* See the License for the specific language governing permissions and
|
|
19
20
|
* limitations under the License.
|
|
20
21
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
22
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
+
};
|
|
25
|
+
const bluebird_1 = __importDefault(require("bluebird"));
|
|
23
26
|
class BaseModel {
|
|
24
27
|
constructor(_source = {}, _id = null) {
|
|
25
28
|
this.__id = null;
|
|
@@ -35,7 +38,7 @@ class BaseModel {
|
|
|
35
38
|
/**
|
|
36
39
|
* Register a new model
|
|
37
40
|
*
|
|
38
|
-
* @param
|
|
41
|
+
* @param ModelClass
|
|
39
42
|
*/
|
|
40
43
|
static register(ModelClass) {
|
|
41
44
|
if (this !== BaseModel) {
|
|
@@ -59,11 +62,9 @@ class BaseModel {
|
|
|
59
62
|
* - use update if the instance already exists
|
|
60
63
|
* - use create otherwise
|
|
61
64
|
*
|
|
62
|
-
* @param
|
|
63
|
-
*
|
|
64
|
-
* @returns {Promise}
|
|
65
|
+
* @param options - userId (null), refresh (undefined)
|
|
65
66
|
*/
|
|
66
|
-
async save({ userId = null, refresh } = {}) {
|
|
67
|
+
async save({ userId = null, refresh, } = {}) {
|
|
67
68
|
if (!this.__persisted) {
|
|
68
69
|
const { _id, _source } = await global.kuzzle.internalIndex.create(this.constructor.collection, this._source, { id: this._id, refresh, userId });
|
|
69
70
|
this._id = _id;
|
|
@@ -78,11 +79,9 @@ class BaseModel {
|
|
|
78
79
|
* Delete the current instance from the database.
|
|
79
80
|
* - call the _afterDelete hook after deletion
|
|
80
81
|
*
|
|
81
|
-
* @param
|
|
82
|
-
*
|
|
83
|
-
* @returns {Promise}
|
|
82
|
+
* @param options - refresh (undefined)
|
|
84
83
|
*/
|
|
85
|
-
async delete({ refresh } = {}) {
|
|
84
|
+
async delete({ refresh, } = {}) {
|
|
86
85
|
if (!this.__persisted) {
|
|
87
86
|
return;
|
|
88
87
|
}
|
|
@@ -92,8 +91,6 @@ class BaseModel {
|
|
|
92
91
|
}
|
|
93
92
|
/**
|
|
94
93
|
* Returns a plain object representing the instance
|
|
95
|
-
*
|
|
96
|
-
* @returns {Object} { _id, _source }
|
|
97
94
|
*/
|
|
98
95
|
serialize() {
|
|
99
96
|
return {
|
|
@@ -104,11 +101,9 @@ class BaseModel {
|
|
|
104
101
|
// Protected methods =========================================================
|
|
105
102
|
/**
|
|
106
103
|
* Hook called in the delete method after deletion from the database
|
|
107
|
-
*
|
|
108
|
-
* @returns {Promise}
|
|
109
104
|
*/
|
|
110
105
|
async _afterDelete() {
|
|
111
|
-
|
|
106
|
+
// Nothing to do by default; subclasses override this.
|
|
112
107
|
}
|
|
113
108
|
// Getter/Setter =============================================================
|
|
114
109
|
get _id() {
|
|
@@ -131,9 +126,7 @@ class BaseModel {
|
|
|
131
126
|
/**
|
|
132
127
|
* Loads an instance from the database
|
|
133
128
|
*
|
|
134
|
-
* @param
|
|
135
|
-
*
|
|
136
|
-
* @returns {BaseModel}
|
|
129
|
+
* @param id
|
|
137
130
|
*/
|
|
138
131
|
static async load(id) {
|
|
139
132
|
const result = await global.kuzzle.internalIndex.get(this.collection, id);
|
|
@@ -143,14 +136,12 @@ class BaseModel {
|
|
|
143
136
|
* Deletes all instances matching the given query.
|
|
144
137
|
* - the instance delete method will be called on each occurence
|
|
145
138
|
*
|
|
146
|
-
* @param
|
|
147
|
-
* @param
|
|
148
|
-
*
|
|
149
|
-
* @returns {Promise}
|
|
139
|
+
* @param query - Search query (e.g. { match_all: {} })
|
|
140
|
+
* @param options - refresh (undefined)
|
|
150
141
|
*/
|
|
151
142
|
static async deleteByQuery(query, { refresh } = {}) {
|
|
152
143
|
const { documents } = await global.kuzzle.internalIndex.deleteByQuery(this.collection, query);
|
|
153
|
-
await
|
|
144
|
+
await bluebird_1.default.map(documents, (document) => this._instantiateFromDb(document)._afterDelete(), { concurrency: 10 }); // limits the load on storage services
|
|
154
145
|
if (refresh) {
|
|
155
146
|
await global.kuzzle.internalIndex.refreshCollection(this.collection);
|
|
156
147
|
}
|
|
@@ -158,10 +149,10 @@ class BaseModel {
|
|
|
158
149
|
/**
|
|
159
150
|
* Returns instances matching the given query
|
|
160
151
|
*
|
|
161
|
-
* @param
|
|
162
|
-
* @param
|
|
152
|
+
* @param searchBody
|
|
153
|
+
* @param options - from, size, scroll
|
|
163
154
|
*
|
|
164
|
-
* @returns
|
|
155
|
+
* @returns Array of instances
|
|
165
156
|
*/
|
|
166
157
|
static async search(searchBody, options) {
|
|
167
158
|
const resp = await global.kuzzle.internalIndex.search(this.collection, searchBody, options);
|
|
@@ -170,11 +161,9 @@ class BaseModel {
|
|
|
170
161
|
/**
|
|
171
162
|
* Deletes all instances of the collection
|
|
172
163
|
*
|
|
173
|
-
* @param
|
|
174
|
-
*
|
|
175
|
-
* @returns {Promise}
|
|
164
|
+
* @param options - refresh (undefined)
|
|
176
165
|
*/
|
|
177
|
-
static truncate({ refresh } = {}) {
|
|
166
|
+
static truncate({ refresh, } = {}) {
|
|
178
167
|
return this.deleteByQuery({ match_all: {} }, { refresh });
|
|
179
168
|
}
|
|
180
169
|
// ? This looks not in use anymore ?
|
|
@@ -197,9 +186,7 @@ class BaseModel {
|
|
|
197
186
|
/**
|
|
198
187
|
* Instantiate the model from a document
|
|
199
188
|
*
|
|
200
|
-
* @param
|
|
201
|
-
*
|
|
202
|
-
* @returns {BaseModel}
|
|
189
|
+
* @param document - { _id, _source }
|
|
203
190
|
*/
|
|
204
191
|
static _instantiateFromDb({ _id, _source }) {
|
|
205
192
|
const model = new this(_source, _id); // NOSONAR
|
|
@@ -1,74 +1,91 @@
|
|
|
1
|
-
|
|
1
|
+
import type { RedisCommander } from "ioredis";
|
|
2
|
+
import IORedis, { Cluster } from "ioredis";
|
|
3
|
+
import Service from "../service";
|
|
4
|
+
import "../../types/Global";
|
|
5
|
+
import type { InternalCacheConfiguration } from "../../types/config/internalCache/InternalCacheRedisConfiguration";
|
|
6
|
+
import type { PublicCacheRedisConfiguration } from "../../types/config/publicCache/PublicCacheRedisConfiguration";
|
|
7
|
+
type RedisClient = IORedis | Cluster;
|
|
8
|
+
type RedisServiceConfig = InternalCacheConfiguration | PublicCacheRedisConfiguration;
|
|
9
|
+
interface RedisInfo {
|
|
10
|
+
memoryPeak: string;
|
|
11
|
+
memoryUsed: string;
|
|
12
|
+
mode: string;
|
|
13
|
+
type: "redis";
|
|
14
|
+
version: string;
|
|
15
|
+
}
|
|
2
16
|
/**
|
|
3
17
|
* @class Redis
|
|
4
18
|
* @extends Service
|
|
5
|
-
* @param {object} config
|
|
6
|
-
* @property service
|
|
7
19
|
*/
|
|
8
|
-
declare class Redis extends Service {
|
|
20
|
+
declare class Redis extends Service<RedisServiceConfig, RedisInfo> {
|
|
9
21
|
connected: boolean;
|
|
10
|
-
client:
|
|
11
|
-
commands:
|
|
12
|
-
adapterName:
|
|
13
|
-
pingIntervalID
|
|
14
|
-
logger
|
|
22
|
+
client: RedisClient | null;
|
|
23
|
+
commands: RedisCommander;
|
|
24
|
+
adapterName: string;
|
|
25
|
+
private pingIntervalID;
|
|
26
|
+
private readonly logger;
|
|
27
|
+
/**
|
|
28
|
+
* The connected client.
|
|
29
|
+
*
|
|
30
|
+
* `client` is null until `init()` builds it, and every consumer is wired up
|
|
31
|
+
* by `cacheEngine.init()` *after* that — so "not connected" is a programming
|
|
32
|
+
* error, stated once here where it can actually happen, rather than a null
|
|
33
|
+
* check at each call site where it cannot.
|
|
34
|
+
*/
|
|
35
|
+
get connectedClient(): RedisClient;
|
|
36
|
+
constructor(config: RedisServiceConfig, name: string);
|
|
37
|
+
/**
|
|
38
|
+
* Initialize the redis client, select the service associated database and
|
|
39
|
+
* flush it to make sure we start from a clean state
|
|
40
|
+
*/
|
|
41
|
+
protected _initSequence(): Promise<void>;
|
|
15
42
|
/**
|
|
16
43
|
* Setup a ping interval to keep the connection alive
|
|
17
44
|
* Every 60 seconds a ping is sent to Redis
|
|
18
45
|
*/
|
|
19
|
-
_setupKeepAlive
|
|
46
|
+
private _setupKeepAlive;
|
|
20
47
|
/**
|
|
21
48
|
* Ping Redis
|
|
22
49
|
*/
|
|
23
|
-
_ping
|
|
50
|
+
private _ping;
|
|
24
51
|
/**
|
|
25
52
|
* Initializes the Redis commands list, and add transformers when necessary
|
|
26
53
|
*/
|
|
27
54
|
setCommands(): void;
|
|
55
|
+
/**
|
|
56
|
+
* Return some basic information about this service
|
|
57
|
+
* @override
|
|
58
|
+
*/
|
|
59
|
+
info(): Promise<RedisInfo>;
|
|
28
60
|
/**
|
|
29
61
|
* Returns all the keys matching a given pattern.
|
|
30
62
|
*
|
|
31
63
|
* /!\ We don't use `keys` to avoid blocking Redis if using a big dataset
|
|
32
64
|
* cf: http://redis.io/commands/keys
|
|
33
65
|
* and http://redis.io/commands/scan
|
|
34
|
-
*
|
|
35
|
-
* @param pattern
|
|
36
|
-
* @returns {Promise.<string[]>} promise resolving to an array of keys
|
|
37
66
|
*/
|
|
38
|
-
searchKeys(pattern:
|
|
67
|
+
searchKeys(pattern: string): Promise<string[]>;
|
|
39
68
|
/**
|
|
40
69
|
* Executes multiple client commands in a single action
|
|
41
|
-
*
|
|
42
|
-
* @returns {Promise}
|
|
43
70
|
*/
|
|
44
|
-
mExecute(commands:
|
|
45
|
-
_searchNodeKeys
|
|
46
|
-
_buildClient
|
|
47
|
-
_buildClusterClient
|
|
71
|
+
mExecute(commands: unknown[][]): Promise<[error: Error | null, result: unknown][] | null>;
|
|
72
|
+
private _searchNodeKeys;
|
|
73
|
+
private _buildClient;
|
|
74
|
+
private _buildClusterClient;
|
|
48
75
|
/**
|
|
49
76
|
* Convenience method: set a key and its value
|
|
50
77
|
*
|
|
51
78
|
* Options:
|
|
52
79
|
* - onlyIfNew: if true, set the NX option
|
|
53
80
|
* - ttl: if true, set the PX option
|
|
54
|
-
*
|
|
55
|
-
* @param {string} key
|
|
56
|
-
* @param {string} value
|
|
57
|
-
* @param {{onlyIfNew: boolean, ttl: number}} [options]
|
|
58
|
-
* @return {boolean} true if the key was set, false otherwise
|
|
59
81
|
*/
|
|
60
82
|
store(key: string, value: string, { onlyIfNew, ttl }?: {
|
|
61
|
-
onlyIfNew
|
|
62
|
-
ttl
|
|
63
|
-
}): boolean
|
|
83
|
+
onlyIfNew?: boolean;
|
|
84
|
+
ttl?: number;
|
|
85
|
+
}): Promise<boolean>;
|
|
64
86
|
/**
|
|
65
87
|
* Executes a client command
|
|
66
|
-
* @param {string} command
|
|
67
|
-
* @param {Array} args
|
|
68
|
-
* @return {Promise.<*>}
|
|
69
88
|
*/
|
|
70
|
-
exec(command: string, ...args:
|
|
89
|
+
exec(command: string, ...args: unknown[]): Promise<unknown>;
|
|
71
90
|
}
|
|
72
|
-
|
|
73
|
-
import Bluebird = require("bluebird");
|
|
74
|
-
import IORedis = require("ioredis");
|
|
91
|
+
export = Redis;
|