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,38 +19,54 @@
|
|
|
18
19
|
* See the License for the specific language governing permissions and
|
|
19
20
|
* limitations under the License.
|
|
20
21
|
*/
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
const
|
|
22
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
+
};
|
|
25
|
+
const errors_1 = require("../../kerror/errors");
|
|
26
|
+
const request_1 = require("../../api/request");
|
|
27
|
+
const debug_1 = __importDefault(require("../../util/debug"));
|
|
28
|
+
const clientConnection_1 = __importDefault(require("./clientConnection"));
|
|
29
|
+
const protocol_1 = __importDefault(require("./protocols/protocol"));
|
|
30
|
+
const debug = (0, debug_1.default)("kuzzle:network:protocols");
|
|
31
|
+
const logLevels = [
|
|
32
|
+
"silly",
|
|
33
|
+
"debug",
|
|
34
|
+
"verbose",
|
|
35
|
+
"info",
|
|
36
|
+
"warn",
|
|
37
|
+
"error",
|
|
38
|
+
];
|
|
39
|
+
/**
|
|
40
|
+
* The object a protocol plugin is initialized with: the constructors and the
|
|
41
|
+
* loggers it is allowed to reach, rather than the Kuzzle instance itself.
|
|
42
|
+
*/
|
|
26
43
|
class Context {
|
|
27
44
|
constructor() {
|
|
28
|
-
this.ClientConnection =
|
|
45
|
+
this.ClientConnection = clientConnection_1.default;
|
|
29
46
|
this.debug = debug;
|
|
30
47
|
this.errors = {
|
|
31
|
-
BadRequestError,
|
|
32
|
-
ExternalServiceError,
|
|
33
|
-
ForbiddenError,
|
|
34
|
-
GatewayTimeoutError,
|
|
35
|
-
InternalError:
|
|
36
|
-
KuzzleError,
|
|
37
|
-
NotFoundError,
|
|
38
|
-
PartialError,
|
|
39
|
-
PluginImplementationError,
|
|
40
|
-
PreconditionError,
|
|
41
|
-
ServiceUnavailableError,
|
|
42
|
-
SizeLimitError,
|
|
43
|
-
TooManyRequestsError,
|
|
44
|
-
UnauthorizedError,
|
|
48
|
+
BadRequestError: errors_1.BadRequestError,
|
|
49
|
+
ExternalServiceError: errors_1.ExternalServiceError,
|
|
50
|
+
ForbiddenError: errors_1.ForbiddenError,
|
|
51
|
+
GatewayTimeoutError: errors_1.GatewayTimeoutError,
|
|
52
|
+
InternalError: errors_1.InternalError,
|
|
53
|
+
KuzzleError: errors_1.KuzzleError,
|
|
54
|
+
NotFoundError: errors_1.NotFoundError,
|
|
55
|
+
PartialError: errors_1.PartialError,
|
|
56
|
+
PluginImplementationError: errors_1.PluginImplementationError,
|
|
57
|
+
PreconditionError: errors_1.PreconditionError,
|
|
58
|
+
ServiceUnavailableError: errors_1.ServiceUnavailableError,
|
|
59
|
+
SizeLimitError: errors_1.SizeLimitError,
|
|
60
|
+
TooManyRequestsError: errors_1.TooManyRequestsError,
|
|
61
|
+
UnauthorizedError: errors_1.UnauthorizedError,
|
|
45
62
|
};
|
|
46
|
-
this.Protocol =
|
|
47
|
-
this.Request = Request;
|
|
48
|
-
this.RequestContext = RequestContext;
|
|
49
|
-
this.RequestInput = RequestInput;
|
|
63
|
+
this.Protocol = protocol_1.default;
|
|
64
|
+
this.Request = request_1.Request;
|
|
65
|
+
this.RequestContext = request_1.RequestContext;
|
|
66
|
+
this.RequestInput = request_1.RequestInput;
|
|
50
67
|
this.log = {};
|
|
51
|
-
for (const type of
|
|
52
|
-
this.log[type] = (...args) => global.kuzzle.log[type](...args);
|
|
68
|
+
for (const type of logLevels) {
|
|
69
|
+
this.log[type] = (message, ...args) => global.kuzzle.log[type](message, ...args);
|
|
53
70
|
}
|
|
54
71
|
}
|
|
55
72
|
}
|
|
@@ -1,26 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import type { JSONObject } from "../../types/JSONObject";
|
|
2
|
+
import type { KuzzleRequest } from "../../api/request";
|
|
3
|
+
import { AccessLogger, type AccessLogExtra } from "./accessLogger";
|
|
4
|
+
import type Protocol from "./protocols/protocol";
|
|
5
|
+
import type ClientConnection from "./clientConnection";
|
|
6
|
+
import type { NetworkEntryPoint } from "./networkEntryPoint";
|
|
7
|
+
import type { ServerConfiguration } from "../../types";
|
|
8
|
+
/**
|
|
9
|
+
* `implements NetworkEntryPoint`: that interface was declared as a stop-gap
|
|
10
|
+
* while this file was JavaScript — protocols need the contract and importing
|
|
11
|
+
* the concrete class would close a cycle. It stays, but it is now *checked*
|
|
12
|
+
* against the implementation rather than asserted about it.
|
|
13
|
+
*/
|
|
14
|
+
declare class EntryPoint implements NetworkEntryPoint {
|
|
15
|
+
config: ServerConfiguration;
|
|
16
|
+
protocols: Map<string, Protocol<unknown>>;
|
|
17
|
+
private readonly _clients;
|
|
6
18
|
accessLogger: AccessLogger;
|
|
7
19
|
isShuttingDown: boolean;
|
|
8
|
-
logger:
|
|
9
|
-
|
|
20
|
+
logger: ReturnType<typeof global.kuzzle.log.child>;
|
|
21
|
+
constructor();
|
|
22
|
+
dispatch(event: string, data: JSONObject): void;
|
|
10
23
|
/**
|
|
11
24
|
* Initializes the InternalProtocol first to allow subscriptions
|
|
12
25
|
* in plugins init() method.
|
|
13
26
|
*
|
|
14
27
|
* @returns {Promise}
|
|
15
28
|
*/
|
|
16
|
-
init(): Promise<
|
|
29
|
+
init(): Promise<boolean>;
|
|
17
30
|
/**
|
|
18
31
|
* Starts the network protocols.
|
|
19
32
|
* Every protocol is listening for request after this call
|
|
20
33
|
*
|
|
21
34
|
* @returns {Promise}
|
|
22
35
|
*/
|
|
23
|
-
startListening(): Promise<
|
|
36
|
+
startListening(): Promise<void>;
|
|
24
37
|
/**
|
|
25
38
|
* On client subscribing to a channel, dispatch the information
|
|
26
39
|
* to the protocol.
|
|
@@ -29,7 +42,7 @@ declare class EntryPoint {
|
|
|
29
42
|
* @param {string} connectionId
|
|
30
43
|
*/
|
|
31
44
|
joinChannel(channel: string, connectionId: string): void;
|
|
32
|
-
leaveChannel(channel:
|
|
45
|
+
leaveChannel(channel: string, connectionId: string): void;
|
|
33
46
|
/**
|
|
34
47
|
* Loads installed protocols in memory
|
|
35
48
|
*/
|
|
@@ -39,13 +52,13 @@ declare class EntryPoint {
|
|
|
39
52
|
* @param {Request} request
|
|
40
53
|
* @param {object} extra
|
|
41
54
|
*/
|
|
42
|
-
logAccess(connection: ClientConnection, request:
|
|
55
|
+
logAccess(connection: ClientConnection, request: KuzzleRequest, extra?: AccessLogExtra | null): void;
|
|
43
56
|
/**
|
|
44
57
|
* @param {ClientConnection} connection
|
|
45
58
|
* @param {Request} request
|
|
46
59
|
* @param cb
|
|
47
60
|
*/
|
|
48
|
-
execute(connection: ClientConnection, request:
|
|
61
|
+
execute(connection: ClientConnection, request: KuzzleRequest, cb: (response: JSONObject) => void): void;
|
|
49
62
|
/**
|
|
50
63
|
*
|
|
51
64
|
* @param {ClientConnection} connection
|
|
@@ -55,8 +68,17 @@ declare class EntryPoint {
|
|
|
55
68
|
* @param {string} connectionId
|
|
56
69
|
*/
|
|
57
70
|
removeConnection(connectionId: string): void;
|
|
58
|
-
_broadcast(data:
|
|
59
|
-
|
|
60
|
-
|
|
71
|
+
_broadcast(data: JSONObject): void;
|
|
72
|
+
/**
|
|
73
|
+
* The protocol a client is connected through.
|
|
74
|
+
*
|
|
75
|
+
* The three callers each guard `client?.protocol` and then read the map
|
|
76
|
+
* with it, unchecked: a connection naming a protocol this entry point does
|
|
77
|
+
* not have is what the `try` around each of them was already for, so the
|
|
78
|
+
* throw lands where the log already is.
|
|
79
|
+
*/
|
|
80
|
+
private protocolOf;
|
|
81
|
+
_isShuttingDownError(connection: ClientConnection, request: KuzzleRequest, cb: (response: JSONObject) => void): void;
|
|
82
|
+
_notify(data: JSONObject): void;
|
|
61
83
|
}
|
|
62
|
-
|
|
84
|
+
export = EntryPoint;
|
|
@@ -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,28 +19,69 @@
|
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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_assert_1 = __importDefault(require("node:assert"));
|
|
49
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
50
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
51
|
+
const node_util_1 = require("node:util");
|
|
52
|
+
const bluebird_1 = __importDefault(require("bluebird"));
|
|
53
|
+
const request_1 = require("../../api/request");
|
|
54
|
+
const kerror = __importStar(require("../../kerror"));
|
|
55
|
+
const debug_1 = __importDefault(require("../../util/debug"));
|
|
56
|
+
const stackTrace_1 = require("../../util/stackTrace");
|
|
57
|
+
const accessLogger_1 = require("./accessLogger");
|
|
58
|
+
const context_1 = __importDefault(require("./context"));
|
|
59
|
+
const protocolManifest_1 = __importDefault(require("./protocolManifest"));
|
|
60
|
+
const httpwsProtocol_1 = __importDefault(require("./protocols/httpwsProtocol"));
|
|
61
|
+
const internalProtocol_1 = __importDefault(require("./protocols/internalProtocol"));
|
|
62
|
+
const mqttProtocol_1 = __importDefault(require("./protocols/mqttProtocol"));
|
|
63
|
+
/**
|
|
64
|
+
* The message of whatever was thrown. Each of the five handlers below logs a
|
|
65
|
+
* protocol's failure and carries on; `catch` answers `unknown`.
|
|
66
|
+
*/
|
|
67
|
+
function messageOf(thrown) {
|
|
68
|
+
return thrown instanceof Error ? thrown.message : (0, node_util_1.inspect)(thrown);
|
|
69
|
+
}
|
|
70
|
+
const debug = (0, debug_1.default)("kuzzle:network:embedded");
|
|
35
71
|
const networkError = kerror.wrap("network", "entrypoint");
|
|
36
|
-
const DEFAULT_PROTOCOLS = [
|
|
72
|
+
const DEFAULT_PROTOCOLS = [httpwsProtocol_1.default, mqttProtocol_1.default, internalProtocol_1.default];
|
|
73
|
+
/**
|
|
74
|
+
* `implements NetworkEntryPoint`: that interface was declared as a stop-gap
|
|
75
|
+
* while this file was JavaScript — protocols need the contract and importing
|
|
76
|
+
* the concrete class would close a cycle. It stays, but it is now *checked*
|
|
77
|
+
* against the implementation rather than asserted about it.
|
|
78
|
+
*/
|
|
37
79
|
class EntryPoint {
|
|
38
80
|
constructor() {
|
|
39
81
|
this.config = global.kuzzle.config.server;
|
|
40
82
|
this.protocols = new Map();
|
|
41
83
|
this._clients = new Map();
|
|
42
|
-
this.accessLogger = new AccessLogger();
|
|
84
|
+
this.accessLogger = new accessLogger_1.AccessLogger();
|
|
43
85
|
this.isShuttingDown = false;
|
|
44
86
|
this.logger = global.kuzzle.log.child("core:network:entrypoint");
|
|
45
87
|
}
|
|
@@ -65,11 +107,19 @@ class EntryPoint {
|
|
|
65
107
|
* @returns {Promise}
|
|
66
108
|
*/
|
|
67
109
|
async init() {
|
|
110
|
+
let internal;
|
|
68
111
|
for (const ProtocolClass of DEFAULT_PROTOCOLS) {
|
|
69
112
|
const protocol = new ProtocolClass();
|
|
70
113
|
this.protocols.set(protocol.name, protocol);
|
|
114
|
+
if (protocol instanceof internalProtocol_1.default) {
|
|
115
|
+
internal = protocol;
|
|
116
|
+
}
|
|
71
117
|
}
|
|
72
|
-
|
|
118
|
+
// The internal protocol is one of `DEFAULT_PROTOCOLS`, so it was fetched
|
|
119
|
+
// back out of the map it had just been put into, by the name it gives
|
|
120
|
+
// itself.
|
|
121
|
+
(0, node_assert_1.default)(internal !== undefined, "[network] the internal protocol is missing from the default protocols");
|
|
122
|
+
return internal.init(this);
|
|
73
123
|
}
|
|
74
124
|
/**
|
|
75
125
|
* Starts the network protocols.
|
|
@@ -96,7 +146,7 @@ class EntryPoint {
|
|
|
96
146
|
}
|
|
97
147
|
}));
|
|
98
148
|
}
|
|
99
|
-
await
|
|
149
|
+
await bluebird_1.default.all(initPromises);
|
|
100
150
|
await this.loadMoreProtocols();
|
|
101
151
|
}
|
|
102
152
|
/**
|
|
@@ -109,62 +159,66 @@ class EntryPoint {
|
|
|
109
159
|
joinChannel(channel, connectionId) {
|
|
110
160
|
debug('[server] client "%s" joining channel "%s"', connectionId, channel);
|
|
111
161
|
const client = this._clients.get(connectionId);
|
|
112
|
-
if (!client
|
|
162
|
+
if (!client?.protocol) {
|
|
113
163
|
return;
|
|
114
164
|
}
|
|
115
165
|
try {
|
|
116
|
-
this.
|
|
166
|
+
this.protocolOf(client).joinChannel(channel, connectionId);
|
|
117
167
|
}
|
|
118
168
|
catch (e) {
|
|
119
|
-
this.logger.error(`[join] protocol ${client
|
|
169
|
+
this.logger.error(`[join] protocol ${client.protocol} failed: ${messageOf(e)}`);
|
|
120
170
|
}
|
|
121
171
|
}
|
|
122
172
|
leaveChannel(channel, connectionId) {
|
|
123
173
|
debug('[server] connection "%s" leaving channel "%s"', connectionId, channel);
|
|
124
174
|
const client = this._clients.get(connectionId);
|
|
125
|
-
if (!client
|
|
175
|
+
if (!client?.protocol) {
|
|
126
176
|
return;
|
|
127
177
|
}
|
|
128
178
|
try {
|
|
129
|
-
this.
|
|
179
|
+
this.protocolOf(client).leaveChannel(channel, connectionId);
|
|
130
180
|
}
|
|
131
181
|
catch (e) {
|
|
132
|
-
this.logger.error(`[leave channel] protocol ${client
|
|
182
|
+
this.logger.error(`[leave channel] protocol ${client.protocol} failed: ${messageOf(e)}`);
|
|
133
183
|
}
|
|
134
184
|
}
|
|
135
185
|
/**
|
|
136
186
|
* Loads installed protocols in memory
|
|
137
187
|
*/
|
|
138
188
|
async loadMoreProtocols() {
|
|
139
|
-
const dir =
|
|
189
|
+
const dir = node_path_1.default.join(__dirname, "../../../protocols/enabled");
|
|
140
190
|
let dirs;
|
|
141
191
|
try {
|
|
142
|
-
dirs =
|
|
192
|
+
dirs = node_fs_1.default.readdirSync(dir);
|
|
143
193
|
}
|
|
144
|
-
catch
|
|
194
|
+
catch {
|
|
145
195
|
// ignore if there is no protocols directory
|
|
146
196
|
return;
|
|
147
197
|
}
|
|
148
198
|
dirs = dirs
|
|
149
|
-
.map((d) =>
|
|
150
|
-
.filter((d) =>
|
|
151
|
-
await
|
|
199
|
+
.map((d) => node_path_1.default.join(dir, d))
|
|
200
|
+
.filter((d) => node_fs_1.default.statSync(d).isDirectory());
|
|
201
|
+
await bluebird_1.default.map(dirs, (protoDir) => {
|
|
202
|
+
// A protocol is loaded from disk at runtime: the path is only known then.
|
|
203
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
152
204
|
const protocol = new (require(protoDir))();
|
|
153
|
-
const manifest = new
|
|
154
|
-
|
|
205
|
+
const manifest = new protocolManifest_1.default(protoDir, protocol);
|
|
206
|
+
// `load()` answers the name it validated: the field stays nullable
|
|
207
|
+
// because it is null until this call.
|
|
208
|
+
const { name } = manifest.load();
|
|
155
209
|
const initTimeout = global.kuzzle.config.services.common.defaultInitTimeout;
|
|
156
|
-
return
|
|
157
|
-
.then(() => protocol.init(this, new
|
|
210
|
+
return bluebird_1.default.resolve()
|
|
211
|
+
.then(() => protocol.init(this, new context_1.default()))
|
|
158
212
|
.catch((error) => {
|
|
159
|
-
this.logger.error(`Error during "${
|
|
213
|
+
this.logger.error(`Error during "${name}" protocol init:`);
|
|
160
214
|
throw error;
|
|
161
215
|
})
|
|
162
|
-
.timeout(initTimeout, `Protocol "${
|
|
216
|
+
.timeout(initTimeout, `Protocol "${name}" initialization timed out after ${initTimeout}ms. Try to increase the configuration "services.common.defaultInitTimeout".`)
|
|
163
217
|
.then(() => {
|
|
164
|
-
if (this.protocols.has(
|
|
165
|
-
throw kerror.get("protocol", "runtime", "already_exists",
|
|
218
|
+
if (this.protocols.has(name)) {
|
|
219
|
+
throw kerror.get("protocol", "runtime", "already_exists", name);
|
|
166
220
|
}
|
|
167
|
-
this.protocols.set(
|
|
221
|
+
this.protocols.set(name, protocol);
|
|
168
222
|
});
|
|
169
223
|
});
|
|
170
224
|
}
|
|
@@ -200,7 +254,7 @@ class EntryPoint {
|
|
|
200
254
|
}
|
|
201
255
|
this.logAccess(connection, _res);
|
|
202
256
|
const response = _res.response.toJSON();
|
|
203
|
-
cb(removeStacktrace(response));
|
|
257
|
+
cb((0, stackTrace_1.removeStacktrace)(response));
|
|
204
258
|
});
|
|
205
259
|
}
|
|
206
260
|
/**
|
|
@@ -210,7 +264,7 @@ class EntryPoint {
|
|
|
210
264
|
newConnection(connection) {
|
|
211
265
|
this._clients.set(connection.id, connection);
|
|
212
266
|
global.kuzzle.emit("connection:new", connection);
|
|
213
|
-
global.kuzzle.router.newConnection(new RequestContext({ connection }));
|
|
267
|
+
global.kuzzle.router.newConnection(new request_1.RequestContext({ connection }));
|
|
214
268
|
debug("New connection created: %s (protocol: %s)", connection.id, connection.protocol);
|
|
215
269
|
}
|
|
216
270
|
/**
|
|
@@ -220,40 +274,57 @@ class EntryPoint {
|
|
|
220
274
|
const connection = this._clients.get(connectionId);
|
|
221
275
|
if (connection) {
|
|
222
276
|
global.kuzzle.emit("connection:remove", connection);
|
|
223
|
-
global.kuzzle.router.removeConnection(new RequestContext({ connection }));
|
|
277
|
+
global.kuzzle.router.removeConnection(new request_1.RequestContext({ connection }));
|
|
224
278
|
this._clients.delete(connectionId);
|
|
225
279
|
debug("Removed connection: %s (protocol: %s)", connection.id, connection.protocol);
|
|
226
280
|
}
|
|
227
281
|
}
|
|
228
282
|
// --------------------------------------------------------------------
|
|
229
283
|
_broadcast(data) {
|
|
230
|
-
const sanitized = removeStacktrace(data);
|
|
284
|
+
const sanitized = (0, stackTrace_1.removeStacktrace)(data);
|
|
231
285
|
debug("[server] broadcasting data through all protocols: %a", sanitized);
|
|
232
286
|
for (const [name, protocol] of this.protocols.entries()) {
|
|
233
287
|
try {
|
|
234
288
|
protocol.broadcast(sanitized);
|
|
235
289
|
}
|
|
236
290
|
catch (e) {
|
|
237
|
-
this.logger.error(`[broadcast] protocol ${name} failed: ${e
|
|
291
|
+
this.logger.error(`[broadcast] protocol ${name} failed: ${messageOf(e)}\n${e instanceof Error ? e.stack : ""}`);
|
|
238
292
|
}
|
|
239
293
|
}
|
|
240
294
|
}
|
|
295
|
+
/**
|
|
296
|
+
* The protocol a client is connected through.
|
|
297
|
+
*
|
|
298
|
+
* The three callers each guard `client?.protocol` and then read the map
|
|
299
|
+
* with it, unchecked: a connection naming a protocol this entry point does
|
|
300
|
+
* not have is what the `try` around each of them was already for, so the
|
|
301
|
+
* throw lands where the log already is.
|
|
302
|
+
*/
|
|
303
|
+
protocolOf(client) {
|
|
304
|
+
const protocol = client.protocol === null
|
|
305
|
+
? undefined
|
|
306
|
+
: this.protocols.get(client.protocol);
|
|
307
|
+
if (protocol === undefined) {
|
|
308
|
+
throw kerror.get("protocol", "runtime", "invalid_connection", client.protocol);
|
|
309
|
+
}
|
|
310
|
+
return protocol;
|
|
311
|
+
}
|
|
241
312
|
_isShuttingDownError(connection, request, cb) {
|
|
242
313
|
request.setError(networkError.get("shutting_down"));
|
|
243
314
|
this.logAccess(connection, request);
|
|
244
|
-
cb(removeStacktrace(request.response.toJSON()));
|
|
315
|
+
cb((0, stackTrace_1.removeStacktrace)(request.response.toJSON()));
|
|
245
316
|
}
|
|
246
317
|
_notify(data) {
|
|
247
318
|
debug('[server] sending notification to client with connection id "%s": %a', data.connectionId, data);
|
|
248
319
|
const client = this._clients.get(data.connectionId);
|
|
249
|
-
if (!client
|
|
320
|
+
if (!client?.protocol) {
|
|
250
321
|
return;
|
|
251
322
|
}
|
|
252
323
|
try {
|
|
253
|
-
this.
|
|
324
|
+
this.protocolOf(client).notify((0, stackTrace_1.removeStacktrace)(data));
|
|
254
325
|
}
|
|
255
326
|
catch (e) {
|
|
256
|
-
this.logger.error(`[notify] protocol ${client.protocol} failed: ${e
|
|
327
|
+
this.logger.error(`[notify] protocol ${client.protocol} failed: ${messageOf(e)}`);
|
|
257
328
|
}
|
|
258
329
|
}
|
|
259
330
|
}
|
|
@@ -1,85 +1,55 @@
|
|
|
1
|
-
|
|
1
|
+
import type HttpMessage from "../protocols/httpMessage";
|
|
2
|
+
import RoutePart from "./routePart";
|
|
3
|
+
import type { RouteCallback, RouteHandlerFunction } from "./routeTypes";
|
|
2
4
|
/**
|
|
3
|
-
* Attach handler to routes and dispatch a HTTP
|
|
4
|
-
* message to the right handler
|
|
5
|
+
* Attach handler to routes and dispatch a HTTP message to the right handler
|
|
5
6
|
*
|
|
6
7
|
* Handlers will be called with the following arguments:
|
|
7
8
|
* - request: received HTTP request
|
|
8
9
|
* - response: HTTP response object
|
|
9
10
|
* - data: URL query arguments and/or POST data, if any
|
|
10
|
-
*
|
|
11
|
-
* @class Router
|
|
12
11
|
*/
|
|
13
12
|
declare class Router {
|
|
14
|
-
defaultHeaders:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
"Access-Control-Allow-Methods": string;
|
|
18
|
-
"content-type": string;
|
|
19
|
-
};
|
|
20
|
-
routes: {
|
|
21
|
-
DELETE: RoutePart;
|
|
22
|
-
GET: RoutePart;
|
|
23
|
-
HEAD: RoutePart;
|
|
24
|
-
PATCH: RoutePart;
|
|
25
|
-
POST: RoutePart;
|
|
26
|
-
PUT: RoutePart;
|
|
27
|
-
};
|
|
13
|
+
defaultHeaders: Record<string, string>;
|
|
14
|
+
routes: Record<HttpVerb, RoutePart>;
|
|
15
|
+
constructor();
|
|
28
16
|
/**
|
|
29
17
|
* Attach a handler to a GET HTTP route
|
|
30
|
-
*
|
|
31
|
-
* @param {string} path
|
|
32
|
-
* @param {Function} handler
|
|
33
18
|
*/
|
|
34
|
-
get(path: string, handler:
|
|
19
|
+
get(path: string, handler: RouteHandlerFunction): void;
|
|
35
20
|
/**
|
|
36
21
|
* Attach a handler to a POST HTTP route
|
|
37
|
-
*
|
|
38
|
-
* @param {string} path
|
|
39
|
-
* @param {Function} handler
|
|
40
22
|
*/
|
|
41
|
-
post(path: string, handler:
|
|
23
|
+
post(path: string, handler: RouteHandlerFunction): void;
|
|
42
24
|
/**
|
|
43
25
|
* Attach a handler to a PUT HTTP route
|
|
44
|
-
*
|
|
45
|
-
* @param {string} path
|
|
46
|
-
* @param {Function} handler
|
|
47
26
|
*/
|
|
48
|
-
put(path: string, handler:
|
|
27
|
+
put(path: string, handler: RouteHandlerFunction): void;
|
|
49
28
|
/**
|
|
50
29
|
* Attach a handler to a PATCH HTTP route
|
|
51
|
-
*
|
|
52
|
-
* @param {string} path
|
|
53
|
-
* @param {Function} handler
|
|
54
30
|
*/
|
|
55
|
-
patch(path: string, handler:
|
|
31
|
+
patch(path: string, handler: RouteHandlerFunction): void;
|
|
56
32
|
/**
|
|
57
33
|
* Attach a handler to a DELETE HTTP route
|
|
58
|
-
*
|
|
59
|
-
* @param {string} path
|
|
60
|
-
* @param {Function} handler
|
|
61
34
|
*/
|
|
62
|
-
delete(path: string, handler:
|
|
35
|
+
delete(path: string, handler: RouteHandlerFunction): void;
|
|
63
36
|
/**
|
|
64
37
|
* Attach a handler to a HEAD HTTP route
|
|
65
|
-
*
|
|
66
|
-
* @param {string} path
|
|
67
|
-
* @param {Function} handler
|
|
68
38
|
*/
|
|
69
|
-
head(path: string, handler:
|
|
39
|
+
head(path: string, handler: RouteHandlerFunction): void;
|
|
70
40
|
/**
|
|
71
41
|
* Route an incoming HTTP message to the right handler
|
|
72
42
|
*
|
|
73
|
-
* @param
|
|
74
|
-
* @param {function} cb
|
|
43
|
+
* @param message - Parsed HTTP message
|
|
75
44
|
*/
|
|
76
|
-
route(message: HttpMessage, cb:
|
|
45
|
+
route(message: HttpMessage, cb: RouteCallback): void;
|
|
77
46
|
/**
|
|
78
47
|
* Route HTTP messages using an HTTP method that is not handled by Kuzzle's
|
|
79
48
|
* API, such as OPTIONS.
|
|
80
|
-
* @param {HttpMessage} message
|
|
81
|
-
* @param {function} cb
|
|
82
49
|
*/
|
|
83
|
-
routeUnhandledHttpMethod(message: HttpMessage, cb:
|
|
50
|
+
routeUnhandledHttpMethod(message: HttpMessage, cb: RouteCallback): void;
|
|
84
51
|
}
|
|
85
|
-
|
|
52
|
+
/** The HTTP verbs this router attaches handlers for. */
|
|
53
|
+
declare const HTTP_VERBS: readonly ["DELETE", "GET", "HEAD", "PATCH", "POST", "PUT"];
|
|
54
|
+
type HttpVerb = (typeof HTTP_VERBS)[number];
|
|
55
|
+
export = Router;
|