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,110 +19,98 @@
|
|
|
18
19
|
* See the License for the specific language governing permissions and
|
|
19
20
|
* limitations under the License.
|
|
20
21
|
*/
|
|
21
|
-
"
|
|
22
|
-
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.assertInteger = exports.assertString = exports.assertArray = exports.assertArrayOrObject = exports.assertObject = void 0;
|
|
24
|
+
const errors_1 = require("../kerror/errors");
|
|
23
25
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* @param {string} attr - tested attribute name
|
|
29
|
-
* @param {*} data
|
|
30
|
-
* @return {object}
|
|
26
|
+
* The first overload is what the callers in `lib/api/request` need: they hand
|
|
27
|
+
* it a value they already have a type for and want it back, not widened to a
|
|
28
|
+
* bare record. The second is the original signature, kept because the function
|
|
29
|
+
* has to accept anything in order to reject it.
|
|
31
30
|
*/
|
|
32
31
|
function assertObject(attr, data) {
|
|
33
32
|
if (data === null || data === undefined) {
|
|
34
33
|
return null;
|
|
35
34
|
}
|
|
36
35
|
if (typeof data !== "object" || Array.isArray(data)) {
|
|
37
|
-
throw new BadRequestError(`Attribute ${attr} must be of type "object"`);
|
|
36
|
+
throw new errors_1.BadRequestError(`Attribute ${attr} must be of type "object"`);
|
|
38
37
|
}
|
|
39
38
|
return data;
|
|
40
39
|
}
|
|
40
|
+
exports.assertObject = assertObject;
|
|
41
41
|
/**
|
|
42
42
|
* Throws if the provided data is not an object or an array.
|
|
43
43
|
* Returns the unmodified data if validated
|
|
44
44
|
*
|
|
45
45
|
* @throws
|
|
46
|
-
* @param
|
|
47
|
-
* @param
|
|
48
|
-
* @return {object|array}
|
|
46
|
+
* @param attr - tested attribute name
|
|
47
|
+
* @param data
|
|
49
48
|
*/
|
|
50
49
|
function assertArrayOrObject(attr, data) {
|
|
51
50
|
if (data === null || data === undefined) {
|
|
52
51
|
return null;
|
|
53
52
|
}
|
|
54
53
|
if (typeof data !== "object") {
|
|
55
|
-
throw new BadRequestError(`Attribute ${attr} must be of type "object" or "array"`);
|
|
54
|
+
throw new errors_1.BadRequestError(`Attribute ${attr} must be of type "object" or "array"`);
|
|
56
55
|
}
|
|
57
56
|
return data;
|
|
58
57
|
}
|
|
58
|
+
exports.assertArrayOrObject = assertArrayOrObject;
|
|
59
59
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* @throws
|
|
65
|
-
* @param {string} attr - tested attribute name
|
|
66
|
-
* @param {*} data
|
|
67
|
-
* @return {array}
|
|
60
|
+
* The overload above is not a claim the implementation does not make: every
|
|
61
|
+
* element that reaches the returned array has been checked with
|
|
62
|
+
* `typeof d !== type`, so a call with `"string"` really does answer `string[]`.
|
|
68
63
|
*/
|
|
69
64
|
function assertArray(attr, data, type) {
|
|
70
65
|
if (data === null || data === undefined) {
|
|
71
66
|
return [];
|
|
72
67
|
}
|
|
73
68
|
if (!Array.isArray(data)) {
|
|
74
|
-
throw new BadRequestError(`Attribute ${attr} must be of type "array"`);
|
|
69
|
+
throw new errors_1.BadRequestError(`Attribute ${attr} must be of type "array"`);
|
|
75
70
|
}
|
|
76
71
|
const clone = [];
|
|
77
72
|
for (const d of data) {
|
|
78
73
|
if (d !== undefined && d !== null) {
|
|
79
74
|
if (typeof d !== type) {
|
|
80
|
-
throw new BadRequestError(`Attribute ${attr} must contain only values of type "${type}"`);
|
|
75
|
+
throw new errors_1.BadRequestError(`Attribute ${attr} must contain only values of type "${type}"`);
|
|
81
76
|
}
|
|
82
77
|
clone.push(d);
|
|
83
78
|
}
|
|
84
79
|
}
|
|
85
80
|
return clone;
|
|
86
81
|
}
|
|
82
|
+
exports.assertArray = assertArray;
|
|
87
83
|
/**
|
|
88
84
|
* Throws if the provided data is not a string
|
|
89
85
|
* Returns the unmodified data if validated
|
|
90
86
|
*
|
|
91
87
|
* @throws
|
|
92
|
-
* @param
|
|
93
|
-
* @param
|
|
94
|
-
* @return {null|string}
|
|
88
|
+
* @param attr - tested attribute name
|
|
89
|
+
* @param data
|
|
95
90
|
*/
|
|
96
91
|
function assertString(attr, data) {
|
|
97
92
|
if (data === null || data === undefined) {
|
|
98
93
|
return null;
|
|
99
94
|
}
|
|
100
95
|
if (typeof data !== "string") {
|
|
101
|
-
throw new BadRequestError(`Attribute ${attr} must be of type "string"`);
|
|
96
|
+
throw new errors_1.BadRequestError(`Attribute ${attr} must be of type "string"`);
|
|
102
97
|
}
|
|
103
98
|
return data;
|
|
104
99
|
}
|
|
100
|
+
exports.assertString = assertString;
|
|
105
101
|
/**
|
|
106
102
|
* Throws if the provided data is not an integer
|
|
107
103
|
* Returns the unmodified data if validated
|
|
108
104
|
*
|
|
109
105
|
* @throws
|
|
110
|
-
* @param
|
|
111
|
-
* @param
|
|
112
|
-
* @return {number}
|
|
106
|
+
* @param attr - tested attribute name
|
|
107
|
+
* @param data
|
|
113
108
|
*/
|
|
114
109
|
function assertInteger(attr, data) {
|
|
115
110
|
if (!Number.isInteger(data)) {
|
|
116
|
-
throw new BadRequestError(`Attribute ${attr} must be an integer`);
|
|
111
|
+
throw new errors_1.BadRequestError(`Attribute ${attr} must be an integer`);
|
|
117
112
|
}
|
|
118
113
|
return data;
|
|
119
114
|
}
|
|
120
|
-
|
|
121
|
-
assertArray,
|
|
122
|
-
assertArrayOrObject,
|
|
123
|
-
assertInteger,
|
|
124
|
-
assertObject,
|
|
125
|
-
assertString,
|
|
126
|
-
};
|
|
115
|
+
exports.assertInteger = assertInteger;
|
|
127
116
|
//# sourceMappingURL=assertType.js.map
|
package/dist/lib/util/async.js
CHANGED
|
@@ -8,23 +8,36 @@ exports.promiseAllN = void 0;
|
|
|
8
8
|
* https://gist.github.com/jcouyang/632709f30e12a7879a73e9e132c0d56b
|
|
9
9
|
*/
|
|
10
10
|
function promiseAllN(collection, n = 100) {
|
|
11
|
+
// An empty collection resolves to an empty list. The guard clause this
|
|
12
|
+
// replaces read `return resolve([])`, which answers `undefined` — the
|
|
13
|
+
// resolver's return value — rather than the promise it had just settled.
|
|
14
|
+
if (collection.length === 0) {
|
|
15
|
+
return Promise.resolve([]);
|
|
16
|
+
}
|
|
11
17
|
let i = 0;
|
|
12
18
|
let jobsLeft = collection.length;
|
|
13
19
|
const outcome = [];
|
|
14
20
|
let rejected = false;
|
|
15
21
|
// create a new promise and capture reference to resolve and reject to avoid nesting of code
|
|
16
|
-
let resolve
|
|
22
|
+
let resolve = () => undefined;
|
|
23
|
+
let reject = () => undefined;
|
|
17
24
|
const pendingPromise = new Promise((res, rej) => {
|
|
18
25
|
resolve = res;
|
|
19
26
|
reject = rej;
|
|
20
27
|
});
|
|
21
|
-
// Guard clause
|
|
22
|
-
if (collection.length === 0) {
|
|
23
|
-
return resolve([]);
|
|
24
|
-
}
|
|
25
28
|
// execute the j'th thunk
|
|
26
29
|
function runJob(j) {
|
|
27
|
-
collection[j]
|
|
30
|
+
const job = collection[j];
|
|
31
|
+
// `j` is always an index into `collection` — the bootstrap below and the
|
|
32
|
+
// `i < collection.length` check are what keep it one.
|
|
33
|
+
if (job === undefined) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
// `Reflect.apply` with the collection as the receiver: `collection[j]()`
|
|
37
|
+
// passed the array as `this`, and hoisting the lookup out of the call is
|
|
38
|
+
// how that gets dropped silently. Every caller hands arrows, so nothing
|
|
39
|
+
// reads it — preserved rather than re-decided.
|
|
40
|
+
Reflect.apply(job, collection, [])
|
|
28
41
|
.then((result) => {
|
|
29
42
|
if (rejected) {
|
|
30
43
|
return; // no op!
|
|
@@ -62,7 +62,7 @@ class AsyncStore {
|
|
|
62
62
|
}
|
|
63
63
|
_getStore() {
|
|
64
64
|
const store = this._asyncLocalStorage.getStore();
|
|
65
|
-
(0, assert_1.default)(
|
|
65
|
+
(0, assert_1.default)(store !== undefined, "Associated AsyncStore is not set");
|
|
66
66
|
return store;
|
|
67
67
|
}
|
|
68
68
|
}
|
|
@@ -74,5 +74,14 @@ export declare class BufferedPassThrough extends stream.Duplex {
|
|
|
74
74
|
* @param callback
|
|
75
75
|
*/
|
|
76
76
|
_destroy(err: Error, callback: Callback): void;
|
|
77
|
+
/**
|
|
78
|
+
* Pushes whatever the buffer still holds, closes the stream and releases the
|
|
79
|
+
* buffer. Both `_final` and `_destroy` end up here, and `_destroy` may run
|
|
80
|
+
* after `_final` has already flushed — resetting the offset is what stops the
|
|
81
|
+
* tail being pushed twice. It used to be `this.buffer = null` that stopped
|
|
82
|
+
* it, which made the declared `Buffer` a lie the two call sites had to
|
|
83
|
+
* maintain.
|
|
84
|
+
*/
|
|
85
|
+
private flushAndClose;
|
|
77
86
|
}
|
|
78
87
|
export {};
|
|
@@ -25,6 +25,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.BufferedPassThrough = void 0;
|
|
27
27
|
const stream_1 = __importDefault(require("stream"));
|
|
28
|
+
const DEFAULT_BUFFER_SIZE = 8196;
|
|
28
29
|
/**
|
|
29
30
|
* This streams accumulate chunks data into a buffer until the amount of data is equal or exceed the buffer size.
|
|
30
31
|
* Then, it emits a single chunk with the accumulated data.
|
|
@@ -33,10 +34,16 @@ const stream_1 = __importDefault(require("stream"));
|
|
|
33
34
|
* This can helps reducing the number of syscall made by the stream consumer.
|
|
34
35
|
*/
|
|
35
36
|
class BufferedPassThrough extends stream_1.default.Duplex {
|
|
36
|
-
constructor(options
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
constructor(options) {
|
|
38
|
+
// `highWaterMark` is optional on DuplexOptions, so it is resolved once and
|
|
39
|
+
// handed to both the stream and the internal buffer. It used to be a
|
|
40
|
+
// default argument, which covered the no-argument call and nothing else:
|
|
41
|
+
// `new BufferedPassThrough({})` reached `Buffer.alloc(undefined)`, which
|
|
42
|
+
// throws.
|
|
43
|
+
const highWaterMark = options?.highWaterMark ?? DEFAULT_BUFFER_SIZE;
|
|
44
|
+
super({ ...options, highWaterMark });
|
|
45
|
+
this.bufferSize = highWaterMark;
|
|
46
|
+
this.buffer = Buffer.alloc(highWaterMark);
|
|
40
47
|
this.offset = 0;
|
|
41
48
|
}
|
|
42
49
|
/**
|
|
@@ -133,12 +140,7 @@ class BufferedPassThrough extends stream_1.default.Duplex {
|
|
|
133
140
|
* @param callback
|
|
134
141
|
*/
|
|
135
142
|
_final(callback) {
|
|
136
|
-
|
|
137
|
-
// Push last bit of data
|
|
138
|
-
this.push(this.buffer.slice(0, this.offset));
|
|
139
|
-
}
|
|
140
|
-
this.push(null); // Close the stream
|
|
141
|
-
this.buffer = null;
|
|
143
|
+
this.flushAndClose();
|
|
142
144
|
callback();
|
|
143
145
|
}
|
|
144
146
|
/**
|
|
@@ -148,13 +150,25 @@ class BufferedPassThrough extends stream_1.default.Duplex {
|
|
|
148
150
|
* @param callback
|
|
149
151
|
*/
|
|
150
152
|
_destroy(err, callback) {
|
|
151
|
-
|
|
153
|
+
this.flushAndClose();
|
|
154
|
+
callback(err);
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Pushes whatever the buffer still holds, closes the stream and releases the
|
|
158
|
+
* buffer. Both `_final` and `_destroy` end up here, and `_destroy` may run
|
|
159
|
+
* after `_final` has already flushed — resetting the offset is what stops the
|
|
160
|
+
* tail being pushed twice. It used to be `this.buffer = null` that stopped
|
|
161
|
+
* it, which made the declared `Buffer` a lie the two call sites had to
|
|
162
|
+
* maintain.
|
|
163
|
+
*/
|
|
164
|
+
flushAndClose() {
|
|
165
|
+
if (this.offset > 0) {
|
|
152
166
|
// Push last bit of data
|
|
153
167
|
this.push(this.buffer.slice(0, this.offset));
|
|
168
|
+
this.offset = 0;
|
|
154
169
|
}
|
|
155
170
|
this.push(null); // Close the stream
|
|
156
|
-
this.buffer =
|
|
157
|
-
callback(err);
|
|
171
|
+
this.buffer = Buffer.alloc(0);
|
|
158
172
|
}
|
|
159
173
|
}
|
|
160
174
|
exports.BufferedPassThrough = BufferedPassThrough;
|
package/dist/lib/util/bytes.d.ts
CHANGED
package/dist/lib/util/bytes.js
CHANGED
|
@@ -19,11 +19,15 @@ function bytes(input) {
|
|
|
19
19
|
else if (input.toLowerCase().includes("tb")) {
|
|
20
20
|
unit = 1024 ** 4;
|
|
21
21
|
}
|
|
22
|
-
const match =
|
|
22
|
+
const match = /\d+/.exec(input);
|
|
23
23
|
if (!match) {
|
|
24
24
|
return null;
|
|
25
25
|
}
|
|
26
|
-
const
|
|
26
|
+
const [digits] = match;
|
|
27
|
+
if (digits === undefined) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
const number = Number.parseInt(digits, 10);
|
|
27
31
|
if (Number.isNaN(number)) {
|
|
28
32
|
return null;
|
|
29
33
|
}
|
package/dist/lib/util/debug.d.ts
CHANGED
package/dist/lib/util/debug.js
CHANGED
|
@@ -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,24 +19,55 @@
|
|
|
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
|
-
|
|
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 util = __importStar(require("node:util"));
|
|
49
|
+
const debug_1 = __importDefault(require("debug"));
|
|
50
|
+
require("../types/Global");
|
|
51
|
+
debug_1.default.formatters.a = (value) => {
|
|
52
|
+
const inspectOpts = debug_1.default.inspectOpts;
|
|
26
53
|
if (inspectOpts.expand) {
|
|
27
54
|
return `\n${util.inspect(value, inspectOpts)}`;
|
|
28
55
|
}
|
|
29
|
-
|
|
56
|
+
// Collapse whitespace runs that contain a newline into a single space,
|
|
57
|
+
// leaving newline-free whitespace untouched. A single `\s+` scan with a
|
|
58
|
+
// predicate avoids the super-linear backtracking of `\s*\n\s*`.
|
|
59
|
+
return util
|
|
60
|
+
.inspect(value, inspectOpts)
|
|
61
|
+
.replace(/\s+/g, (match) => (match.includes("\n") ? " " : match));
|
|
30
62
|
};
|
|
31
|
-
|
|
63
|
+
debug_1.default.formatArgs = () => { };
|
|
32
64
|
function createDebug(namespace) {
|
|
33
|
-
const myDebug =
|
|
34
|
-
myDebug.log = (...args) => {
|
|
65
|
+
const myDebug = (0, debug_1.default)(namespace);
|
|
66
|
+
myDebug.log = (msg, ...args) => {
|
|
35
67
|
if (!["debug", "trace"].includes(global.kuzzle.log.level)) {
|
|
36
68
|
global.kuzzle.log.level = "debug";
|
|
37
69
|
}
|
|
38
|
-
global.kuzzle.log.debug({ namespace }, ...args);
|
|
70
|
+
global.kuzzle.log.debug({ namespace }, msg, ...args);
|
|
39
71
|
};
|
|
40
72
|
return myDebug;
|
|
41
73
|
}
|
|
@@ -1 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import "../types/Global";
|
|
2
|
+
interface DeprecationLogger {
|
|
3
|
+
warn: (...args: unknown[]) => void;
|
|
4
|
+
}
|
|
5
|
+
type Deprecations = Record<string, string | {
|
|
6
|
+
message?: string;
|
|
7
|
+
} | null>;
|
|
8
|
+
export declare const deprecateProperties: <T extends object>(logger: DeprecationLogger, target: T, deprecations?: Deprecations) => T;
|
|
9
|
+
export {};
|
|
@@ -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,7 +19,9 @@
|
|
|
18
19
|
* See the License for the specific language governing permissions and
|
|
19
20
|
* limitations under the License.
|
|
20
21
|
*/
|
|
21
|
-
"
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.deprecateProperties = void 0;
|
|
24
|
+
require("../types/Global");
|
|
22
25
|
const deprecationWarning = (logger, ...args) => {
|
|
23
26
|
if (global.NODE_ENV === "development") {
|
|
24
27
|
logger.warn("DEPRECATION WARNING");
|
|
@@ -26,11 +29,14 @@ const deprecationWarning = (logger, ...args) => {
|
|
|
26
29
|
}
|
|
27
30
|
};
|
|
28
31
|
const warnIfDeprecated = (logger, deprecations, member) => {
|
|
29
|
-
const deprecatedProperty = Object.keys(deprecations).find((deprecated) => deprecated === member)
|
|
32
|
+
const deprecatedProperty = Object.keys(deprecations).find((deprecated) => deprecated === member);
|
|
30
33
|
if (!deprecatedProperty) {
|
|
31
34
|
return;
|
|
32
35
|
}
|
|
33
|
-
|
|
36
|
+
const alternative = deprecations[deprecatedProperty];
|
|
37
|
+
if (alternative &&
|
|
38
|
+
typeof alternative === "object" &&
|
|
39
|
+
typeof alternative.message === "string") {
|
|
34
40
|
deprecationWarning(logger, alternative.message);
|
|
35
41
|
}
|
|
36
42
|
else if (typeof alternative === "string") {
|
|
@@ -58,7 +64,5 @@ const deprecateProperties = (logger, target, deprecations = {}) => {
|
|
|
58
64
|
},
|
|
59
65
|
});
|
|
60
66
|
};
|
|
61
|
-
|
|
62
|
-
deprecateProperties,
|
|
63
|
-
};
|
|
67
|
+
exports.deprecateProperties = deprecateProperties;
|
|
64
68
|
//# sourceMappingURL=deprecate.js.map
|
|
@@ -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,13 +19,16 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
+
};
|
|
25
|
+
const didyoumean_1 = __importDefault(require("didyoumean"));
|
|
26
|
+
require("../types/Global");
|
|
27
|
+
function printDidYouMean(str, list) {
|
|
24
28
|
if (global.NODE_ENV !== "development") {
|
|
25
29
|
return "";
|
|
26
30
|
}
|
|
27
|
-
const result =
|
|
31
|
+
const result = (0, didyoumean_1.default)(str, list);
|
|
28
32
|
if (!result) {
|
|
29
33
|
return "";
|
|
30
34
|
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import "../types/Global";
|
|
2
|
+
/**
|
|
3
|
+
* withLock() options
|
|
4
|
+
*/
|
|
5
|
+
export interface MutexConfig {
|
|
6
|
+
/**
|
|
7
|
+
* Number of acquisition retries after the first failed attempt, i.e. at
|
|
8
|
+
* most `retryAttempts + 1` attempts are made (default: 10)
|
|
9
|
+
*/
|
|
10
|
+
retryAttempts?: number;
|
|
11
|
+
/**
|
|
12
|
+
* Delay between 2 lock acquisition attempts, in milliseconds (default: 200)
|
|
13
|
+
*/
|
|
14
|
+
retryDelay?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Lock TTL in milliseconds (default: 30000)
|
|
17
|
+
*/
|
|
18
|
+
ttl?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Thrown when a lock acquired by `withLock` is lost while its callback is
|
|
22
|
+
* still running (e.g. TTL extension failed and another node may now hold
|
|
23
|
+
* the lock).
|
|
24
|
+
*/
|
|
25
|
+
export declare class MutexLockLostError extends Error {
|
|
26
|
+
constructor(key: string, cause?: Error);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Runs `callback` while holding a distributed, reentrant lock on `key`.
|
|
30
|
+
*
|
|
31
|
+
* Reentrant: if the current async context already holds `key` (i.e. this is
|
|
32
|
+
* a nested call from inside another `withLock(key, ...)` call for the same
|
|
33
|
+
* key), `callback` runs immediately with no new Redis round-trip, and
|
|
34
|
+
* `config` is silently ignored (the ancestor's lock/TTL/retry settings
|
|
35
|
+
* apply — this is correct reentrant-mutex semantics, not a bug).
|
|
36
|
+
*
|
|
37
|
+
* The lock's TTL is extended in the background while `callback` runs. If
|
|
38
|
+
* the lock cannot be acquired within `retryAttempts + 1` attempts, the
|
|
39
|
+
* returned promise rejects without running `callback`.
|
|
40
|
+
*
|
|
41
|
+
* If the lock is lost mid-callback (e.g. TTL extension failed and another
|
|
42
|
+
* node may now hold it), the returned promise rejects with
|
|
43
|
+
* `MutexLockLostError` as soon as that's detected. `callback` itself cannot
|
|
44
|
+
* be cancelled and keeps running in the background; do not perform
|
|
45
|
+
* authoritative side effects after observing this rejection.
|
|
46
|
+
*
|
|
47
|
+
* Do not use on the same resource key as the deprecated `Mutex` class
|
|
48
|
+
* concurrently: both write to the same Redis key with incompatible
|
|
49
|
+
* value/TTL formats and will contend with (but never corrupt) each other.
|
|
50
|
+
*
|
|
51
|
+
* @param key - resource identifier to be locked (must be identical across
|
|
52
|
+
* all nodes)
|
|
53
|
+
* @param callback - executed while the lock is held
|
|
54
|
+
* @param config - lock options (ignored if this call is reentrant)
|
|
55
|
+
*/
|
|
56
|
+
export declare function withLock<T>(key: string, callback: () => Promise<T>, config?: MutexConfig): Promise<T>;
|