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,40 +19,93 @@
|
|
|
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 node_assert_1 = __importDefault(require("node:assert"));
|
|
26
|
+
const bytes_1 = __importDefault(require("../../../util/bytes"));
|
|
27
|
+
/**
|
|
28
|
+
* @typeParam TConfig - the shape of `server.protocols.<name>` in the Kuzzle
|
|
29
|
+
* configuration, which is what `init` copies into
|
|
30
|
+
* `this.config`
|
|
31
|
+
*/
|
|
24
32
|
class Protocol {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
33
|
+
/**
|
|
34
|
+
* The entry point that owns this protocol, and the request size limit it
|
|
35
|
+
* published. Both are set by `init` and read by everything a protocol does
|
|
36
|
+
* afterwards — a handler cannot run before the server it is registered on
|
|
37
|
+
* has been created.
|
|
38
|
+
*
|
|
39
|
+
* Declaring them nullable and reading them anyway is what the subclasses
|
|
40
|
+
* did: 20 unchecked dereferences across the three of them, each one taking
|
|
41
|
+
* on trust what `init` establishes. These two accessors say it once, where
|
|
42
|
+
* it can actually fail.
|
|
43
|
+
*/
|
|
44
|
+
get entryPoint() {
|
|
45
|
+
if (this._entryPoint === null) {
|
|
46
|
+
throw new Error(`Protocol "${this.name}" has no entry point: init() has not been called yet`);
|
|
47
|
+
}
|
|
48
|
+
return this._entryPoint;
|
|
49
|
+
}
|
|
50
|
+
get maxRequestSize() {
|
|
51
|
+
if (this._maxRequestSize === null) {
|
|
52
|
+
throw new Error(`Protocol "${this.name}" has no maxRequestSize: init() has not been called yet`);
|
|
53
|
+
}
|
|
54
|
+
return this._maxRequestSize;
|
|
55
|
+
}
|
|
56
|
+
set maxRequestSize(size) {
|
|
57
|
+
this._maxRequestSize = size;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Normalises the two `init` call shapes into the entry point they both
|
|
61
|
+
* carry. Every subclass overriding `init` has to accept both shapes too —
|
|
62
|
+
* a subclass that only took the live one would not honour the contract its
|
|
63
|
+
* base class publishes, and `init(null, entryPoint)` on it would throw —
|
|
64
|
+
* so the normalisation lives here rather than being written out four times.
|
|
65
|
+
*
|
|
66
|
+
* The old shape puts the entry point second. Reading `args[1]`
|
|
67
|
+
* unconditionally is what the first conversion did: `init(entryPoint)`
|
|
68
|
+
* type-checked and threw on `entryPoint.config` (TD-41).
|
|
69
|
+
*/
|
|
70
|
+
static entryPointOf(args) {
|
|
71
|
+
// `||`, not `??`: v2.56.0 took any *falsy* first argument as the old shape
|
|
72
|
+
// (its assert only needed `!name`), so `init("", entryPoint)` and
|
|
73
|
+
// `init(false, entryPoint)` worked there. `??` kept `""` as the entry point.
|
|
74
|
+
const entryPoint = args[0] || args[1]; // NOSONAR: falsy, not nullish, on purpose
|
|
75
|
+
// Both call shapes crashed on `entryPoint.config` a few lines down when
|
|
76
|
+
// the entry point was missing. Same outcome, with the reason in the
|
|
77
|
+
// message — a third-party protocol in JavaScript is not constrained by
|
|
78
|
+
// the overloads.
|
|
79
|
+
(0, node_assert_1.default)(entryPoint !== undefined && entryPoint !== null, 'Invalid "entryPoint" parameter value: expected the network entry point');
|
|
80
|
+
return entryPoint;
|
|
81
|
+
}
|
|
82
|
+
constructor(name = "") {
|
|
83
|
+
this._maxRequestSize = null;
|
|
84
|
+
this._entryPoint = null;
|
|
29
85
|
this.config = {};
|
|
30
86
|
this.initCalled = false;
|
|
87
|
+
this.name = name;
|
|
31
88
|
Reflect.defineProperty(this, "_kuzzle", {
|
|
32
89
|
value: null,
|
|
33
90
|
writable: true,
|
|
34
91
|
});
|
|
35
92
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
this.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
assert(typeof this.name === "string" && this.name.length > 0, 'Invalid "name" parameter value: expected a non empty string value');
|
|
51
|
-
if (entryPoint.config.protocols && entryPoint.config.protocols[this.name]) {
|
|
52
|
-
this.config = entryPoint.config.protocols[this.name];
|
|
93
|
+
async init(...args) {
|
|
94
|
+
const entryPoint = Protocol.entryPointOf(args);
|
|
95
|
+
this._entryPoint = entryPoint;
|
|
96
|
+
// name should be passed in the constructor. The original condition was
|
|
97
|
+
// `this.name && !name`; normalisation above proves the first argument is
|
|
98
|
+
// never a name, so `!name` was constant-true. What remains is the half
|
|
99
|
+
// that can fail, and it throws the same error it always did.
|
|
100
|
+
(0, node_assert_1.default)(this.name, "A name has been given in the constructor and init method. Passing the name in the init method is deprecated.");
|
|
101
|
+
this._maxRequestSize = (0, bytes_1.default)(entryPoint.config.maxRequestSize);
|
|
102
|
+
(0, node_assert_1.default)(typeof this.name === "string" && this.name.length > 0, 'Invalid "name" parameter value: expected a non empty string value');
|
|
103
|
+
const protocolsConfig = entryPoint.config.protocols;
|
|
104
|
+
// the config is keyed by protocol name, which is only known at runtime
|
|
105
|
+
if (protocolsConfig && Reflect.get(protocolsConfig, this.name)) {
|
|
106
|
+
this.config = Reflect.get(protocolsConfig, this.name);
|
|
53
107
|
}
|
|
54
|
-
|
|
108
|
+
(0, node_assert_1.default)(Number.isInteger(this._maxRequestSize), 'Invalid "maxRequestSize" parameter value: expected a numeric value');
|
|
55
109
|
this.initCalled = true;
|
|
56
110
|
return true;
|
|
57
111
|
}
|
|
@@ -59,11 +113,13 @@ class Protocol {
|
|
|
59
113
|
// do nothing by default
|
|
60
114
|
}
|
|
61
115
|
joinChannel(channel, connectionId) {
|
|
62
|
-
// do nothing by default
|
|
116
|
+
// do nothing by default, beyond echoing back what it was given — which the
|
|
117
|
+
// spec pins. The `| void` is what lets an override that registers the
|
|
118
|
+
// channel and returns nothing satisfy the contract.
|
|
63
119
|
return { channel, connectionId };
|
|
64
120
|
}
|
|
65
121
|
leaveChannel(channel, connectionId) {
|
|
66
|
-
// do nothing by default
|
|
122
|
+
// do nothing by default — see joinChannel.
|
|
67
123
|
return { channel, connectionId };
|
|
68
124
|
}
|
|
69
125
|
notify() {
|
|
@@ -1,29 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*/
|
|
1
|
+
import type { JSONObject } from "../../types/JSONObject";
|
|
2
|
+
import type { RequestContext } from "../../api/request";
|
|
3
|
+
import { Request } from "../../api/request";
|
|
4
|
+
import HttpRouter from "./httpRouter";
|
|
5
|
+
import type { RouteCallback } from "./httpRouter/routeTypes";
|
|
7
6
|
declare class Router {
|
|
8
|
-
connections: Map<
|
|
7
|
+
connections: Map<string, RequestContext>;
|
|
9
8
|
http: HttpRouter;
|
|
10
|
-
logger
|
|
9
|
+
private readonly logger;
|
|
10
|
+
constructor();
|
|
11
11
|
/**
|
|
12
12
|
* Declares a new connection attached to a network protocol.
|
|
13
|
-
*
|
|
14
|
-
* @param {RequestContext} requestContext
|
|
15
13
|
*/
|
|
16
14
|
newConnection(requestContext: RequestContext): void;
|
|
17
15
|
/**
|
|
18
16
|
* Removes a connection from the connection pool.
|
|
19
|
-
*
|
|
20
|
-
* @param {RequestContext} requestContext
|
|
21
17
|
*/
|
|
22
18
|
removeConnection(requestContext: RequestContext): void;
|
|
23
19
|
/**
|
|
24
20
|
* Check that the provided connection id executing a request is still alive
|
|
25
|
-
*
|
|
26
|
-
* @param {RequestContext} requestContext
|
|
27
21
|
*/
|
|
28
22
|
isConnectionAlive(requestContext: RequestContext): boolean;
|
|
29
23
|
/**
|
|
@@ -32,18 +26,15 @@ declare class Router {
|
|
|
32
26
|
init(): void;
|
|
33
27
|
/**
|
|
34
28
|
* Returns the metrics of the router
|
|
35
|
-
* @returns {Object}
|
|
36
29
|
*/
|
|
37
|
-
metrics():
|
|
30
|
+
metrics(): JSONObject;
|
|
38
31
|
/**
|
|
39
32
|
* Transmit HTTP requests to the funnel controller and forward its response
|
|
40
33
|
* back to the client
|
|
41
34
|
*
|
|
42
|
-
* @param
|
|
43
|
-
* @param
|
|
44
|
-
* @param {function} cb - callback to invoke with the result
|
|
35
|
+
* @param request - includes URL and POST query data
|
|
36
|
+
* @param cb - callback to invoke with the result
|
|
45
37
|
*/
|
|
46
|
-
_executeFromHttp(verb: string, request: Request, cb:
|
|
38
|
+
_executeFromHttp(verb: string, request: Request, cb: RouteCallback): void;
|
|
47
39
|
}
|
|
48
|
-
|
|
49
|
-
import { Request } from "../../api/request/kuzzleRequest";
|
|
40
|
+
export = Router;
|
|
@@ -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,27 +19,44 @@
|
|
|
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
|
-
|
|
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 request_1 = require("../../api/request");
|
|
49
|
+
const kerror = __importStar(require("../../kerror"));
|
|
50
|
+
const kuzzleStateEnum_1 = __importDefault(require("../../kuzzle/kuzzleStateEnum"));
|
|
51
|
+
const httpRouter_1 = __importDefault(require("./httpRouter"));
|
|
32
52
|
class Router {
|
|
33
53
|
constructor() {
|
|
34
|
-
this.connections = new Map();
|
|
35
|
-
this.http = new HttpRouter();
|
|
36
54
|
this.logger = global.kuzzle.log.child("core:network:router");
|
|
55
|
+
this.connections = new Map();
|
|
56
|
+
this.http = new httpRouter_1.default();
|
|
37
57
|
}
|
|
38
58
|
/**
|
|
39
59
|
* Declares a new connection attached to a network protocol.
|
|
40
|
-
*
|
|
41
|
-
* @param {RequestContext} requestContext
|
|
42
60
|
*/
|
|
43
61
|
newConnection(requestContext) {
|
|
44
62
|
if (!requestContext.connection.id || !requestContext.connection.protocol) {
|
|
@@ -51,13 +69,11 @@ class Router {
|
|
|
51
69
|
}
|
|
52
70
|
/**
|
|
53
71
|
* Removes a connection from the connection pool.
|
|
54
|
-
*
|
|
55
|
-
* @param {RequestContext} requestContext
|
|
56
72
|
*/
|
|
57
73
|
removeConnection(requestContext) {
|
|
58
74
|
const connId = requestContext.connection.id;
|
|
59
75
|
if (!connId || !requestContext.connection.protocol) {
|
|
60
|
-
this.logger.error(kerror.get("protocol", "runtime", "invalid_connection", JSON.stringify(requestContext
|
|
76
|
+
this.logger.error(kerror.get("protocol", "runtime", "invalid_connection", JSON.stringify(requestContext)));
|
|
61
77
|
return;
|
|
62
78
|
}
|
|
63
79
|
if (!this.connections.has(connId)) {
|
|
@@ -69,8 +85,6 @@ class Router {
|
|
|
69
85
|
}
|
|
70
86
|
/**
|
|
71
87
|
* Check that the provided connection id executing a request is still alive
|
|
72
|
-
*
|
|
73
|
-
* @param {RequestContext} requestContext
|
|
74
88
|
*/
|
|
75
89
|
isConnectionAlive(requestContext) {
|
|
76
90
|
// Check only defined connection identifiers (some protocols might
|
|
@@ -90,11 +104,14 @@ class Router {
|
|
|
90
104
|
this.http.post("_query", (request, cb) => {
|
|
91
105
|
// We need to build a new request from the body
|
|
92
106
|
// and we also need to keep the original request context
|
|
93
|
-
|
|
107
|
+
// `input.body` is nullable: a POST /_query with no body used to reach
|
|
108
|
+
// `requestPayload.jwt` and throw a TypeError. `getBody()` answers the
|
|
109
|
+
// same object and rejects the empty case with api.assert.body_required.
|
|
110
|
+
const requestPayload = request.getBody();
|
|
94
111
|
if (request.input.jwt && requestPayload.jwt === undefined) {
|
|
95
112
|
requestPayload.jwt = request.input.jwt;
|
|
96
113
|
}
|
|
97
|
-
const apiRequest = new Request(requestPayload, request.serialize().options);
|
|
114
|
+
const apiRequest = new request_1.Request(requestPayload, request.serialize().options);
|
|
98
115
|
this._executeFromHttp("post", apiRequest, cb);
|
|
99
116
|
});
|
|
100
117
|
this.http.get("_healthcheck", (request, cb) => {
|
|
@@ -109,12 +126,12 @@ class Router {
|
|
|
109
126
|
});
|
|
110
127
|
this.http.get("_ready", (request, cb) => {
|
|
111
128
|
let status = 200;
|
|
112
|
-
if (global.kuzzle.state !==
|
|
129
|
+
if (global.kuzzle.state !== kuzzleStateEnum_1.default.RUNNING ||
|
|
113
130
|
global.kuzzle.funnel.overloaded) {
|
|
114
131
|
status = 503;
|
|
115
132
|
}
|
|
116
133
|
request.response.configure({
|
|
117
|
-
status
|
|
134
|
+
status,
|
|
118
135
|
});
|
|
119
136
|
/**
|
|
120
137
|
* By avoiding using the funnel, we avoid the request to be logged
|
|
@@ -123,6 +140,7 @@ class Router {
|
|
|
123
140
|
cb(request);
|
|
124
141
|
});
|
|
125
142
|
for (const route of routes) {
|
|
143
|
+
// the route table's verbs are the HttpRouter method names, uppercased
|
|
126
144
|
const verb = route.verb.toLowerCase();
|
|
127
145
|
this.http[verb](route.path, (request, cb) => {
|
|
128
146
|
request.input.controller = route.controller;
|
|
@@ -136,24 +154,22 @@ class Router {
|
|
|
136
154
|
}
|
|
137
155
|
/**
|
|
138
156
|
* Returns inner metrics from the router
|
|
139
|
-
* @returns {Object}
|
|
140
157
|
*/
|
|
141
158
|
global.kuzzle.onAsk("core:network:router:metrics", () => this.metrics());
|
|
142
159
|
}
|
|
143
160
|
/**
|
|
144
161
|
* Returns the metrics of the router
|
|
145
|
-
* @returns {Object}
|
|
146
162
|
*/
|
|
147
163
|
metrics() {
|
|
148
164
|
const connectionsByProtocol = {};
|
|
149
165
|
for (const connection of this.connections.values()) {
|
|
150
|
-
const protocol = connection.connection.protocol
|
|
151
|
-
|
|
166
|
+
const protocol = connection.connection.protocol?.toLowerCase();
|
|
167
|
+
// A request context carries a nullable protocol; one without is not a
|
|
168
|
+
// client connection to count.
|
|
169
|
+
if (protocol === undefined || protocol === "internal") {
|
|
152
170
|
continue;
|
|
153
171
|
}
|
|
154
|
-
|
|
155
|
-
connectionsByProtocol[protocol] = 0;
|
|
156
|
-
}
|
|
172
|
+
connectionsByProtocol[protocol] ?? (connectionsByProtocol[protocol] = 0);
|
|
157
173
|
connectionsByProtocol[protocol]++;
|
|
158
174
|
}
|
|
159
175
|
return {
|
|
@@ -164,30 +180,27 @@ class Router {
|
|
|
164
180
|
* Transmit HTTP requests to the funnel controller and forward its response
|
|
165
181
|
* back to the client
|
|
166
182
|
*
|
|
167
|
-
* @param
|
|
168
|
-
* @param
|
|
169
|
-
* @param {function} cb - callback to invoke with the result
|
|
183
|
+
* @param request - includes URL and POST query data
|
|
184
|
+
* @param cb - callback to invoke with the result
|
|
170
185
|
*/
|
|
171
186
|
_executeFromHttp(verb, request, cb) {
|
|
172
187
|
global.kuzzle.pipe(`http:${verb}`, request, (error, mutatedRequest) => {
|
|
173
188
|
if (error) {
|
|
174
189
|
request.setError(error);
|
|
175
190
|
cb(request);
|
|
191
|
+
return;
|
|
176
192
|
}
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
193
|
+
global.kuzzle.funnel.execute(mutatedRequest, (err, result) => {
|
|
194
|
+
const _res = result || request;
|
|
195
|
+
if (err && !_res.error) {
|
|
196
|
+
_res.setError(err);
|
|
197
|
+
}
|
|
198
|
+
// no sanitisation here: `_res` is a KuzzleRequest, and the stack
|
|
199
|
+
// is stripped by the protocols, on the serialized response
|
|
200
|
+
cb(_res);
|
|
201
|
+
});
|
|
186
202
|
});
|
|
187
203
|
}
|
|
188
204
|
}
|
|
189
|
-
/**
|
|
190
|
-
* @type {RouterController}
|
|
191
|
-
*/
|
|
192
205
|
module.exports = Router;
|
|
193
206
|
//# sourceMappingURL=router.js.map
|
|
@@ -1,56 +1,62 @@
|
|
|
1
|
-
|
|
1
|
+
import type { JSONObject } from "../../types/JSONObject";
|
|
2
|
+
import type { ControllerDefinition } from "../../types";
|
|
3
|
+
import type { PluginInstance, PluginOptions } from "../../types/PluginInstance";
|
|
4
|
+
import Manifest from "./pluginManifest";
|
|
5
|
+
import { PluginContext } from "./pluginContext";
|
|
6
|
+
/**
|
|
7
|
+
* Kuzzle's own wrapper around a plugin: its name, config, context and manifest,
|
|
8
|
+
* plus the assertions a plugin must satisfy before it is loaded.
|
|
9
|
+
*
|
|
10
|
+
* Not to be confused with `lib/types/Plugin.ts`'s `Plugin`, which is the
|
|
11
|
+
* abstract class a plugin author extends. This one wraps an instance of that.
|
|
12
|
+
*/
|
|
2
13
|
declare class Plugin {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
routes: any[];
|
|
34
|
-
strategies: any[];
|
|
35
|
-
imports: {};
|
|
36
|
-
} | {
|
|
37
|
-
name: string;
|
|
38
|
-
version: any;
|
|
39
|
-
commit: any;
|
|
40
|
-
controllers: any;
|
|
41
|
-
pipes: string[];
|
|
42
|
-
hooks: string[];
|
|
43
|
-
};
|
|
44
|
-
printDeprecation(message: any): void;
|
|
45
|
-
get instance(): any;
|
|
46
|
-
get context(): PluginContext;
|
|
14
|
+
private readonly _instance;
|
|
15
|
+
private readonly _application;
|
|
16
|
+
private _config;
|
|
17
|
+
private _context;
|
|
18
|
+
private _version;
|
|
19
|
+
private _name;
|
|
20
|
+
private _manifest;
|
|
21
|
+
private _deprecationWarning;
|
|
22
|
+
/**
|
|
23
|
+
* Set by `PluginsManager` once the plugin's own `init` has resolved.
|
|
24
|
+
*
|
|
25
|
+
* The JavaScript declared a `_initCalled` in the constructor and never read
|
|
26
|
+
* it: what the manager actually sets, and what the specs assert, is this
|
|
27
|
+
* public `initCalled`, created ad hoc on the object. The dead field is gone
|
|
28
|
+
* and the live one is declared.
|
|
29
|
+
*/
|
|
30
|
+
initCalled: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Set from the outside by `Backend`, which reads it from the git tree — the
|
|
33
|
+
* wrapper has no way to derive it. `info()` reports it for an application.
|
|
34
|
+
*/
|
|
35
|
+
commit: string | null;
|
|
36
|
+
/** Set from the outside by `Backend`, like `commit`. */
|
|
37
|
+
openApi: JSONObject | null;
|
|
38
|
+
constructor(instance: PluginInstance, { name, application, deprecationWarning, }?: PluginOptions);
|
|
39
|
+
init(name: string): void;
|
|
40
|
+
info(): JSONObject;
|
|
41
|
+
printDeprecation(message: string): void;
|
|
42
|
+
get instance(): PluginInstance;
|
|
43
|
+
get context(): PluginContext | null;
|
|
47
44
|
get application(): boolean;
|
|
48
45
|
get logPrefix(): string;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
46
|
+
get config(): JSONObject;
|
|
47
|
+
set config(config: JSONObject);
|
|
48
|
+
get version(): string;
|
|
49
|
+
set version(version: string);
|
|
52
50
|
get deprecationWarning(): boolean;
|
|
53
|
-
set
|
|
54
|
-
get
|
|
51
|
+
set deprecationWarning(value: boolean);
|
|
52
|
+
get name(): string;
|
|
53
|
+
set name(name: string);
|
|
54
|
+
get manifest(): Manifest | null;
|
|
55
|
+
set manifest(manifest: Manifest | null);
|
|
56
|
+
static loadFromDirectory(pluginPath: string): Plugin;
|
|
57
|
+
static checkName(name: string): boolean;
|
|
58
|
+
static checkControllerDefinition(name: string, definition: ControllerDefinition | undefined, { application }?: {
|
|
59
|
+
application?: boolean;
|
|
60
|
+
}): asserts definition is ControllerDefinition;
|
|
55
61
|
}
|
|
56
|
-
|
|
62
|
+
export = Plugin;
|