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,26 +19,68 @@
|
|
|
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 node_util_1 = require("node:util");
|
|
49
|
+
const bluebird_1 = __importDefault(require("bluebird"));
|
|
50
|
+
const lodash_1 = require("lodash");
|
|
51
|
+
const ioredis_1 = __importStar(require("ioredis"));
|
|
52
|
+
const service_1 = __importDefault(require("../service"));
|
|
53
|
+
const kerrorLib = __importStar(require("../../kerror"));
|
|
54
|
+
require("../../types/Global");
|
|
55
|
+
const kerror = kerrorLib.wrap("services", "cache");
|
|
27
56
|
/**
|
|
28
57
|
* @class Redis
|
|
29
58
|
* @extends Service
|
|
30
|
-
* @param {object} config
|
|
31
|
-
* @property service
|
|
32
59
|
*/
|
|
33
|
-
class Redis extends
|
|
60
|
+
class Redis extends service_1.default {
|
|
61
|
+
/**
|
|
62
|
+
* The connected client.
|
|
63
|
+
*
|
|
64
|
+
* `client` is null until `init()` builds it, and every consumer is wired up
|
|
65
|
+
* by `cacheEngine.init()` *after* that — so "not connected" is a programming
|
|
66
|
+
* error, stated once here where it can actually happen, rather than a null
|
|
67
|
+
* check at each call site where it cannot.
|
|
68
|
+
*/
|
|
69
|
+
get connectedClient() {
|
|
70
|
+
if (this.client === null) {
|
|
71
|
+
throw kerrorLib.get("core", "fatal", "assertion_failed", `redis adapter "${this.adapterName}" is not connected`);
|
|
72
|
+
}
|
|
73
|
+
return this.client;
|
|
74
|
+
}
|
|
34
75
|
constructor(config, name) {
|
|
35
76
|
super("redis", config);
|
|
36
77
|
this.connected = false;
|
|
37
78
|
this.client = null;
|
|
79
|
+
// Populated by setCommands() once the client is built; empty until then,
|
|
80
|
+
// exactly like the plain object this field held before.
|
|
38
81
|
this.commands = {};
|
|
39
|
-
this.adapterName = name;
|
|
40
82
|
this.pingIntervalID = null;
|
|
83
|
+
this.adapterName = name;
|
|
41
84
|
this.logger = global.kuzzle.log.child // It means we're in the main Kuzzle process
|
|
42
85
|
? global.kuzzle.log.child("services:cache:redis")
|
|
43
86
|
: global.kuzzle.log;
|
|
@@ -45,29 +88,32 @@ class Redis extends Service {
|
|
|
45
88
|
/**
|
|
46
89
|
* Initialize the redis client, select the service associated database and
|
|
47
90
|
* flush it to make sure we start from a clean state
|
|
48
|
-
*
|
|
49
|
-
* @returns {Promise}
|
|
50
91
|
*/
|
|
51
92
|
_initSequence() {
|
|
52
|
-
|
|
93
|
+
// A copy, so the DNS lookup override below does not leak into the
|
|
94
|
+
// service configuration. `cloneDeep` rather than `structuredClone`: a
|
|
95
|
+
// config set from code may hold functions (e.g. an ioredis
|
|
96
|
+
// `retryStrategy`), which `structuredClone` refuses to copy.
|
|
97
|
+
const config = (0, lodash_1.cloneDeep)(this._config); // NOSONAR structuredClone throws on functions, see above
|
|
53
98
|
// Only way to connect to AWS ELastiCache
|
|
54
99
|
// https://github.com/luin/ioredis#special-note-aws-elasticache-clusters-with-tls
|
|
55
100
|
if (config.overrideDnsLookup) {
|
|
56
101
|
config.clusterOptions.dnsLookup = (address, callback) => callback(null, address);
|
|
57
102
|
}
|
|
58
|
-
|
|
59
|
-
|
|
103
|
+
// Built into a local and then published: `this.client` is the nullable
|
|
104
|
+
// field the accessor guards, and reading it back seven times here is what
|
|
105
|
+
// made every one of those reads a null check.
|
|
106
|
+
const client = config.nodes
|
|
107
|
+
? this._buildClusterClient({
|
|
60
108
|
...config.clusterOptions,
|
|
61
109
|
redisOptions: config.options,
|
|
62
|
-
})
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
this.client.on("ready", () => {
|
|
110
|
+
})
|
|
111
|
+
: this._buildClient(config.options ?? {});
|
|
112
|
+
this.client = client;
|
|
113
|
+
client.on("ready", () => {
|
|
68
114
|
this.connected = true;
|
|
69
115
|
});
|
|
70
|
-
|
|
116
|
+
client.on("error", (error) => {
|
|
71
117
|
if (this.connected) {
|
|
72
118
|
global.kuzzle.log.error(`Redis service seem to be down, see original error for more info:\n${error.message}`);
|
|
73
119
|
}
|
|
@@ -78,12 +124,12 @@ class Redis extends Service {
|
|
|
78
124
|
if (config.pingKeepAlive && config.pingKeepAlive > 0) {
|
|
79
125
|
this._setupKeepAlive(config.pingKeepAlive);
|
|
80
126
|
}
|
|
81
|
-
return new
|
|
82
|
-
|
|
83
|
-
await
|
|
127
|
+
return new bluebird_1.default((resolve, reject) => {
|
|
128
|
+
client.once("ready", async () => {
|
|
129
|
+
await client.client("SETNAME", `${this.adapterName}/${global.kuzzle.id}`);
|
|
84
130
|
resolve();
|
|
85
131
|
});
|
|
86
|
-
|
|
132
|
+
client.once("error", (error) => {
|
|
87
133
|
reject(error);
|
|
88
134
|
});
|
|
89
135
|
});
|
|
@@ -93,12 +139,12 @@ class Redis extends Service {
|
|
|
93
139
|
* Every 60 seconds a ping is sent to Redis
|
|
94
140
|
*/
|
|
95
141
|
_setupKeepAlive(delay) {
|
|
96
|
-
this.
|
|
142
|
+
this.connectedClient.on("ready", async () => {
|
|
97
143
|
await this._ping();
|
|
98
144
|
this.pingIntervalID = setInterval(this._ping.bind(this), delay);
|
|
99
145
|
});
|
|
100
|
-
this.
|
|
101
|
-
clearInterval(this.pingIntervalID);
|
|
146
|
+
this.connectedClient.on("error", () => {
|
|
147
|
+
clearInterval(this.pingIntervalID ?? undefined);
|
|
102
148
|
this.pingIntervalID = null;
|
|
103
149
|
});
|
|
104
150
|
}
|
|
@@ -107,49 +153,78 @@ class Redis extends Service {
|
|
|
107
153
|
*/
|
|
108
154
|
async _ping() {
|
|
109
155
|
try {
|
|
110
|
-
await this.
|
|
156
|
+
await this.connectedClient.ping();
|
|
111
157
|
}
|
|
112
158
|
catch (error) {
|
|
113
|
-
global.kuzzle.log.error(`Failed to PING Redis to keep connection alive:\n${error.message}`);
|
|
159
|
+
global.kuzzle.log.error(`Failed to PING Redis to keep connection alive:\n${error instanceof Error ? error.message : (0, node_util_1.inspect)(error)}`);
|
|
114
160
|
}
|
|
115
161
|
}
|
|
116
162
|
/**
|
|
117
163
|
* Initializes the Redis commands list, and add transformers when necessary
|
|
118
164
|
*/
|
|
119
165
|
setCommands() {
|
|
120
|
-
const commandsList = this.
|
|
166
|
+
const commandsList = this.connectedClient.getBuiltinCommands();
|
|
167
|
+
// Command names are only known at runtime (from getBuiltinCommands()),
|
|
168
|
+
// so this dispatch table can't be built against RedisCommander's named
|
|
169
|
+
// members directly -- this is the one place that bridges the two. Both
|
|
170
|
+
// this list and RedisCommander are generated from the same upstream
|
|
171
|
+
// ioredis command set, so the cast reflects a real guarantee, not a
|
|
172
|
+
// hand-wave.
|
|
173
|
+
const commands = this.commands;
|
|
174
|
+
const client = this.connectedClient;
|
|
121
175
|
for (const command of commandsList) {
|
|
122
|
-
|
|
176
|
+
const implementation = client[command];
|
|
177
|
+
// `getBuiltinCommands()` lists what the client exposes, so the lookup
|
|
178
|
+
// is the same object answering about itself — the indexed read was the
|
|
179
|
+
// only thing the compiler could not follow.
|
|
180
|
+
if (implementation === undefined) {
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
commands[command] = async (...args) => {
|
|
123
184
|
if (!this.connected) {
|
|
124
|
-
|
|
185
|
+
// `not_connected`, with the underscore the code is declared with.
|
|
186
|
+
// `notconnected` matches nothing, so every command issued while
|
|
187
|
+
// the adapter was down raised `core.fatal.unexpected_error`
|
|
188
|
+
// instead of "Unable to connect to the cache server".
|
|
189
|
+
throw kerror.get("not_connected");
|
|
125
190
|
}
|
|
126
|
-
|
|
191
|
+
// `Reflect.apply`, not `implementation(...args)`: ioredis' commands
|
|
192
|
+
// live on the `Commander` prototype and read `this.options`, so
|
|
193
|
+
// calling the result of an indexed read drops the receiver and
|
|
194
|
+
// every command throws. This is the bug sprint 5's Build and Run
|
|
195
|
+
// job caught in `funnel.doAction`, reintroduced here by hoisting
|
|
196
|
+
// the lookup out of the call — see `pluginsManager`'s note on the
|
|
197
|
+
// same line.
|
|
198
|
+
return Reflect.apply(implementation, client, args);
|
|
127
199
|
};
|
|
128
200
|
}
|
|
129
201
|
}
|
|
130
202
|
/**
|
|
131
203
|
* Return some basic information about this service
|
|
132
204
|
* @override
|
|
133
|
-
*
|
|
134
|
-
* @returns {Promise} service informations
|
|
135
205
|
*/
|
|
136
206
|
async info() {
|
|
137
207
|
const result = await this.commands.info();
|
|
138
|
-
const arr = result.
|
|
208
|
+
const arr = result.replaceAll("\r\n", "\n").split("\n");
|
|
139
209
|
const info = {};
|
|
140
|
-
arr
|
|
141
|
-
item =
|
|
210
|
+
for (const rawItem of arr) {
|
|
211
|
+
const item = rawItem.trim();
|
|
142
212
|
if (item.length > 0 && !item.startsWith("#")) {
|
|
143
|
-
const
|
|
144
|
-
|
|
213
|
+
const [key, value] = item.split(":");
|
|
214
|
+
// A line with no colon carries no value. It was stored as
|
|
215
|
+
// `info[key] = undefined`, which the five reads below then answered
|
|
216
|
+
// with while claiming `string`.
|
|
217
|
+
if (key !== undefined && value !== undefined) {
|
|
218
|
+
info[key] = value;
|
|
219
|
+
}
|
|
145
220
|
}
|
|
146
|
-
}
|
|
221
|
+
}
|
|
147
222
|
return {
|
|
148
|
-
memoryPeak: info.used_memory_peak_human,
|
|
149
|
-
memoryUsed: info.used_memory_human,
|
|
150
|
-
mode: info.redis_mode,
|
|
223
|
+
memoryPeak: info.used_memory_peak_human ?? "",
|
|
224
|
+
memoryUsed: info.used_memory_human ?? "",
|
|
225
|
+
mode: info.redis_mode ?? "",
|
|
151
226
|
type: "redis",
|
|
152
|
-
version: info.redis_version,
|
|
227
|
+
version: info.redis_version ?? "",
|
|
153
228
|
};
|
|
154
229
|
}
|
|
155
230
|
/**
|
|
@@ -158,47 +233,45 @@ class Redis extends Service {
|
|
|
158
233
|
* /!\ We don't use `keys` to avoid blocking Redis if using a big dataset
|
|
159
234
|
* cf: http://redis.io/commands/keys
|
|
160
235
|
* and http://redis.io/commands/scan
|
|
161
|
-
*
|
|
162
|
-
* @param pattern
|
|
163
|
-
* @returns {Promise.<string[]>} promise resolving to an array of keys
|
|
164
236
|
*/
|
|
165
237
|
async searchKeys(pattern) {
|
|
166
|
-
|
|
167
|
-
|
|
238
|
+
const client = this.connectedClient;
|
|
239
|
+
if (client instanceof ioredis_1.Cluster) {
|
|
240
|
+
const keys = await bluebird_1.default.map(client.nodes("master"), (node) => {
|
|
168
241
|
return this._searchNodeKeys(node, pattern);
|
|
169
242
|
});
|
|
170
|
-
return
|
|
243
|
+
return [...new Set(keys.flat())];
|
|
171
244
|
}
|
|
172
|
-
return this._searchNodeKeys(
|
|
245
|
+
return this._searchNodeKeys(client, pattern);
|
|
173
246
|
}
|
|
174
247
|
/**
|
|
175
248
|
* Executes multiple client commands in a single action
|
|
176
|
-
*
|
|
177
|
-
* @returns {Promise}
|
|
178
249
|
*/
|
|
179
250
|
mExecute(commands) {
|
|
180
251
|
if (!Array.isArray(commands) || commands.length === 0) {
|
|
181
|
-
return
|
|
252
|
+
return bluebird_1.default.resolve([]);
|
|
182
253
|
}
|
|
183
|
-
return this.
|
|
254
|
+
return this.connectedClient.multi(commands).exec();
|
|
184
255
|
}
|
|
185
256
|
_searchNodeKeys(node, pattern) {
|
|
186
|
-
return new
|
|
257
|
+
return new bluebird_1.default((resolve) => {
|
|
187
258
|
let keys = [];
|
|
188
259
|
const stream = node.scanStream({ match: pattern });
|
|
189
260
|
stream.on("data", (resultKeys) => {
|
|
190
261
|
keys = keys.concat(resultKeys);
|
|
191
262
|
});
|
|
192
263
|
stream.on("end", () => {
|
|
193
|
-
resolve(
|
|
264
|
+
resolve([...new Set(keys)]);
|
|
194
265
|
});
|
|
195
266
|
});
|
|
196
267
|
}
|
|
197
268
|
_buildClient(options) {
|
|
198
|
-
return new
|
|
269
|
+
return new ioredis_1.default({ ...this._config.node, ...options });
|
|
199
270
|
}
|
|
200
271
|
_buildClusterClient(options) {
|
|
201
|
-
|
|
272
|
+
// The caller only reaches here when `nodes` is set; `?? []` is what the
|
|
273
|
+
// Cluster constructor would have been handed otherwise.
|
|
274
|
+
return new ioredis_1.Cluster(this._config.nodes ?? [], options);
|
|
202
275
|
}
|
|
203
276
|
/**
|
|
204
277
|
* Convenience method: set a key and its value
|
|
@@ -206,11 +279,6 @@ class Redis extends Service {
|
|
|
206
279
|
* Options:
|
|
207
280
|
* - onlyIfNew: if true, set the NX option
|
|
208
281
|
* - ttl: if true, set the PX option
|
|
209
|
-
*
|
|
210
|
-
* @param {string} key
|
|
211
|
-
* @param {string} value
|
|
212
|
-
* @param {{onlyIfNew: boolean, ttl: number}} [options]
|
|
213
|
-
* @return {boolean} true if the key was set, false otherwise
|
|
214
282
|
*/
|
|
215
283
|
async store(key, value, { onlyIfNew = false, ttl = 0 } = {}) {
|
|
216
284
|
const command = [key, value];
|
|
@@ -220,17 +288,26 @@ class Redis extends Service {
|
|
|
220
288
|
if (ttl > 0) {
|
|
221
289
|
command.push("PX", ttl);
|
|
222
290
|
}
|
|
291
|
+
// The flag combination is built dynamically above, so it can't match a
|
|
292
|
+
// single RedisCommander.set(...) overload (which expects a fixed
|
|
293
|
+
// positional tuple per combination) -- same escape hatch as setCommands().
|
|
223
294
|
const result = await this.commands.set(...command);
|
|
224
295
|
return result === "OK";
|
|
225
296
|
}
|
|
226
297
|
/**
|
|
227
298
|
* Executes a client command
|
|
228
|
-
* @param {string} command
|
|
229
|
-
* @param {Array} args
|
|
230
|
-
* @return {Promise.<*>}
|
|
231
299
|
*/
|
|
232
300
|
exec(command, ...args) {
|
|
233
|
-
|
|
301
|
+
// command is an arbitrary name chosen at runtime by this method's own
|
|
302
|
+
// caller (see its ask-handler callers in cacheEngine.js) -- same
|
|
303
|
+
// escape hatch as setCommands().
|
|
304
|
+
const commands = this.commands;
|
|
305
|
+
const implementation = commands[command];
|
|
306
|
+
if (implementation === undefined) {
|
|
307
|
+
throw kerrorLib.get("core", "fatal", "assertion_failed", `redis adapter "${this.adapterName}" has no command "${command}"`);
|
|
308
|
+
}
|
|
309
|
+
// Same reason as `setCommands()`: the receiver goes with the call.
|
|
310
|
+
return Reflect.apply(implementation, commands, args);
|
|
234
311
|
}
|
|
235
312
|
}
|
|
236
313
|
module.exports = Redis;
|
|
@@ -1,30 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
import "../types/Global";
|
|
2
2
|
/**
|
|
3
3
|
* Services base class
|
|
4
|
-
*
|
|
5
4
|
*/
|
|
6
|
-
declare class Service {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
get config():
|
|
12
|
-
get name():
|
|
5
|
+
declare abstract class Service<TConfig = unknown, TInfo = unknown> {
|
|
6
|
+
protected _name: string;
|
|
7
|
+
protected _config: TConfig;
|
|
8
|
+
protected _initTimeout: number;
|
|
9
|
+
constructor(name: string, config: TConfig);
|
|
10
|
+
get config(): TConfig;
|
|
11
|
+
get name(): string;
|
|
13
12
|
/**
|
|
14
13
|
* Call _initSequence to initialize the service
|
|
15
14
|
* and throw an error if timeout exceed
|
|
16
|
-
*
|
|
17
|
-
* @returns {Promise}
|
|
18
15
|
*/
|
|
19
|
-
init(): Promise<
|
|
20
|
-
|
|
21
|
-
* @abstract
|
|
22
|
-
* @returns {Promise}
|
|
23
|
-
*/
|
|
24
|
-
_initSequence(): Promise<any>;
|
|
16
|
+
init(): Promise<void>;
|
|
17
|
+
protected abstract _initSequence(): Promise<void>;
|
|
25
18
|
/**
|
|
19
|
+
* Return some basic information about this service
|
|
20
|
+
*
|
|
26
21
|
* @abstract
|
|
27
|
-
* @returns {Promise}
|
|
28
22
|
*/
|
|
29
|
-
info(): Promise<
|
|
23
|
+
info(): Promise<TInfo>;
|
|
30
24
|
}
|
|
25
|
+
export = Service;
|
|
@@ -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,20 +19,45 @@
|
|
|
18
19
|
* See the License for the specific language governing permissions and
|
|
19
20
|
* limitations under the License.
|
|
20
21
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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 bluebird_1 = __importDefault(require("bluebird"));
|
|
49
|
+
const kerror = __importStar(require("../kerror"));
|
|
50
|
+
require("../types/Global");
|
|
24
51
|
/**
|
|
25
52
|
* Services base class
|
|
26
|
-
*
|
|
27
53
|
*/
|
|
28
54
|
class Service {
|
|
29
55
|
constructor(name, config) {
|
|
30
56
|
this._name = name;
|
|
31
57
|
this._config = config;
|
|
58
|
+
const { initTimeout } = (config ?? {});
|
|
32
59
|
this._initTimeout =
|
|
33
|
-
|
|
34
|
-
global.kuzzle.config.services.common.defaultInitTimeout;
|
|
60
|
+
initTimeout || global.kuzzle.config.services.common.defaultInitTimeout;
|
|
35
61
|
}
|
|
36
62
|
get config() {
|
|
37
63
|
return this._config;
|
|
@@ -42,29 +68,22 @@ class Service {
|
|
|
42
68
|
/**
|
|
43
69
|
* Call _initSequence to initialize the service
|
|
44
70
|
* and throw an error if timeout exceed
|
|
45
|
-
*
|
|
46
|
-
* @returns {Promise}
|
|
47
71
|
*/
|
|
48
|
-
init() {
|
|
49
|
-
|
|
50
|
-
.timeout(this._initTimeout)
|
|
51
|
-
|
|
52
|
-
|
|
72
|
+
async init() {
|
|
73
|
+
try {
|
|
74
|
+
await bluebird_1.default.resolve(this._initSequence()).timeout(this._initTimeout);
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
if (e instanceof bluebird_1.default.TimeoutError) {
|
|
53
78
|
throw kerror.get("core", "fatal", "service_timeout", this._name);
|
|
54
79
|
}
|
|
55
80
|
throw e;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* @abstract
|
|
60
|
-
* @returns {Promise}
|
|
61
|
-
*/
|
|
62
|
-
_initSequence() {
|
|
63
|
-
throw new Error("Not implemented");
|
|
81
|
+
}
|
|
64
82
|
}
|
|
65
83
|
/**
|
|
84
|
+
* Return some basic information about this service
|
|
85
|
+
*
|
|
66
86
|
* @abstract
|
|
67
|
-
* @returns {Promise}
|
|
68
87
|
*/
|
|
69
88
|
info() {
|
|
70
89
|
throw new Error("Not implemented");
|